From c8a9593ce34635069bcff01b564f4233aebd79b0 Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Sun, 3 Nov 2019 12:02:30 +0100 Subject: sys-devel/automake: Fix byte-compiling Python modules on py3.5+ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: https://bugs.gentoo.org/699218 Signed-off-by: Michał Górny Signed-off-by: Lars Wendler --- sys-devel/automake/automake-1.16.1-r2.ebuild | 113 +++++++++++++++++++++ .../files/automake-1.16.1-py3-compile.patch | 61 +++++++++++ 2 files changed, 174 insertions(+) create mode 100644 sys-devel/automake/automake-1.16.1-r2.ebuild create mode 100644 sys-devel/automake/files/automake-1.16.1-py3-compile.patch (limited to 'sys-devel') diff --git a/sys-devel/automake/automake-1.16.1-r2.ebuild b/sys-devel/automake/automake-1.16.1-r2.ebuild new file mode 100644 index 000000000000..963d7cd4783d --- /dev/null +++ b/sys-devel/automake/automake-1.16.1-r2.ebuild @@ -0,0 +1,113 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" +PYTHON_COMPAT=( python2_7 ) + +inherit python-any-r1 versionator + +if [[ ${PV} == 9999 ]] ; then + EGIT_REPO_URI="https://git.savannah.gnu.org/r/${PN}.git" + + inherit git-r3 +else + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" + if [[ ${PV/_beta} == ${PV} ]]; then + MY_P=${P} + SRC_URI="mirror://gnu/${PN}/${P}.tar.xz + https://alpha.gnu.org/pub/gnu/${PN}/${MY_P}.tar.xz" + else + MY_PV="$(get_major_version).$(($(get_version_component_range 2)-1))b" + MY_P="${PN}-${MY_PV}" + + # Alpha/beta releases are not distributed on the usual mirrors. + SRC_URI="https://alpha.gnu.org/pub/gnu/${PN}/${MY_P}.tar.xz" + fi + S="${WORKDIR}/${MY_P}" +fi + +DESCRIPTION="Used to generate Makefile.in from Makefile.am" +HOMEPAGE="https://www.gnu.org/software/automake/" + +LICENSE="GPL-2" +# Use Gentoo versioning for slotting. +SLOT="${PV:0:4}" +IUSE="test" +RESTRICT="!test? ( test )" + +RDEPEND="dev-lang/perl + >=sys-devel/automake-wrapper-11 + >=sys-devel/autoconf-2.69:* + sys-devel/gnuconfig" +DEPEND="${RDEPEND} + sys-apps/help2man + test? ( ${PYTHON_DEPS} )" + +PATCHES=( + "${FILESDIR}"/automake-1.16.1-py3-compile.patch +) + +pkg_setup() { + use test && python-any-r1_pkg_setup +} + +src_prepare() { + default + export WANT_AUTOCONF=2.5 + # Don't try wrapping the autotools this thing runs as it tends + # to be a bit esoteric, and the script does `set -e` itself. + ./bootstrap || die + sed -i -e "/APIVERSION=/s:=.*:=${SLOT}:" configure || die + + # Bug 628912 + if ! has_version sys-apps/texinfo ; then + touch doc/{stamp-vti,version.texi,automake.info} || die + fi +} + +# slot the info pages. do this w/out munging the source so we don't have +# to depend on texinfo to regen things. #464146 (among others) +slot_info_pages() { + pushd "${ED%/}"/usr/share/info >/dev/null || die + rm -f dir || die + + # Rewrite all the references to other pages. + # before: * aclocal-invocation: (automake)aclocal Invocation. Generating aclocal.m4. + # after: * aclocal-invocation v1.13: (automake-1.13)aclocal Invocation. Generating aclocal.m4. + local p pages=( *.info ) args=() + for p in "${pages[@]/%.info}" ; do + args+=( + -e "/START-INFO-DIR-ENTRY/,/END-INFO-DIR-ENTRY/s|: (${p})| v${SLOT}&|" + -e "s:(${p}):(${p}-${SLOT}):g" + ) + done + sed -i "${args[@]}" * || die + + # Rewrite all the file references, and rename them in the process. + local f d + for f in * ; do + d=${f/.info/-${SLOT}.info} + mv "${f}" "${d}" || die + sed -i -e "s:${f}:${d}:g" * || die + done + + popd >/dev/null || die +} + +src_install() { + default + + slot_info_pages + rm "${ED%/}"/usr/share/aclocal/README || die + rmdir "${ED%/}"/usr/share/aclocal || die + rm \ + "${ED%/}"/usr/bin/{aclocal,automake} \ + "${ED%/}"/usr/share/man/man1/{aclocal,automake}.1 || die + + # remove all config.guess and config.sub files replacing them + # w/a symlink to a specific gnuconfig version + local x + for x in guess sub ; do + dosym ../gnuconfig/config.${x} /usr/share/${PN}-${SLOT}/config.${x} + done +} diff --git a/sys-devel/automake/files/automake-1.16.1-py3-compile.patch b/sys-devel/automake/files/automake-1.16.1-py3-compile.patch new file mode 100644 index 000000000000..bbb08454763e --- /dev/null +++ b/sys-devel/automake/files/automake-1.16.1-py3-compile.patch @@ -0,0 +1,61 @@ +From d3edb7e0f3a5553b1ed919e566ec8c41022251a2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Sun, 3 Nov 2019 11:51:19 +0100 +Subject: [PATCH] py-compile: Support -OO for py3.5+, and -O&-OO for pypy3 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Michał Górny +--- + lib/py-compile | 27 +++++++++++++++++++++++++-- + 1 file changed, 25 insertions(+), 2 deletions(-) + +diff --git a/lib/py-compile b/lib/py-compile +index 1a3f4d644..44be97fc4 100755 +--- a/lib/py-compile ++++ b/lib/py-compile +@@ -140,7 +140,7 @@ $PYTHON -O -c " + import sys, os, py_compile, imp + + # pypy does not use .pyo optimization +-if hasattr(sys, 'pypy_translation_info'): ++if hasattr(sys, 'pypy_translation_info') and sys.hexversion < 0x03050000: + sys.exit(0) + + files = '''$files''' +@@ -154,7 +154,30 @@ for file in files.split(): + sys.stdout.write(file) + sys.stdout.flush() + if hasattr(imp, 'get_tag'): +- py_compile.compile(filepath, imp.cache_from_source(filepath, False), path) ++ py_compile.compile(filepath, imp.cache_from_source(filepath), path) ++ else: ++ py_compile.compile(filepath, filepath + 'o', path) ++sys.stdout.write('\n')" 2>/dev/null || : ++ ++$PYTHON -OO -c " ++import sys, os, py_compile, imp ++ ++# python<3.5 does not have split files for -O and -OO ++if sys.hexversion < 0x03050000: ++ sys.exit(0) ++ ++files = '''$files''' ++sys.stdout.write('Byte-compiling python modules (-OO versions) ...\n') ++for file in files.split(): ++ $pathtrans ++ $filetrans ++ if not os.path.exists(filepath) or not (len(filepath) >= 3 ++ and filepath[-3:] == '.py'): ++ continue ++ sys.stdout.write(file) ++ sys.stdout.flush() ++ if hasattr(imp, 'get_tag'): ++ py_compile.compile(filepath, imp.cache_from_source(filepath), path) + else: + py_compile.compile(filepath, filepath + 'o', path) + sys.stdout.write('\n')" 2>/dev/null || : +-- +2.23.0 + -- cgit v1.2.3-65-gdbad