This release introduces a long awaited and requested feature: the ability to synchronously cache
package payloads. This behaviour can be controlled centrally using the new package_cache_async
setting in your rezconfig files. The default value is True, which means that as before, caches
will be synced asynchrously. rez-env
also gained a new --pkg-cache-mode
to control the
caching behaviour on a per case basis.
Other note worthy additions are the new testing
object that can be used to test if rez-test
is currently running from withing commands functions and early bound functions. Additionally, a new setting default_build_process
was added to set the default build process to be used by rez-build.
Thanks to everybody who contributed and made all these features, bugfixes and improvements possible!
- Add ability to cache package payloads synchronously #1679 #1853 (isohedronpipeline, Pixel-Minions)
- Add new
default_build_process
setting to set the default build process #1724 (predat) - Add new
testing
object to check if rez-test is running #1740 (fabal, nca45) - Convert Windows registry queries to use
winreg
module. Expect some speed improvements on Windows #1780 (nrusch)
- Fix shell detection code to handle a case where the parent PID is zero #1735 (JeanChristopheMorinPerso)
- Don't expand tilde in
REZ_USED_IMPLICIT_PACKAGES
andREZ_USED_REQUEST
environment variables #1760 (cfxegbert) - Fix incorrect string operations on bytes output of 'ps' subprocess in shell detecton code #1765 (parikshittiwari740)
- Fix missing path in GitBash warning message #1775 (brycegbrazen)
- Make Powershell aliases exit with correct exit code #1778 (brycegbrazen)
- Fix TypeError when running get_rpaths in
rez.utils.elf
module #1798 (ruzette) - Fix
package_cache_async
missing fromResolvedContext
dict round-trip #1810 (nrusch) - Move winreg import to local import to avoid import errors on non-windows systems #1846 (JeanChristopheMorinPerso)
- Fix rez-test commands defined as list that result in an empty command #1850 (JeanChristopheMorinPerso)
- Adjust python requirement of rez bound package to
python-3.7+<3.12"
#1848 (JeanChristopheMorinPerso)
- Add adopters list #1720 (maxnbk)
- Various updates to contributing.md for support, legal, versioning #1721 (maxnbk)
- Various updates to release.md for release cadence and versioning used #1722 (maxnbk)
- Add package orderers documentation #1737 (BryceGattis)
- Fix formatting sonarcloud compliance issue #1697 (BryceGattis)
- Add argcomplete vendored version to vendor README.md #1742 (BryceGattis)
- Add date to vendored pika #1743 (BryceGattis)
- Migrate plugin type settings to plugin rez configs #1746 (BryceGattis)
- Remove Python 2 vendored pyyaml library #1845 (maxnbk)
- The
rez.package_cache.PackageCache.add_variants_async
method. Use theadd_variants
method instead.
- Add symlink locking for filesystems that do not support hardlinks #1708 (cfxegbert)
- Fix error caused by weakly referenced package not specifying version ▒ #1712 (loonghao)
- Add plugin documentation page #1703 (BryceGattis)
- Make gh-rez external link dynamic #1707 (BryceGattis)
- Convert all plugin rezconfig to rezconfig.py #1692 (brycegbrazen)
- Add support for
virtualenv
in the installer #1645 (@Pixel-Minions) - Add
-e/--editable
flag to the installer to create an editable install #1672 (@JeanChristopheMorinPerso)
- Add retry mechanism when renaming folders on Windows #1666 (@loonghao)
- Apply package orderers on variants #1684 (@isohedronpipeline and @pmolodo)
- Remove the note about Python 2.7 compatibility from the docs #1644 (@vergeev)
- Add clear information on how to contact maintainers #1659 (@JeanChristopheMorinPerso)
- Installation instructions now include how to download rez #1660 (@JeanChristopheMorinPerso)
- Add development environment docs to CONTRIBUTING.md #1633 (@BryceGattis)
- Improve clarity and expliciteness of
rez-env --command
flag help #1682 (@BryceGattis) - Add releasing packages documentation #1689 (@BryceGattis)
- Improve clarify of early binding functions documentation #1677 (@BryceGattis)
- Remove Python2-related
__future__
imports #1640 (@vergeev) - Replace usages of
rez.vendor.enum
with the built-in enum module #1649 (@predat) - Remove
rez.backport
#1634 (@BryceGattis) - Remove
rez.utils.json
#1673 (@BryceGattis) - Remove
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:
- The GitHub Action workflows are now simplified and unified. We now have one workflow to run all tests for all platforms instead of four.
- We also got rid of the Windows containers. With these changes, our Windows tests are now as fast as Linux and macOS tests, it's easier to see test results and we can also more easily test all support python versions.
- Running the tests directly on the GH hosted runners instead of containers,
we discovered some big flaws in how our tests were set up. These issues are now
fixed and our tests are now much more portable and don't rely on a centrally installed
Python or
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.
- It is now possible to configure the execution policy used when starting PowerShell (and pwsh) shells
by setting the
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) - Built-in bind modules can now be overridden by adding your custom implementations to
bind_module_path
. #1557 (@Pantsworth)
- Fix infinite loop in the dot graph generation when
--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
: Userez.version
instead.rez.build_process_
: Userez.build_process
instead.rez.package_maker__
: Userez.package_maker
instead.rez.package_resources_
: Userez.package_resources
instead.rez.packages_
: Userez.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 theREZ_BUILD_TYPE
CMake variable instead ofCENTRAL
.
-
CLI
- rez-pip: The
--pip-version
is removed. - rez-search: The
--sort
is removed.
- rez-pip: The
-
API
- The
isolate
keyword argument of therez.rex.RexExecutor.execute_code
method is now officially removed. Instead ofexecutor.execute_code(..., isolate=True)
, usewith executor.reset_globals(): executor.execute_code(...)
- The
-
Build system:
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT
and_ECLIPSE_VERSION
were removed from the list of default variables passed to CMake. #1623 (@JeanChristopheMorinPerso)- rez will no longer print a custom error message if no build system is detected or set and an old "bez"
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:
- The default shell on Windows is now PowerShell unless you configure
default_shell
to a different value. The previous default wascmd
and was causing a lot of problems.
The effort to improve and add content to our docs continues.
- New documentation dedicated to caching. This is only the beginning and only contains information on package payload caching and memcached. We hope to add more content in the future. #1615 (@brycegbrazen)
- The note about SemVer in the docs has been clarified. While we encourage SemVer like versioning, rez doesn't know what SemVer is. This has been a source of confusion in the past. #1614 (@brycegbrazen)
Merged pull requests:
- Fix exception when deprecated settings appear in a user config #1595 (JeanChristopheMorinPerso)
- Add cross reference for package_cache_during_build in docs #1598 (brycegbrazen)
Probably the last release before 3.0.0
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, ignoringPYTHONWARNINGS
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.
- Configuration settings:
- disable_rez_1_compatibility: Will be removed in a yet to be determined future release.
- debug_old_commands: Will be removed in 3.0.0. This setting is currently a no-op.
- warn_old_commands: Will be removed in a yet to be determined future release.
- error_old_commands: Will be removed in a yet to be determined future release.
- warn_commands2: Will be removed in 3.0.0. This setting is currently a no-op.
- error_commands2: Will be removed in 3.0.0. This setting is currently a no-op.
- rez_1_cmake_variables: Will be removed in 3.0.0.
- rez_1_environment_variables: Will be removed in a yet to be determined future release.
- rxt_as_yaml: Will be removed in 3.0.0.
- Modules:
rez.vendor.version
. Userez.version
instead. Will be removed in 3.0.0.rez.packages_maker__
. Userez.packages_maker
instead. Will be removed in 3.0.0.rez.package_resources_
. Userez.package_resources
instead. Will be removed in 3.0.0.rez.packages_
. Userez.packages
instead. Will be removed in 3.0.0.
- CLI:
- rez-pip: The
--pip-version
argument is deprecated. Will be removed in 3.0.0. - rez-search: The
--sort
argument is deprecated and has been a no-op for a while now. Will be removed in 3.0.0.
- rez-pip: The
- API:
- The
isolate
keyword argument of therez.rex.RexExecutor.execute_code
method is now officially deprecated and will be removed in 3.0.0. Instead ofexecutor.execute_code(..., isolate=True)
, usewith executor.reset_globals(): executor.execute_code(...)
- The
- Python: rez 3.0.0 will completely drop support for installing and using the rez API with Python 2.
Some default values have changed:
- rez_1_cmake_variables is now disabled by default.
Some default values will change in 3.0.0:
- disable_rez_1_compatibility will become enabled by default.
- rez_1_environment_variables will become disabled by default.
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:
- powershell: fix prepend for new variables and fix unsetenv for non-existing variables #1477 (maxnbk)
- @include: Only include modules from the current package #1485 (SitiSchu)
- Colorize: Granularly wrap each given stream with Colorama #1506 (herronelou)
- Fix 'gbk' codec can't encode character '\u200b' when resolve context #1508 (loonghao)
- Allow user to pass extra arguments to underlying rez test command (REP-001 part 3). #1523 (bhawkyard1)
- Filter out empty extensions when parsing PATHEXT on Windows #1528 (herronelou)
Notes
First Official AcademySoftwareFoundation rez release!
Merged pull requests:
- Fix 1255-possible-regression-appendenv-in-powershell-fails-if-env-variable-does-not-exist-already #1285 (instinct-vfx)
- fix: add platform/arch to variant for rez-pip packages with entry point scripts #1287 (bpabel)
- working with embedded python scanning rezplugins #1359 (loonghao)
- Replace nerdvegas with aswf #1368 (maxnbk)
- fix asserts causing flake8 linter failures #1369 (maxnbk)
- Edit rezconfig docstrings for package_filter to reflect python form rather than YAML #1377 (herronelou)
- Add REZ_USED_LOCAL_RESOLVE context environment variable #1378 (JoshkVFX)
- Document .ignore pkg repo functionality #1385 (jasoncscott)
- Clarify when the commands block is executed during rez-build #1391 (jasoncscott)
Merged pull requests:
Closed issues:
- benchmarking CI fails to push changes, does not error #1328
Merged pull requests:
- ResolvedContext.get_resolved_package() should return None for failure #1325 (alexey-pelykh)
- fix accidental skip of fail in benchmarking ci #1336 (nerdvegas)
Merged pull requests:
Closed issues:
- Fix regression in benchmark CI #1323
Merged pull requests:
- Fix rez executables aren't removed in windows install #1259 (instinct-vfx)
- use github actions bot user in benchmark workflow #1319 (nerdvegas)
Closed issues:
Merged pull requests:
Merged pull requests:
Closed issues:
- add git-bash shell plugin #1256
Notes
This release adds path normalization to shells. Usually we use POSIX-style paths in
package commands (eg env.PATH.append('{root}/bin')
. In previous rez versions,
this path was left unchanged, leading to odd paths on Windows like
C:\svr\packages\foo\1.2.3/bin
. This hasn't been a problem however, since Windows is
tolerant of a mix of forward and back slashes. Now though, you should see paths on
Windows set correctly, ie C:\svr\packages\foo\1.2.3\bin
.
Please be aware of this change in behavior in case it affects you.
Merged pull requests:
Closed issues:
- formalize paths in package commands #1269
Merged pull requests:
Closed issues:
- improve shell parameterization in tests #1271
Merged pull requests:
Closed issues:
- add ability to delete package family #1248
Merged pull requests:
Closed issues:
- rez-test breaks with packages that do not have a timestamp attribute #1237
Merged pull requests:
Closed issues:
- rez_install_files with LOCAL_SYMLINK fails when an input file has whitespaces in its name #553
Merged pull requests:
- Implement #1196 #1199 (instinct-vfx)
Closed issues:
- Switch
get_syspaths
fromREG
toGet-ItemProperty
in Powershell shell plugins #1196
Merged pull requests:
- Re-enable py3 workflow in windows.yaml #1232 (instinct-vfx)
- fix: address zsh install message displaying wrong completion script #1235 (maxnbk)
- Explicit fail when python executable is not found #1236 (aboellinger)
Closed issues:
- Typo on install message #1186
Merged pull requests:
Closed issues:
- fix wiki regression in v2.104.6 #1219
Merged pull requests:
Closed issues:
- add workflow to enforce copyright #1214
Merged pull requests:
Closed issues:
- replace copyrights with SPDX form #1201
Merged pull requests:
Merged pull requests:
Closed issues:
- fix nuked wiki #1210
Merged pull requests:
Closed issues:
- remove GPL3 code from update-wiki.py #1206
Merged pull requests:
Closed issues:
- Aliases broken on windows when using powershell #1191
Merged pull requests:
Closed issues:
- windows gh actions issue #1181
Merged pull requests:
Closed issues:
- Whichcraft not caring about executable symlinks on windows that do not have the extension of an executable #1178
Merged pull requests:
Merged pull requests:
- Uses Set-Item rather than $Env: to configure powershell environment variables. #1176 (hutchinson)
Closed issues:
- Environment variables containing brackets break powershell shell #1175
Merged pull requests:
Closed issues:
- Build passes when build_command fails while using powershell as default_shell on windows #1099
Merged pull requests:
Closed issues:
- AttributeError: 'NoneType' object has no attribute 'conflicts_with' when rez-env a package #1150
Merged pull requests:
Closed issues:
- rez-pip error with inconsistency between underscores and dashes #1159
Merged pull requests:
Closed issues:
- Incompatibility with Python 3.10 #1168
Merged pull requests:
Merged pull requests:
Closed issues:
- fix 4 sonarcloud-flagged bugs #1166
Merged pull requests:
Closed issues:
- (sonarcloud) vulnerability #1164
Notes
IMPORTANT - This release changes the license from LGPL-3.0 to Apache-2.0. More: https://www.apache.org/licenses/LICENSE-2.0
Merged pull requests:
Closed issues:
- Rez License Change: LGPLv3 to Apache2.0 #1119
Merged pull requests:
Closed issues:
Added unmodified whichcraft vendored lib. See:
Merged pull requests:
Merged pull requests:
- Fix pika connector #1145 (davidlatwe)
- Issue 1148 pika conn name #1149 (nerdvegas)
Closed issues:
Merged pull requests:
- Improve rex env binding #1138 (davidlatwe)
Merged pull requests:
Merged pull requests:
Closed issues:
- (double-dash) removes double quotes on Windows #1133
Merged pull requests:
- powershell quoted command fix #1130 (nerdvegas)
- CLI: display detailed version info with --version #1134 (davidlatwe)
Closed issues:
- Rez pip fails to execute in Windows after 2.94.0 #1120
Merged pull requests:
- Better shell specific testing #1136 (davidlatwe)
Closed issues:
- rez-env output test is not testing on specified shell #1135
Merged pull requests:
- Fix fileno() error in Maya2022 #1124 (yanshil)
- copy dist-info to python subdur in rez-pip #1128 (nerdvegas)
Closed issues:
- rez-pip installs dist-info dir to root, causes probs with some pkgs #892
Merged pull requests:
Closed issues:
- bug in command quoting #1114
Merged pull requests:
Closed issues:
- failed tests in pytest-enabled rez-selftest are not getting picked up #1117
Merged pull requests:
- Prevent alias (windows function) to store all arguments in one string instead of an array of strings #1101 (aguiot)
Merged pull requests:
- handling archived lib when scanning rezplugins (fix #1108) #1109 (davidlatwe)
Closed issues:
- PluginManager.rezplugins_module_paths breaks with zipped Python #1108
Merged pull requests:
Merged pull requests:
- PR: Ensure that "ViewGraphButton" menu instance is not garbage collected. #1103 (KelSolaar)
- Remove the -s flag to rez-pip because "pip search" is decommissioned #1105 (JeanChristopheMorinPerso)
Closed issues:
- Deprecate rez-pip -s flag because pip-search is disabled and will likely not return #1104
Merged pull requests:
Closed issues:
- config selftest can fail #1097
Merged pull requests:
Closed issues:
- regression: rez-test Could not resolve to variant #1095
Merged pull requests:
Merged pull requests:
Merged pull requests:
- Extension plugins #1040 (davidlatwe)
Merged pull requests:
Closed issues:
- rez-rm --ignored-since faulty in combo with memcached enabled #1089
Merged pull requests:
- Improve context resolve failure info #1083 (davidlatwe)
Merged pull requests:
- Fix conflict fail graph #865 #1087 (davidlatwe)
Closed issues:
- fail-graph not showing true root of the conflict #865
Merged pull requests:
Closed issues:
- include could not find load file: RezBuild error on Windows #974
Merged pull requests:
Merged pull requests:
Closed issues:
- windows package cache root switch does only work with "{root}" not this.root #1065
Notes
This is currently implemented for linux only.
Closed issues:
- fix linking within bundles #1072
Merged pull requests:
Closed issues:
- add post-context rex file in bundles #1071
Merged pull requests:
- Fix pkg cache test #1046 (davidlatwe)
Merged pull requests:
Merged pull requests:
- Let rez-selftest try using pytest #1051 (davidlatwe)
Notes
New tool: rez-rm
.
Merged pull requests:
Closed issues:
- add package removal #1062
Notes
New tool: rez-mv
.
Merged pull requests:
Closed issues:
- add pkg move feature #1059
Notes
New tool: rez-pkg-ignore
.
Merged pull requests:
Closed issues:
- make package ignore a formal api/tool #1052
Closed issues:
- install related regression in v2.80.0 #1057
Notes
CMake no longer uses the -d
arg to specify the directory in which to find CMakeLists.txt. This appears
to be incompatible with newer cmake versions, but (happily) dropping it in older versions also appears
compatible.
Merged pull requests:
Closed issues:
Merged pull requests:
Merged pull requests:
- Fix rez-python arg disordered #1041 (davidlatwe)
Merged pull requests:
Closed issues:
- An exception is raised when combining filters with
-
and without-
. #1037
Merged pull requests:
- add optionvars #1036 (davidlatwe)
Merged pull requests:
Merged pull requests:
Closed issues:
- automatically run benchmarking #1044
Merged pull requests:
- Fix missing files in sdist #1042 (davidlatwe)
Merged pull requests:
Merged pull requests:
- add EphemeralsBinding.get_range #1030 (davidlatwe)
Merged pull requests:
- fix rez_bin_path on windows #1031 (nerdvegas)
- Fix rez.vendor.distlib for Windows #1035 (davidlatwe)
Closed issues:
- Issues with system.System.is_production_rez_install method on Windows. #1005
Notes
- Workflow added to perform pypi publish on release
- Wiki workflow updated to publish only on release
- Note that version skip (2.73.0 -> 2.75.0) due to workflow testing on github
Merged pull requests:
Closed issues:
- Pypi entries are out of date #1032
Merged pull requests:
Closed issues:
- bundled contexts ("bundles") #1009
Merged pull requests:
- Improve get_variant_from_uri on Windows #1011 (davidlatwe)
Merged pull requests:
- Wait subprocess cleanup #1010 (davidlatwe)
Merged pull requests:
Closed issues:
- Tab completion broken for rez deployments installed with Python-3.6 #1020
Merged pull requests:
- Fix install-as-rez-package script for Windows #1014 (davidlatwe)
Merged pull requests:
- Fix dir/file remove error handling #1012 (davidlatwe)
- Fixes bug where readlink is applied on regular files. #1019 (bfloch)
Notes
This release uses python-3's native venv
module to perform the rez installation, for python-3.7 and above.
For earlier python versions, an embedded copy of virtualenv was used, but this ceases to work correctly in
python-3.9.
Merged pull requests:
Closed issues:
- Installation With Python >=3.9 Fails ('HTMLParser' object has no attribute 'unescape') #980
- have install.py use venv in python3 #982
Notes
Ephemeral packages are a major new feature. These enable dependencies on abstract objects or machine capabilities (for example), and also act as a way to pass 'options' to packages that can alter their behaviour. These will also form the basis for package features, an upcoming feature that will allow packages to depend on features of other packages, rather than just their version number.
Merged pull requests:
Merged pull requests:
Merged pull requests:
Closed issues:
- 'rez build --install --prefix' error #858
Merged pull requests:
- Fix no CLI args passed into forward script on Windows #990 (davidlatwe)
Merged pull requests:
Merged pull requests:
Backwards Compatibility Issues
This release removes the bez build system. This was a very simple build system that does nothing more
than call a function in rezbuild.py
, passing it some build attributes (such as installation path). It has
been removed because you can achieve the same thing using a custom build command, and you can retrieve the
build attributes from environment variables instead.
If you attempt to build a package that was previously using bez (ie, the rezbuild.py
script is still there,
and build_command
is not specified in your package.py) then the resulting error message shows you what you
need to do to port your existing build script.
Merged pull requests:
Merged pull requests:
Closed issues:
- wiki workflow broken #994
Merged pull requests:
Closed issues:
- rez overwrites root logger #977
Merged pull requests:
- Try telling who is/are requesting missing package #976 (davidlatwe)
Merged pull requests:
- Fix pip.py get purelib error. #973 (zclongpop123)
Merged pull requests:
- handling QFileDialog.getSaveFileName return type #963 (sparklabor)
Closed issues:
- QFileDialog.getSaveFileName and getOpenFileName return tuple not str #962
Merged pull requests:
- 965| Fix io.UnsupportedOperation #966 (spsalefeve)
Closed issues:
- io.UnsupportedOperation when using rez api with pytest #965
Merged pull requests:
- Update vendored pydot (1.4.2.dev0) #970 (davidlatwe)
Merged pull requests:
- Fix forwarding script on Windows (suite supporting) #968 (davidlatwe)
Merged pull requests:
- Handling build/install directory remove error in build process #959 (davidlatwe)
Merged pull requests:
- Support rez-env -c or -- (Windows CMD shell) #948 (davidlatwe)
Closed issues:
- Alias can't be used on the same line as rez-env #708
Merged pull requests:
-
Fix unicode vcs changelog encode err #956 (davidlatwe)
-
Fix repo location false mismatch #957 (davidlatwe)
Backwards Compatibility Issues
Note that this release changes OS detection on linux. The results should be the same, but if they do differ, and you need to retain the same OS name (which you probably will, because you'll have packages that depend on the analogous implicit package), then you can use the platform_map setting.
Merged pull requests:
Closed issues:
- rez platform_ broken with python3.8 #883
Merged pull requests:
Closed issues:
- this.root is None in package preprocessor #952
Merged pull requests:
Closed issues:
- don't raise on missing package cache dir #941
Merged pull requests:
- Fix #934, no hash string in include script file name #935 (davidlatwe)
- Raise unversioned error when config not allowed #938 (davidlatwe)
Closed issues:
- Installed package not including latest module #934
Merged pull requests:
Notes
This release cleans up the wiki-based doc generation code, and adds a github workflow to automatically update the wiki.
Merged pull requests:
Merged pull requests:
- added DelayLoad config primitive #922 (nerdvegas)
- Sort keys in resolved context JSON #923 (dbr)
- Respect sys path order when spawning shell on Windows #926 (davidlatwe)
- Fix #927, add encoding=utf-8 on file write #928 (davidlatwe)
Closed issues:
- add 'delay_load' config primitive #921
- New spawned shell's
PATH
is random ordered on Windows #925 - Packages that contains Unicode character failed on install/release #927
Merged pull requests:
- don't attempt to update pkg cache on failed resolve #916 (nerdvegas)
- fix pkg cache fail on windows, py<=2.7 #917 (nerdvegas)
- raise metadata error on bad pkg, rather than build-system-notfound #918 (nerdvegas)
- default to disable package caching during build #920 (nerdvegas)
Closed issues:
- rez-packaage-cache issue on conflicting context #905
- Package caching does not work on windows due to device not being implemented in py2 on Windows #912
- Miss-leaded error message while building with invalid package metadata #915
- add ability to disable pkg caching during build #919
Merged pull requests:
- Allow configuration of filesystem lock mechanism #903 (dbr)
- make context tracking tolerant of errors #911 (nerdvegas)
Closed issues:
- SSL crash related to context tracking #910
Merged pull requests:
Closed issues:
- occasional missing rez cli in rez-env #901
Notes
Package caching feature added, see here.
Merged pull requests:
Merged pull requests:
- fix bug in py3 (hash of unicode) #888 (nerdvegas)
- fix context serilisation wrt append_sys_path #890 (nerdvegas)
Closed issues:
- context sourcing broken (ResolvedContext.append_sys_path not serialised) #889
Backwards Compatibility Issues
Please note that #887 introduces a subtle change to CLI behaviour. Previously, rez-context --resolve
would print a space-separated list of packages, even when piped to another process. Now however, if
the output is piped, it will print one package per line. This is an improvement, as it means you can
more easily chain rez-context
with other utilities such as grep, xargs etc.
Merged pull requests:
Merged pull requests:
Closed issues:
- rez-context -g with prune-package fails #884
Merged pull requests:
Closed issues:
- rez-pip issues finding pip executable #826
Merged pull requests:
Closed issues:
- AttributeError: 'Namespace' object has no attribute 'func' #879
Merged pull requests:
- Expose package orderers in rez config #868 (rlessardrodeofx)
Closed issues:
- add configurability of package orderers #329
Merged pull requests:
- Added distribution author and help information #873 (ColinKennedy)
Closed issues:
- rez-pip - Add help / authors attributes #838
Merged pull requests:
Closed issues:
- override git plugin config in package.py #871
Merged pull requests:
Merged pull requests:
Closed issues:
- rez-pip - no case for ../../include/... file #861
Merged pull requests:
Closed issues:
Merged pull requests:
- Install as package part2 #845 (nerdvegas)
- Allow absolute path for build directory #853 (joehigham-bss)
- [rez-pip] Fix for ptvsd install #855 (j0yu)
Closed issues:
- "rez-pip -i ptvsd" produces bad package #821
Notes
Misc Python-3 related issues.
Merged pull requests:
- PR: Fix "StringIO" imports and accesses. #850 (KelSolaar)
- PR: Use "QtCompat" to handle "QHeaderView" incompatibilities and fix broken "resolve" button in "rez-gui". #851 (KelSolaar)
Closed issues:
- "ImportError" exception raised while using "rez-gui" in Python 3. #848
- "AttributeError" exception raised when using "rez-gui" Package Browser with Pyside2 . #849
Merged pull requests:
- [Feature] Add rez-pip extra args passthrough #827 (lambdaclan)
Closed issues:
- rez-pip creates .pyc files by default #816
Merged pull requests:
Merged pull requests:
Closed issues:
- add env-var to record shell init time #833
Notes
Adds a new pre_build_commands package.py attribute, for adding runtime build configuration.
Merged pull requests:
Notes
This release goes a large way to implementing REP-001
Includes:
- Pre-install/release running of package tests;
- New rez-test
--inplace
option; - Correct iteration of tests over variants (variant iteration did not previously exist)
Still to do:
- rez-test
--interactive
option; - rez-test 'development' mode.
Merged pull requests:
Merged pull requests:
- removed odd case of _Bound instantiation with Version #815 (nerdvegas)
- memcached incompatibility fix #818 (nerdvegas)
- Bug/819 enable colorization on windows #820 (instinct-vfx)
Closed issues:
- potential memcached client incompatibility #817
- Remove hard prevention of colorization on windows #819
Merged pull requests:
- Migrate rezgui.qt imports to Qt.py #804 (douglaslassance)
Merged pull requests:
Closed issues:
- cmd handles empty echo incorrectly #792
Merged pull requests:
- rez.pip: Support python 2 executable on Windows (796) #798 (JeanChristopheMorinPerso)
- Feature/add 'prefix' argument to rez-pip #802 (predat)
Closed issues:
- find_pip_from_context failing on Windows platform #796
Notes
Several Windows CI improvements:
- Base and Py docker images are only rebuilt if necessary;
- Docker hub no longer requires a login to pull the image (meaning that tests now pass on forked PRs);
- Rather than checking out the rez github repo in the image entrypoint, the existing checkout (done by the workflow) is bind mounted instead.
With these updates, tests are now passing on all platforms.
Known Issues
If the image is changed, there is a delay in the new image becoming available on docker hub (5-10 mins). If a separate push is made in this time, it can fail, as the Windows test expects to see the new image (which is tagged by commit).
Merged pull requests:
- Windows docker enhancements #794 (bfloch)
- Remove the login so that PR work at least for the non-image workflows. #795 (bfloch)
- Issue 800 windows ci use checkout #801 (nerdvegas)
Closed issues:
- windows ci: Use Actions checkout #800
Notes
This release just makes some minor changes related to the CI tests. As well as the changes in the PR shown below, the following changes were also made:
- 'Windows Docker' workflow was renamed 'Windows'
- MacOS version used in workflow was changed from 10.14 to 'latest', as per Github's instructions (which were emailed to me).
Merged pull requests:
Closed issues:
- Fix README actions badges not showing current master status #785
Notes
This release adds a docker-based workflow for the Github Actions Windows test. This was done specifically
because Github's available Windows runtimes come with an already long %PATH%. Rez adds to PATH and hits
a limit, causing the cmd
shell to fail in several tests.
Merged pull requests:
Merged pull requests:
Merged pull requests:
- Replace Popen with check_output to catch errors in installation #778 (instinct-vfx)
- Popen UnicodeDecodeError partial fix #779 (willjp)
- Unwanted debug printing #780 (predat)
Closed issues:
- rez-release UnicodeDecodeError (windows) #776
- Errors in pip installation part go unnoticed by rez install.py #777
Merged pull requests:
Closed issues:
- rez-depends -- AttributeError: type object 'Bar' has no attribute 'del' (win, py-3, rez-2.47.7) #769
Merged pull requests:
- Issue 763 prompt leak #767 (nerdvegas)
- Fixes cmd due to oversight in 9c8334a106de900964e52f1ed8ee4155acdfe142 #770 (bfloch)
- Skip
test_build_cmake
on Windows. #772 (bfloch)
Closed issues:
- cross-shell prompt leakage can cause error #763
Notes
- Rez-pip: Add a new logic to find which pip will be used to install pip packages.
- Rez-pip: New deprecation warning when --pip-version is used.
- See https://github.com/AcademySoftwareFoundation/rez/wiki/Pip for more details on rez-pip.
Merged pull requests:
- rez-pip: Assume pip provided by python package #757 (JeanChristopheMorinPerso)
Closed issues:
Merged pull requests:
Closed issues:
- ResourceWarning with ResolvedContext.execute_shell (py3) #761
Merged pull requests:
Closed issues:
- rez-depends -- 'ProgressBar' object is not an iterator (py-3, rez-2.47.4) #765
Notes
More Python3 compatibility changes.
Merged pull requests:
Notes
- GitHub Actions CI test suite added
- Windows not passing currently, fixes to come
- Note that pwsh shell implementation was using the subprocess 'universal_newlines' arg - this has been
removed. This was causing
execute_shell
to return an str-type stdout/stderr tuple, rather than bytes as every other shell impl does, and this was causing tests to fail.
Merged pull requests:
Notes
Py3 fixes found after testing.
Merged pull requests:
- Fix py3 errors and warnings #748 (JeanChristopheMorinPerso)
Merged pull requests:
Closed issues:
- Shell plugin Support API #696
Notes
This fixes and improves the shell plugins, especially on Windows for cmd and PowerShell-like. Formerly excluded shell-dependent tests are now passing.
Note also that this release fixes a regression in Windows, introduced in 2.35.0.
Merged pull requests:
Closed issues:
Notes
Last round of Py3 updates (not counting further bugfixes found from testing).
Please take note if you notice any changes in performance in Py2. This release includes a number of changes
from methods like iteritems
to items
, which in Py2 means a list construction rather than just an iterator.
Tests have shown performance to be identical, but you may find a case where it is not.
Merged pull requests:
Notes
Misc Py3 compatibility updates, part 4.
Merged pull requests:
- robust py2/3 use of getargspec/getfullargspec #743 (nerdvegas)
- address #744 (rex dictmixin issue) #745 (maxnbk)
Closed issues:
- #712 merged in 2.43.0 caused external environ not to pass through to resolve #744
Notes
Misc Py3 compatibility updates, part 3.
Merged pull requests:
- bytecode / pycache related changes #733 (maxnbk)
- address py3.8 deprecation of collections direct ABC access #740 (maxnbk)
- fix metaclass usage in example code #741 (maxnbk)
- Vendor readme #738 (nerdvegas)
Merged pull requests:
Closed issues:
- permissions failure on release (variant.json) #730
Notes
Misc Py3 compatibility updates, part 2.
Merged pull requests:
Notes
Misc Py3 compatibility updates, part 2.
Merged pull requests:
- pull basestring from six.string_types - py2 gets basestring, py3 gets str #721 (maxnbk)
- import StringIO from six.moves #722 (maxnbk)
- update vendored colorama from 0.3.1 to 0.4.1 #723 (maxnbk)
- update vendored memcache from 1.5.3 to 1.5.9 #724 (maxnbk)
- make Version properly iterable in py3 #725 (maxnbk)
- modernize function manipulations and attrs #727 (maxnbk)
Notes
Misc Py3 compatibility updates.
Merged pull requests:
- very small py3 compat changes #712 (maxnbk)
- .next() to next() #713 (maxnbk)
- yaml upgrade #714 (maxnbk)
- improve non-string iterable handling #715 (maxnbk)
- replace async with block to avoid py3 async keyword #716 (maxnbk)
- import queue module through six #717 (maxnbk)
- swap 2.6 support for 3.x in version module #718 (maxnbk)
Merged pull requests:
- fixed bez rezbuild.py breaking on old-style print #705 (nerdvegas)
- zsh tests passing by way of enabling analogue for bash shell completion #711 (maxnbk)
Notes
This PR introduces py3 compatibilities that do not functionally alter py2 code.
Merged pull requests:
Merged pull requests:
Merged pull requests:
- a few prints to py3-compat #701 (maxnbk)
- Fixing error with changelog referenced before assigment #700 (bareya)
- Adding GCC bind #699 (bareya)
Notes
This update allows custom plugins to override the builtin rez plugins. It does so by reversing the order in which plugins are loaded, so that builtins are loaded last.
Merged pull requests:
Closed issues:
- rezplugins loading order #677
Notes
This release fixes an issue on Windows, which has non-case-sensitive filepaths. Requesting a package with a case differing from that on disk would cause two packages to exist in the resolve, which really were just different cases of the same package.
The behaviour on Windows is now:
- Packages are case-sensitive -
rez-env Foo
will fail if the package folder on disk isfoo
; - Package repository paths are case-insensitive -
~/packages
and~/Packages
are regarded as the same repo.
Merged pull requests:
- [FIX] Make package resolve request respect case sensitivity -- Windows #689 (lambdaclan)
Notes
Fixes regression introduced in v2.39.0.
Merged pull requests:
Closed issues:
- [Regression - Version >= 2.39.0] ConfigurationError: Error in Rez configuration under plugins.shell #688
Notes
- Adds new Zsh shell plugin (BETA)
Merged pull requests:
Closed issues:
- zsh plugin for rez #451
Notes
- Fixes errors in new powershell plugin
- Adds new powershell core 6+ plugin (BETA).
Merged pull requests:
- Fix missing import in powershell plugin #674 (instinct-vfx)
- Add powershell core 6+ support (pwsh) #679 (instinct-vfx)
Closed issues:
- Add shell plugin for poweshell 6+ #678
Notes
Fixes regression in 2.38.0 that unintentionally renamed _rez_fwd tool to _rez-fwd.
Merged pull requests:
Closed issues:
- build scripts generated with incorrect shebang arg #671
Notes
Fixes issue on Windows where rez-bind'ing pip creates a broken package.
Merged pull requests:
- [Fix] Windows rez-bind pip #659 (lambdaclan)
Notes
Updates the installer (install.py).
- patched distlib (in build_utils) has been removed. The patch we were relying on has since been made part of the main distlib release, which we already have vendored;
- virtualenv has been updated to latest;
- scripts have been removed, and entry points are used instead;
- install.py code has been cleaned up and simplified. Specifically, standard use of distlib.ScriptMaker has been put in place;
- INSTALL.md has been updated with a full explanation of the installer, and why a pip-based installation is not the same as using install.py.
Merged pull requests:
Notes
This fixes a regression introduced in 2.34.0
, which causes rez-context -g
to
fail. The pydot vendor package was updated, and the newer version includes a
breaking change. Where pydot.graph_from_dot_data
used to return a single graph
object, it now returns a list of graph objects.
Merged pull requests:
Notes
Adds PowerShell support. https://docs.microsoft.com/en-us/powershell/
Merged pull requests:
Merged pull requests:
- [Feature] Pure python package detection #628 (lambdaclan)
Merged pull requests:
Merged pull requests:
- Add a package_preprocess_mode #651 (JeanChristopheMorinPerso)
Closed issues:
- Support "additive" preprocess functions #609
Backwards Compatibility Issues
Please note that this update alters the process hierarchy of a resolved rez environment, for Windows users. This does not necessarily represent a compatibility issue, but please be on the lookout for unintended side effects and report them if they arise.
Merged pull requests:
Closed issues:
- Shell history not working in cmd.exe or PowerShell #616
Merged pull requests:
- [Fix] Wheel pip regressions #656 (lambdaclan)
Merged pull requests:
- Update distlib vendor library #654 (lambdaclan)
- [WIP] Feature/pip install modern #602 (lambdaclan)
Merged pull requests:
- Support for external PyYAML and Python 3 #622 (mottosso)
- Fix escaping backslashes in tcsh on Mac OS #497 (skral)
Merged pull requests:
- Implement preprocess function support for rezconfig.py (takeover) #650 (JeanChristopheMorinPerso)
Merged pull requests:
Merged pull requests:
Merged pull requests:
Closed issues:
- rez-build breaks if "|" in a required package's version on Windows #558
Merged pull requests:
Merged pull requests:
- Fix/add support for reversed version range #618 (instinct-vfx)
Merged pull requests:
Merged pull requests:
Merged pull requests:
- fqdn #621 (bpabel)
- Fix path list with whitespace #588 (asztalosdani)
- Close the amqp connection after message publish #615 (loup-kreidl)
Closed issues:
- rezbuild.py broken #619
- rez-env Performance and socket.getfqdn() #617
- "parse_build_args.py" file parser arguments are not accessible anymore in "os.environ". #590
Merged pull requests:
- Bugfix/custom build arguments #601 (lambdaclan)
Closed issues:
- bug in rez-build --bs option #604
Implemented enhancements:
- hash-based variant subpaths #583
Closed issues:
- rez variant environment var during build #304
Fixed bugs:
- nargs errors for logging_.print_* functions #580
Merged pull requests:
- Ignore versions if .ignore file exists #453 (Pixomondo)
- Fix/logging print nargs #581 (wwfxuk)
- package_test.py: fix rez-test header command with % #572 (rodeofx)
- Call the flush method every time a Printer instance is called #540 (rodeofx)
Merged pull requests:
Implemented enhancements:
- facilitate variant install when target package is read-only #565
Fixed bugs:
- timestamp override no working in package copy #568
- shallow rez-cp can corrupt package if there are overlapping variants #563
Merged pull requests:
Fixed Regression in 2.24.0
Fixes issue where installed package.py
can be set to r/w for only the current user.
Package Copy Fixes For Non-Varianted Packages. See #557.
- #556 rez-cp briefly copies original package definition in non-varianted packages
- #555 rez-cp inconsistent symlinking when --shallow=true
- #554 rez-cp doesn't keep file metadata in some cases
There were various minor issues related to copying non-varianted packages.
Bugfix in Package Copy
This was failing when symlinks were present within a non-varianted package being copied. Now, these
symlinks are retained in the target package, unless --follow-symlinks
is specified.
Build System Detection Fixes
To fix this issue:
- The '--build-system' rez-build option is now always present.
- To provide further control over the build system type, the package itself can now specify its build system - see https://github.com/AcademySoftwareFoundation/rez/wiki/Package-Definition-Guide#build_system
Unfortunately, the 'cmake' build system had its own '--build-system' commandline option also. This was possible because previous rez versions suppressed the standard '--build-system' option if only one valid build system was present for a given package working directory. This option has been changed to '--cmake-build-system'.
Various Build-related issues #548
- #433: "package_definition_build_python_paths" defined paths are not available from top level in package.py
- #442: "rez-depends" and "private_build_requires"
- #416: Need currently-building-variant build variables
- #547: rez-cp follows symlinks within package payload
The biggest update in this release is the introduction of new variables accessible at early-bind time: building, build_variant_index and build_variant_requires. This allows you to do things like define different private_build_requires per-variant, or a requires that is different at runtime than it is at build time. In order to get this to work, a package.py is now re-evaluated multiple times when a build occurs - once pre-build (where 'building' is set to False), and once per variant build. Please see the updated wiki for more details: https://github.com/AcademySoftwareFoundation/rez/wiki/Package-Definition-Guide#available-objects
A new build-time env-var, REZ_BUILD_VARIANT_REQUIRES, has been added. This mirrors the new build_variant_requires var mentioned above.
rez-depends has been updated to only include the private_build_requires of the package being queried (previously, all packages' private build reqs were included, which is not useful). Recall that the previous release fixes the issue where private_build_requires was being stripped from released packages.
The entirety of a package definition file can now see the extra build-time modules available via the package_definition_build_python_paths config setting. Previously, only early bound functions could see these.
There was an issue with package copying (and thus the rez-cp tool) where symlinks within a package's payload were expanded out to their source files at copy time. The default now is to keep such symlinks intact - but hte previous behavior can still be accessed with the rez-cp --follow-symlinks option.
This release adds a new tool, rez-cp, for copying packages/variants from one package repository to another, with optional renaming/reversioning. The associated API can be found in src/package_copy.py.
- #541
- #510
- #477
- Package definition file writes are now atomic;
- private_build_requires is kept in installed/released packages;
- Fixes include modules not being copied into released packages;
- File lock is no longer created when variant installation happens in dry mode.
Fixed Regression in 2.20.0
- #532
Bug was introduced in: https://github.com/AcademySoftwareFoundation/rez/releases/tag/2.20.0
Package Usage Tracking, Better Config Overrides
- #528
Two new features are added in this release:
Override any config setting with an env-var. For any setting "foo", you can now set the env-var REZ_FOO_JSON to a JSON-encoded string. This works for any config setting. Note that the existing REZ_FOO env-var overrides are still in place also; if both are defined, REZ_FOO takes precedence. This feature means you can now override some of the more complicated settings with env-vars, such as package_filter.
Track context creation and sourcing via AMQP. Messages are published (on a separate thread) to the nominated broker/exchange/routing_key. You have control over what parts of the context are published. For more details: https://github.com/AcademySoftwareFoundation/rez/blob/master/src/rez/rezconfig.py#L414
The embedded simplejson lib was removed. The native json lib is used instead, and for cases where loads-without-unicoding-everything is needed, utils/json.py now addresses that instead.
Stdin-related fixes
- #512
- #526
Search API
PR: #213
Package/variant/family search API is now available in package_search.py. This gives the same functionality as provided by the rez-search CLI tool.
Added mingw as a rez build_system for cmake
PR: #501
Windows Fixes
- #490: Fix alias command in Windows when PATH is modified
- #489: Fix cmd.exe not escaping special characters
- #482: Fix selftest getting stuck on Windows
- #389
- #343
- #432
- #481
Better CLI Arg Parsing
PR: #523
- #492
The rez-python command now supports all native python args and passes those through to its python subprocess - so you can now shebang with rez-python if that is useful.
More broadly, rez commands now parse CLI args correctly for each case. Many commands previously accepted rez-env-style commands (eg rez-env pkgA -- somecommand -- i am ignored), but simply ignored extraneous args after -- tokens.
Fixed bug with rez-build and package preprocess
- #522
- #514
The problem occurred because the preprocess function was attempting to be serialized when the package definition is cached to memcache. However, this function is stripped in installed packages; furthermore, caching "developer packages" (ie unbuilt packages) was never intentional.
This release disables memcaching of developer packages, thus avoiding the bug and bringing back originally intended behavior.