public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Anthony G. Basile" <blueness@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/hardened-dev:musl commit in: net-wireless/wpa_supplicant/files/, net-wireless/wpa_supplicant/
Date: Mon, 17 Feb 2014 11:53:33 +0000 (UTC)	[thread overview]
Message-ID: <1392638025.1c83f1718792489fb87e610b5836ed95855f1337.blueness@gentoo> (raw)

commit:     1c83f1718792489fb87e610b5836ed95855f1337
Author:     Felix Janda <felix.janda <AT> posteo <DOT> de>
AuthorDate: Sun Feb 16 18:56:31 2014 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Feb 17 11:53:45 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-dev.git;a=commit;h=1c83f171

net-wireless/wpa_supplicant: move to tree

---
 net-wireless/wpa_supplicant/files/wpa_cli.sh       |  47 +++
 .../files/wpa_supplicant-2.0-dbus-path-fix.patch   |  20 ++
 ...do-not-call-dbus-functions-with-NULL-path.patch |  60 ++++
 ...x-undefined-reference-to-random_get_bytes.patch |  19 ++
 .../wpa_supplicant-2.0-generate-libeap-peer.patch  | 349 +++++++++++++++++++++
 .../files/wpa_supplicant-2.0-linux_wext.patch      |  20 ++
 .../wpa_supplicant/files/wpa_supplicant-conf.d     |   6 +
 .../wpa_supplicant/files/wpa_supplicant-init.d     |  70 +++++
 .../wpa_supplicant/files/wpa_supplicant.conf       |   7 +
 .../wpa_supplicant/files/wpa_supplicant.service    |  11 +
 .../wpa_supplicant/files/wpa_supplicant_at.service |  11 +
 net-wireless/wpa_supplicant/metadata.xml           |  29 ++
 .../wpa_supplicant/wpa_supplicant-2.0-r99.ebuild   | 322 +++++++++++++++++++
 13 files changed, 971 insertions(+)

