public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Arfrever Frehtes Taifersar Arahesis (arfrever)" <arfrever@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] gentoo-x86 commit in eclass: python.eclass
Date: Sat, 13 Mar 2010 13:46:20 +0000	[thread overview]
Message-ID: <E1NqRfY-0005mH-WA@stork.gentoo.org> (raw)

arfrever    10/03/13 13:46:20

  Modified:             python.eclass
  Log:
  Improve phase functions.
  Simplify and improve validate_PYTHON_ABIS().
  Fix handling of ${S} ending in '/' in python_copy_sources() (bug #307943).
  Improve python_generate_wrapper_scripts().
  Improve python_convert_shebangs().
  Add python_clean_sitedirs().
  Simplify python_mod_cleanup().
  Improve deprecation warnings in python_version(), python_mod_exists() and python_tkinter_exists().

Revision  Changes    Path
1.94                 eclass/python.eclass

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/python.eclass?rev=1.94&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/python.eclass?rev=1.94&content-type=text/plain
diff : http://sources.gentoo.org/viewcvs.py/gentoo-x86/eclass/python.eclass?r1=1.93&r2=1.94

Index: python.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/python.eclass,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -r1.93 -r1.94
--- python.eclass	12 Mar 2010 18:27:01 -0000	1.93
+++ python.eclass	13 Mar 2010 13:46:20 -0000	1.94
@@ -1,6 +1,6 @@
 # Copyright 1999-2010 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/python.eclass,v 1.93 2010/03/12 18:27:01 betelgeuse Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/python.eclass,v 1.94 2010/03/13 13:46:20 arfrever Exp $
 
 # @ECLASS: python.eclass
 # @MAINTAINER:
@@ -273,13 +273,15 @@
 # @DESCRIPTION:
 # Set this to export phase functions for the following ebuild phases:
 # src_prepare, src_configure, src_compile, src_test, src_install.
-if ! has "${EAPI:-0}" 0 1 && [[ -n "${SUPPORT_PYTHON_ABIS}" ]]; then
+if ! has "${EAPI:-0}" 0 1; then
 	python_src_prepare() {
 		python_copy_sources
 	}
 
 	for python_default_function in src_configure src_compile src_test src_install; do
-		eval "python_${python_default_function}() { python_execute_function -d -s; }"
+		eval "python_${python_default_function}() {
+			python_execute_function -d -s \"\$@\"
+		}"
 	done
 	unset python_default_function
 
@@ -308,7 +310,7 @@
 		PYTHON_ABI_SUPPORTED_VALUES="${_CPYTHON2_SUPPORTED_ABIS[@]} ${_CPYTHON3_SUPPORTED_ABIS[@]} ${_JYTHON_SUPPORTED_ABIS[@]}"
 
 		if [[ "$(declare -p USE_PYTHON 2> /dev/null)" == "declare -x USE_PYTHON="* ]]; then
-			local python2_enabled="0" python3_enabled="0"
+			local cpython_enabled="0"
 
 			if [[ -z "${USE_PYTHON}" ]]; then
 				die "USE_PYTHON variable is empty"
@@ -319,11 +321,8 @@
 					die "USE_PYTHON variable contains invalid value '${PYTHON_ABI}'"
 				fi
 
-				if has "${PYTHON_ABI}" "${_CPYTHON2_SUPPORTED_ABIS[@]}"; then
-					python2_enabled="1"
-				fi
-				if has "${PYTHON_ABI}" "${_CPYTHON3_SUPPORTED_ABIS[@]}"; then
-					python3_enabled="1"
+				if has "${PYTHON_ABI}" "${_CPYTHON2_SUPPORTED_ABIS[@]}" "${_CPYTHON3_SUPPORTED_ABIS[@]}"; then
+					cpython_enabled="1"
 				fi
 
 				support_ABI="1"
@@ -340,13 +339,7 @@
 				die "USE_PYTHON variable does not enable any version of Python supported by ${CATEGORY}/${PF}"
 			fi
 
-			if [[ "${python2_enabled}" == "0" ]]; then
-				ewarn "USE_PYTHON variable does not enable any version of Python 2. This configuration is unsupported."
-			fi
-			if [[ "${python3_enabled}" == "0" ]]; then
-				ewarn "USE_PYTHON variable does not enable any version of Python 3. This configuration is unsupported."
-			fi
-			if [[ "${python2_enabled}" == "0" && "${python3_enabled}" == "0" ]]; then
+			if [[ "${cpython_enabled}" == "0" ]]; then
 				die "USE_PYTHON variable does not enable any version of CPython"
 			fi
 		else
