diff options
author | Dirkjan Ochtman <djc@gentoo.org> | 2012-06-08 16:52:09 +0000 |
---|---|---|
committer | Dirkjan Ochtman <djc@gentoo.org> | 2012-06-08 16:52:09 +0000 |
commit | 0b315dbbd521350dbd85b6ec63a965583e760d59 (patch) | |
tree | c218bb2943ee4272456a851887d10392444eacb6 /dev-python | |
parent | Remove unused USE flag. (diff) | |
download | gentoo-2-0b315dbbd521350dbd85b6ec63a965583e760d59.tar.gz gentoo-2-0b315dbbd521350dbd85b6ec63a965583e760d59.tar.bz2 gentoo-2-0b315dbbd521350dbd85b6ec63a965583e760d59.zip |
Version bump pypy to 1.9.
(Portage version: 2.1.10.64/cvs/Linux x86_64)
Diffstat (limited to 'dev-python')
6 files changed, 551 insertions, 1 deletions
diff --git a/dev-python/pypy/ChangeLog b/dev-python/pypy/ChangeLog index 124d79e8b0fe..e6de16a0489c 100644 --- a/dev-python/pypy/ChangeLog +++ b/dev-python/pypy/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for dev-python/pypy # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/pypy/ChangeLog,v 1.19 2012/06/08 16:40:22 djc Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-python/pypy/ChangeLog,v 1.20 2012/06/08 16:52:09 djc Exp $ + +*pypy-1.9 (08 Jun 2012) + + 08 Jun 2012; Dirkjan Ochtman <djc@gentoo.org> + +files/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.p + atch, +files/1.9-scripts-location.patch, +pypy-1.9.ebuild, + +files/1.9-no-bytecode-4151f9c406b6.patch, + +files/1.9-distutils-fix_handling_of_executables_and_flags.patch: + Version bump to 1.9. 08 Jun 2012; Dirkjan Ochtman <djc@gentoo.org> metadata.xml: Remove unused USE flag. diff --git a/dev-python/pypy/files/1.9-distutils-fix_handling_of_executables_and_flags.patch b/dev-python/pypy/files/1.9-distutils-fix_handling_of_executables_and_flags.patch new file mode 100644 index 000000000000..4a35ea8cb3c7 --- /dev/null +++ b/dev-python/pypy/files/1.9-distutils-fix_handling_of_executables_and_flags.patch @@ -0,0 +1,391 @@ +--- lib-python/2.7/distutils/ccompiler.py ++++ lib-python/2.7/distutils/ccompiler.py +@@ -27,10 +27,16 @@ + varies across Unices and is stored in Python's Makefile. + """ + if compiler.compiler_type == "unix": +- (cc, cxx, opt, cflags, ccshared, ldshared, so_ext, ar, ar_flags) = \ +- _sysconfig.get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', +- 'CCSHARED', 'LDSHARED', 'SO', 'AR', +- 'ARFLAGS') ++ cc = ' '.join(compiler.compiler) ++ cxx = ' '.join(compiler.compiler_cxx) ++ ldshared = ' '.join(compiler.linker_so) ++ ldcxxshared = ' '.join(compiler.linker_so_cxx) ++ ar = compiler.archiver[0] ++ ++ cflags = '' ++ cxxflags = '' ++ ccshared = '-fPIC' ++ ar_flags = compiler.archiver[1] + + if 'CC' in os.environ: + cc = os.environ['CC'] +@@ -38,19 +44,27 @@ + cxx = os.environ['CXX'] + if 'LDSHARED' in os.environ: + ldshared = os.environ['LDSHARED'] ++ if 'LDCXXSHARED' in os.environ: ++ ldcxxshared = os.environ['LDCXXSHARED'] + if 'CPP' in os.environ: + cpp = os.environ['CPP'] + else: + cpp = cc + " -E" # not always + if 'LDFLAGS' in os.environ: + ldshared = ldshared + ' ' + os.environ['LDFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['LDFLAGS'] + if 'CFLAGS' in os.environ: +- cflags = opt + ' ' + os.environ['CFLAGS'] ++ cflags = os.environ['CFLAGS'] + ldshared = ldshared + ' ' + os.environ['CFLAGS'] ++ if 'CXXFLAGS' in os.environ: ++ cxxflags = os.environ['CXXFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['CXXFLAGS'] + if 'CPPFLAGS' in os.environ: + cpp = cpp + ' ' + os.environ['CPPFLAGS'] + cflags = cflags + ' ' + os.environ['CPPFLAGS'] ++ cxxflags = cxxflags + ' ' + os.environ['CPPFLAGS'] + ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['CPPFLAGS'] + if 'AR' in os.environ: + ar = os.environ['AR'] + if 'ARFLAGS' in os.environ: +@@ -59,17 +73,19 @@ + archiver = ar + ' ' + ar_flags + + cc_cmd = cc + ' ' + cflags ++ cxx_cmd = cxx + ' ' + cxxflags + compiler.set_executables( + preprocessor=cpp, + compiler=cc_cmd, + compiler_so=cc_cmd + ' ' + ccshared, +- compiler_cxx=cxx, ++ compiler_cxx=cxx_cmd, ++ compiler_so_cxx=cxx_cmd + ' ' + ccshared, + linker_so=ldshared, + linker_exe=cc, ++ linker_so_cxx=ldcxxshared, ++ linker_exe_cxx=cxx, + archiver=archiver) + +- compiler.shared_lib_extension = so_ext +- + class CCompiler: + """Abstract base class to define the interface that must be implemented + by real compiler classes. Also has some utility methods used by +--- lib-python/2.7/distutils/cygwinccompiler.py ++++ lib-python/2.7/distutils/cygwinccompiler.py +@@ -135,9 +135,13 @@ + self.set_executables(compiler='gcc -mcygwin -O -Wall', + compiler_so='gcc -mcygwin -mdll -O -Wall', + compiler_cxx='g++ -mcygwin -O -Wall', ++ compiler_so_cxx='g++ -mcygwin -mdll -O -Wall', + linker_exe='gcc -mcygwin', + linker_so=('%s -mcygwin %s' % +- (self.linker_dll, shared_option))) ++ (self.linker_dll, shared_option)), ++ linker_exe_cxx='g++ -mcygwin', ++ linker_so_cxx=('%s -mcygwin %s' % ++ (self.linker_dll, shared_option))) + + # cygwin and mingw32 need different sets of libraries + if self.gcc_version == "2.91.57": +@@ -163,8 +167,12 @@ + raise CompileError, msg + else: # for other files use the C-compiler + try: +- self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + +- extra_postargs) ++ if self.detect_language(src) == 'c++': ++ self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] + ++ extra_postargs) ++ else: ++ self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + ++ extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + +@@ -325,10 +333,15 @@ + self.set_executables(compiler='gcc -mno-cygwin -O -Wall', + compiler_so='gcc -mno-cygwin -mdll -O -Wall', + compiler_cxx='g++ -mno-cygwin -O -Wall', ++ compiler_so_cxx='g++ -mno-cygwin -mdll -O -Wall', + linker_exe='gcc -mno-cygwin', + linker_so='%s -mno-cygwin %s %s' + % (self.linker_dll, shared_option, +- entry_point)) ++ entry_point), ++ linker_exe_cxx='g++ -mno-cygwin', ++ linker_so_cxx='%s -mno-cygwin %s %s' ++ % (self.linker_dll, shared_option, ++ entry_point)) + # Maybe we should also append -mthreads, but then the finished + # dlls need another dll (mingwm10.dll see Mingw32 docs) + # (-mthreads: Support thread-safe exception handling on `Mingw32') +--- lib-python/2.7/distutils/emxccompiler.py ++++ lib-python/2.7/distutils/emxccompiler.py +@@ -65,8 +65,12 @@ + # XXX optimization, warnings etc. should be customizable. + self.set_executables(compiler='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', + compiler_so='gcc -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', ++ compiler_cxx='g++ -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', ++ compiler_so_cxx='g++ -Zomf -Zmt -O3 -fomit-frame-pointer -mprobe -Wall', + linker_exe='gcc -Zomf -Zmt -Zcrtdll', +- linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll') ++ linker_so='gcc -Zomf -Zmt -Zcrtdll -Zdll', ++ linker_exe_cxx='g++ -Zomf -Zmt -Zcrtdll', ++ linker_so_cxx='g++ -Zomf -Zmt -Zcrtdll -Zdll') + + # want the gcc library statically linked (so that we don't have + # to distribute a version dependent on the compiler we have) +@@ -83,8 +87,12 @@ + raise CompileError, msg + else: # for other files use the C-compiler + try: +- self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + +- extra_postargs) ++ if self.detect_language(src) == 'c++': ++ self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] + ++ extra_postargs) ++ else: ++ self.spawn(self.compiler_so + cc_args + [src, '-o', obj] + ++ extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + +--- lib-python/2.7/distutils/sysconfig_cpython.py ++++ lib-python/2.7/distutils/sysconfig_cpython.py +@@ -149,9 +149,12 @@ + varies across Unices and is stored in Python's Makefile. + """ + if compiler.compiler_type == "unix": +- (cc, cxx, opt, cflags, ccshared, ldshared, so_ext) = \ +- get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS', +- 'CCSHARED', 'LDSHARED', 'SO') ++ (cc, cxx, ccshared, ldshared, ldcxxshared, so_ext) = \ ++ get_config_vars('CC', 'CXX', 'CCSHARED', 'LDSHARED', ++ 'LDCXXSHARED', 'SO') ++ ++ cflags = '' ++ cxxflags = '' + + if 'CC' in os.environ: + cc = os.environ['CC'] +@@ -159,28 +162,40 @@ + cxx = os.environ['CXX'] + if 'LDSHARED' in os.environ: + ldshared = os.environ['LDSHARED'] ++ if 'LDCXXSHARED' in os.environ: ++ ldcxxshared = os.environ['LDCXXSHARED'] + if 'CPP' in os.environ: + cpp = os.environ['CPP'] + else: + cpp = cc + " -E" # not always + if 'LDFLAGS' in os.environ: + ldshared = ldshared + ' ' + os.environ['LDFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['LDFLAGS'] + if 'CFLAGS' in os.environ: +- cflags = opt + ' ' + os.environ['CFLAGS'] ++ cflags = os.environ['CFLAGS'] + ldshared = ldshared + ' ' + os.environ['CFLAGS'] ++ if 'CXXFLAGS' in os.environ: ++ cxxflags = os.environ['CXXFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['CXXFLAGS'] + if 'CPPFLAGS' in os.environ: + cpp = cpp + ' ' + os.environ['CPPFLAGS'] + cflags = cflags + ' ' + os.environ['CPPFLAGS'] ++ cxxflags = cxxflags + ' ' + os.environ['CPPFLAGS'] + ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['CPPFLAGS'] + + cc_cmd = cc + ' ' + cflags ++ cxx_cmd = cxx + ' ' + cxxflags + compiler.set_executables( + preprocessor=cpp, + compiler=cc_cmd, + compiler_so=cc_cmd + ' ' + ccshared, +- compiler_cxx=cxx, ++ compiler_cxx=cxx_cmd, ++ compiler_so_cxx=cxx_cmd + ' ' + ccshared, + linker_so=ldshared, +- linker_exe=cc) ++ linker_exe=cc, ++ linker_so_cxx=ldcxxshared, ++ linker_exe_cxx=cxx) + + compiler.shared_lib_extension = so_ext + +@@ -506,7 +521,7 @@ + for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED', + # a number of derived variables. These need to be + # patched up as well. +- 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): ++ 'CFLAGS', 'CXXFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + flags = _config_vars[key] + flags = re.sub('-arch\s+\w+\s', ' ', flags) + flags = re.sub('-isysroot [^ \t]*', ' ', flags) +@@ -525,7 +540,7 @@ + for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED', + # a number of derived variables. These need to be + # patched up as well. +- 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): ++ 'CFLAGS', 'CXXFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _config_vars[key] + flags = re.sub('-arch\s+\w+\s', ' ', flags) +@@ -549,7 +564,7 @@ + for key in ('LDFLAGS', 'BASECFLAGS', 'LDSHARED', + # a number of derived variables. These need to be + # patched up as well. +- 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): ++ 'CFLAGS', 'CXXFLAGS', 'PY_CFLAGS', 'BLDSHARED'): + + flags = _config_vars[key] + flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags) +--- lib-python/2.7/distutils/sysconfig_pypy.py ++++ lib-python/2.7/distutils/sysconfig_pypy.py +@@ -114,13 +114,56 @@ + optional C speedup components. + """ + if compiler.compiler_type == "unix": +- compiler.compiler_so.extend(['-fPIC', '-Wimplicit']) ++ cc = ' '.join(compiler.compiler) ++ cxx = ' '.join(compiler.compiler_cxx) ++ ldshared = ' '.join(compiler.linker_so) ++ ldcxxshared = ' '.join(compiler.linker_so_cxx) ++ ++ cflags = '' ++ cxxflags = '' ++ ccshared = '-fPIC' ++ ++ if 'CC' in os.environ: ++ cc = os.environ['CC'] ++ if 'CXX' in os.environ: ++ cxx = os.environ['CXX'] ++ if 'LDSHARED' in os.environ: ++ ldshared = os.environ['LDSHARED'] ++ if 'LDCXXSHARED' in os.environ: ++ ldcxxshared = os.environ['LDCXXSHARED'] ++ if 'CPP' in os.environ: ++ cpp = os.environ['CPP'] ++ else: ++ cpp = cc + " -E" # not always ++ if 'LDFLAGS' in os.environ: ++ ldshared = ldshared + ' ' + os.environ['LDFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['LDFLAGS'] ++ if 'CFLAGS' in os.environ: ++ cflags = os.environ['CFLAGS'] ++ ldshared = ldshared + ' ' + os.environ['CFLAGS'] ++ if 'CXXFLAGS' in os.environ: ++ cxxflags = os.environ['CXXFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['CXXFLAGS'] ++ if 'CPPFLAGS' in os.environ: ++ cpp = cpp + ' ' + os.environ['CPPFLAGS'] ++ cflags = cflags + ' ' + os.environ['CPPFLAGS'] ++ cxxflags = cxxflags + ' ' + os.environ['CPPFLAGS'] ++ ldshared = ldshared + ' ' + os.environ['CPPFLAGS'] ++ ldcxxshared = ldcxxshared + ' ' + os.environ['CPPFLAGS'] ++ ++ cc_cmd = cc + ' ' + cflags ++ cxx_cmd = cxx + ' ' + cxxflags ++ compiler.set_executables( ++ preprocessor=cpp, ++ compiler=cc_cmd, ++ compiler_so=cc_cmd + ' ' + ccshared, ++ compiler_cxx=cxx_cmd, ++ compiler_so_cxx=cxx_cmd + ' ' + ccshared, ++ linker_so=ldshared, ++ linker_exe=cc, ++ linker_so_cxx=ldcxxshared, ++ linker_exe_cxx=cxx) + compiler.shared_lib_extension = get_config_var('SO') +- if "CFLAGS" in os.environ: +- cflags = os.environ["CFLAGS"] +- compiler.compiler.append(cflags) +- compiler.compiler_so.append(cflags) +- compiler.linker_so.append(cflags) + + + from sysconfig_cpython import ( +--- lib-python/2.7/distutils/unixccompiler.py ++++ lib-python/2.7/distutils/unixccompiler.py +@@ -114,14 +114,17 @@ + # are pretty generic; they will probably have to be set by an outsider + # (eg. using information discovered by the sysconfig about building + # Python extensions). +- executables = {'preprocessor' : None, +- 'compiler' : ["cc"], +- 'compiler_so' : ["cc"], +- 'compiler_cxx' : ["cc"], +- 'linker_so' : ["cc", "-shared"], +- 'linker_exe' : ["cc"], +- 'archiver' : ["ar", "-cr"], +- 'ranlib' : None, ++ executables = {'preprocessor' : None, ++ 'compiler' : ["cc"], ++ 'compiler_so' : ["cc"], ++ 'compiler_cxx' : ["c++"], ++ 'compiler_so_cxx' : ["c++"], ++ 'linker_so' : ["cc", "-shared"], ++ 'linker_exe' : ["cc"], ++ 'linker_so_cxx' : ["c++", "-shared"], ++ 'linker_exe_cxx' : ["c++"], ++ 'archiver' : ["ar", "-cr"], ++ 'ranlib' : None, + } + + if sys.platform[:6] == "darwin": +@@ -186,11 +189,18 @@ + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + compiler_so = self.compiler_so ++ compiler_so_cxx = self.compiler_so_cxx + if sys.platform == 'darwin': + compiler_so = _darwin_compiler_fixup(compiler_so, cc_args + extra_postargs) ++ compiler_so_cxx = _darwin_compiler_fixup(compiler_so_cxx, cc_args + ++ extra_postargs) + try: +- self.spawn(compiler_so + cc_args + [src, '-o', obj] + +- extra_postargs) ++ if self.detect_language(src) == 'c++': ++ self.spawn(compiler_so_cxx + cc_args + [src, '-o', obj] + ++ extra_postargs) ++ else: ++ self.spawn(compiler_so + cc_args + [src, '-o', obj] + ++ extra_postargs) + except DistutilsExecError, msg: + raise CompileError, msg + +@@ -247,23 +257,16 @@ + ld_args.extend(extra_postargs) + self.mkpath(os.path.dirname(output_filename)) + try: +- if target_desc == CCompiler.EXECUTABLE: +- linker = self.linker_exe[:] ++ if target_lang == "c++": ++ if target_desc == CCompiler.EXECUTABLE: ++ linker = self.linker_exe_cxx[:] ++ else: ++ linker = self.linker_so_cxx[:] + else: +- linker = self.linker_so[:] +- if target_lang == "c++" and self.compiler_cxx: +- # skip over environment variable settings if /usr/bin/env +- # is used to set up the linker's environment. +- # This is needed on OSX. Note: this assumes that the +- # normal and C++ compiler have the same environment +- # settings. +- i = 0 +- if os.path.basename(linker[0]) == "env": +- i = 1 +- while '=' in linker[i]: +- i = i + 1 +- +- linker[i] = self.compiler_cxx[i] ++ if target_desc == CCompiler.EXECUTABLE: ++ linker = self.linker_exe[:] ++ else: ++ linker = self.linker_so[:] + + if sys.platform == 'darwin': + linker = _darwin_compiler_fixup(linker, ld_args) diff --git a/dev-python/pypy/files/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch b/dev-python/pypy/files/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch new file mode 100644 index 000000000000..b3d5235000d5 --- /dev/null +++ b/dev-python/pypy/files/1.9-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch @@ -0,0 +1,11 @@ +--- lib-python/2.7/distutils/unixccompiler.py ++++ lib-python/2.7/distutils/unixccompiler.py +@@ -297,7 +297,7 @@ + # this time, there's no way to determine this information from + # the configuration data stored in the Python installation, so + # we use this hack. +- compiler = os.path.basename(sysconfig.get_config_var("CC")) ++ compiler = os.path.basename(self.compiler[0]) + if sys.platform[:6] == "darwin": + # MacOSX's linker doesn't understand the -R flag at all + return "-L" + dir diff --git a/dev-python/pypy/files/1.9-no-bytecode-4151f9c406b6.patch b/dev-python/pypy/files/1.9-no-bytecode-4151f9c406b6.patch new file mode 100644 index 000000000000..5fab3a50ddad --- /dev/null +++ b/dev-python/pypy/files/1.9-no-bytecode-4151f9c406b6.patch @@ -0,0 +1,27 @@ +# HG changeset patch +# User Armin Rigo <arigo@tunes.org> +# Date 1339165065 -7200 +# Node ID 4151f9c406b62f6c4a1fdd669389eb46eb90f9cb +# Parent 68f8d7152a45fa7856a2a013799874614fcd9c33 +issue1043 3rd issue fixed + +diff -r 68f8d7152a45fa7856a2a013799874614fcd9c33 -r 4151f9c406b62f6c4a1fdd669389eb46eb90f9cb pypy/translator/goal/app_main.py +--- a/pypy/translator/goal/app_main.py Fri Jun 08 16:06:33 2012 +0200 ++++ b/pypy/translator/goal/app_main.py Fri Jun 08 16:17:45 2012 +0200 +@@ -457,13 +457,13 @@ + + if PYTHON26 and not options["ignore_environment"]: + if os.getenv('PYTHONNOUSERSITE'): +- options["no_user_site"] = True ++ options["no_user_site"] = 1 + if os.getenv('PYTHONDONTWRITEBYTECODE'): +- options["dont_write_bytecode"] = True ++ options["dont_write_bytecode"] = 1 + + if (options["interactive"] or + (not options["ignore_environment"] and os.getenv('PYTHONINSPECT'))): +- options["inspect"] = True ++ options["inspect"] = 1 + + if PYTHON26 and we_are_translated(): + flags = [options[flag] for flag in sys_flags] diff --git a/dev-python/pypy/files/1.9-scripts-location.patch b/dev-python/pypy/files/1.9-scripts-location.patch new file mode 100644 index 000000000000..5f0190d9a20f --- /dev/null +++ b/dev-python/pypy/files/1.9-scripts-location.patch @@ -0,0 +1,11 @@ +--- pypy-pypy-release-1.7/lib-python/2.7/distutils/command/install.py ++++ pypy-pypy-release-1.7/lib-python/2.7/distutils/command/install.py +@@ -87,7 +87,7 @@ + 'purelib': '$base/site-packages', + 'platlib': '$base/site-packages', + 'headers': '$base/include', +- 'scripts': '$base/bin', ++ 'scripts': '/usr/bin', + 'data' : '$base', + }, + } diff --git a/dev-python/pypy/pypy-1.9.ebuild b/dev-python/pypy/pypy-1.9.ebuild new file mode 100644 index 000000000000..84d279a90e38 --- /dev/null +++ b/dev-python/pypy/pypy-1.9.ebuild @@ -0,0 +1,101 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/pypy/pypy-1.9.ebuild,v 1.1 2012/06/08 16:52:09 djc Exp $ + +EAPI="4" + +inherit eutils toolchain-funcs check-reqs python versionator + +DESCRIPTION="PyPy is a fast, compliant alternative implementation of the Python language" +HOMEPAGE="http://pypy.org/" +SRC_URI="https://bitbucket.org/pypy/pypy/get/release-${PV}.tar.bz2 -> ${P}.tar.bz2" +SLOTVER=$(get_version_component_range 1-2 ${PV}) + +LICENSE="MIT" +SLOT="${SLOTVER}" +PYTHON_ABI="2.7-pypy-${SLOTVER}" +KEYWORDS="~amd64 ~x86" +IUSE="bzip2 doc examples +jit ncurses sandbox shadowstack sqlite ssl +xml" + +RDEPEND=">=sys-libs/zlib-1.1.3 + virtual/libffi + virtual/libintl + dev-libs/expat + bzip2? ( app-arch/bzip2 ) + ncurses? ( sys-libs/ncurses ) + sqlite? ( dev-db/sqlite:3 ) + ssl? ( dev-libs/openssl )" +DEPEND="${RDEPEND}" +PDEPEND="app-admin/python-updater" + +DOC="README LICENSE" + +pkg_pretend() { + CHECKREQS_MEMORY="2G" + use amd64 && CHECKREQS_MEMORY="4G" + check-reqs_pkg_pretend +} + +src_unpack() { + default + mv pypy-pypy-* "${S}" || die +} + +src_prepare() { + epatch "${FILESDIR}/${PV}-no-bytecode-4151f9c406b6.patch" + epatch "${FILESDIR}/${PV}-scripts-location.patch" + epatch "${FILESDIR}/${PV}-distutils.unixccompiler.UnixCCompiler.runtime_library_dir_option.patch" + epatch "${FILESDIR}/${PV}-distutils-fix_handling_of_executables_and_flags.patch" +} + +src_compile() { + local conf + if use jit; then + conf="-Ojit" + else + conf="-O2" + fi + if use shadowstack; then + conf+=" --gcrootfinder=shadowstack" + fi + if use sandbox; then + conf+=" --sandbox" + fi + + conf+=" ./pypy/translator/goal/targetpypystandalone.py" + # Avoid linking against libraries disabled by use flags + local optional_use=("bzip2" "ncurses" "ssl") + local optional_mod=("bz2" "_minimal_curses" "_ssl") + for ((i = 0; i < ${#optional_use[*]}; i++)); do + if use ${optional_use[$i]}; then + conf+=" --withmod-${optional_mod[$i]}" + else + conf+=" --withoutmod-${optional_mod[$i]}" + fi + done + + local translate_cmd="$(PYTHON -2) ./pypy/translator/goal/translate.py --batch $conf" + echo ${_BOLD}"${translate_cmd}"${_NORMAL} + ${translate_cmd} || die "compile error" +} + +src_install() { + local INSPATH="/usr/$(get_libdir)/pypy${SLOT}" + insinto ${INSPATH} + doins -r include lib_pypy lib-python pypy-c + fperms a+x ${INSPATH}/pypy-c + dosym ../$(get_libdir)/pypy${SLOT}/pypy-c /usr/bin/pypy-c${SLOT} + + if ! use sqlite; then + rm -fr "${ED}${INSPATH}/lib-python/2.7/sqlite3" + rm -fr "${ED}${INSPATH}/lib-python/modified-2.7/sqlite3" + rm -f "${ED}${INSPATH}/lib_pypy/_sqlite3.py" + fi + + # Generate Grammar and PatternGrammar pickles. + PYTHONPATH="${ED}${INSPATH}/lib_pypy/__extensions__:${ED}${INSPATH}/lib_pypy:${ED}${INSPATH}/lib-python/modified-2.7:${ED}${INSPATH}/lib-python/2.7" "${ED}${INSPATH}/pypy-c" -c "import lib2to3.pygram, lib2to3.patcomp; lib2to3.patcomp.PatternCompiler()" || die "Generation of Grammar and PatternGrammar pickles failed" +} + +src_test() { + $(PYTHON -2) ./pypy/test_all.py --pypy=./pypy-c lib-python +} |