public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] [PATCH] Initial version of python_export().
@ 2012-10-23 20:57 Michał Górny
  0 siblings, 0 replies; only message in thread
From: Michał Górny @ 2012-10-23 20:57 UTC (permalink / raw
  To: gentoo-dev; +Cc: Michał Górny

This function can be used to obtain PYTHON & EPYTHON variables for any
Python implementation supported.
---
 gx86/eclass/distutils-r1.eclass |  2 +-
 gx86/eclass/python-r1.eclass    | 85 +++++++++++++++++++++++++++--------------
 2 files changed, 57 insertions(+), 30 deletions(-)

diff --git a/gx86/eclass/distutils-r1.eclass b/gx86/eclass/distutils-r1.eclass
index 1b734b2..4370b4f 100644
--- a/gx86/eclass/distutils-r1.eclass
+++ b/gx86/eclass/distutils-r1.eclass
@@ -256,7 +256,7 @@ distutils-r1_python_install_all() {
 	local impl EPYTHON PYTHON
 	for impl in "${PYTHON_COMPAT[@]}"; do
 		if use "python_targets_${impl}"; then
-			_python_set_PYTHON "${impl}"
+			python_export "${impl}" EPYTHON
 			break
 		fi
 	done
diff --git a/gx86/eclass/python-r1.eclass b/gx86/eclass/python-r1.eclass
index 89fc0e7..5ca51f6 100644
--- a/gx86/eclass/python-r1.eclass
+++ b/gx86/eclass/python-r1.eclass
@@ -154,34 +154,6 @@ _python_set_globals() {
 }
 _python_set_globals
 
-# @FUNCTION: _python_set_PYTHON
-# @USAGE: <impl>
-# @INTERNAL
-# @DESCRIPTION:
-# Get the Python executable name for the given implementation and set it
-# as ${PYTHON} & ${EPYTHON}. Please note that EPYTHON will contain
-# the 'basename' while PYTHON will contain the full path.
-_python_set_PYTHON() {
-	debug-print-function ${FUNCNAME} "${@}"
-
-	local impl=${1/_/.}
-
-	case "${impl}" in
-		python*|jython*)
-			EPYTHON=${impl}
-			;;
-		pypy*)
-			EPYTHON=pypy-c${impl#pypy}
-			;;
-		*)
-			die "Invalid argument to _python_set_PYTHON: ${1}"
-			;;
-	esac
-	PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
-
-	debug-print "${FUNCNAME}: ${impl} -> ${PYTHON}"
-}
-
 # @ECLASS-VARIABLE: BUILD_DIR
 # @DESCRIPTION:
 # The current build directory. In global scope, it is supposed to
@@ -221,6 +193,61 @@ _python_set_PYTHON() {
 # python2.6
 # @CODE
 
+# @FUNCTION: python_export
+# @USAGE: [<impl>] <variables>...
+# @DESCRIPTION:
+# Set and export the Python implementation-relevant variables passed
+# as parameters.
+#
+# The optional first parameter may specify the requested Python
+# implementation (either as PYTHON_TARGETS value, e.g. python2_7,
+# or an EPYTHON one, e.g. python2.7). If no implementation passed,
+# the current one will be obtained from ${EPYTHON}.
+#
+# The variables which can be exported are: PYTHON, EPYTHON. They are
+# described more completely in the eclass variable documentation.
+python_export() {
+	debug-print-function ${FUNCNAME} "${@}"
+
+	local impl var
+
+	case "${1}" in
+		python*|jython*)
+			impl=${1/_/.}
+			shift
+			;;
+		pypy-c*)
+			impl=${1}
+			shift
+			;;
+		pypy*)
+			local v=${1#pypy}
+			impl=pypy-c${v/_/.}
+			shift
+			;;
+		*)
+			impl=${EPYTHON}
+			[[ ${impl} ]] || die "python_export: no impl nor EPYTHON"
+			;;
+	esac
+	debug-print "${FUNCNAME}: implementation: ${impl}"
+
+	for var; do
+		case "${var}" in
+			EPYTHON)
+				export EPYTHON=${impl}
+				debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}"
+				;;
+			PYTHON)
+				export PYTHON=${EPREFIX}/usr/bin/${impl}
+				debug-print "${FUNCNAME}: PYTHON = ${PYTHON}"
+				;;
+			*)
+				die "python_export: unknown variable ${var}"
+		esac
+	done
+}
+
 # @FUNCTION: python_copy_sources
 # @DESCRIPTION:
 # Create a single copy of the package sources (${S}) for each enabled
@@ -275,7 +302,7 @@ python_foreach_impl() {
 		if has "${impl}" "${PYTHON_COMPAT[@]}" && use "python_targets_${impl}"
 		then
 			local EPYTHON PYTHON
-			_python_set_PYTHON "${impl}"
+			python_export "${impl}" EPYTHON PYTHON
 			local BUILD_DIR=${bdir%%/}-${impl}
 			export EPYTHON PYTHON
 
-- 
1.7.12.4



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2012-10-23 20:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-23 20:57 [gentoo-dev] [PATCH] Initial version of python_export() Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox