Removed lzma module from PyRun for Python 3.x again, since
this caused too many issues with incompatible/missing libzma.so
references. The module is still being built as optional add-on and can
be used if the necessary libs are available, but it will no longer
prevent PyRun from working altogether.
Upgraded PyRun to Python 2.7.12, Python 3.4.5 and Python 3.5.2.
Fixed rpath setting to properly include the $ORIGIN marker. Without this, the rpath setting doesn't work.
Added missing lzma module to default PyRun 3.x
installation. Please note that this adds an additional dependency on
libzma.so.5 for PyRun for Python 3.4 and 3.5.
Fixed support for -u command line option with Python 3. Since this is used
by pip since version 8.0, it also removes issues with pip.
Removed ensurepip package from PyRun since this only works with access
to the bundled whl files. This is incompatible with the frozen nature of
packages in PyRun.
Added support for setting the OpenSSL path to the Makefile and have it
look in /usr/local/ssl before reverting to system dirs to make it easier
to link against more recent builds of OpenSSL.
Linking against OpenSSL 1.0.2 now on Mac OS X for the precompiled pyrun
binaries. You may have to set your shared linker path to point to the
right OpenSSL version.
Upgraded eGenix PyRun to work with and use Python 2.7.11 per
default. Python 2.7.11 now uses computed gotos in the interpreter loop,
adding some more performance. In addition, the vulnerable SSLv3 protocol
was switched off in the defaults of the ssl module.
Upgraded eGenix PyRun to work with and use Python 3.4.4 for the Python 3 version.
Added an explicit --libpath configure setting to work a problem
with some 64-bit platforms defaulting to lib64/. The new setting forces
the libs to always go into a lib/ directory.
Upgraded eGenix PyRun to work with and use Python 2.7.10 per default.
eGenix PyRun will now adjust sys.base_prefix and
sys.base_exec_prefix in the same way it does for sys.prefix and
sys.exec_prefix. This is needed for Python 3.4 in order to have distutils find the Python.h include file when compiling C extensions.
PyRun for Python 3.4 will now show the correct file name of scripts in
tracebacks when running them directly, instead of just '<string>'.
The new internal _sysconfigdata module used by the
sysconfig module is now patched with the eGenix PyRun config data as
well, to make sure that PyRun doesn't ship with two sets of build config
variables.
Upgraded eGenix PyRun to work with and use Python 2.7.9 per default.
Upgraded eGenix PyRun to work with and use Python 3.4.3 for Python 3 support.
Added support for setting rpath on the PyRun binary to make it easy to
ship external libraries together with PyRun, without having to set the LD_LIBRARY_PATH variable.
Added special support for
egenix-pyopenssl to load its OpenSSL libs during startup.
Add support for more Python command line options: -s and -3
are ignored,
-R raises an error explaining to use the PYTHONHASHSEED env var
instead, -B prevents writing of byte code files.This should increase
compatibility of PyRun with the standard Python command line interface.
Enhancements / Changes
Added patch for Python 2.7.9 and 3.4.3 to make ctypes work again after
changes to those versions of Python. See
https://bugs.python.org/issue23042 for details.
The PyRun -v command line switch will now be passed to Python and
supports setting the level using e.g. -vv for a verbose 2 level.
Disabled user site configurations in PyRun, since these are not needed or wanted for typical PyRun uses and cost startup time.
Optimized sys.path setup a bit. PyRun won't check for a Python build
run and will not check lib/site-python on startup anymore.
PyRun for Python 3.4 is no longer compiled to always run in optimized mode. This allows using asserts in tests again.
Fixes
Entering "license" in the interactive shell now returns the correct URL for all supported Python versions.
Tilde expansion now works for most arguments of install-pyrun. This wasn't working before due to a bug.
Added -r/--requirements option which allows automatically
installing
a set of required packages using a requirements file, so you can easily
set up a complete Python environment using a single
eGenix PyRun defaults to PYTHONIOENCODING =
"utf-8:surrogateescape" for Python 3.4 to provide a better user
experience.
Note that it is still possible to override this by setting
PYTHONIOENCODING to some other value. The locale based approached used
by standard Python can be reenabled by setting PYTHONIOENCODING to "".
Enabled the lib2to3 package to work with eGenix PyRun. This
allows on-the-fly Python 3 conversions as used by e.g. the setuptools
package to work with eGenix PyRun.
Added grammar files to pyrun so that lib2to3 can be used for
on-the-fly translations during installation. setuptools needs this for
Python 3 support.
Added list of available lib2to3 fixes to the pyrun_config module.
This allows lib2to3.refactor.get_all_fix_names() to work wit pyrun.
Frozen modules in eGenix PyRun now always have the __file__ attribute
set - unlike in standard Python, where this is not set (e.g.
in Python 3.4), or set to some value that doesn't relate to the module
(in Python 2.x). This increases compatibility of pyrun with existing Python software. Submitted as http://bugs.python.org/issue21736
Added work-around for getting runpy.run_path() to work with frozen
modules in Python 3. This is needed to be able to run packages and ZIP
files directly from the command line. Submitted as http://bugs.python.org/issue21737
Turned our pkgutil.py patch to support frozen modules into a real patch
instead of doing this dynamically. Submitted as http://bugs.python.org/issue21749
Fixed a very rare, but still possible segfault in the eGenix PyRun sys.path calculation short path.
Removed build dir information from the embedded config data in pyrun_config.py.
Fixed the runtime version to match the package version again. For PyRun 1.3.1 the binary was still showing 1.3.0.
Updated install-pyrun to default to eGenix PyRun 2.0.0 and its feature set.
install-pyrun now supports setuptools 2.0+ for Python 2.6 and 2.7
install-pyrun will no longer install the latest versions of pip and setuptools
due to recent incompatible changes in those packages. Instead, the
script uses fixed defaults and makes it easy to override them.
install-pyrun now uses pip 1.4.1 and setuptools 2.1 per default instead of the latest versions for better backwards compatibility with packages not hosted on PyPI.
install-pyrun can optionally fetch the latest versions of pip and setuptools by using "latest" as version number for --pip-version and --setuptools-version.
install-pyrun script is now available in signed and hashed form for additional security.
Made sure that install-pyrun will install pip and setuptools
versions compatible with Python 2.5 when using --python=2.5
--pyrun=1.3.1 (ie. for the older version of eGenix PyRun).
Upgraded eGenix PyRun to work with and use Python 2.7.5 per default.
Upgraded eGenix PyRun to use Python 2.6.8 as default Python 2.6 version.
PyRun will now create a symlink from "pyrunX.X" to "pythonX.X" and
"pyrunX.X" to "python" in the bin/ dir to enhance compatibility with
scripts and applications that hardwire the name of the Python
interpreter to "python".
install-pyrun now defaults to always installing the most recent setuptools and pip versions from PyPI.
install-pyrun now installs setuptools instead of distribute, after the
two projects got merged and continued under the older name.
Added new option --pyrun-executable to define an
alternative name for the executable, which is then also used when
installing setuptools and pip, e.g. "python" for even better
compatibility with standard Python.
install-run will now prefer curl over wget when downloading packages from PyPI.
install-pyrun local distribution options will now also work with relative paths.
install-pyrun now defaults to installing setuptools 1.1.1 and pip 1.4.1 when looking for local downloads of these tools.
The short options in install-pyrun now also have corresponding long option names.
Other Changes
Fixed SyntaxWarning in pyrunX.X: name 'pyrun_script' is assigned to before global declaration global pyrun_script
Upgraded eGenix PyRun to work with and use Python 2.7.4 per default.
Changed the pyrun default to run in non-optimized mode and added the
-O command line option to reenable it. Previous versions of eGenix
PyRun used to default to optimized mode, which prevented running tests
using e.g. assert with it. The stdlib itself is still frozen
in optimized mode.
Added support for directly running Python directories and ZIP files
with __main__ module. Only works with the Python 2.7 variant.
eGenix PyRun now honors symlinks, so symlinked copies of PyRun can be
used to save disk space. The installations will still work as expected,
i.e. independent of each other.
Added new pyrun_release config variable to the pyrun_config module. This allows checking the pyrun release version.
Added PyRun release version to the banner and -V output.
Added support for the Python -d command line option to pyrun.
Added new options --distribute-distribution and --pip-distribution to be able to use local distribution files for distribute and pip.
Added --debug option to enable debug output.
install-pyrun will now try uname -m in case uname -p doesn't return useful information about the platform.
install-pyrun will now use HTTPS connections for all tools (pyrun, distribute and pip). SSL certificate checking is enabled per default, but can be turned off using the new --disable-certificate-checks option.
Added automatic support for wget to install-pyrun. It is being used if curl is not found on the system.
Added new option --platform-list to print a list of available platform strings.
Other Changes
Removed the compiler package from being compiled into PyRun. If
needed, it can be installed separately. Note that the compiler package
needs the parser module which is not compiled into PyRun either, but is
still available as extension module.
Removed the Tkinter Python module from being compiled into PyRun. If
needed, it can be installed separately. Note that the Tkinter module
needs the _tkinter C module, which is not compiled into PyRun either,
but is still available as extension module.
Fixed sys.argv when using interactive mode to default to [''].
All eGenix PyRun distribution packages are now GPG signed with our release key and come with MD5 and SHA1 hashes to check for download corruption.
Added new simple end-to-end test for the PyRun build process: make test-distribution.
Added support to import top-level frozen modules via -m. For packages this still fails due to bugs in Python itself.
Added a new easy to use pyrun installation shell script: install-pyrun.
install-pyrun will now default to eGenix PyRun 1.1.0.
install-pyrun now has a new --pyrun-distribution option to
manually direct the script to a distribution file. This comes in handy
when testing your own eGenix PyRun distributions.
Enhanced Integration
Optional readline module included in our binary builds now
links against readline version 6 instead of 5. This should resolve
readline issues on modern Linux installations.
Resolved an issue related to sys.argv[0] that prevented
installation of e.g. numpy and lxml with pyrun. We've tested PyRun
installation with numpy, lxml, Cython, Django, Trac and several other popular packages. They should all install fine now.
PyRun now reads scripts from stdin when used as filter or when providing '-' as script name.
Other Changes
Documented that setuptools/distribute and pip are not designed to be relocatable - unlike PyRun itself.
Most references to the pyrun build directory are now replaced with "<pyrun>". This reduces the pyrun binary size and also avoids confusion when looking at tracebacks.
Backported a patch to have Python 2.5 compile on systems that have a more recent version of svnversion installed.
We've managed to push the size down from 12MB in 1.0.0 to 11MB in this new release.