In certain situations, file references (.py[co]) for Python files that
fail to compile with compileall() are still added to distutils --record
output.
This output is used for pkg-plist generation and must only contain
references to files that will be installed.
One example of a failure condition is when a Python 2/3 compatible
package containing a file containing Python 3.x only code is built with
Python 2.x, such as Gunicorn's _gaiohttp.py [1]
This change backports patches submitted against upstream issue 20397 [2]
that has not yet been committed.
- For Python 2.7 and 3.5, backport both install_lib and test
- For Python 3.2, 3.3 and 3.4, only backport install_lib
[1] https://svnweb.freebsd.org/changeset/ports/404558
[2] https://bugs.python.org/issue20397
Thank you to Brendan Molloy for producing and submitting the patches
against upstream sources.
Reviewed by: sbz (python)
MFH: 2016Q1
Differential Revision: D4832
There are some inefficiencies in python.mk that significantly slow down
full tree scanning. The use of bmake to obtain the current version of
a specific python is responsible for the majority of the slow done.
This commit splits out the PYTHON_PORTVERSION definition (which is the
same as the lang/python* PORTVERSION) into separate files. With this
change, python.mk can simple include the makefile fragment instead of
spawning a new instance of make.
Different Revision: https://reviews.freebsd.org/D4660
Approved by: antoine (python), mva (python)
non-default Python versions:
- Add pyXY-{sqlite3,gdbm,tkinter} ports for generating binary packages
- Improve/add pkg-message to point users to install respective packages of
separated Python standard modules
- Add COMMENT to explicitly show the Python version that package should be
used with
- Simplify version-related PYTHON_* for lang/python35
Reviewed by: koobs
Differential Revision: https://reviews.freebsd.org/D4170
Parser/pgen code intermittently and non-deterministically fails
at build time causing errors including, among others:
* Parser/pgen.o: file not recognized: File truncated
* pgenmain.c:(.text+0x244): undefined reference to `_Py_pgen'
This is apparently due to incorrect uses of recursive make [1] which
was fixed in the upstream Python 'default' (3.5) branch [2].
This change marks all Python port versions as MAKE_JOBS_UNSANFE until
the the original changeset [1] and the resulting regression in
cross-builds [3], whos fix is still pending, can be backported.
[1] https://bugs.python.org/issue22359
[2] https://hg.python.org/cpython/rev/c2a53aa27cad
[3] https://bugs.python.org/issue22625
PR: 200622
Reported by: marino
MFH: 2015Q3
- Replace ${MASTER_SITE_FOO} with FOO.
- Merge MASTER_SITE_SUBDIR into MASTER_SITES when possible. (This means 99.9%
of the time.)
- Remove occurrences of MASTER_SITE_LOCAL when no subdirectory was present and
no hint of what it should be was present.
- Fix some logic.
- And generally, make things more simple and easy to understand.
While there, add magic values to the FESTIVAL, GENTOO, GIMP, GNUPG, QT and
SAMBA macros.
Also, replace some EXTRACT_SUFX occurences with USES=tar:*.
Checked by: make fetch-urlall-list
With hat: portmgr
Sponsored by: Absolight
As per lang/python27 (r377581):
- Add BROKEN for i386 without LIBFFI option, and add upstream
issue references.
While I'm here, clean up after the LIBFFI option addition:
- Sort options variables: OPTIONS_* and *_DESC
- Use OPTIONS helpers
- Reduce diffs between lang/python* ports
Remove patches and hacks that were used to work around the previous
situation
This allows to stage more ports as a regular user
Differential Revision: https://reviews.freebsd.org/D703
Reviewed by and discussed with: bapt
With hat: portmgr
Backport fix [1] for upstream Python Issue #21704 [2]: Fix build error for
_multiprocessing when semaphores are not available.
The symptom was originally reported by RedPorts 8.4-QAT/i386,
ultimately resulting in a packaging error:
...
checking for sem_open... yes
checking for sem_timedwait... yes
checking for sem_getvalue... yes
checking for sem_unlink... yes
...
checking whether POSIX semaphores are enabled... no
checking for broken sem_getvalue... yes
...
*** WARNING: renaming "_multiprocessing" since importing it failed:
build/lib.freebsd-8.4-RELEASE-i386-3.4/_multiprocessing.so: Undefined
symbol "_PyMp_sem_unlink"
...
pkg-static: lstat(/work/a/ports/lang/python34/work/stage/usr/local/lib/
python3.4/lib-dynload/_multiprocessing.so): No such file or directory
Something is funny for Jail-based systems when it comes to host/jail
semaphore detection. A config.log would be handy to help determine why.
[1] http://hg.python.org/cpython/rev/f618f6739200
[2] http://bugs.python.org/issue21704
Bump PORTREVISION, as prior to the previous change that fixed upstream Issue
#21166, Python builds could be potentially polluted by the host environment
which could caused runtime issues because of ABI differences.
Backport fix for upstream Issue #21166:
Prevent possible segfaults and other random failures of python
--generate-posix-vars in pybuilddir.txt build target by ensuring
that pybuilddir.txt is always regenerated when configure is run and
that the newly built skeleton python does not inadvertently import
modules from previously installed instances. [1]
This changeset has been committed for release in 2.7.9, 3.4.2, and 3.5.0.
A HUGE thank you to Ned Deily from the Python Core Development Team
for helping to identify the underlying cause, produce a fix and
wonderfully document the explanation.
[1] http://bugs.python.org/issue21166
preparatory step to convert bsd.python.mk into a USES file.
- Use NLS_LIBS instead of NLS_LDFLAGS as done for lang/python27 (r357486)
- Use buildbottest in the regression-test: target
Phabric: D409
Reviewed by: koobs, sbz
With hat: python@
Copy the second part of a change previously made to python27 [1], to
python31, python32 and python33.
This fixes staging and packaging of these ports by a non-root user by
running ranlib on the archive prior to it being installed read-only.
While I'm here:
- python27: Add breadcrumbs and references to the patch header
- python34: Update breadcrumbs and references to the patch header
[1] https://svnweb.freebsd.org/ports?view=revision&revision=350207
Submitted by: antoine
Reviewed by: kwm, sbz
The FreeBSD Python Team warmly welcomes Python 3.4 to the Ports tree:
- Add lang/python34
- Add devel/py-setuptools34
- Add Python 3.4.0 docs to lang/python-doc
Release Announcement and Major Features:
https://www.python.org/download/releases/3.4.0/
This also marks the next stage of a cleaner, much-closer-to-upstream
approach to Python on FreeBSD, that builds upon the hard work of the
entire FreeBSD Python team over the last year.
This port is built "entirely" from scratch, retiring as much of the
legacy, workarounds, patches and hacks from the existing Python
ports as possible.
Of particular note: static + shared dual-build is gone, as it was flaky
at best, grossly untested upstream and caused more issues than it
solved. It is replaced by a shared build by default. The static python
library remains installed and usable.
Major changes in this structure are:
- Replace dual static and shared in-tree build with shared-only.
- Use options helpers
- Replace plat-freebsd* hacks with a lighter weight alternative
- Strip all libraries and shared extensions
- Only retain patches that are absolutely necessary
- Replace static disabled_module_list with one from upstream
- Retain NIS and sparc64 workarounds from python33
- Deprecate SEM option, no longer optional.
- Deprecate PTH option, no longer maintained or supported upstream
- Deprecate FPECTL option, no longer maintained or supported upstream
- Add upstream issue references & breadcrumb annotations where possible
Tested by: many (Special thanks to Andrew Berg)
Reviewed by: xmj, nemysis, antoine