@@ -496,9 +489,6 @@
 			die "${FUNCNAME}(): '${function}' function is not defined"
 		fi
 	else
-		if [[ "$#" -ne 0 ]]; then
-			die "${FUNCNAME}(): '--default-function' option and function name cannot be specified simultaneously"
-		fi
 		if has "${EAPI:-0}" 0 1; then
 			die "${FUNCNAME}(): '--default-function' option cannot be used in this EAPI"
 		fi
@@ -506,28 +496,28 @@
 		if [[ "${EBUILD_PHASE}" == "configure" ]]; then
 			if has "${EAPI}" 2 3; then
 				python_default_function() {
-					econf
+					econf "$@"
 				}
 			else
 				python_default_function() {
-					nonfatal econf
+					nonfatal econf "$@"
 				}
 			fi
 		elif [[ "${EBUILD_PHASE}" == "compile" ]]; then
 			python_default_function() {
-				emake
+				emake "$@"
 			}
 		elif [[ "${EBUILD_PHASE}" == "test" ]]; then
 			python_default_function() {
 				if emake -j1 -n check &> /dev/null; then
-					emake -j1 check
+					emake -j1 check "$@"
 				elif emake -j1 -n test &> /dev/null; then
-					emake -j1 test
+					emake -j1 test "$@"
 				fi
 			}
 		elif [[ "${EBUILD_PHASE}" == "install" ]]; then
 			python_default_function() {
-				emake DESTDIR="${D}" install
+				emake DESTDIR="${D}" install "$@"
 			}
 		else
 			die "${FUNCNAME}(): '--default-function' option cannot be used in this ebuild phase"
@@ -665,7 +655,7 @@
 		if [[ "${WORKDIR}" == "${S}" ]]; then
 			die "${FUNCNAME}() cannot be used"
 		fi
-		dirs=("${S}")
+		dirs=("${S%/}")
 	else
 		dirs=("$@")
 	fi
@@ -761,12 +751,12 @@
 		fi
 
 		if [[ "${quiet}" == "0" ]]; then
-			einfo "Generating '${file#${D%/}}' wrapper script"
+			einfo "Generating '${file#${ED%/}}' wrapper script"
 		fi
 
 		cat << EOF > "${file}"
 #!/usr/bin/env python
-# Gentoo '${file##*/}' wrapper script
+# Gentoo '${file##*/}' wrapper script generated by python_generate_wrapper_scripts()
 
 import os
 import re
@@ -774,6 +764,8 @@
 import sys
 
 EPYTHON_re = re.compile(r"^python(\d+\.\d+)$")
+python_shebang_re = re.compile(r"^#! *(${EPREFIX}/usr/bin/python|(${EPREFIX})?/usr/bin/env +(${EPREFIX}/usr/bin/)?python)")
+python_verification_output_re = re.compile("^GENTOO_PYTHON_TARGET_SCRIPT_PATH supported\n$")
 
 EOF
 		if [[ "$?" != "0" ]]; then
@@ -798,16 +790,16 @@
 		sys.stderr.write("Execution of 'eselect python show${eselect_python_option:+ }${eselect_python_option}' failed\n")
 		sys.exit(1)
 
-	eselect_output = eselect_process.stdout.read()
-	if not isinstance(eselect_output, str):
+	EPYTHON = eselect_process.stdout.read().rstrip("\n")
+	if not isinstance(EPYTHON, str):
 		# Python 3
-		eselect_output = eselect_output.decode()
+		EPYTHON = EPYTHON.decode()
 
-	EPYTHON_matched = EPYTHON_re.match(eselect_output)
+	EPYTHON_matched = EPYTHON_re.match(EPYTHON)
 	if EPYTHON_matched:
 		PYTHON_ABI = EPYTHON_matched.group(1)
 	else:
-		sys.stderr.write("'eselect python show${eselect_python_option:+ }${eselect_python_option}' printed unrecognized value '%s" % eselect_output)
+		sys.stderr.write("'eselect python show${eselect_python_option:+ }${eselect_python_option}' printed unrecognized value '%s" % EPYTHON)
 		sys.exit(1)
 EOF
 			if [[ "$?" != "0" ]]; then
@@ -823,16 +815,16 @@
 	sys.stderr.write("Execution of 'eselect python show${eselect_python_option:+ }${eselect_python_option}' failed\n")
 	sys.exit(1)
 
-eselect_output = eselect_process.stdout.read()
-if not isinstance(eselect_output, str):
+EPYTHON = eselect_process.stdout.read().rstrip("\n")
+if not isinstance(EPYTHON, str):
 	# Python 3
-	eselect_output = eselect_output.decode()
+	EPYTHON = EPYTHON.decode()
 
-EPYTHON_matched = EPYTHON_re.match(eselect_output)
+EPYTHON_matched = EPYTHON_re.match(EPYTHON)
 if EPYTHON_matched:
 	PYTHON_ABI = EPYTHON_matched.group(1)
 else:
-	sys.stderr.write("'eselect python show${eselect_python_option:+ }${eselect_python_option}' printed unrecognized value '%s" % eselect_output)
+	sys.stderr.write("'eselect python show${eselect_python_option:+ }${eselect_python_option}' printed unrecognized value '%s" % EPYTHON)
 	sys.exit(1)
 EOF
 			if [[ "$?" != "0" ]]; then
@@ -841,13 +833,47 @@
 		fi
 		cat << EOF >> "${file}"
 
-os.environ["PYTHON_SCRIPT_NAME"] = sys.argv[0]
-target_executable = "%s-%s" % (os.path.realpath(sys.argv[0]), PYTHON_ABI)
-if not os.path.exists(target_executable):
-	sys.stderr.write("'%s' does not exist\n" % target_executable)
+wrapper_script_path = os.path.realpath(sys.argv[0])
+target_executable_path = "%s-%s" % (wrapper_script_path, PYTHON_ABI)
+os.environ["GENTOO_PYTHON_WRAPPER_SCRIPT_PATH"] = sys.argv[0]
+os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH"] = target_executable_path
+if not os.path.exists(target_executable_path):
+	sys.stderr.write("'%s' does not exist\n" % target_executable_path)
 	sys.exit(1)
 
-os.execv(target_executable, sys.argv)
+target_executable = open(target_executable_path, "rb")
+target_executable_first_line = target_executable.readline()
+if not isinstance(target_executable_first_line, str):
+	# Python 3
+	target_executable_first_line = target_executable_first_line.decode("utf_8", "replace")
+
+python_shebang_matched = python_shebang_re.match(target_executable_first_line)
+target_executable.close()
+
+if python_shebang_matched:
+	try:
+		python_interpreter_path = "${EPREFIX}/usr/bin/%s" % EPYTHON
+		os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION"] = "1"
+		python_verification_process = subprocess.Popen([python_interpreter_path, "-c", "pass"], stdout=subprocess.PIPE)
+		del os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION"]
+		if python_verification_process.wait() != 0:
+			raise ValueError
+
+		python_verification_output = python_verification_process.stdout.read()
+		if not isinstance(python_verification_output, str):
+			# Python 3
+			python_verification_output = python_verification_output.decode()
+
+		if not python_verification_output_re.match(python_verification_output):
+			raise ValueError
+
+		os.execv(python_interpreter_path, [python_interpreter_path] + sys.argv)
+	except:
+		pass
+	if "GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION" in os.environ:
+		del os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION"]
+
+os.execv(target_executable_path, sys.argv)
 EOF
 		if [[ "$?" != "0" ]]; then
 			die "${FUNCNAME}(): Generation of '$1' failed"
@@ -1019,7 +1045,7 @@
 		elif [[ -z "${SUPPORT_PYTHON_ABIS}" ]]; then
 			PYTHON_ABI="$("${EPREFIX}/usr/bin/python" -c "${_PYTHON_ABI_EXTRACTION_COMMAND}")"
 		elif [[ -z "${PYTHON_ABI}" ]]; then
-			die "${FUNCNAME}(): Invalid usage: Python ABI not specified"
+			die "${FUNCNAME}(): Invalid usage: ${FUNCNAME}() should be used in ABI-specific local scope"
 		fi
 	elif [[ "$#" -eq 1 ]]; then
 		if [[ "${final_ABI}" == "1" ]]; then
@@ -1487,9 +1513,12 @@
 		[[ "${only_executables}" == "1" && ! -x "${file}" ]] && continue
 
 		if [[ "$(head -n1 "${file}")" =~ ^'#!'.*python ]]; then
+			[[ "$(sed -ne "2p" "${file}")" =~ ^"# Gentoo '".*"' wrapper script generated by python_generate_wrapper_scripts()"$ ]] && continue
+
 			if [[ "${quiet}" == "0" ]]; then
 				einfo "Converting shebang in '${file}'"
 			fi
+
 			sed -e "1s/python\([[:digit:]]\+\(\.[[:digit:]]\+\)\?\)\?/python${python_version}/" -i "${file}" || die "Conversion of shebang in '${file}' failed"
 
 			# Delete potential whitespace after "#!".
@@ -1498,6 +1527,15 @@
 	done
 }
 