diff --git a/net-wireless/wpa_supplicant/files/wpa_cli.sh b/net-wireless/wpa_supplicant/files/wpa_cli.sh
new file mode 100644
index 0000000..4fd0d2c
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_cli.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Copyright 1999-2011 Gentoo Foundation
+# Written by Roy Marples <uberlord@gentoo.org>
+# Distributed under the terms of the GNU General Public License v2
+# Alternatively, this file may be distributed under the terms of the BSD License
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/wpa_supplicant/files/wpa_cli.sh,v 1.3 2011/07/08 07:06:21 gurligebis Exp $
+
+if [ -z "$1" -o -z "$2" ]; then
+	logger -t wpa_cli "Insufficient parameters"
+	exit 1
+fi
+
+INTERFACE="$1"
+ACTION="$2"
+
+# Note, the below action must NOT mark the interface down via ifconfig, ip or
+# similar. Addresses can be removed, changed and daemons can be stopped, but
+# the interface must remain up for wpa_supplicant to work.
+
+if [ -f /etc/gentoo-release ]; then
+	EXEC="/etc/init.d/net.${INTERFACE} --quiet"
+else
+	logger -t wpa_cli "I don't know what to do with this distro!"
+	exit 1
+fi
+
+case ${ACTION} in
+	CONNECTED)
+		EXEC="${EXEC} start"
+		;;
+	DISCONNECTED)
+		# Deactivated, since stopping /etc/init.d/net.wlanX
+		# stops the network completly.
+		EXEC="false ${EXEC} stop"
+		;;
+	*)
+		logger -t wpa_cli "Unknown action ${ACTION}"
+		exit 1
+		;;
+esac
+
+# ${EXEC} can use ${IN_BACKGROUND} so that it knows that the user isn't
+# stopping the interface and a background process - like wpa_cli - is.
+export IN_BACKGROUND=true
+
+logger -t wpa_cli "interface ${INTERFACE} ${ACTION}"
+${EXEC} || logger -t wpa_cli "executing '${EXEC}' failed"

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-dbus-path-fix.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-dbus-path-fix.patch
new file mode 100644
index 0000000..976d71b
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-dbus-path-fix.patch
@@ -0,0 +1,20 @@
+diff -aurp a/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in b/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in
+--- a/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in	2012-05-15 09:00:03.048545044 +0000
++++ b/wpa_supplicant/dbus/fi.epitest.hostap.WPASupplicant.service.in	2012-05-15 09:01:19.759550509 +0000
+@@ -1,5 +1,5 @@
+ [D-BUS Service]
+ Name=fi.epitest.hostap.WPASupplicant
+-Exec=@BINDIR@/wpa_supplicant -u
++Exec=/usr/sbin/wpa_supplicant -u
+ User=root
+ SystemdService=wpa_supplicant.service
+diff -aurp a/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in b/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in
+--- a/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in	2012-05-15 09:00:03.048545044 +0000
++++ b/wpa_supplicant/dbus/fi.w1.wpa_supplicant1.service.in	2012-05-15 09:01:28.727551913 +0000
+@@ -1,5 +1,5 @@
+ [D-BUS Service]
+ Name=fi.w1.wpa_supplicant1
+-Exec=@BINDIR@/wpa_supplicant -u
++Exec=/usr/sbin/wpa_supplicant -u
+ User=root
+ SystemdService=wpa_supplicant.service

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-do-not-call-dbus-functions-with-NULL-path.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-do-not-call-dbus-functions-with-NULL-path.patch
new file mode 100644
index 0000000..bbff73e
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-do-not-call-dbus-functions-with-NULL-path.patch
@@ -0,0 +1,60 @@
+diff -aurp a/wpa_supplicant/dbus/dbus_new_helpers.c b/wpa_supplicant/dbus/dbus_new_helpers.c
+--- a/wpa_supplicant/dbus/dbus_new_helpers.c	2012-05-15 07:28:37.616150164 +0000
++++ b/wpa_supplicant/dbus/dbus_new_helpers.c	2012-05-15 07:30:21.904157611 +0000
+@@ -882,7 +882,7 @@ void wpa_dbus_mark_property_changed(stru
+ 	const struct wpa_dbus_property_desc *dsc;
+ 	int i = 0;
+ 
+-	if (iface == NULL)
++	if (iface == NULL || path == NULL)
+ 		return;
+ 
+ 	dbus_connection_get_object_path_data(iface->con, path,
+diff -aurp a/wpa_supplicant/dbus/dbus_old.c b/wpa_supplicant/dbus/dbus_old.c
+--- a/wpa_supplicant/dbus/dbus_old.c	2012-05-15 07:28:29.502149373 +0000
++++ b/wpa_supplicant/dbus/dbus_old.c	2012-05-15 07:30:48.859162441 +0000
+@@ -379,7 +379,7 @@ void wpa_supplicant_dbus_notify_scan_res
+ 	DBusMessage *_signal;
+ 
+ 	/* Do nothing if the control interface is not turned on */
+-	if (iface == NULL)
++	if (iface == NULL || wpa_s->dbus_path == NULL)
+ 		return;
+ 
+ 	_signal = dbus_message_new_signal(wpa_s->dbus_path,
+@@ -419,7 +419,7 @@ void wpa_supplicant_dbus_notify_state_ch
+ 	if (wpa_s->global == NULL)
+ 		return;
+ 	iface = wpa_s->global->dbus;
+-	if (iface == NULL)
++	if (iface == NULL || wpa_s->dbus_path == NULL)
+ 		return;
+ 
+ 	/* Only send signal if state really changed */
+@@ -478,7 +478,7 @@ void wpa_supplicant_dbus_notify_scanning
+ 	dbus_bool_t scanning = wpa_s->scanning ? TRUE : FALSE;
+ 
+ 	/* Do nothing if the control interface is not turned on */
+-	if (iface == NULL)
++	if (iface == NULL || wpa_s->dbus_path == NULL)
+ 		return;
+ 
+ 	_signal = dbus_message_new_signal(wpa_s->dbus_path,
+@@ -513,7 +513,7 @@ void wpa_supplicant_dbus_notify_wps_cred
+ 	if (wpa_s->global == NULL)
+ 		return;
+ 	iface = wpa_s->global->dbus;
+-	if (iface == NULL)
++	if (iface == NULL || wpa_s->dbus_path == NULL)
+ 		return;
+ 
+ 	_signal = dbus_message_new_signal(wpa_s->dbus_path,
+@@ -564,7 +564,7 @@ void wpa_supplicant_dbus_notify_certific
+ 	if (wpa_s->global == NULL)
+ 		return;
+ 	iface = wpa_s->global->dbus;
+-	if (iface == NULL)
++	if (iface == NULL || wpa_s->dbus_path == NULL)
+ 		return;
+ 
+ 	_signal = dbus_message_new_signal(wpa_s->dbus_path,

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-fix-undefined-reference-to-random_get_bytes.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-fix-undefined-reference-to-random_get_bytes.patch
new file mode 100644
index 0000000..def43a2
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-fix-undefined-reference-to-random_get_bytes.patch
@@ -0,0 +1,19 @@
+diff -Naur a/src/eap_peer/Makefile b/src/eap_peer/Makefile
+--- a/src/eap_peer/Makefile	2013-05-17 09:51:55.000000000 +0000
++++ b/src/eap_peer/Makefile	2013-05-17 09:54:03.010830904 +0000
+@@ -36,6 +36,7 @@
+ OBJS_both += ../utils/wpa_debug.o
+ OBJS_both += ../utils/base64.o
+ OBJS_both += ../utils/wpabuf.o
++OBJS_both += ../utils/eloop.o
+ OBJS_both += ../crypto/md5.o
+ ifneq ($(CONFIG_TLS), openssl)
+ OBJS_both += ../crypto/sha1.o
+@@ -48,6 +49,7 @@
+ OBJS_both += ../crypto/aes-omac1.o
+ OBJS_both += ../crypto/ms_funcs.o
+ OBJS_both += ../crypto/sha256.o
++OBJS_both += ../crypto/random.o
+ 
+ 
+ OBJS_both += ../eap_common/eap_peap_common.o

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-generate-libeap-peer.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-generate-libeap-peer.patch
new file mode 100644
index 0000000..1fb9b10
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-generate-libeap-peer.patch
@@ -0,0 +1,349 @@
+diff -Naurp a/src/eap_peer/eap_methods.c b/src/eap_peer/eap_methods.c
+--- a/src/eap_peer/eap_methods.c	2012-05-15 08:23:17.151386999 +0000
++++ b/src/eap_peer/eap_methods.c	2012-05-15 08:23:57.403389760 +0000
+@@ -342,6 +342,120 @@ int eap_peer_method_register(struct eap_
+ 
+ 
+ /**
++ * eap_peer_register_methods - Register all known EAP peer methods
++ *
++ * This function is called at program start to register all compiled
++ * in EAP peer methods.
++ */
++int eap_peer_register_methods(void)
++{
++	int ret = 0;
++
++#ifdef EAP_MD5
++	if (ret == 0)
++		ret = eap_peer_md5_register();
++#endif /* EAP_MD5 */
++
++#ifdef EAP_TLS
++	if (ret == 0)
++		ret = eap_peer_tls_register();
++#endif /* EAP_TLS */
++
++#ifdef EAP_MSCHAPv2
++	if (ret == 0)
++		ret = eap_peer_mschapv2_register();
++#endif /* EAP_MSCHAPv2 */
++
++#ifdef EAP_PEAP
++	if (ret == 0)
++		ret = eap_peer_peap_register();
++#endif /* EAP_PEAP */
++
++#ifdef EAP_TTLS
++	if (ret == 0)
++		ret = eap_peer_ttls_register();
++#endif /* EAP_TTLS */
++
++#ifdef EAP_GTC
++	if (ret == 0)
++		ret = eap_peer_gtc_register();
++#endif /* EAP_GTC */
++
++#ifdef EAP_OTP
++	if (ret == 0)
++		ret = eap_peer_otp_register();
++#endif /* EAP_OTP */
++
++#ifdef EAP_SIM
++	if (ret == 0)
++		ret = eap_peer_sim_register();
++#endif /* EAP_SIM */
++
++#ifdef EAP_LEAP
++	if (ret == 0)
++		ret = eap_peer_leap_register();
++#endif /* EAP_LEAP */
++
++#ifdef EAP_PSK
++	if (ret == 0)
++		ret = eap_peer_psk_register();
++#endif /* EAP_PSK */
++
++#ifdef EAP_AKA
++	if (ret == 0)
++		ret = eap_peer_aka_register();
++#endif /* EAP_AKA */
++
++#ifdef EAP_AKA_PRIME
++	if (ret == 0)
++		ret = eap_peer_aka_prime_register();
++#endif /* EAP_AKA_PRIME */
++
++#ifdef EAP_FAST
++	if (ret == 0)
++		ret = eap_peer_fast_register();
++#endif /* EAP_FAST */
++
++#ifdef EAP_PAX
++	if (ret == 0)
++		ret = eap_peer_pax_register();
++#endif /* EAP_PAX */
++
++#ifdef EAP_SAKE
++	if (ret == 0)
++		ret = eap_peer_sake_register();
++#endif /* EAP_SAKE */
++
++#ifdef EAP_GPSK
++	if (ret == 0)
++		ret = eap_peer_gpsk_register();
++#endif /* EAP_GPSK */
++
++#ifdef EAP_WSC
++	if (ret == 0)
++		ret = eap_peer_wsc_register();
++#endif /* EAP_WSC */
++
++#ifdef EAP_IKEV2
++	if (ret == 0)
++		ret = eap_peer_ikev2_register();
++#endif /* EAP_IKEV2 */
++
++#ifdef EAP_VENDOR_TEST
++	if (ret == 0)
++		ret = eap_peer_vendor_test_register();
++#endif /* EAP_VENDOR_TEST */
++
++#ifdef EAP_TNC
++	if (ret == 0)
++		ret = eap_peer_tnc_register();
++#endif /* EAP_TNC */
++
++	return ret;
++}
++
++
++/**
+  * eap_peer_unregister_methods - Unregister EAP peer methods
+  *
+  * This function is called at program termination to unregister all EAP peer
+diff -Naurp a/src/eap_peer/eap_methods.h b/src/eap_peer/eap_methods.h
+--- a/src/eap_peer/eap_methods.h	2012-05-15 08:23:17.151386999 +0000
++++ b/src/eap_peer/eap_methods.h	2012-05-15 08:23:57.404389735 +0000
+@@ -32,6 +32,7 @@ EapType eap_peer_get_type(const char *na
+ const char * eap_get_name(int vendor, EapType type);
+ size_t eap_get_names(char *buf, size_t buflen);
+ char ** eap_get_names_as_string_array(size_t *num);
++int eap_peer_register_methods(void);
+ void eap_peer_unregister_methods(void);
+ 
+ #else /* IEEE8021X_EAPOL */
+diff -Naurp a/src/eap_peer/libeap0.pc b/src/eap_peer/libeap0.pc
+--- a/src/eap_peer/libeap0.pc	1970-01-01 00:00:00.000000000 +0000
++++ b/src/eap_peer/libeap0.pc	2012-05-15 08:23:57.404389735 +0000
+@@ -0,0 +1,10 @@
++prefix=/usr
++exec_prefix=/usr
++libdir=${exec_prefix}/lib
++includedir=${prefix}/include/eap_peer
++
++Name: libeap0
++Description: EAP Peer Library API
++Version: 0.7.2
++Libs: -L${libdir} -leap
++Cflags: -I${includedir}
+diff -Naurp a/src/eap_peer/Makefile b/src/eap_peer/Makefile
+--- a/src/eap_peer/Makefile	2012-05-15 08:23:17.152386964 +0000
++++ b/src/eap_peer/Makefile	2012-05-15 08:23:57.403389760 +0000
+@@ -1,11 +1,188 @@
+-all:
+-	@echo Nothing to be made.
++LIBEAP_NAME = libeap
++LIBEAP_CURRENT = 0
++LIBEAP_REVISION = 0
++LIBEAP_AGE = 0
++
++LIBEAP = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT).$(LIBEAP_REVISION).$(LIBEAP_AGE)
++LIBEAP_SO = $(LIBEAP_NAME).so.$(LIBEAP_CURRENT)
++
++.PHONY: all clean install uninstall
++
++all: $(LIBEAP)
++
++ifndef CC
++CC=gcc
++endif
++
++ifndef CFLAGS
++CFLAGS = -MMD -O0 -Wall -g
++endif
++
++CONFIG_TLS=openssl
++
++INCLUDE_INSTALL_DIR=/usr/include/eap_peer
++
++# Got to use override all across the board, otherwise a 'make
++# CFLAGS=XX' will kill us because the command line's CFLAGS will
++# overwrite Make's and we'll loose all the infrastructure it sets.
++override CFLAGS += -I. -I.. -I../crypto -I../utils -I../common
++
++# at least for now, need to include config_ssid.h and config_blob.h from
++# wpa_supplicant directory
++override CFLAGS += -I ../../wpa_supplicant
++
++OBJS_both += ../utils/common.o
++OBJS_both += ../utils/os_unix.o
++OBJS_both += ../utils/wpa_debug.o
++OBJS_both += ../utils/base64.o
++OBJS_both += ../utils/wpabuf.o
++OBJS_both += ../crypto/md5.o
++ifneq ($(CONFIG_TLS), openssl)
++OBJS_both += ../crypto/sha1.o
++endif
++OBJS_both += ../crypto/sha1-tlsprf.o
++OBJS_both += ../crypto/aes-encblock.o
++OBJS_both += ../crypto/aes-wrap.o
++OBJS_both += ../crypto/aes-ctr.o
++OBJS_both += ../crypto/aes-eax.o
++OBJS_both += ../crypto/aes-omac1.o
++OBJS_both += ../crypto/ms_funcs.o
++OBJS_both += ../crypto/sha256.o
++
++
++OBJS_both += ../eap_common/eap_peap_common.o
++OBJS_both += ../eap_common/eap_psk_common.o
++OBJS_both += ../eap_common/eap_pax_common.o
++OBJS_both += ../eap_common/eap_sake_common.o
++OBJS_both += ../eap_common/eap_gpsk_common.o
++OBJS_both += ../eap_common/chap.o
++
++OBJS_peer += ../eap_peer/eap_tls.o
++OBJS_peer += ../eap_peer/eap_peap.o
++OBJS_peer += ../eap_peer/eap_ttls.o
++OBJS_peer += ../eap_peer/eap_md5.o
++OBJS_peer += ../eap_peer/eap_mschapv2.o
++OBJS_peer += ../eap_peer/mschapv2.o
++OBJS_peer += ../eap_peer/eap_otp.o
++OBJS_peer += ../eap_peer/eap_gtc.o
++OBJS_peer += ../eap_peer/eap_leap.o
++OBJS_peer += ../eap_peer/eap_psk.o
++OBJS_peer += ../eap_peer/eap_pax.o
++OBJS_peer += ../eap_peer/eap_sake.o
++OBJS_peer += ../eap_peer/eap_gpsk.o
++OBJS_peer += ../eap_peer/eap.o
++OBJS_peer += ../eap_common/eap_common.o
++OBJS_peer += ../eap_peer/eap_methods.o
++OBJS_peer += ../eap_peer/eap_tls_common.o
++
++override CFLAGS += -DEAP_TLS
++override CFLAGS += -DEAP_PEAP
++override CFLAGS += -DEAP_TTLS
++override CFLAGS += -DEAP_MD5
++override CFLAGS += -DEAP_MSCHAPv2
++override CFLAGS += -DEAP_GTC
++override CFLAGS += -DEAP_OTP
++override CFLAGS += -DEAP_LEAP
++override CFLAGS += -DEAP_PSK
++override CFLAGS += -DEAP_PAX
++override CFLAGS += -DEAP_SAKE
++override CFLAGS += -DEAP_GPSK -DEAP_GPSK_SHA256
++override CFLAGS += -DEAP_TLS_FUNCS
++
++override CFLAGS += -DIEEE8021X_EAPOL
++
++ifeq ($(CONFIG_TLS), openssl)
++override CFLAGS += -DEAP_TLS_OPENSSL
++OBJS_both += ../crypto/tls_openssl.o
++OBJS_both += ../crypto/crypto_openssl.o
++LIBS += -lssl -lcrypto
++override CFLAGS += -DINTERNAL_SHA256
++endif
++
++ifeq ($(CONFIG_TLS), internal)
++OBJS_both += ../crypto/tls_internal.o
++OBJS_both += ../tls/tlsv1_common.o ../../tls/tlsv1_record.o
++OBJS_both += ../tls/tlsv1_cred.o
++OBJS_both += ../tls/asn1.o ../../tls/x509v3.o
++OBJS_both += ../crypto/crypto_internal.o ../../tls/rsa.o ../../tls/bignum.o
++
++OBJS_peer += ../tls/tlsv1_client.o
++OBJS_peer += ../tls/tlsv1_client_write.o ../../tls/tlsv1_client_read.o
++override CFLAGS += -DCONFIG_TLS_INTERNAL_CLIENT
++
++OBJS_server += ../tls/tlsv1_server.o
++OBJS_server += ../tls/tlsv1_server_write.o ../../tls/tlsv1_server_read.o
++override CFLAGS += -DCONFIG_TLS_INTERNAL_SERVER
++
++override CFLAGS += -DCONFIG_TLS_INTERNAL
++override CFLAGS += -DCONFIG_CRYPTO_INTERNAL
++override CFLAGS += -DCONFIG_INTERNAL_X509
++override CFLAGS += -DINTERNAL_AES
++override CFLAGS += -DINTERNAL_SHA1
++override CFLAGS += -DINTERNAL_SHA256
++override CFLAGS += -DINTERNAL_MD5
++override CFLAGS += -DINTERNAL_MD4
++override CFLAGS += -DINTERNAL_DES
++ifdef CONFIG_INTERNAL_LIBTOMMATH
++override CFLAGS += -DCONFIG_INTERNAL_LIBTOMMATH
++else
++LIBS += -ltommath
++endif
++endif
++
++ifndef LDO
++LDO=$(CC)
++endif
++
++
++OBJS_lib=$(OBJS_both) $(OBJS_peer)
++
++ #$(OBJS_server)
++
++override CFLAGS  += -fPIC -DPIC
++LDFLAGS += -shared
++
++$(LIBEAP): $(OBJS_lib)
++	$(LDO) $(LDFLAGS) $(OBJS_lib) -Wl,-soname -Wl,$(LIBEAP_SO) -o $(LIBEAP) $(LIBS)
++
++
++UTIL_HEADERS = ../utils/includes.h ../utils/common.h \
++	../utils/wpabuf.h ../utils/build_config.h \
++	../utils/os.h ../utils/wpa_debug.h
++COMMON_HEADERS = ../common/defs.h 
++EAP_COMMON_HEADERS = ../eap_common/eap_defs.h 
++MAIN_HEADERS = eap.h eap_methods.h eap_config.h
++CRYPTO_HEADERS =  ../crypto/tls.h  
++
++install: 
++
++	mkdir -p $(DESTDIR)/usr/lib
++#	copy the lib file to std lib location
++	cp $(LIBEAP) $(DESTDIR)/usr/lib
++	ln -fs $(LIBEAP_SO) $(DESTDIR)/usr/lib/$(LIBEAP_NAME).so
++	ln -fs $(LIBEAP_NAME).so.0.0.0 $(DESTDIR)/usr/lib/$(LIBEAP_NAME).so.0
++
++#	copy the headers reqd by apps using eap peer library in its own subfolder under /usr/include
++	mkdir -p \
++		$(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common \
++		$(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common \
++		$(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util \
++		$(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto
++	install -m 0644 $(EAP_COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/eap_common
++	install -m 0644 $(COMMON_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/common
++	install -m 0644 $(CRYPTO_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/crypto
++	install -m 0644 $(UTIL_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/util
++	install -m 0644 $(MAIN_HEADERS) $(DESTDIR)/$(INCLUDE_INSTALL_DIR)/
++
++	mkdir -p $(DESTDIR)/usr/lib/pkgconfig
++	cp libeap0.pc $(DESTDIR)/usr/lib/pkgconfig
++
++uninstall: 
++
++	rm $(DESTDIR)/usr/lib/$(LIBEAP)
++	rm -fr $(DESTDIR)/$(INCLUDE_INSTALL_DIR)
++	rm -f $(DESTDIR)/usr/lib/pkgconfig/libeap0.pc
+ 
+ clean:
+-	rm -f *~ *.o *.so *.d
++	rm -f *~ *.o *.so *.d libeap.a $(LIBEAP) $(OBJS_lib)
+ 
+-install:
+-	if ls *.so >/dev/null 2>&1; then \
+-		install -d $(DESTDIR)$(LIBDIR)/wpa_supplicant && \
+-		cp *.so $(DESTDIR)$(LIBDIR)/wpa_supplicant \
+-	; fi

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-linux_wext.patch b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-linux_wext.patch
new file mode 100644
index 0000000..5fee991
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-2.0-linux_wext.patch
@@ -0,0 +1,20 @@
+--- a/wpa_supplicant-2.0/src/drivers/linux_wext.h
++++ b/wpa_supplicant-2.0/src/drivers/linux_wext.h
+@@ -21,11 +21,12 @@
+ 
+ #include <sys/types.h>
+ #include <net/if.h>
+-typedef __uint32_t __u32;
+-typedef __int32_t __s32;
+-typedef __uint16_t __u16;
+-typedef __int16_t __s16;
+-typedef __uint8_t __u8;
++#include <stdint.h>
++typedef uint32_t __u32;
++typedef int32_t __s32;
++typedef uint16_t __u16;
++typedef int16_t __s16;
++typedef uint8_t __u8;
+ #ifndef __user
+ #define __user
+ #endif /* __user */

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-conf.d b/net-wireless/wpa_supplicant/files/wpa_supplicant-conf.d
new file mode 100644
index 0000000..104b9dc
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-conf.d
@@ -0,0 +1,6 @@
+# conf.d file for wpa_supplicant
+#
+# Please check man 8 wpa_supplicant for more information about the options
+# wpa_supplicant accepts.
+#
+wpa_supplicant_args=""

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant-init.d b/net-wireless/wpa_supplicant/files/wpa_supplicant-init.d
new file mode 100644
index 0000000..8429a37
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant-init.d
@@ -0,0 +1,70 @@
+#!/sbin/runscript
+# Copyright (c) 2009 Roy Marples <roy@marples.name>
+# All rights reserved. Released under the 2-clause BSD license.
+
+command=/usr/sbin/wpa_supplicant
+: ${wpa_supplicant_conf:=/etc/wpa_supplicant/wpa_supplicant.conf}
+wpa_supplicant_if=${wpa_supplicant_if:+-i}$wpa_supplicant_if
+command_args="$wpa_supplicant_args -B -c$wpa_supplicant_conf $wpa_supplicant_if"
+name="WPA Supplicant Daemon"
+
+depend()
+{
+	need localmount
+	use logger
+	after bootmisc modules
+	before dns dhcpcd net
+	keyword -shutdown
+}
+
+find_wireless()
+{
+	local iface=
+
+	case "$RC_UNAME" in
+	Linux)
+		for iface in /sys/class/net/*; do
+			if [ -e "$iface"/wireless -o \
+				-e "$iface"/phy80211 ]
+			then
+				echo "${iface##*/}"
+				return 0
+			fi
+		done
+		;;
+	*)
+		for iface in /dev/net/* $(ifconfig -l 2>/dev/null); do
+			if ifconfig "${iface##*/}" 2>/dev/null | \
+				grep -q "[ ]*ssid "
+			then
+				echo "${iface##*/}"
+				return 0
+			fi
+		done
+		;;
+	esac
+	
+	return 1
+}
+
+append_wireless()
+{
+	local iface= i=
+
+	iface=$(find_wireless)
+	if [ -n "$iface" ]; then
+		for i in $iface; do
+			command_args="$command_args -i$i"
+		done
+	else
+		eerror "Could not find a wireless interface"
+	fi
+}
+
+start_pre()
+{
+	case " $command_args" in
+	*" -i"*) ;;
+	*) append_wireless;;
+	esac
+}

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant.conf b/net-wireless/wpa_supplicant/files/wpa_supplicant.conf
new file mode 100644
index 0000000..c3a29e5
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant.conf
@@ -0,0 +1,7 @@
+# This is a network block that connects to any unsecured access point.
+# We give it a low priority so any defined blocks are preferred.
+network={
+	key_mgmt=NONE
+	priority=-9999999
+}
+

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant.service b/net-wireless/wpa_supplicant/files/wpa_supplicant.service
new file mode 100644
index 0000000..e1e75b1
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=WPA supplicant
+
+[Service]
+Type=dbus
+BusName=fi.epitest.hostap.WPASupplicant
+ExecStart=/usr/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf -u
+
+[Install]
+WantedBy=multi-user.target
+Alias=dbus-fi.epitest.hostap.WPASupplicant.service

diff --git a/net-wireless/wpa_supplicant/files/wpa_supplicant_at.service b/net-wireless/wpa_supplicant/files/wpa_supplicant_at.service
new file mode 100644
index 0000000..af0cebf
--- /dev/null
+++ b/net-wireless/wpa_supplicant/files/wpa_supplicant_at.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=WPA supplicant daemon (interface-specific version)
+
+# NetworkManager users will probably want the dbus version instead.
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant.conf -i%I
+
+[Install]
+Alias=multi-user.target.wants/wpa_supplicant@wlan0.service

diff --git a/net-wireless/wpa_supplicant/metadata.xml b/net-wireless/wpa_supplicant/metadata.xml
new file mode 100644
index 0000000..935c73e
--- /dev/null
+++ b/net-wireless/wpa_supplicant/metadata.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer>
+		<email>gurligebis@gentoo.org</email>
+		<name>Bjarke Istrup Pedersen</name>
+	</maintainer>
+	<maintainer>
+		<email>alexxy@gentoo.org</email>
+		<name>Alexey Shvetsov</name>
+	</maintainer>
+	<maintainer>
+		<email>zerochaos@gentoo.org</email>
+		<name>Rick Farina</name>
+	</maintainer>
+	<use>
+		<flag name='ap'>Add support for access point mode</flag>
+		<flag name='eap-sim'>Add support for EAP-SIM authentication algorithm</flag>
+		<flag name='fasteap'>Add support for FAST-EAP authentication algorithm</flag>
+		<flag name='p2p'>Add support for Wi-Fi Direct mode</flag>
+		<flag name='ps3'>Add support for ps3 hypervisor driven gelic wifi</flag>
+		<flag name='wps'>Add support for Wi-Fi Protected Setup</flag>
+		<flag name='wimax'>Add support for Wimax EAP-PEER authentication algorithm</flag>
+		<flag name='smartcard'>Add support for smartcards</flag>
+	</use>
+	<upstream>
+		<remote-id type="cpe">cpe:/a:wpa_supplicant:wpa_supplicant</remote-id>
+	</upstream>
+</pkgmetadata>

diff --git a/net-wireless/wpa_supplicant/wpa_supplicant-2.0-r99.ebuild b/net-wireless/wpa_supplicant/wpa_supplicant-2.0-r99.ebuild
new file mode 100644
index 0000000..60e9354
--- /dev/null
+++ b/net-wireless/wpa_supplicant/wpa_supplicant-2.0-r99.ebuild
@@ -0,0 +1,322 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/wpa_supplicant/wpa_supplicant-2.0-r2.ebuild,v 1.6 2013/12/22 12:03:58 ago Exp $
+
+EAPI=4
+
+inherit eutils toolchain-funcs qt4-r2 systemd multilib
+
+DESCRIPTION="IEEE 802.1X/WPA supplicant for secure wireless transfers"
+HOMEPAGE="http://hostap.epitest.fi/wpa_supplicant/"
+SRC_URI="http://hostap.epitest.fi/releases/${P}.tar.gz"
+LICENSE="|| ( GPL-2 BSD )"
+
+SLOT="0"
+KEYWORDS="~alpha amd64 arm ~ia64 ~mips ppc ppc64 ~sparc x86 ~x86-fbsd"
+IUSE="ap dbus gnutls eap-sim fasteap p2p ps3 qt4 readline selinux smartcard ssl wimax wps kernel_linux kernel_FreeBSD"
+REQUIRED_USE="fasteap? ( !gnutls !ssl ) smartcard? ( ssl )"
+
+RDEPEND="dbus? ( sys-apps/dbus )
+	kernel_linux? (
+		eap-sim? ( sys-apps/pcsc-lite )
+		dev-libs/libnl:3
+		net-wireless/crda
+	)
+	!kernel_linux? ( net-libs/libpcap )
+	qt4? (
+		dev-qt/qtgui:4
+		dev-qt/qtsvg:4
+	)
+	readline? (
+		sys-libs/ncurses
+		sys-libs/readline
+	)
+	ssl? ( dev-libs/openssl )
+	!ssl? ( gnutls? ( net-libs/gnutls ) )
+	!ssl? ( !gnutls? ( dev-libs/libtommath ) )
+	selinux? ( sec-policy/selinux-networkmanager )"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+
+S="${WORKDIR}/${P}/${PN}"
+
+pkg_setup() {
+	if use gnutls && use ssl ; then
+		elog "You have both 'gnutls' and 'ssl' USE flags enabled: defaulting to USE=\"ssl\""
+	fi
+}
+
+src_prepare() {
+	# net/bpf.h needed for net-libs/libpcap on Gentoo/FreeBSD
+	sed -i \
+		-e "s:\(#include <pcap\.h>\):#include <net/bpf.h>\n\1:" \
+		../src/l2_packet/l2_packet_freebsd.c || die
+
+	# People seem to take the example configuration file too literally (bug #102361)
+	sed -i \
+		-e "s:^\(opensc_engine_path\):#\1:" \
+		-e "s:^\(pkcs11_engine_path\):#\1:" \
+		-e "s:^\(pkcs11_module_path\):#\1:" \
+		wpa_supplicant.conf || die
+
+	# Change configuration to match Gentoo locations (bug #143750)
+	sed -i \
+		-e "s:/usr/lib/opensc:/usr/$(get_libdir):" \
+		-e "s:/usr/lib/pkcs11:/usr/$(get_libdir):" \
+		wpa_supplicant.conf || die
+
+	if use dbus; then
+		epatch "${FILESDIR}/${P}-dbus-path-fix.patch"
+	fi
+
+	# systemd entries to D-Bus service files (bug #372877)
+	echo 'SystemdService=wpa_supplicant.service' \
+		| tee -a dbus/*.service >/dev/null || die
+
+	cd "${WORKDIR}/${P}"
+
+	if use wimax; then
+		# generate-libeap-peer.patch comes before
+		# fix-undefined-reference-to-random_get_bytes.patch
+		epatch "${FILESDIR}/${P}-generate-libeap-peer.patch"
+		epatch "${FILESDIR}/${P}-fix-undefined-reference-to-random_get_bytes.patch"
+
+		# multilib-strict fix (bug #373685)
+		sed -e "s/\/usr\/lib/\/usr\/$(get_libdir)/" -i src/eap_peer/Makefile
+	fi
+
+	# bug (320097)
+	epatch "${FILESDIR}/${P}-do-not-call-dbus-functions-with-NULL-path.patch"
+
+	epatch "${FILESDIR}/${P}-linux_wext.patch"
+
+	# TODO - NEED TESTING TO SEE IF STILL NEEDED, NOT COMPATIBLE WITH 1.0 OUT OF THE BOX,
+	# SO WOULD BE NICE TO JUST DROP IT, IF IT IS NOT NEEDED.
+	# bug (374089)
+	#epatch "${FILESDIR}/${P}-dbus-WPAIE-fix.patch"
+}
+
+src_configure() {
+	# Toolchain setup
+	tc-export CC
+
+	# Basic setup
+	echo "CONFIG_CTRL_IFACE=y" >> .config
+	echo "CONFIG_BACKEND=file" >> .config
+
+	# Basic authentication methods
+	# NOTE: we don't set GPSK or SAKE as they conflict
+	# with the below options
+	echo "CONFIG_EAP_GTC=y"         >> .config
+	echo "CONFIG_EAP_MD5=y"         >> .config
+	echo "CONFIG_EAP_OTP=y"         >> .config
+	echo "CONFIG_EAP_PAX=y"         >> .config
+	echo "CONFIG_EAP_PSK=y"         >> .config
+	echo "CONFIG_EAP_TLV=y"         >> .config
+	echo "CONFIG_IEEE8021X_EAPOL=y" >> .config
+	echo "CONFIG_PKCS12=y"          >> .config
+	echo "CONFIG_PEERKEY=y"         >> .config
+	echo "CONFIG_EAP_LEAP=y"        >> .config
+	echo "CONFIG_EAP_MSCHAPV2=y"    >> .config
+	echo "CONFIG_EAP_PEAP=y"        >> .config
+	echo "CONFIG_EAP_TLS=y"         >> .config
+	echo "CONFIG_EAP_TTLS=y"        >> .config
+
+	if use dbus ; then
+		echo "CONFIG_CTRL_IFACE_DBUS=y" >> .config
+		echo "CONFIG_CTRL_IFACE_DBUS_NEW=y" >> .config
+		echo "CONFIG_CTRL_IFACE_DBUS_INTRO=y" >> .config
+	fi
+
+	# Enable support for writing debug info to a log file.
+	echo "CONFIG_DEBUG_FILE=y" >> .config
+
+	if use eap-sim ; then
+		# Smart card authentication
+		echo "CONFIG_EAP_SIM=y"       >> .config
+		echo "CONFIG_EAP_AKA=y"       >> .config
+		echo "CONFIG_EAP_AKA_PRIME=y" >> .config
+		echo "CONFIG_PCSC=y"          >> .config
+	fi
+
+	if use fasteap ; then
+		echo "CONFIG_EAP_FAST=y" >> .config
+	fi
+
+	if use readline ; then
+		# readline/history support for wpa_cli
+		echo "CONFIG_READLINE=y" >> .config
+	fi
+
+	# SSL authentication methods
+	if use ssl ; then
+		echo "CONFIG_TLS=openssl"    >> .config
+	elif use gnutls ; then
+		echo "CONFIG_TLS=gnutls"     >> .config
+		echo "CONFIG_GNUTLS_EXTRA=y" >> .config
+	else
+		echo "CONFIG_TLS=internal"   >> .config
+	fi
+
+	if use smartcard ; then
+		echo "CONFIG_SMARTCARD=y"    >> .config
+	fi
+
+	if use kernel_linux ; then
+		# Linux specific drivers
+		echo "CONFIG_DRIVER_ATMEL=y"       >> .config
+		#echo "CONFIG_DRIVER_BROADCOM=y"   >> .config
+		#echo "CONFIG_DRIVER_HERMES=y"	   >> .config
+		echo "CONFIG_DRIVER_HOSTAP=y"      >> .config
+		echo "CONFIG_DRIVER_IPW=y"         >> .config
+		echo "CONFIG_DRIVER_NDISWRAPPER=y" >> .config
+		echo "CONFIG_DRIVER_NL80211=y"     >> .config
+		#echo "CONFIG_DRIVER_PRISM54=y"    >> .config
+		echo "CONFIG_DRIVER_RALINK=y"      >> .config
+		echo "CONFIG_DRIVER_WEXT=y"        >> .config
+		echo "CONFIG_DRIVER_WIRED=y"       >> .config
+
+		if use ps3 ; then
+			echo "CONFIG_DRIVER_PS3=y" >> .config
+		fi
+
+	elif use kernel_FreeBSD ; then
+		# FreeBSD specific driver
+		echo "CONFIG_DRIVER_BSD=y" >> .config
+	fi
+
+	# Wi-Fi Protected Setup (WPS)
+	if use wps ; then
+		echo "CONFIG_WPS=y" >> .config
+		echo "CONFIG_WPS2=y" >> .config
+		# USB Flash Drive
+		echo "CONFIG_WPS_UFD=y" >> .config
+		# External Registrar
+		echo "CONFIG_WPS_ER=y" >> .config
+		# Universal Plug'n'Play
+		echo "CONFIG_WPS_UPNP=y" >> .config
+		# Near Field Communication
+		echo "CONFIG_WPS_NFC=y" >> .config
+	fi
+
+	# Wi-Fi Direct (WiDi)
+	if use p2p ; then
+		echo "CONFIG_P2P=y" >> .config
+	fi
+
+	# Access Point Mode
+	if use ap ; then
+		echo "CONFIG_AP=y" >> .config
+	fi
+
+	# Enable mitigation against certain attacks against TKIP
+	echo "CONFIG_DELAYED_MIC_ERROR_REPORT=y" >> .config
+
+	# If we are using libnl 2.0 and above, enable support for it
+	# Bug 382159
+	# Removed for now, since the 3.2 version is broken, and we don't
+	# support it.
+	if has_version ">=dev-libs/libnl-3.2"; then
+		echo "CONFIG_LIBNL32=y" >> .config
+	fi
+
+	if use qt4 ; then
+		pushd "${S}"/wpa_gui-qt4 > /dev/null
+		eqmake4 wpa_gui.pro
+		popd > /dev/null
+	fi
+}
+
+src_compile() {
+	einfo "Building wpa_supplicant"
+	emake V=1
+
+	if use wimax; then
+		emake -C ../src/eap_peer clean
+		emake -C ../src/eap_peer
+	fi
+
+	if use qt4 ; then
+		pushd "${S}"/wpa_gui-qt4 > /dev/null
+		einfo "Building wpa_gui"
+		emake
+		popd > /dev/null
+	fi
+}
+
+src_install() {
+	dosbin wpa_supplicant
+	dobin wpa_cli wpa_passphrase
+
+	# baselayout-1 compat
+	if has_version "<sys-apps/baselayout-2.0.0"; then
+		dodir /sbin
+		dosym /usr/sbin/wpa_supplicant /sbin/wpa_supplicant
+		dodir /bin
+		dosym /usr/bin/wpa_cli /bin/wpa_cli
+	fi
+
+	if has_version ">=sys-apps/openrc-0.5.0"; then
+		newinitd "${FILESDIR}/${PN}-init.d" wpa_supplicant
+		newconfd "${FILESDIR}/${PN}-conf.d" wpa_supplicant
+	fi
+
+	exeinto /etc/wpa_supplicant/
+	newexe "${FILESDIR}/wpa_cli.sh" wpa_cli.sh
+
+	dodoc ChangeLog {eap_testing,todo}.txt README{,-WPS} \
+		wpa_supplicant.conf
+
+	doman doc/docbook/*.{5,8}
+
+	if use qt4 ; then
+		into /usr
+		dobin wpa_gui-qt4/wpa_gui
+		doicon wpa_gui-qt4/icons/wpa_gui.svg
+		make_desktop_entry wpa_gui "WPA Supplicant Administration GUI" "wpa_gui" "Qt;Network;"
+	fi
+
+	use wimax && emake DESTDIR="${D}" -C ../src/eap_peer install
+
+	if use dbus ; then
+		pushd "${S}"/dbus > /dev/null
+		insinto /etc/dbus-1/system.d
+		newins dbus-wpa_supplicant.conf wpa_supplicant.conf
+		insinto /usr/share/dbus-1/system-services
+		doins fi.epitest.hostap.WPASupplicant.service fi.w1.wpa_supplicant1.service
+		keepdir /var/run/wpa_supplicant
+		popd > /dev/null
+	fi
+
+	# systemd stuff
+	systemd_dounit "${FILESDIR}"/wpa_supplicant.service
+	systemd_newunit "${FILESDIR}"/wpa_supplicant_at.service 'wpa_supplicant@.service'
+}
+
+pkg_postinst() {
+	elog "If this is a clean installation of wpa_supplicant, you"
+	elog "have to create a configuration file named"
+	elog "/etc/wpa_supplicant/wpa_supplicant.conf"
+	elog
+	elog "An example configuration file is available for reference in"
+	elog "/usr/share/doc/${PF}/"
+
+	if [[ -e ${ROOT}etc/wpa_supplicant.conf ]] ; then
+		echo
+		ewarn "WARNING: your old configuration file ${ROOT}etc/wpa_supplicant.conf"
+		ewarn "needs to be moved to ${ROOT}etc/wpa_supplicant/wpa_supplicant.conf"
+	fi
+
+	# Mea culpa, feel free to remove that after some time --mgorny.
+	local fn
+	for fn in wpa_supplicant{,@wlan0}.service; do
+		if [[ -e "${ROOT}"/etc/systemd/system/network.target.wants/${fn} ]]
+		then
+			ebegin "Moving ${fn} to multi-user.target"
+			mv "${ROOT}"/etc/systemd/system/network.target.wants/${fn} \
+				"${ROOT}"/etc/systemd/system/multi-user.target.wants/
+			eend ${?} \
+				"Please try to re-enable ${fn}"
+		fi
+	done
+}


             reply	other threads:[~2014-02-17 11:53 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-17 11:53 Anthony G. Basile [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-10-10 18:20 [gentoo-commits] proj/hardened-dev:musl commit in: net-wireless/wpa_supplicant/files/, net-wireless/wpa_supplicant/ Anthony G. Basile
2015-05-02 23:42 Anthony G. Basile

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1392638025.1c83f1718792489fb87e610b5836ed95855f1337.blueness@gentoo \
    --to=blueness@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox