An integrated package configuration, build and deployment system for software
This is a small patch release to introduce a couple small fixes related to filesystem links, and an issue affecting weak references which was introduced in 3.1.0. Some documentation updates and configuration consistency details are also included.
Thank you to everybody that contributed to this release!
This is a small release that adds two new features to the installer (install.py
) and fixes two bugs. We also got a lot of contributions to remove some of the Python 2 leftovers in the code base. Lastly, we have a new documentation page dedicated to releasing packages, and some sections of the documentation were improved/clarified.
Thank you to everybody that contributed to this release!
virtualenv
in the installer #1645 (@Pixel-Minions)-e/--editable
flag to the installer to create an editable install #1672 (@JeanChristopheMorinPerso)rez-env --command
flag help #1682 (@BryceGattis)__future__
imports #1640 (@vergeev)rez.vendor.enum
with the built-in enum module #1649 (@predat)rez.backport
#1634 (@BryceGattis)rez.utils.json
#1673 (@BryceGattis)rez.utils.py23
and cleanup more python 2.7 leftovers #1678 (@wandth)This release marks a big turning point for rez by completely dropping support for Python 2. In 2.114.0, it was still possible to install rez with Python 2 using pip. This functionality has now been removed. As of now, rez will support Python 3.7+. As of now, we test against 3.7, 3.8, 3.9, 3.10 and 3.11.
This was a tough decision to make considering that we still have users relying on Python 2, but it was becoming more and more complicated and time-consuming to maintain support for Python 2.
Thank you to everyone who's put a lot of effort into supporting Python 2 for that long. Without you, it wouldn't have been possible.
As part of the effort to remove support for Python 2, we also refreshed our CI a bit:
PATHEXT
to be set. Big thanks to @Dennis-Lehmann
and @MrLixm for helping us with debugging our Window tests!The CI refresh is not user-facing, but it took us a significant amount of effort and time to do and we hope that it will help increase the quality of rez and make for a better contributor experience. This is why we mention these in the release notes.
execution_policy
setting in the shell's config file. This should hopefully help to
smooth the transition from the cmd shell to powershell/pwsh. #1505 (@herronelou)bind_module_path
. #1557 (@Pantsworth)--fail-graph
is used and there are indirect cycles. #1620 (@Pantsworth)As communicated in the 2.114.0 release notes, we've followed through on the removal of certain things.
Python 2: It is now impossible to install and use rez with Python 2.
Modules
rez.vendor.version
: Use rez.version
instead.rez.build_process_
: Use rez.build_process
instead.rez.package_maker__
: Use rez.package_maker
instead.rez.package_resources_
: Use rez.package_resources
instead.rez.packages_
: Use rez.packages
instead.Configuration settings
rxt_as_yaml
: No replacement.warn_commands2
: No replacement. This was a no-op.error_commands2
: No replacement. This was a no-op.rez_1_cmake_variables
: You can use the REZ_BUILD_TYPE
CMake variable instead of CENTRAL
.CLI
--pip-version
is removed.--sort
is removed.API
isolate
keyword argument of the rez.rex.RexExecutor.execute_code
method is now officially removed.
Instead of executor.execute_code(..., isolate=True)
, use
with executor.reset_globals():
executor.execute_code(...)
Build system:
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
and _ECLIPSE_VERSION
were removed from the list of default variables passed to CMake. #1623 (@JeanChristopheMorinPerso)rezbuild.py
is detected. #1624 (@JeanChristopheMorinPerso)Change of default values as announced in 2.114.0:
rez_1_environment_variables
: Now disabled by default.disable_rez_1_compatibility
: Now enabled by default.New unannounced changes:
default_shell
to a different value. The previous default was cmd
and was causing a lot of problems.The effort to improve and add content to our docs continues.
Merged pull requests:
This is mainly a maintenance release. It will probably the last release in the 2.x series. We might issue a 2.115.0, but this isn't guaranteed.
Rez installations now only support Python 3.7+. It is important to note that the API can still be used with Python 2.7+ but this will be dropped in 3.0.0.
New environment variable REZ_LOG_DEPRECATION_WARNINGS
that will force
all deprecation warnings to be printed, ignoring PYTHONWARNINGS
and custom
warning filters. Note that enabling this will forcefully load every
configuration file instead of loading them lazilly.
This PR adds a new config variable called error_on_missing_variant_requires
that controls what happens when
a variant lists missing packages in its requirements.
By default, it is True and will continue the existing behaviour of erroring when it encounters a variant with missing packages in its list of requirements. This means that if the first variant encounters a missing package in its request, it will not continue even if the second variant can resolve.
If it is disabled, it will print to stderr, treat the current phase as failed and continue on to the next phase. If all variants fail, it will be the same as if no variants could resolve.
We decided to deprecated some things that have been "deprecated" for a while but were never officially marked as deprecated. We have prepared a guide to help you navigate these deprecations.
What follows is everything that is marked as deprecated with information on when removal will happen or when defaults will change.
rez.vendor.version
. Use rez.version
instead. Will be removed in 3.0.0.rez.packages_maker__
. Use rez.packages_maker
instead. Will be removed in 3.0.0.rez.package_resources_
. Use rez.package_resources
instead. Will be removed in 3.0.0.rez.packages_
. Use rez.packages
instead. Will be removed in 3.0.0.--pip-version
argument is deprecated. Will be removed in 3.0.0.--sort
argument is deprecated and has been a no-op for a while now. Will be removed in 3.0.0.isolate
keyword argument of the rez.rex.RexExecutor.execute_code
method is now officially deprecated and will be removed in 3.0.0.
Instead of executor.execute_code(..., isolate=True)
, use
with executor.reset_globals():
executor.execute_code(...)
Some default values have changed:
Some default values will change in 3.0.0:
Notes
Numerous maintenance updates to CI, TSC notes, docs, ownership, badges, and licensing not featured below.
Expect #1469 to merge in 2.114.0, which will drop the ability to install rez with versions of python below 3.7.
Merged pull requests:
Notes
First Official AcademySoftwareFoundation rez release!
Merged pull requests: