diff options
Diffstat (limited to 'dev-python/pyinstaller/pyinstaller-3.2.ebuild')
-rw-r--r-- | dev-python/pyinstaller/pyinstaller-3.2.ebuild | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/dev-python/pyinstaller/pyinstaller-3.2.ebuild b/dev-python/pyinstaller/pyinstaller-3.2.ebuild deleted file mode 100644 index 1228ebb..0000000 --- a/dev-python/pyinstaller/pyinstaller-3.2.ebuild +++ /dev/null @@ -1,186 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ -EAPI=5 - -# PyInstaller assumes CPython internals and is hence currently incompatible with -# alternative interpreters (e.g., PyPy). -PYTHON_COMPAT=( python{2_7,3_3,3_4,3_5} ) - -# "waf" requires a threading-enabled Python interpreter. -PYTHON_REQ_USE='threads(+)' - -# Order of operations is significant here. Since we explicitly call "waf-utils" -# but *NOT* "distutils-r1" phase functions, ensure the latter remain the default -# by inheriting the latter *AFTER* the former. -inherit waf-utils distutils-r1 - -DESCRIPTION="Program converting Python programs into stand-alone executables" -HOMEPAGE="http://www.pyinstaller.org" - -LICENSE="pyinstaller" -SLOT="0" - -IUSE="clang debug doc leak-detector" -REQUIRED_USE="${PYTHON_REQUIRED_USE}" - -#FIXME: Interestingly, PyInstaller itself has no hard or soft dependencies -#excluding the expected build-time dependency of "setuptools". Its unit tests, -#however, require an elaborate set of pure-Python packages, C-based Python -#extensions, and system-wide shared libraries. It's fairly extreme -- -#sufficiently extreme, in fact, that we do *NOT* currently bother. For an -#exhaustive list of such dependencies, see "tests/test-requirements.txt". - -RDEPEND="${PYTHON_DEPS}" -DEPEND="${RDEPEND} - leak-detector? ( dev-libs/boehm-gc ) - clang? ( sys-devel/clang ) - !clang? ( sys-devel/gcc ) -" - -# While the typical "waf" project permits "waf" to be run from outside the -# directory containing "waf", PyInstaller requires "waf" to be run from inside -# such directory in a relative manner. Ensure this. -WAF_BINARY="./waf" - -# Since the "waf" script bundled with PyInstaller does *NOT* support the -# conventionel "--libdir" option, prevent such option from being passed. -NO_WAF_LIBDIR=1 - -if [[ ${PV} == 9999 ]]; then - inherit git-r3 - - EGIT_REPO_URI="https://github.com/pyinstaller/pyinstaller" - EGIT_BRANCH="develop" - SRC_URI="" - KEYWORDS="" -else - MY_PN="PyInstaller" - MY_P="${MY_PN}-${PV}" - SRC_URI="https://github.com/pyinstaller/pyinstaller/releases/download/v${PV}/${MY_P}.tar.gz" - KEYWORDS="~amd64 ~x86" - S="${WORKDIR}/${MY_P}" -fi - -python_prepare_all() { - #FIXME: This is almost certainly wrong. We almost certainly want to use - #actual USE flags instead: e.g., - # - # local arch_word_size - # if use amd64; then - # arch_word_size=64 - # elif use x86; then - # arch_word_size=32 - # else - # die "Architecture \"${ARCH}\" unsupported." - # fi - - # Word size for the current architecture. (There simply *MUST* be a more - # Gentooish way of determining this. I couldn't find it. While we should - # arguably test "[[ "$(getconf LONG_BIT)" == 64 ]]" instead, such magic is - # arguably even kludgier. Your mileage may vary.) - local arch_word_size - case "${ARCH}" in - amd64) arch_word_size=64;; - *) arch_word_size=32;; - esac - - # Install only the Linux bootloader specific to: - # - # * The architecture of the current machine. - # * The release type requested for the current installation. Specifically: - # * If the "debug" USE flag is enabled, only install the "run_d" binary. - # * Else, only install the "run" binary. - local bootloader_basename='run' - use debug && bootloader_basename+='_d' - sed -i \ - -e '/.*bootloader\/\*\/*.*/s~\*/\*~Linux-'${arch_word_size}'bit/'${bootloader_basename}'~' \ - setup.py || die '"sed" failed.' - - # Prevent badness during compilation. Specifically (in order): - # - # * Avoid stripping bootloader binaries. - # * Prevent the bootloader from being compiled under: - # * Hard-coded ${CFLAGS}. - # * gcc option "-Werror", converting compiler warnings to errors and hence - # failing on the first (inevitable) warning. - sed -i \ - -e "s~\\(\\s*\\)features\\s*=\\s*'strip'$~\\1pass~" \ - -e "s~\\(\\s*\\)ctx.env.append_value('CFLAGS', '-O2')$~\\1pass~" \ - -e "/'CFLAGS',\\s*'-Werror'/d" \ - bootloader/wscript || die '"sed" failed.' - - # Continue with the default behaviour. - distutils-r1_python_prepare_all -} - -python_configure() { - # CLI options to be passed to the "waf configure" command run below. - local -a waf_configure_options; waf_configure_options=( - # Since Gentoo is *NOT* LSB-compliant, a non-LSB-compliant bootloader - # must be built. Sadly, doing so could reduce the portability of the - # resulting bootloader and hence applications frozen under that - # bootloader. Until Gentoo supplies an ebuild for building at least - # version 4.0 of the LSB tools, there's little we can do here. - --no-lsb - ) - use debug && waf_configure_options+=( --debug ) - use clang && waf_configure_options+=( --clang ) - use leak-detector && waf_configure_options+=( --leak-detector ) - - # Configure the Linux bootloader. - cd bootloader - waf-utils_src_configure "${waf_configure_options[@]}" - - # Continue with the default behaviour. - cd "${S}" - distutils-r1_python_configure -} - -python_compile() { - # Compile the non-debug Linux bootloader. Ideally, we would simply call - # waf-utils_src_compile() to do so. Unfortunately, that function attempts to - # run the "build" WAF task, which for PyInstaller *ALWAYS* fails with the - # following fatal error: - # - # Call "python waf all" to compile all bootloaders. - # - # Since the "waf-utils" eclass does *NOT* support running of alternative - # tasks, we reimplement waf-utils_src_compile() to do so. (Since this is - # lame, we should probably file a feature request with the author of the - # "waf-utils" eclass.) - cd bootloader - local _mywafconfig - [[ "${WAF_VERBOSE}" ]] && _mywafconfig="--verbose" - local jobs="--jobs=$(makeopts_jobs)" - echo "\"${WAF_BINARY}\" build_release ${_mywafconfig} ${jobs}" - "${WAF_BINARY}" build_release ${_mywafconfig} ${jobs} || - die "Bootloader compilation failed." - - # Move the binaries for such bootloader to "PyInstaller/bootloader" *BEFORE* - # compiling the non-bootloader portion of PyInstaller, which requires such - # binaries. (Note that the "install_release" task does *NOT* install files - # to ${IMAGE}, despite the "install" in such task name.) - "${WAF_BINARY}" install_release || die "Bootloader installation failed." - - # Continue with the default behaviour. - cd "${S}" - distutils-r1_python_compile -} - -python_install_all() { - distutils-r1_python_install_all - - # Install plaintext documentation. - dodoc README.rst doc/*.rst - - # If requested, install non-plaintext documentation as well. - if use doc; then - # Install HTML documentation. - dohtml -r doc/* - - # Install PDF documentation. - docinto pdf - dodoc doc/*.pdf - fi -} |