Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/python:master commit in: dev-lang/python/files/, dev-lang/python/
Date: Fri, 27 Dec 2019 21:16:37
Message-Id: 1577461699.3c967f5bceabf7009d8e866cbba677d0b174d119.mgorny@gentoo
1 commit: 3c967f5bceabf7009d8e866cbba677d0b174d119
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Fri Dec 27 15:44:48 2019 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Fri Dec 27 15:48:19 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/python.git/commit/?id=3c967f5b
7
8 dev-lang/python: Import 3.5.9 from ::gentoo
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 dev-lang/python/Manifest | 2 +
13 .../files/python-3.5-distutils-OO-build.patch | 80 +++++
14 dev-lang/python/python-3.5.9.ebuild | 367 +++++++++++++++++++++
15 3 files changed, 449 insertions(+)
16
17 diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest
18 index fe0d951..2de11b4 100644
19 --- a/dev-lang/python/Manifest
20 +++ b/dev-lang/python/Manifest
21 @@ -2,4 +2,6 @@ DIST Python-2.6.9.tar.xz 9333664 SHA256 cae7bb995006ea5b703d9d28446f694894c441fe
22 DIST Python-3.2.6.tar.xz 9243292 SHA256 1d12b501819fd26afafbf8459be1aa279b56f032b4c15412de0a713ce0de7bdc SHA512 514b46029dd5b07f2d287a1f00c6716970197186a38e3f2e1ec60c2292cf03a2dc45165ba9c217e5219c7cb6d96a09f790f5b3bdcc8d11db53f927297fe4ddc9 WHIRLPOOL b34f215e0f50123c5b2969e615ffbab99b631433de8f13cbbca525bf57cbc1bb9a159fba02616b3772be9b249be3cec36d6fd1856a678880674b828eb4ab08ed
23 DIST Python-3.3.5.tar.xz 12116308 SHA256 abe99b484434503d8b23be0f243ec27139e743a4798cd71c1dce3cf40e63b6e5 SHA512 562ebd85291f29ff18d37f05682763fc45aa9d070688006f4ef5c89392a48022357c3ca9ee1d795e9e863bdef413e6bab77b8d65581d374a76dbe7cacec65550 WHIRLPOOL f4b6010d32b28b7bb038cbb7c5f98d325cc4253fd1be9a0a1089ed6fd7dd414c5169931d21ef819137d5c1084517a650828f260cf2a1d8ce871bc67aeef3fff8
24 DIST Python-3.4.10.tar.xz 14559088 SHA256 d46a8f6fe91679e199c671b1b0a30aaf172d2acb5bcab25beb35f16c3d195b4e SHA512 d5d27d68049b61f135e21b12a800dbd4fc521d6935de178de6e2e88a989cda511d3c8fead90d14e38d2db0e528a74b22674e0da01c51ff4fad7d335ec6c3dbbc WHIRLPOOL 84608931cd785eddd234d207be2caa273575067d7687a0ed05217e2f2ae410da684fcf5ed65cfa17dd8eda082844bb4067cdcb4a277ceb20845ffa9f3baa6f58
25 +DIST Python-3.5.9.tar.xz 15388876 SHA256 c24a37c63a67f53bdd09c5f287b5cff8e8b98f857bf348c577d454d3f74db049 SHA512 58127793adef42ed57ae4d56338268866e14c2d084f09f57f26fc6b1c9454e70cc6d3dffc638f8d56f182acc0884021a4dbb578f312dd6fc01995fa85e31377e WHIRLPOOL 16f4a6938ed1004cbb10a9b60621d70f8e52a36771fbb55cf5fb3211ad98daa2c9cf181789c226d51c4f65cefce056dfff73031f61c1ce35e96e24bd2db186b3
26 DIST python-gentoo-patches-3.4.6-0.tar.xz 11728 SHA256 93e7c8487deefc36c612403fb6c82e495c46846a1952f9ed85f82af41840be4a SHA512 41c22dc8f1db8800fc0b97eed2b27bf1873e5de1369bd4aecf7a7a91e609a78e45a4b56fc89d575317f33a7704c0c1cad1494e8a993415a198f256e8338f49ab WHIRLPOOL 851945e7ccea985a88bcbd71bc404bc34c27a0e335386e9ed15fa9876aab3285ff559936fb2dcadf7ac0594a7cb03ac3a9e4135b67b350c5fdf33e9a44ca0654
27 +DIST python-gentoo-patches-3.5.4-0.tar.xz 11704 SHA256 30c9dbcd5c11ed025b9d8dd201da84c5b9f9756f9b6ba77ccaebc6b79a91e320 SHA512 d395a87695f700598026038d6929ea5038abd7d494294037a4dfa02d5262203dbbaa6ae258a5a7f35ff5542f6266dcf69cc0b9c3df2a047cd2f6699a87e182ec WHIRLPOOL 2191dc89805c1bc11d125005a5c5dd0e5fe635eb0a3d6698bef8b55f54741edc3b3e2588bb21f5eda517963489c15296cd5fd265c8a548d78be6093698e6b002
28
29 diff --git a/dev-lang/python/files/python-3.5-distutils-OO-build.patch b/dev-lang/python/files/python-3.5-distutils-OO-build.patch
30 new file mode 100644
31 index 0000000..8af8c30
32 --- /dev/null
33 +++ b/dev-lang/python/files/python-3.5-distutils-OO-build.patch
34 @@ -0,0 +1,80 @@
35 +From 90507018442f9adabb586fd3d0a0206b9c2f2f50 Mon Sep 17 00:00:00 2001
36 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@g.o>
37 +Date: Sun, 5 Jun 2016 08:18:01 +0200
38 +Subject: [PATCH] distutils: make -OO enable both opt-1 and opt-2 optimization
39 +
40 +Bug: http://bugs.python.org/issue27226
41 +Bug: https://bugs.gentoo.org/585060
42 +---
43 + Lib/distutils/command/build_py.py | 8 ++++----
44 + Lib/distutils/command/install_lib.py | 12 ++++++------
45 + 2 files changed, 10 insertions(+), 10 deletions(-)
46 +
47 +diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py
48 +index cf0ca57..838d4e4 100644
49 +--- a/Lib/distutils/command/build_py.py
50 ++++ b/Lib/distutils/command/build_py.py
51 +@@ -315,9 +315,9 @@ class build_py (Command):
52 + if self.compile:
53 + outputs.append(importlib.util.cache_from_source(
54 + filename, optimization=''))
55 +- if self.optimize > 0:
56 ++ for opt in range(1, self.optimize + 1):
57 + outputs.append(importlib.util.cache_from_source(
58 +- filename, optimization=self.optimize))
59 ++ filename, optimization=opt))
60 +
61 + outputs += [
62 + os.path.join(build_dir, filename)
63 +@@ -387,8 +387,8 @@ class build_py (Command):
64 + if self.compile:
65 + byte_compile(files, optimize=0,
66 + force=self.force, prefix=prefix, dry_run=self.dry_run)
67 +- if self.optimize > 0:
68 +- byte_compile(files, optimize=self.optimize,
69 ++ for opt in range(1, self.optimize + 1):
70 ++ byte_compile(files, optimize=opt,
71 + force=self.force, prefix=prefix, dry_run=self.dry_run)
72 +
73 + class build_py_2to3(build_py, Mixin2to3):
74 +diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
75 +index 6154cf0..049b662 100644
76 +--- a/Lib/distutils/command/install_lib.py
77 ++++ b/Lib/distutils/command/install_lib.py
78 +@@ -24,8 +24,8 @@ class install_lib(Command):
79 + # 2) compile .pyc only (--compile --no-optimize; default)
80 + # 3) compile .pyc and "opt-1" .pyc (--compile --optimize)
81 + # 4) compile "opt-1" .pyc only (--no-compile --optimize)
82 +- # 5) compile .pyc and "opt-2" .pyc (--compile --optimize-more)
83 +- # 6) compile "opt-2" .pyc only (--no-compile --optimize-more)
84 ++ # 5) compile .pyc, "opt-1" and "opt-2" .pyc (--compile --optimize-more)
85 ++ # 6) compile "opt-1" and "opt-2" .pyc (--no-compile --optimize-more)
86 + #
87 + # The UI for this is two options, 'compile' and 'optimize'.
88 + # 'compile' is strictly boolean, and only decides whether to
89 +@@ -132,8 +132,8 @@ class install_lib(Command):
90 + byte_compile(files, optimize=0,
91 + force=self.force, prefix=install_root,
92 + dry_run=self.dry_run)
93 +- if self.optimize > 0:
94 +- byte_compile(files, optimize=self.optimize,
95 ++ for opt in range(1, self.optimize + 1):
96 ++ byte_compile(files, optimize=opt,
97 + force=self.force, prefix=install_root,
98 + verbose=self.verbose, dry_run=self.dry_run)
99 +
100 +@@ -167,9 +167,9 @@ class install_lib(Command):
101 + if self.compile:
102 + bytecode_files.append(importlib.util.cache_from_source(
103 + py_file, optimization=''))
104 +- if self.optimize > 0:
105 ++ for opt in range(1, self.optimize + 1):
106 + bytecode_files.append(importlib.util.cache_from_source(
107 +- py_file, optimization=self.optimize))
108 ++ py_file, optimization=opt))
109 +
110 + return bytecode_files
111 +
112 +--
113 +2.8.3
114 +
115
116 diff --git a/dev-lang/python/python-3.5.9.ebuild b/dev-lang/python/python-3.5.9.ebuild
117 new file mode 100644
118 index 0000000..931cccc
119 --- /dev/null
120 +++ b/dev-lang/python/python-3.5.9.ebuild
121 @@ -0,0 +1,367 @@
122 +# Copyright 1999-2019 Gentoo Authors
123 +# Distributed under the terms of the GNU General Public License v2
124 +
125 +EAPI="5"
126 +WANT_LIBTOOL="none"
127 +
128 +inherit autotools eutils flag-o-matic multilib pax-utils python-utils-r1 toolchain-funcs
129 +
130 +MY_P="Python-${PV/_/}"
131 +PATCHSET_VERSION="3.5.4-0"
132 +
133 +DESCRIPTION="An interpreted, interactive, object-oriented programming language"
134 +HOMEPAGE="https://www.python.org/"
135 +SRC_URI="https://www.python.org/ftp/python/${PV%_rc*}/${MY_P}.tar.xz
136 + https://dev.gentoo.org/~floppym/python/python-gentoo-patches-${PATCHSET_VERSION}.tar.xz"
137 +
138 +LICENSE="PSF-2"
139 +SLOT="3.5/3.5m"
140 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
141 +IUSE="bluetooth build elibc_uclibc examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml"
142 +RESTRICT="!test? ( test )"
143 +
144 +# Do not add a dependency on dev-lang/python to this ebuild.
145 +# If you need to apply a patch which requires python for bootstrapping, please
146 +# run the bootstrap code on your dev box and include the results in the
147 +# patchset. See bug 447752.
148 +
149 +RDEPEND="app-arch/bzip2:0=
150 + app-arch/xz-utils:0=
151 + >=sys-libs/zlib-1.1.3:0=
152 + virtual/libffi:=
153 + virtual/libintl
154 + gdbm? ( sys-libs/gdbm:0=[berkdb] )
155 + ncurses? ( >=sys-libs/ncurses-5.2:0= )
156 + readline? ( >=sys-libs/readline-4.1:0= )
157 + sqlite? ( >=dev-db/sqlite-3.3.8:3= )
158 + ssl? (
159 + !libressl? ( dev-libs/openssl:0= )
160 + libressl? ( dev-libs/libressl:0= )
161 + )
162 + tk? (
163 + >=dev-lang/tcl-8.0:0=
164 + >=dev-lang/tk-8.0:0=
165 + dev-tcltk/blt:0=
166 + dev-tcltk/tix
167 + )
168 + xml? ( >=dev-libs/expat-2.1:0= )"
169 +# bluetooth requires headers from bluez
170 +DEPEND="${RDEPEND}
171 + bluetooth? ( net-wireless/bluez )
172 + virtual/pkgconfig
173 + !sys-devel/gcc[libffi(-)]"
174 +RDEPEND+=" !build? ( app-misc/mime-types )"
175 +PDEPEND=">=app-eselect/eselect-python-20140125-r1"
176 +
177 +S="${WORKDIR}/${MY_P}"
178 +
179 +PYVER=${SLOT%/*}
180 +
181 +src_prepare() {
182 + # Ensure that internal copies of expat, libffi and zlib are not used.
183 + rm -fr Modules/expat
184 + rm -fr Modules/_ctypes/libffi*
185 + rm -fr Modules/zlib
186 +
187 + if tc-is-cross-compiler; then
188 + # Invokes BUILDPYTHON, which is built for the host arch
189 + local EPATCH_EXCLUDE="*_regenerate_platform-specific_modules.patch"
190 + fi
191 +
192 + EPATCH_SUFFIX="patch" epatch "${WORKDIR}/patches"
193 + epatch "${FILESDIR}/${PN}-3.4.3-ncurses-pkg-config.patch"
194 + epatch "${FILESDIR}/${PN}-3.5-distutils-OO-build.patch"
195 + epatch "${FILESDIR}/3.6-disable-nis.patch"
196 +# epatch "${FILESDIR}/python-3.5.5-libressl-compatibility.patch"
197 + epatch "${FILESDIR}/python-3.5.5-hash-unaligned.patch"
198 +
199 + epatch_user
200 +
201 + sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
202 + configure.ac \
203 + Lib/distutils/command/install.py \
204 + Lib/distutils/sysconfig.py \
205 + Lib/site.py \
206 + Lib/sysconfig.py \
207 + Lib/test/test_site.py \
208 + Makefile.pre.in \
209 + Modules/getpath.c \
210 + Modules/Setup.dist \
211 + setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
212 +
213 + eautoreconf
214 +}
215 +
216 +src_configure() {
217 + local disable
218 + # disable automagic bluetooth headers detection
219 + use bluetooth || export ac_cv_header_bluetooth_bluetooth_h=no
220 + use gdbm || disable+=" gdbm"
221 + use ncurses || disable+=" _curses _curses_panel"
222 + use readline || disable+=" readline"
223 + use sqlite || disable+=" _sqlite3"
224 + use ssl || export PYTHON_DISABLE_SSL="1"
225 + use tk || disable+=" _tkinter"
226 + use xml || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
227 + export PYTHON_DISABLE_MODULES="${disable}"
228 +
229 + if ! use xml; then
230 + ewarn "You have configured Python without XML support."
231 + ewarn "This is NOT a recommended configuration as you"
232 + ewarn "may face problems parsing any XML documents."
233 + fi
234 +
235 + if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
236 + einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
237 + fi
238 +
239 + if [[ "$(gcc-major-version)" -ge 4 ]]; then
240 + append-flags -fwrapv
241 + fi
242 +
243 + filter-flags -malign-double
244 +
245 + # https://bugs.gentoo.org/show_bug.cgi?id=50309
246 + if is-flagq -O3; then
247 + is-flagq -fstack-protector-all && replace-flags -O3 -O2
248 + use hardened && replace-flags -O3 -O2
249 + fi
250 +
251 + # Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
252 + tc-export CXX
253 +
254 + # The configure script fails to use pkg-config correctly.
255 + # http://bugs.python.org/issue15506
256 + export ac_cv_path_PKG_CONFIG=$(tc-getPKG_CONFIG)
257 +
258 + # Set LDFLAGS so we link modules with -lpython3.2 correctly.
259 + # Needed on FreeBSD unless Python 3.2 is already installed.
260 + # Please query BSD team before removing this!
261 + append-ldflags "-L."
262 +
263 + local dbmliborder
264 + if use gdbm; then
265 + dbmliborder+="${dbmliborder:+:}gdbm"
266 + fi
267 +
268 + BUILD_DIR="${WORKDIR}/${CHOST}"
269 + mkdir -p "${BUILD_DIR}" || die
270 + cd "${BUILD_DIR}" || die
271 +
272 + local myeconfargs=(
273 + --with-fpectl
274 + --enable-shared
275 + $(use_enable ipv6)
276 + $(use_with threads)
277 + --infodir='${prefix}/share/info'
278 + --mandir='${prefix}/share/man'
279 + --with-computed-gotos
280 + --with-dbmliborder="${dbmliborder}"
281 + --with-libc=
282 + --enable-loadable-sqlite-extensions
283 + --without-ensurepip
284 + --with-system-expat
285 + --with-system-ffi
286 + )
287 +
288 + ECONF_SOURCE="${S}" OPT="" econf "${myeconfargs[@]}"
289 +
290 + if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
291 + eerror "configure has detected that the sem_open function is broken."
292 + eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
293 + die "Broken sem_open function (bug 496328)"
294 + fi
295 +}
296 +
297 +src_compile() {
298 + # Ensure sed works as expected
299 + # https://bugs.gentoo.org/594768
300 + local -x LC_ALL=C
301 +
302 + cd "${BUILD_DIR}" || die
303 +
304 + emake CPPFLAGS= CFLAGS= LDFLAGS=
305 +
306 + # Work around bug 329499. See also bug 413751 and 457194.
307 + if has_version dev-libs/libffi[pax_kernel]; then
308 + pax-mark E python
309 + else
310 + pax-mark m python
311 + fi
312 +}
313 +
314 +src_test() {
315 + # Tests will not work when cross compiling.
316 + if tc-is-cross-compiler; then
317 + elog "Disabling tests due to crosscompiling."
318 + return
319 + fi
320 +
321 + cd "${BUILD_DIR}" || die
322 +
323 + # Skip failing tests.
324 + local skipped_tests="gdb"
325 +
326 + for test in ${skipped_tests}; do
327 + mv "${S}"/Lib/test/test_${test}.py "${T}"
328 + done
329 +
330 + local -x PYTHONDONTWRITEBYTECODE=
331 + emake test EXTRATESTOPTS="-u-network" CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
332 + local result=$?
333 +
334 + for test in ${skipped_tests}; do
335 + mv "${T}/test_${test}.py" "${S}"/Lib/test
336 + done
337 +
338 + elog "The following tests have been skipped:"
339 + for test in ${skipped_tests}; do
340 + elog "test_${test}.py"
341 + done
342 +
343 + elog "If you would like to run them, you may:"
344 + elog "cd '${EPREFIX}/usr/$(get_libdir)/python${PYVER}/test'"
345 + elog "and run the tests separately."
346 +
347 + if [[ ${result} -ne 0 ]]; then
348 + die "emake test failed"
349 + fi
350 +}
351 +
352 +src_install() {
353 + local libdir=${ED}/usr/$(get_libdir)/python${PYVER}
354 +
355 + cd "${BUILD_DIR}" || die
356 +
357 + emake DESTDIR="${D}" altinstall
358 +
359 + sed \
360 + -e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \
361 + -e "s/\(PY_LDFLAGS=\).*/\1/" \
362 + -i "${libdir}/config-${PYVER}"*/Makefile || die "sed failed"
363 +
364 + # Fix collisions between different slots of Python.
365 + rm -f "${ED}usr/$(get_libdir)/libpython3.so"
366 +
367 + # Cheap hack to get version with ABIFLAGS
368 + local abiver=$(cd "${ED}usr/include"; echo python*)
369 + if [[ ${abiver} != python${PYVER} ]]; then
370 + # Replace python3.X with a symlink to python3.Xm
371 + rm "${ED}usr/bin/python${PYVER}" || die
372 + dosym "${abiver}" "/usr/bin/python${PYVER}"
373 + # Create python3.X-config symlink
374 + dosym "${abiver}-config" "/usr/bin/python${PYVER}-config"
375 + # Create python-3.5m.pc symlink
376 + dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc"
377 + fi
378 +
379 + # python seems to get rebuilt in src_install (bug 569908)
380 + # Work around it for now.
381 + if has_version dev-libs/libffi[pax_kernel]; then
382 + pax-mark E "${ED}usr/bin/${abiver}"
383 + else
384 + pax-mark m "${ED}usr/bin/${abiver}"
385 + fi
386 +
387 + use elibc_uclibc && rm -fr "${libdir}/test"
388 + use sqlite || rm -fr "${libdir}/"{sqlite3,test/test_sqlite*}
389 + use tk || rm -fr "${ED}usr/bin/idle${PYVER}" "${libdir}/"{idlelib,tkinter,test/test_tk*}
390 +
391 + use threads || rm -fr "${libdir}/multiprocessing"
392 + use wininst || rm -f "${libdir}/distutils/command/"wininst-*.exe
393 +
394 + dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS}
395 +
396 + if use examples; then
397 + docinto examples
398 + find "${S}"/Tools -name __pycache__ -print0 | xargs -0 rm -fr
399 + dodoc -r "${S}"/Tools
400 + fi
401 + insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
402 + local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
403 + emake --no-print-directory -s -f - 2>/dev/null)
404 + newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
405 +
406 + newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER}
407 + newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER}
408 + sed \
409 + -e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \
410 + -e "s:@PYDOC@:pydoc${PYVER}:" \
411 + -i "${ED}etc/conf.d/pydoc-${PYVER}" "${ED}etc/init.d/pydoc-${PYVER}" || die "sed failed"
412 +
413 + # for python-exec
414 + local vars=( EPYTHON PYTHON_SITEDIR PYTHON_SCRIPTDIR )
415 +
416 + # if not using a cross-compiler, use the fresh binary
417 + if ! tc-is-cross-compiler; then
418 + local -x PYTHON=./python
419 + local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}${PWD}
420 + else
421 + vars=( PYTHON "${vars[@]}" )
422 + fi
423 +
424 + python_export "python${PYVER}" "${vars[@]}"
425 + echo "EPYTHON='${EPYTHON}'" > epython.py || die
426 + python_domodule epython.py
427 +
428 + # python-exec wrapping support
429 + local pymajor=${PYVER%.*}
430 + mkdir -p "${D}${PYTHON_SCRIPTDIR}" || die
431 + # python and pythonX
432 + ln -s "../../../bin/${abiver}" \
433 + "${D}${PYTHON_SCRIPTDIR}/python${pymajor}" || die
434 + ln -s "python${pymajor}" \
435 + "${D}${PYTHON_SCRIPTDIR}/python" || die
436 + # python-config and pythonX-config
437 + # note: we need to create a wrapper rather than symlinking it due
438 + # to some random dirname(argv[0]) magic performed by python-config
439 + cat > "${D}${PYTHON_SCRIPTDIR}/python${pymajor}-config" <<-EOF || die
440 + #!/bin/sh
441 + exec "${abiver}-config" "\${@}"
442 + EOF
443 + chmod +x "${D}${PYTHON_SCRIPTDIR}/python${pymajor}-config" || die
444 + ln -s "python${pymajor}-config" \
445 + "${D}${PYTHON_SCRIPTDIR}/python-config" || die
446 + # 2to3, pydoc, pyvenv
447 + ln -s "../../../bin/2to3-${PYVER}" \
448 + "${D}${PYTHON_SCRIPTDIR}/2to3" || die
449 + ln -s "../../../bin/pydoc${PYVER}" \
450 + "${D}${PYTHON_SCRIPTDIR}/pydoc" || die
451 + ln -s "../../../bin/pyvenv-${PYVER}" \
452 + "${D}${PYTHON_SCRIPTDIR}/pyvenv" || die
453 + # idle
454 + if use tk; then
455 + ln -s "../../../bin/idle${PYVER}" \
456 + "${D}${PYTHON_SCRIPTDIR}/idle" || die
457 + fi
458 +}
459 +
460 +pkg_preinst() {
461 + if has_version "<${CATEGORY}/${PN}-${PYVER}" && ! has_version ">=${CATEGORY}/${PN}-${PYVER}_alpha"; then
462 + python_updater_warning="1"
463 + fi
464 +}
465 +
466 +eselect_python_update() {
467 + if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
468 + eselect python update
469 + fi
470 +
471 + if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
472 + eselect python update --python${PV%%.*}
473 + fi
474 +}
475 +
476 +pkg_postinst() {
477 + eselect_python_update
478 +
479 + if [[ "${python_updater_warning}" == "1" ]]; then
480 + ewarn "You have just upgraded from an older version of Python."
481 + ewarn
482 + ewarn "Please adjust PYTHON_TARGETS (if so desired), and run emerge with the --newuse or --changed-use option to rebuild packages installing python modules."
483 + fi
484 +}
485 +
486 +pkg_postrm() {
487 + eselect_python_update
488 +}