a symbol matches multiple clauses the last one takes precedence. If the
catch-all is last it captures everything. In the case of Qt5 libraries
this caused all symbols to have a Qt_5 label while some should have
Qt_5_PRIVATE_API. This only affects lld because GNU ld always gives the
catch-all lowest priority.
Older versions of Qt5Webengine exported some memory allocation symbols from
the bundled Chromium. Version 5.9 stopped exporting these [1] but the
symbols were kept as weak wrappers for the standard allocation functions to
maintain binary compatibility. [2][3] The problem is that the call to the
standard function in these weak wrappers is only resolved to the standard
function if there's a call to this standard function in other parts of
Qt5Webengine, because only then is there a non-weak symbol that takes
precedence over the weak one. If there's no such non-weak symbol the call
in the weak wrapper resolves to the weak wrapper itself creating an infinite
call loop that overflows the stack and causes a crash. Some of the
allocation functions are variants of C++ new and delete and it probably
depends on the compiler whether these variants are used in other parts of
Qt5Webengine.
Remove the weak wrappers (make them Linux specific). This isn't binary
compatible but we are already breaking that with the changes to the symbol
versions.
[1] 5c2cbfccf9
[2] 2ed5054e3a
[3] 009f5ebb4b
Bump all ports that depend on Qt5.
PR: 234070
Exp-run by: antoine
Approved by: kde (adridg)
* PyQt could not be installed for multiple Python versions at
the same time, as there were conflicting files.
This patch creates Python-version versioned directories for
all these, and further installs binaries with a version number.
* Note, there might be some hickups for software that depends on
on of the .so's provided by PyQt5, which might not be found
anymore autmotically, and maybe need some LD-flaggery.
* Update PyQt5 to 5.10.1
* Mark www/py-qt5-webengine broken. It is unforuntately no longer
compatible with the old qt5-webengine-5.9.4 we ship.
PR: 232745
Exp-run by: antoine
Differential Revision: https://reviews.freebsd.org/D8714
This is a major version update that switches from using PyQt4 and Python 2.7
to PyQt5 and Python 3.5+
Update audio/picard-plugins to 20180707 snapshot from the 2.0 branch
Traceback (most recent call last):
File "/usr/local/bin/picard", line 2, in <module>
from picard.tagger import main; main('/usr/local/share/locale', True)
File "/usr/local/lib/python2.7/site-packages/picard/tagger.py", line 22, in <module>
import sip
ImportError: No module named sip
Fix LICENSE
Update WWW
Plugins are now in a separate port (audio/picard-plugins). They are
maintained in a separate repository and no longer shipped with the picard
source.
PR: 223354 [1]
Submitted by: Greg V <greg@unrelenting.technology> [1]
Ports using USE_PYTHON=distutils are now flavored. They will
automatically get flavors (py27, py34, py35, py36) depending on what
versions they support.
There is also a USE_PYTHON=flavors for ports that do not use distutils
but need FLAVORS to be set. A USE_PYTHON=noflavors can be set if
using distutils but flavors are not wanted.
A new USE_PYTHON=optsuffix that will add PYTHON_PKGNAMESUFFIX has been
added to cope with Python ports that did not have the Python
PKGNAMEPREFIX but are flavored.
USES=python now also exports a PY_FLAVOR variable that contains the
current python flavor. It can be used in dependency lines when the
port itself is not python flavored. For example, deskutils/calibre.
By default, all the flavors are generated. To only generate flavors
for the versions in PYTHON2_DEFAULT and PYTHON3_DEFAULT, define
BUILD_DEFAULT_PYTHON_FLAVORS in your make.conf.
In all the ports with Python dependencies, the *_DEPENDS entries MUST
end with the flavor so that the framework knows which to build/use.
This is done by appending '@${PY_FLAVOR}' after the origin (or
@${FLAVOR} if in a Python module with Python flavors, as the content
will be the same). For example:
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}
PR: 223071
Reviewed by: portmgr, python
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D12464
Setuptools is the preferred method to manage Python distributions after
many changes to the packaging ecosystem over the past couple of years.
Only ports using USE_PYDISTUTILS= yes are affected by this commit, ports using
USE_PYDISTUTILS= easy_install remains the same however this usage is now
deprecated and should be converted to USE_PYDISTUTILS= yes.
Some Python distributions do not work with setuptools out of the box because
they extend the install command from distutils and not setuptools, and
so they need to be patched accordingly.
pip (which leverages setuptools) works around the issue by using eggs, however
we want to get rid of those as well, as support for "flat" installation is
unavailable or has other issues associated with it.
This work allows us to unify how python packages are built, ensure that Python
distributions are installed consistently, reduces complexity for Python port
maintainers and paves the way for simplifying the Python ports framework in
the future.
With hat on: python
Reviewed by: koobs, antoine
Exp-run: bdrewery
Approved by: bdrewery (portmgr)
While here:
- add some missing tabs
- drop LICENSE_FILE (doesn't needed for well-known licenses)
- use PYTHON_PKGNAMEPREFIX in _DEPENDS
- strict python version to 2.x (per README)
PR: 168851
Submitted by: Jason E. Hale <bsdkaffee at gmail dot com> (maintainer)
PyQt-4.7 for FreeBSD. The official update notes can be found at
http://www.riverbankcomputing.com
We'd like to say thanks to all helpers, testers and submitters.