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
- add lubunwind as dependency: required by vmprof
- disable vmprof on FreeBSD 10: missing base support
- implement support for handles with ctypes.CDLL: fix dynamic loading of
shared objects
- enable various tests that were not working on FreeBSD 9
- mark get_profile_path as xfail on FreeBSD
- handle definition of char16_t and char32_t on libc++ for
__cplusplus < 201103L (libstdc++ does not do this)
- other minor fixes
ChangeLog:
- NumPy and Pandas now work on lang/pypy
- Cython 0.27.1 supports more projects with PyPy
- JSON parser improvements decrease memory by up to 50% and increase speed
by up to 15%
- CFFI updated to 1.11.1
Change Log:
- supports upstream library 2.7.13 and 3.5.3
- critical bugs fixed in shadowstack
- native support for profiling frames in vmprof
- performance improvements for pack* and unpack* structs
- cffi updates to 1.10.1
- numpy 1.13.0 requires at least this version
To fix conflicting of pypy and pypy3 the PYPY_DIR value was set using
${PORTNAME}, however the same codepath is used for cffi ports who's
${PORTNAME} is not pypy or pypy3.
Fix this by using an intermediate PYTHON_IMPL variable that is conditionally
set to ${PORTNAME} and explicitly set to 'pypy' for cffi ports.
Reported by: pkg-fallout
- add MIT/PSFL multi license
- pass LDSHARED to make environment (work-around assumption around 'gcc')
- add new dependency: pycparser (only required if python is translating)
- removed patches merged upstream
- add patch to remove '-flto' from cflags (base ld doesn't support LTO)
- pypy:
- add patch to fix bad assumption about 'gcc' (instead of 'cc')
- pypy3:
- update BUILD_WRKSRC and PYPY_CFFI_VER
- only supports AMD64
ChangeLog:
- PyPy2 updated to Python 2.7.13
- PyPy3 updated to Python 3.5.3 (beta):
- Not all tests pass
- Asyncio does work
- PyPy2 supports C-extensions: NumPy, Cython and Pandas (amongst others)
- CFFI updated to 1.10
- Many bug-fixes
Fails to configure with libressl:
[translation:ERROR] Exception: OpenSSL version >= 1.1 not supported yet.
This program requires OpenSSL version 1.0.x, and may also
work with LibreSSL or OpenSSL 0.9.x. OpenSSL 1.1 is quite
some work to update to; contributions are welcome. Sorry,
you need to install an older version of OpenSSL for now.
Make sure this older version is the one picked up by this
program when it runs the compiler.
Approved by: SSL blanket
ChangeLog:
- Update list of contributors in documentation and LICENSE file, this was unfortunately left out of 5.4.0.
- Allow tests run with -A to find libm.so even if it is a script not a dynamically loadable file
- Bump sys.setrecursionlimit() when translating PyPy, for translating with CPython
- Tweak a float comparison with 0 in backendopt.inline to avoid rounding errors
- Fix for an issue for translating the sandbox
- Fix for and issue where unicode.decode('utf8', 'custom_replace') messed up the last byte of a unicode string
sometimes
- Update built-in cffi to version 1.8.1
- Explicitly detect that we found as-yet-unsupported OpenSSL 1.1, and crash translation with a message asking for help
porting it
- Fix a regression where a PyBytesObject was forced (converted to a RPython object) when not required, reported as
issue #2395
ChangeLog:
- Incremental improvements to cpyext (passing 99% of numpy's test suite)
- Update cffi to 1.8, supporting "limited API" mode for c-extensions on
CPython >= 3.2
- Improved tooling for PyPy's JIT.
- Various new features, bug fixes and performance improvements, see:
http://pypy.readthedocs.io/en/latest/release-pypy2.7-v5.4.0.html
Unbreak build by:
- correctly detecting PowerPC architecture,
- excluding PowerPC specific assembler code (as there is none), and
- fixing the JIT due to long double == double for PowerPC.
Special thanks to swills who diligently tested multiple iterations of patches
to eventually end up at a solution.
Changes to lang/pypy3:
- "Rename" from pypy3-devel (functionaly it is a rename, technically pypy3
is a new port and pypy3-devel is deleted).
- Make lang/pypy3 a slave port of lang/pypy
Changes to lang/pypy:
- Use DISTVERSION instead of PORTVERSION (lang/pypy3 is not
PORTVERSION clean)
- Change PYPY_CFFI_VER to include the 'pypy-' prefix (lang/pypy3 has
'pypy3-' as a prefix)
- Only make PYPY_MINMEM the default is ${LOCALBASE}/lang/pypy exists
- Fix build depends for PYPY_MINMEM
- Allow slave port to have custom patch directory
- Remove conflicts (pypy does not conflict with pypy3)
- Allow slave port to override the packaging argument (lang/pypy3 has a
different syntax to exclude gdbm)
- Add ssl as a dependency (pypy picks up Port's openssl if it is installed)
- Strip all .so files in lib_pypy
- Fix where spaces were used instead of tabs
- Use PORTSNAME for binary name (fixes linking to pypy3).
Change Log:
- Python 3.3.5 support
- Missing features include space efficient strings (PEP 393)
- Known issues, including performance
- ensurepip included (only in CPython 3.4+)
- Fix LICENSE for databases/pypy-gdbm (GPLv2+).
- Add support for a slave port (i.e. the upcoming pypy3):
- Allow select variables to be overridden by slave port.
- Allow slave port to have its own distinfo and pkg-plist files.
- Depend on lang/pypy if translating with PYPY or PYPY_MINMEM options.
- Strip bundled cffi .so files.
ChangeLog:
- Highlighted changes
- Major improvements in the C-API compatibility layer
- Complete support for lxml
- Passing 95%+ of numpy's test suite
- Scipy and matplotlib builds and runs
- cffi updated to 1.7
- New features:
- Merge a major expansion of the C-API support in cpyext, also expand cpyext
tests to allow running them after translation as well as untranslated
- Instead of ?GIL not held when a CPython C extension module calls PyXxx?, we
now silently acquire/release the GIL. Helps with C extension modules that
call some PyXxx() functions without holding the GIL (arguably, they are
theoretically buggy).
- Support command line -v to trace import statements
- Revive traceviewer, a tool to use pygame to view traces
- Numpy via our internal _numpypy module:
- Implement ufunc.outer
- Move PyPy-specific numpypy headers to a subdirectory (also changed the repo
accordingly)
- Performance improvements:
- Use bitstrings to compress lists of descriptors that are attached to an
EffectInfo
- Remove most of the _ovf, _zer and _val operations from RPython. Kills quite
some code internally, and allows the JIT to do better optimizations: for
example, app-level code like x / 2 or x % 2 can now be turned into x >> 1
or x & 1, even if x is possibly negative.
- Rework the way registers are moved/spilled in before_call()
- Internal refactorings:
- Refactor code to better support Python3-compatible syntax
- Reduce the size of generated C sources during translation by eliminating
many many unused struct declarations (Issue #2281)
- Reduce the size of generated code by using the same function objects in all
generated subclasses
- Share cpyext Py* function wrappers according to the signature, shrinking
the translated libpypy.so by about 10% (without the JIT)
When pypy isn't installed then the port needs to use python to translate
pypy, however all options are not specified since two of the three (the
pypy related options) are not valid. Overcome this by a bit of re-ordering
and abusing OPTIONS_SLAVE in the later case.
Reported by: Andrzej Tobola <ato@iem.pw.edu.pl>
Changes:
- Drop local mirror
- Drop DIST_SUBDIR (distfile name no longer a generic "release-x.y.z.tar.bz2".
- Add test dependencies (all sub-ports, a la gdbm, sqlite and tkinter)
- Use gmake instead of using sed to transform the Makefile
- Use options helper variables
- Rename regression-test -> do-test
ChangeLog (see http://morepypy.blogspot.co.za/2016/03/pypy-50-released.html):
- Faster and leaner: improved JIT warmed (up to 30% faster) and improved memory
consumption (dropped by about 30%).
- C-API Upgrade: cpyext is much faster and lxml now passes all tests when
using cython compiled components.
- CFFI: ships with cffi-1.5.2.
- Add back PYPY_BITS as it is required to define the names of two files,
depending if pypy is translated for 32 or 64 bit systems [1].
- Change maintainership to python@ [2][3][4]
Reported by: pkg-fallout [1]
Approved by: koobs@ [2]
PR: 204743 [3]
Submitted by: robak@ [4]
Changes:
- Remove plist-sub PYPY_BITS
- Switch PYPY_VER to PYPY_CFFI_VER
Change Log:
- Highlighted features:
- Update cffi to 1.3.1.
- Update Python implementation to 2.7.10.
- New vectorisation optimisations added to the JIT. To enable add
--jit vec=1 (or --jit vec_all=1 for all vectorisation optimisations).
- Improved JIT warmup time of ~20%.
- Reduced memory consumption by ~20%.
- Numpy's ndarray and numeric dtypes are almost feature complete.
- Numpy's linalg, random and fft have been implemented as cffi modules using
the same underlying libraries as upstream.
- Bug Fixes
- Fix a bug when unrolling double loops in JITted code
- Fix multiple memory leaks in the ssl module, one of which affected CPython
as well (thanks to Alex Gaynor for pointing those out)
- Use pkg-config to find ssl headers on OS-X
- Fix a crash on non-linux when running more than 20 threads
- In cffi, ffi.new_handle() is more cpython compliant
- Accept unicode in functions inside the _curses cffi backend exactly like
cpython
- Fix a segfault in itertools.islice()
- Fix ndarray.copy() for upstream compatability when copying non-contiguous
arrays
- Fix assumption that lltype.UniChar is unsigned
- Fix a subtle bug with stacklets on shadowstack
- Improve support for the cpython capi in cpyext (our capi compatibility
layer). Fixing these issues inspired some thought about cpyext in general,
stay tuned for more improvements
- When loading dynamic libraries, in case of a certain loading error, retry
loading the library assuming it is actually a linker script, like on Arch
and Gentoo
- New features
- Internal cleanup of RPython class handling
- Support stackless and greenlets on PPC machines
- Improve debug logging in subprocesses: use PYPYLOG=jit:log.%d for example
to have all subprocesses write the JIT log to a file called ?log.%d?, with
?%d? replaced with the subprocess? PID.
- Support PyOS_double_to_string in our cpyext capi compatibility layer
- Add an optimization pass to vectorize loops using x86 SIMD intrinsics.
- Support __stdcall on Windows in CFFI
- Improve debug logging when using PYPYLOG=???
- Deal with platforms with no RAND_egd() in OpenSSL
- Numpy
- Improve support for __array_interface__
- Propagate most NAN mantissas through float16-float32-float64 conversions
- Add support for ndarray.ctypes
- Fast path for mixing numpy scalars and floats
- Add support for creating Fortran-ordered ndarrays
- Fix casting failures in linalg (by extending ufunc casting)
- Recognize and disallow (for now) pickling of ndarrays with objects embedded
in them
- Performance improvements and refactorings
- Improvements in slicing byte arrays
- Improvements in enumerate()
- Silence some warnings while translating
- Reuse hashed keys across dictionaries and sets
- Refactor JIT interals to improve warmup time by 20% or so at the cost of a
minor regression in JIT speed
- Recognize patterns of common sequences in the JIT backends and optimize them
- Make the garbage collecter more incremental over external_malloc() calls
- Share guard resume data where possible which reduces memory usage
- Fast path for zip(list, list)
- Reduce the number of checks in the JIT for lst[a:]
- Move the non-optimizable part of callbacks outside the JIT
- Factor in field immutability when invalidating heap information
- Unroll itertools.izip_longest() with two sequences
- Minor optimizations after analyzing output from vmprof and trace logs
- Remove many class attributes in rpython classes
- Handle getfield_gc_pure* and getfield_gc_* uniformly in heap.py
- Improve simple trace function performance by lazily calling fast2locals and
locals2fast only if truly necessary
Submitted by: robak@
PR: 204743 (with modification)
Changes:
- Add external cffi ports (a la python):
- databases/pypy-gdbm
- databases/pypy-sqlite3
- x11-toolkits/pypy-tkinter
- Add bsd.pypy.mk for consistency between pypy ports.
- Add bsd.pypy.cffi.mk for consistency with external cffi ports.
- Switch back to using $PREFIX/pypy-X.Y (the '-' separator is required to
differentiate between lang/pypy and lang/pypy3)
- Remove all patches (upstreamed, see announcement below)
ChangeLog:
- Bug Fixes
- Revive non-SSE2 support
- Fixes for detaching _io.Buffer*
- Clear up contention in the garbage collector between trace-me-later and
pinning
- Issues reported with our previous release were resolved after reports from
users on our issue tracker at https://bitbucket.org/pypy/pypy/issues or on
IRC at #pypy.
- New features:
- cffi was updated to version 1.3
- The python stdlib was updated to 2.7.10 from 2.7.9
- vmprof now supports multiple threads
- The translation process builds cffi import libraries for some stdlib
packages, which should prevent confusion when package.py is not used
- better support for gdb debugging
- FreeBSD should be able to translate PyPy "out of the box" with no patches
- Numpy:
- Better support for record dtypes, including the align keyword
- Implement casting and create output arrays accordingly (still missing some
corner cases)
- Support creation of unicode ndarrays
- Better support ndarray.flags
- Support axis argument in more functions
- Refactor array indexing to support ellipses
- Allow the docstrings of built-in numpy objects to be set at run-time
- Support the buffered nditer creation keyword
- Performance improvements:
- Delay recursive calls to make them non-recursive
- Skip loop unrolling if it compiles too much code
- Tweak the heapcache
- Add a list strategy for lists that store both floats and 32-bit integers.
The latter are encoded as nonstandard NaNs. Benchmarks show that the speed
of such lists is now very close to the speed of purely-int or purely-float
lists.
- Simplify implementation of ffi.gc() to avoid most weakrefs
- Massively improve the performance of map() with more than one sequence
argument
Differential Revision: https://reviews.freebsd.org/D3285
* Mark as only for i386, amd64 and armv6 (JIT only supported on those archs)
* Move PyPy dir to pypy26 (for consistency with llvm, et al)
* Drop PYPY_ARCH (unused)
* Use shell to detect ${BUILD_WRKSRC}/Makefile [1]
* Enable CFFI for components that do not have external dependencies
* Update regression-test to align with upstreams procedures
* Complete changes for detecting cpu count via sysctl (upstreamed)
* Properly detect arm (upstreamed) [2]
* Update pkg-plist generation and regenerate
[1] When make evaluates the dependency for pre-build the variable
${BUILD_WRKSRC} is not fully defined (i.e. ${WRKSRC}) so it does not get
properly expanded causing make to never find the correct Makefile.
PR: 202159 [2]
Reviewed by: sbruno (prior version)
- Use upstreams directory layout instead of FreeBSD's preferred directory
layout [1]
- Move the pypy installation into $PREFIX/pypy-x.y
- Remove the ability to build multiple instances (i.e. default to just
the JIT instance)
- Install the binary as pypy (instead of pypy-2.6 with a symlink to pypy)
- Remove the creation of cffi modules (will be outsourced to other ports,
a la cpython)
- Remove sqlite3 and gdbm dependencies (i.e. cffi modules)
PR: 183795
Differential Revision: https://reviews.freebsd.org/D3209
Temporarily disable CFFI module compilation post-build and the shared
CFFI libraries in the packaging lists to due failures finding and
linking tkinter:
Building tk bindings failed.
You can either install development headers package,
add the --without-tk option to skip packaging this
binary CFFI extension, or say --without-cffi.
Traceback (most recent call last):
File "<builtin>/app_main.py", line 75, in run_toplevel
File "/usr/ports/lang/pypy/files/compile_cffi.py", line 15, in <module>
create_cffi_import_libraries(sys.executable, Options(cffi_build_scripts), py.path.local(basedir))
File "/wrkdirs/usr/ports/lang/pypy/work/pypy-pypy-295ee98b6928/pypy/tool/release/package.py", line 84, in create_cffi_import_libraries
raise MissingDependenciesError(module)
MissingDependenciesError: _tkinter/tklib_build.py
This change is being committed on behalf of and in leui of maintainer
providing a comprehensive fix, as they are currently AFK.
Reported by: hawkowl (via IRC, portsmon)
Reviewed by: dbn (maintainer)
Approved by: dbn (maintainer)
Changes:
* Use pypy.tool.release.package to compile cffi modules.
ChangeLog:
* Python compatibility:
* Improve support for TLS 1.1 and 1.2
* Support for the PYTHONOPTIMIZE environment variable (impacting builtin's
__debug__ property)
* Issues reported with our previous release were resolved after reports
from users on our issue tracker at https://bitbucket.org/pypy/pypy/issues
or on IRC at #pypy.
* New features:
* Add preliminary support for a new lightweight statistical profiler
vmprof, which has been designed to accomodate profiling JITted code
* Numpy:
* Support for object dtype via a garbage collector hook
* Support for .can_cast and .min_scalar_type as well as beginning a
refactoring of the internal casting rules
* Better support for subtypes, via the __array_interface__,
__array_priority__, and __array_wrap__ methods (still a work-in-progress)
* Better support for ndarray.flags
* Performance improvements:
* Slight improvement in frame sizes, improving some benchmarks
* Internal refactoring and cleanups leading to improved JIT performance
* Improved IO performance of zlib and bz2 modules
* We continue to improve the JIT's optimizations. Our benchmark suite is
now over 7 times faster than cpython
Changes:
* Merge pypy-devel into pypy
* Drop pypy-devel (was intended to track pypy-current but no automated
process was implemented)
* Drop upstreamed patches
PR: 199790
This backports changes from pypy-devel. Although that port has not gone
through standard QA, there have not been any complaints in the months that
it has been available under pypy-devel.
Changes:
* various: migrate USE_BZIP2 to USES=tar:bzip2
* various: migrate USE_XZ to USES=tar:xz
* multimedia/py-ffmpeg: add and prefer github (GH) as master site
* ports-mgmt/portbuilder: specify license as BSD2CLAUSE (instead of just BSD)
Most ports are updated infrequently so a single batch commit is preferred over
collating changes per port.