- Added support for Python 3.13.
- Switched from
pip-licensestopip-licenses-clisince the former doesn't seem to be maintained anymore and is falling behind on compatibility. See raimon49/pip-licenses#227. The matchingpip_licenses_versionoption has been renamed topip_licenses_cli_version. - Updated default recipe options to
pipv25.1.1,setuptoolsv80.9.0, andwheelv0.45.1. - Dropped support for Conan v1.
- Fixed an issue where calling CMake with
-DPython_EXECUTABLE=<system_python>created conflicts with the embedded Python (either a loud version error, or silently passing the wrong library paths). Some IDEs would pass this flag implicitly and it would hijack thefind_package(Python)call used internally by this recipe. Now, we specifically protect against this since there should be no traces of system Python in a project that wishes to embed it. - Provided an alternative to
embedded_python_tools.symlink_import(). For dev builds, it's now possible to pointPyConfig::hometo the contents ofbin/.embedded_python(-core).hometo avoid needing to copy the entire Python environment into the build tree every time the project is reconfigured.
- Added support for Conan v2.
- Added support for Python 3.12.
- Updated default recipe options to
pipv24.0,setuptoolsv69.5.1,wheelv0.43.0, andpip-licensesv4.4.0 for compatibility with Python 3.12. - Dropped support for Python versions older than 3.11.5 in order to avoid maintaining both
opensslv1 and v3. - Removed the obsolete
openssl_variantoption. - Removed redundant
embedded_python:versionoption. Useembedded_python-core:version.
- Fixed a packaging error on Linux in case the
bindirectory was not created during build. - Fixed
opensslandzlibversion compatibility by requiring version ranges instead of exact versions.
- Fixed packaging and runtime errors caused by conflicts with an incompatible system Python installation or
pippackages installed in the user's home directory. The embedded Python now always run in isolated mode regardless of command line flags. - Fixed packaging error on Windows when the Conan cache path contains spaces.
- Fixed Python include dirs being added twice (didn't cause any issues, just noise on the command line).
- Fixed
opensslv3 mistakenly being enabled for Python 3.10. While 3.10 has preliminary support foropensslv3, Python 3.11 is the real minimum requirement for full support. - Bumped default
opensslto 1.1.1w for Python < 3.11 and v3.1.2 for Python >= 3.11.
- Added support for building with
opensslv3 for Python 3.10 and newer. opensslv3.0.8 is now the default for Python >= 3.10 andopensslv1.1.1u is the default for Python 3.9.- The
openssl_variantis now obsolete. The flag is still there for backwards compatibility but it no longer does anything. - The
EmbeddedPython_EXECUTABLECMake variable is now defined and points to the executable that's aware of the full embedded Python environment withpippackages.Python_EXECUTABLEpoints to thecoreexecutable that's only aware of the standard library. This split ensures that we compile and link againstcorein order to avoid rebuilding the world when only the Python environment packages change but the version/headers/libs stay the same.
- Recipe build performance and Conan cache usage have been improved further (on top of the improvements in v1.6.0) by optimizing the way licenses are gathered. The recipe now takes advantage of a new feature in
pip-licensev4.2.0 to gather licenses from an external environment. This way, we don't need to re-install packages just to gather licenses, thus cutting both build time and Conan cache usage in half. - Reduced package size for Python >= 3.10 on macOS and Linux by removing the
libpython*.astatic library. This brings these platforms in line with the existing package for Windows. Only shared libraries are included.
- Added tests for Python 3.11 and set minimum supported Python version to 3.9.8.
- Recipe build performance has been improved significantly and Conan cache usage has been reduced:
- In cases where only the
packagesoption changes, the recipe no longer requires CPython to be re-compiled (Linux, macOS) or re-downloaded (Windows) every single time. Instead, we take advantage of the Conan cache: the newembedded_python-corepackage contains all baseline binaries (without anypippackages).embedded_pythonbuilds on top of-coreby adding thepippackages and can reuse any compatible-corepackage from the cache. - The Python packages are now installed directly into the
packagefolder instead of going via thebuildfolder. This speeds up the packaging and reduces space usage since there's no more file duplication. - With Python >= 3.11, the recipe now makes use of the new
./configure --disable-test-modulesoption to avoid building and packaging CPython's internal tests. - On macOS and Linux, the Python standard library is now stored in a
.zipfile to reduce package size (as was already the case on Windows). This is controlled by theembedded_python-core:zip_stdliboption which can have the values ofno,stored, ordelflated.
- In cases where only the
- Updated default recipe options to
pipv23.1.2,setuptoolsv67.8.0, andwheelv0.40.0 to improve compatibility with the latest PyPI packages. - Updated default
pip_licenses_versionto v4.3.2 for compatibility with Python 3.11. - Fixed a bug where deleting the recipe
buildfolder would make the package unusable because thepackagefolder accidentally contained symlinks to files in thebuildfolder. - Fixed a bug on Windows where
pip installwould fail for packages that needed to build a wheel from source (e.ggitrequirements). - Fixed a bug on Windows where
embedded_python_toolswould fail when the source and destination were on different network drives. It will now fall back tofiles.copy()in caseCreateJunction()is not possible.
- Removed the only usage of deprecated attribute
deps_cpp_infoofConanfilefromembedded_python_tools.py.
- Fixed a bug where the python version would be incorrectly cached between builds as the conan
sourcemethod is only called once.
- Added a list of all installed packages to
licenses/packages.txt. - Fixed executable's hardcoded search path for
libpythonon macOS.
- Fixed bug where embedded_python will only use local
zlibinstead of thetool_requiresone.
- Fixed symlink re-creation, in case already existing symlink was invalid
- Updated to conan v2 methods
- Fixed license collection failing with some packages on Windows (bumped default
pip-licensesto v3.5.4 with the bug fix) - Updated default recipe options to
pipv22.1.2,setuptoolsv63.2.0, andwheelv0.37.1 to improve compatibility with the latest PyPI packages
- Fixed build with Python >= 3.9.11 and >= 3.10.3 on Windows (the installer changed)
- Fixed configuration with the Conan
cmake_find_packagegenerator - Fixed Conan's
.run(..., run_environment=True)not setting binary/library paths
- Worked around a CPython issue that prevented compilation of Python < 3.9.8 with clang 13: https://bugs.python.org/issue45405
- The recipe no longer depends on
compiler.cppstdandcompiler.libcxxso C++ settings changes will not cause a package rebuild
- Fixed missing
zlibmodule on some Linux systems (addedzlibto the list of build requirements)
- The versions of
setuptoolsandwheelused to build the embedded environment are now user-configurable via thesetuptools_versionandwheel_versionrecipe options
- The versions of
pipandpip-licensesused to build the embedded environment are now user-configurable via thepip_versionandpip_licenses_versionrecipe options. If not given, they default topip==21.2.4andpip-licenses==3.5.3. - Fixed issue with
pip-licensesbeing incompatible with the newestpipversion - Fixed
libffisegfault on macOS: use CPython built-inlibffiinstead of the Conan version
- Fixed portability issues on Linux: use more dependencies from Conan instead of the host system
- Fixed missing
lzmamodule on some Linux systems (addedxz_utilsto the list of build requirements)
- Fixed
packagesoption breaking if comments are present in therequirements.txtfile
- Fixed very slow
find_package(Python)on Windows
- Added support for Linux and macOS with a couple of caveats to be resolved later:
- The standard library is not pre-compiled and zipped so it takes up more space than the Windows variant
- The environment is not as locked down as the Windows variant:
pipis still accessible in the final package
- The
packagesoption now accepts the full contents of arequirements.txtfile. Previously, the contents needed to be converted into a space-separated list (.replace("\n", " ")) and stripped of comments and markers. - CMake will now automatically call
find_package(Python)and ensure that the embedded distribution is found instead of a system-installed Python. Previously, consumer projects needed to do this manually.
- Fixed data and scripts not being installed with certain packages (e.g.
nbconvert>=6.0) - Updated the embedded
setuptoolsto v53.0.0
- It's now possible to package any version of the embedded Python, independent of the version on the host system.
- Updated to
pip-licensesv2.2.0:--with-license-filenow finds British-styleLICENCEfiles.
- Python's
LICENSE.txtis now placed into thelicensesdirectory. - The licenses of all installed packages are now gathered using
pip-licensesand written tolicenses/package_licenses.txt.
Initial release