+# @FUNCTION: python_clean_sitedirs
+# @DESCRIPTION:
+# Delete needless files in site-packages directories in ${ED}.
+python_clean_sitedirs() {
+	_python_initialize_prefix_variables
+
+	find "${ED}"usr/$(get_libdir)/python*/site-packages "(" -name "*.c" -o -name "*.h" -o -name "*.la" ")" -type f -print0 | xargs -0 rm -f
+}
+
 # ================================================================================================
 # ================================ FUNCTIONS FOR RUNNING OF TESTS ================================
 # ================================================================================================
@@ -1984,27 +2022,27 @@
 				if [[ "${REPLY}" == *[co] ]]; then
 					py_file="${REPLY%[co]}"
 					[[ -f "${py_file}" || (! -f "${py_file}c" && ! -f "${py_file}o") ]] && continue
-					einfo "${_BLUE}<<< ${py_file}[co]${_NORMAL}"
+					echo "${_BLUE}<<< ${py_file}[co]${_NORMAL}"
 					rm -f "${py_file}"[co]
 				elif [[ "${REPLY}" == *\$py.class ]]; then
 					py_file="${REPLY%\$py.class}.py"
 					[[ -f "${py_file}" || ! -f "${py_file%.py}\$py.class" ]] && continue
-					einfo "${_BLUE}<<< ${py_file%.py}\$py.class${_NORMAL}"
+					echo "${_BLUE}<<< ${py_file%.py}\$py.class${_NORMAL}"
 					rm -f "${py_file%.py}\$py.class"
 				fi
 			done
 
 			# Attempt to delete directories, which may be empty.
 			find "${path}" -type d | sort -r | while read -r dir; do
-				rmdir "${dir}" 2>/dev/null && einfo "${_CYAN}<<< ${dir}${_NORMAL}"
+				rmdir "${dir}" 2>/dev/null && echo "${_CYAN}<<< ${dir}${_NORMAL}"
 			done
 		elif [[ "${path}" == *.py && ! -f "${path}" ]]; then
 			if [[ (-f "${path}c" || -f "${path}o") ]]; then
-				einfo "${_BLUE}<<< ${path}[co]${_NORMAL}"
+				echo "${_BLUE}<<< ${path}[co]${_NORMAL}"
 				rm -f "${path}"[co]
 			fi
 			if [[ -f "${path%.py}\$py.class" ]]; then
-				einfo "${_BLUE}<<< ${path%.py}\$py.class${_NORMAL}"
+				echo "${_BLUE}<<< ${path%.py}\$py.class${_NORMAL}"
 				rm -f "${path%.py}\$py.class"
 			fi
 		fi
@@ -2029,6 +2067,7 @@
 		einfo
 		einfo "Deprecation Warning: ${FUNCNAME}() is deprecated and will be banned on 2010-07-01."
 		einfo "Use PYTHON() instead of python variable. Use python_get_*() instead of PYVER* variables."
+		einfo "The ebuild needs to be fixed. Please report a bug, if it has not been already reported."
 		einfo
 	fi
 
@@ -2066,6 +2105,7 @@
 	einfo
 	einfo "Deprecation Warning: ${FUNCNAME}() is deprecated and will be banned on 2010-07-01."
 	einfo "Use USE dependencies and/or has_version() instead of ${FUNCNAME}()."
+	einfo "The ebuild needs to be fixed. Please report a bug, if it has not been already reported."
 	einfo
 
 	if [[ "$#" -ne 1 ]]; then
@@ -2088,6 +2128,7 @@
 		einfo
 		einfo "Deprecation Warning: ${FUNCNAME}() is deprecated and will be banned on 2010-07-01."
 		einfo "Use PYTHON_USE_WITH=\"xml\" and python_pkg_setup() instead of ${FUNCNAME}()."
