| 1 | # Copyright 1999-2011 Gentoo Foundation |
1 | # Copyright 1999-2012 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/python.eclass,v 1.139 2011/10/15 20:58:08 phajdan.jr Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/python.eclass,v 1.144 2012/01/01 05:02:27 floppym Exp $ |
| 4 | |
4 | |
| 5 | # @ECLASS: python.eclass |
5 | # @ECLASS: python.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Gentoo Python Project <python@gentoo.org> |
7 | # Gentoo Python Project <python@gentoo.org> |
| 8 | # @BLURB: Eclass for Python packages |
8 | # @BLURB: Eclass for Python packages |
| 9 | # @DESCRIPTION: |
9 | # @DESCRIPTION: |
| 10 | # The python eclass contains miscellaneous, useful functions for Python packages. |
10 | # The python eclass contains miscellaneous, useful functions for Python packages. |
| 11 | |
11 | |
|
|
12 | # Must call inherit before EXPORT_FUNCTIONS to avoid QA warning. |
|
|
13 | if [[ -z "${_PYTHON_ECLASS_INHERITED}" ]]; then |
| 12 | inherit multilib |
14 | inherit multilib |
|
|
15 | fi |
|
|
16 | |
|
|
17 | # Export pkg_setup every time to avoid issues with eclass inheritance order. |
|
|
18 | if ! has "${EAPI:-0}" 0 1 2 3 || { has "${EAPI:-0}" 2 3 && [[ -n "${PYTHON_USE_WITH}" || -n "${PYTHON_USE_WITH_OR}" ]]; }; then |
|
|
19 | EXPORT_FUNCTIONS pkg_setup |
|
|
20 | fi |
|
|
21 | |
|
|
22 | # Avoid processing this eclass more than once. |
|
|
23 | if [[ -z "${_PYTHON_ECLASS_INHERITED}" ]]; then |
|
|
24 | _PYTHON_ECLASS_INHERITED="1" |
| 13 | |
25 | |
| 14 | if ! has "${EAPI:-0}" 0 1 2 3 4; then |
26 | if ! has "${EAPI:-0}" 0 1 2 3 4; then |
| 15 | die "API of python.eclass in EAPI=\"${EAPI}\" not established" |
27 | die "API of python.eclass in EAPI=\"${EAPI}\" not established" |
| 16 | fi |
28 | fi |
| 17 | |
29 | |
| 18 | _CPYTHON2_GLOBALLY_SUPPORTED_ABIS=(2.4 2.5 2.6 2.7) |
30 | _CPYTHON2_GLOBALLY_SUPPORTED_ABIS=(2.4 2.5 2.6 2.7) |
| 19 | _CPYTHON3_GLOBALLY_SUPPORTED_ABIS=(3.1 3.2) |
31 | _CPYTHON3_GLOBALLY_SUPPORTED_ABIS=(3.1 3.2) |
| 20 | _JYTHON_GLOBALLY_SUPPORTED_ABIS=(2.5-jython) |
32 | _JYTHON_GLOBALLY_SUPPORTED_ABIS=(2.5-jython) |
| 21 | _PYPY_GLOBALLY_SUPPORTED_ABIS=(2.7-pypy-1.5) |
33 | _PYPY_GLOBALLY_SUPPORTED_ABIS=(2.7-pypy-1.7) |
| 22 | _PYTHON_GLOBALLY_SUPPORTED_ABIS=(${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]} ${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]} ${_JYTHON_GLOBALLY_SUPPORTED_ABIS[@]} ${_PYPY_GLOBALLY_SUPPORTED_ABIS[@]}) |
34 | _PYTHON_GLOBALLY_SUPPORTED_ABIS=(${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]} ${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]} ${_JYTHON_GLOBALLY_SUPPORTED_ABIS[@]} ${_PYPY_GLOBALLY_SUPPORTED_ABIS[@]}) |
| 23 | |
35 | |
| 24 | # ================================================================================================ |
36 | # ================================================================================================ |
| 25 | # ===================================== HANDLING OF METADATA ===================================== |
37 | # ===================================== HANDLING OF METADATA ===================================== |
| 26 | # ================================================================================================ |
38 | # ================================================================================================ |
| … | |
… | |
| 384 | _CYAN= |
396 | _CYAN= |
| 385 | _NORMAL= |
397 | _NORMAL= |
| 386 | fi |
398 | fi |
| 387 | } |
399 | } |
| 388 | |
400 | |
| 389 | unset PYTHON_PKG_SETUP_EXECUTED |
|
|
| 390 | |
|
|
| 391 | _python_check_python_pkg_setup_execution() { |
401 | _python_check_python_pkg_setup_execution() { |
| 392 | [[ " ${FUNCNAME[@]:1} " =~ " "(python_set_active_version|python_pkg_setup)" " ]] && return |
402 | [[ " ${FUNCNAME[@]:1} " =~ " "(python_set_active_version|python_pkg_setup)" " ]] && return |
| 393 | |
403 | |
| 394 | if ! has "${EAPI:-0}" 0 1 2 3 && [[ -z "${PYTHON_PKG_SETUP_EXECUTED}" ]]; then |
404 | if ! has "${EAPI:-0}" 0 1 2 3 && [[ -z "${PYTHON_PKG_SETUP_EXECUTED}" ]]; then |
| 395 | die "python_pkg_setup() not called" |
405 | die "python_pkg_setup() not called" |
| … | |
… | |
| 462 | unset -f python_pkg_setup_check_USE_flags |
472 | unset -f python_pkg_setup_check_USE_flags |
| 463 | fi |
473 | fi |
| 464 | |
474 | |
| 465 | PYTHON_PKG_SETUP_EXECUTED="1" |
475 | PYTHON_PKG_SETUP_EXECUTED="1" |
| 466 | } |
476 | } |
| 467 | |
|
|
| 468 | if ! has "${EAPI:-0}" 0 1 2 3 || { has "${EAPI:-0}" 2 3 && [[ -n "${PYTHON_USE_WITH}" || -n "${PYTHON_USE_WITH_OR}" ]]; }; then |
|
|
| 469 | EXPORT_FUNCTIONS pkg_setup |
|
|
| 470 | fi |
|
|
| 471 | |
477 | |
| 472 | _PYTHON_SHEBANG_BASE_PART_REGEX='^#![[:space:]]*([^[:space:]]*/usr/bin/env[[:space:]]+)?([^[:space:]]*/)?(jython|pypy-c|python)' |
478 | _PYTHON_SHEBANG_BASE_PART_REGEX='^#![[:space:]]*([^[:space:]]*/usr/bin/env[[:space:]]+)?([^[:space:]]*/)?(jython|pypy-c|python)' |
| 473 | |
479 | |
| 474 | # @FUNCTION: python_convert_shebangs |
480 | # @FUNCTION: python_convert_shebangs |
| 475 | # @USAGE: [-q|--quiet] [-r|--recursive] [-x|--only-executables] [--] <Python_ABI|Python_version> <file|directory> [files|directories] |
481 | # @USAGE: [-q|--quiet] [-r|--recursive] [-x|--only-executables] [--] <Python_ABI|Python_version> <file|directory> [files|directories] |
| … | |
… | |
| 1592 | fi |
1598 | fi |
| 1593 | done |
1599 | done |
| 1594 | |
1600 | |
| 1595 | popd > /dev/null || die "popd failed" |
1601 | popd > /dev/null || die "popd failed" |
| 1596 | |
1602 | |
|
|
1603 | # This is per bug #390691, without the duplication refactor, and with |
|
|
1604 | # the 3-way structure per comment #6. This enable users with old |
|
|
1605 | # coreutils to upgrade a lot easier (you need to upgrade python+portage |
|
|
1606 | # before coreutils can be upgraded). |
| 1597 | if ROOT="/" has_version sys-apps/coreutils; then |
1607 | if ROOT="/" has_version '>=sys-apps/coreutils-6.9.90'; then |
| 1598 | cp -fr --preserve=all --no-preserve=context "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed" |
1608 | cp -fr --preserve=all --no-preserve=context "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed" |
|
|
1609 | elif ROOT="/" has_version sys-apps/coreutils; then |
|
|
1610 | cp -fr --preserve=all "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed" |
| 1599 | else |
1611 | else |
| 1600 | cp -fpr "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed" |
1612 | cp -fpr "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed" |
| 1601 | fi |
1613 | fi |
| 1602 | done |
1614 | done |
| 1603 | |
1615 | |
| … | |
… | |
| 3108 | } |
3120 | } |
| 3109 | |
3121 | |
| 3110 | # ================================================================================================ |
3122 | # ================================================================================================ |
| 3111 | # ===================================== DEPRECATED FUNCTIONS ===================================== |
3123 | # ===================================== DEPRECATED FUNCTIONS ===================================== |
| 3112 | # ================================================================================================ |
3124 | # ================================================================================================ |
|
|
3125 | |
|
|
3126 | fi # _PYTHON_ECLASS_INHERITED |