In Python 3.4+, upstream added and switched to using a shell
implementation of the python-config script [1]. The Python
implementation (python-config.py) remained used by all versions < 3.4.
While the shell implementation returns the path to the Python
shared library when using the --ldflags script argument, the Python
implementation of the script does not. The bug has been reported, but
has not yet been merged [2].
The Python ports currently default to including ${LOCALBASE}/lib
in LIBS when the NLS option is enabled (which it is by default).
When built *with* NLS (gettext) support, the flags added to LIBS
are returned in `pythonX.Y-config --ldflags` output, which happens
to match the path to the Python shared library.
If the NLS option is disabled, ${LOCALBASE}/lib is not added to LIBS,
and are therefore not returned in --ldflags output.
This results in potential linking errors for software that uses
python-config to obtain the correct library path, when the NLS option is
disabled:
$ make WITH=PYTHON -C audio/alsa-lib
[...]
--- smixer-python.la ---
CCLD smixer-python.la
/usr/bin/ld: cannot find -lpython2.7
This change modifies the python-config.in script to match the shell
implementation, outputting the library path in --ldflags output.
While I'm here:
for Python 3.2 and Python 3.3 ports, backport a library order
change [3]. This could affect linking with static libraries.
Use standard length lines and reduce diffs in pkg-message
[1] https://bugs.python.org/issue16235
[2] https://bugs.python.org/issue7352
[2] https://bugs.python.org/issue18096
PR: 197757
Submitted by: jbeich
MFH: 2015Q4
preparatory step to convert bsd.python.mk into a USES file.
- Remove the shared/static build separation, which is the source of many
problems and even more hacks. Instead build only the shared version, which
greatly simplifies the build.
- Remove the FPECTL option to align the build with the clean "template" from
lang/python34.
- Remove support for GNU pthreads via the PTH option. It is a permanent
troublemaker for ports using Python and pthread support.
- Remove PORTDATA and EXAMPLES. Those will be made available via separate
ports.
- Add a new DEBUG option to enable debug builds as for lang/python34.
- Remove bin/smtpd. Only Python2.7 wants to install it, but we'd like to keep
it consistent with the other lang/pythonXX ports
- Add CPE support.
- Reactivate curses/ncurses support.
- Use buildbottest in the regression-test: target.
- Move pkg-message to the right place.
Phabric: D488
Exp-run: 192242, 192244
Reviewed by: koobs
With hat: python@
and also add experimental support for POSIX semaphores in FreeBSD
7-STABLE and up. The option knobs PTH and SEM respectively are
added to enable this behaviour.
Python is able to use POSIX semaphores for thread synchronization
in threading, and prefers them.
The multiprocessing module in Python 2.6 requires POSIX semaphores,
however, the FreeBSD rtld and malloc need further work to allow
a process to call pthread_create() immediately after fork() as it is
not something allowed by a strict interpretation of the POSIX specs;
therefore allow GNU Pth to be used until the situation is resolved.
Approved by: miwi
- Now, lang/python is just a meta-port which depends on lang/python25.
- And all versions of Python ports have short version identifier in its
package name; python25-2.5, python24-2.4.3 and etc.
- Also you must upgrade all python modules after lang/python updated,
cd /usr/ports/lang/python && make upgrade-site-packages
- Give maintainership of Python ports to the new python@ group which
includes me, alexbl@ and others.