+		einfo "The ebuild needs to be fixed. Please report a bug, if it has not been already reported."
 		einfo
 	fi
 






             reply	other threads:[~2010-03-13 13:46 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-13 13:46 Arfrever Frehtes Taifersar Arahesis (arfrever) [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-02-06  5:34 [gentoo-commits] gentoo-x86 commit in eclass: python.eclass Mike Frysinger (vapier)
2011-12-19  1:29 Robin H. Johnson (robbat2)
2011-11-30  8:55 Dirkjan Ochtman (djc)
2011-11-18 23:37 Mike Frysinger (vapier)
2011-10-15 20:58 PaweA Hajdan (phajdan.jr)
2011-10-07 10:57 Dirkjan Ochtman (djc)
2011-10-07 10:55 Dirkjan Ochtman (djc)
2011-10-07 10:53 Dirkjan Ochtman (djc)
2011-10-07 10:52 Dirkjan Ochtman (djc)
2011-10-07 10:49 Dirkjan Ochtman (djc)
2011-10-07 10:48 Dirkjan Ochtman (djc)
2011-09-10 13:48 Dirkjan Ochtman (djc)
2011-08-19 12:16 Fabio Erculiani (lxnay)
2011-08-19 10:18 Fabio Erculiani (lxnay)
2011-08-19 10:10 Fabio Erculiani (lxnay)
2011-07-08  7:49 Dirkjan Ochtman (djc)
2011-07-08  7:48 Dirkjan Ochtman (djc)
2011-07-08  7:47 Dirkjan Ochtman (djc)
2011-07-08  7:46 Dirkjan Ochtman (djc)
2011-07-08  7:44 Dirkjan Ochtman (djc)
2011-07-08  7:43 Dirkjan Ochtman (djc)
2011-07-08  7:41 Dirkjan Ochtman (djc)
2011-07-08  7:40 Dirkjan Ochtman (djc)
2011-07-08  7:39 Dirkjan Ochtman (djc)
2011-07-08  7:37 Dirkjan Ochtman (djc)
2011-07-04 11:28 Dirkjan Ochtman (djc)
2011-07-04 11:27 Dirkjan Ochtman (djc)
2011-07-04 11:27 Dirkjan Ochtman (djc)
2011-07-04 11:00 Dirkjan Ochtman (djc)
2011-07-04 10:59 Dirkjan Ochtman (djc)
2011-07-04 10:50 Dirkjan Ochtman (djc)
2011-07-04 10:48 Dirkjan Ochtman (djc)
2011-03-10 17:49 Arfrever Frehtes Taifersar Arahesis (arfrever)
2011-02-14 20:46 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-12-31 21:51 Jonathan Callen (abcd)
2010-12-26 11:30 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-12-24 15:01 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-10-29 19:09 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-10-25 11:54 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-10-03  0:38 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-07-18 20:45 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-07-17 23:02 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-05-29 16:39 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-05-25 19:49 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-05-25 15:04 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-05-17 18:01 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-03-26 15:23 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-03-20 17:59 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-03-12 18:27 Petteri Raty (betelgeuse)
2010-03-04 17:42 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-02-28 15:49 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-02-28 11:48 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-02-14 18:53 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-02-11 18:52 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-02-02 18:55 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-01-15 14:46 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-01-14 19:23 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-01-11 16:07 Arfrever Frehtes Taifersar Arahesis (arfrever)
2010-01-10 17:03 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-12-23 23:43 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-11-22 16:45 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-11-22 13:48 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-11-15 22:00 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-11-15 14:25 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-10-11 13:34 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-10-02 23:09 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-10-02 17:32 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-10-02  2:02 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-09-18 17:50 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-09-11 19:55 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-09-09  4:16 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-09-05 17:30 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-31 23:58 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-31  0:07 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-29  2:15 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-28 16:08 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-15 23:32 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-15 21:50 Petteri Raty (betelgeuse)
2009-08-14 21:22 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-13 16:57 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-07  0:43 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-05 18:31 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-04 21:01 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-03 22:28 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-08-02 16:56 Arfrever Frehtes Taifersar Arahesis (arfrever)
2009-05-27 22:49 Petteri Raty (betelgeuse)
2008-10-30  5:21 Zac Medico (zmedico)
2008-10-27 12:23 Ali Polatel (hawking)
2008-10-27  0:17 Ali Polatel (hawking)
2008-10-26 21:54 Ali Polatel (hawking)
2008-10-26 21:21 Ali Polatel (hawking)
2008-10-26 17:46 Ali Polatel (hawking)
2008-10-26 17:34 Ali Polatel (hawking)
2008-10-26 17:26 Ali Polatel (hawking)
2008-10-26 17:11 Ali Polatel (hawking)
2008-09-01 14:11 Ali Polatel (hawking)
2008-08-29 19:28 Ali Polatel (hawking)
2008-08-01 22:22 Rob Cakebread (pythonhead)
2008-07-28 21:56 Rob Cakebread (pythonhead)
2008-05-30  9:58 Ali Polatel (hawking)
2008-05-29 22:03 Ali Polatel (hawking)
2008-05-29 21:19 Ali Polatel (hawking)
2008-05-29 20:01 Ali Polatel (hawking)
2008-05-29 18:36 Ali Polatel (hawking)
2008-05-29 15:24 Ali Polatel (hawking)
2008-05-29 14:10 Ali Polatel (hawking)
2008-03-28  7:11 Ali Polatel (hawking)

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=E1NqRfY-0005mH-WA@stork.gentoo.org \
    --to=arfrever@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