Rez Versions Save

An integrated package configuration, build and deployment system for software

3.1.1

1 month ago

Source | Diff

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!

Fixes

  • Add symlink locking for filesystems that do not support hardlinks #1708 (@cfxegbert)
  • Fix error caused by weakly referenced package not specifying version #1712 (@loonghao)

Documentation

  • Add plugin documentation page #1703 (@BryceGattis)
  • Make gh-rez external link dynamic #1707 (@BryceGattis)

Miscellaneous

  • Convert all plugin rezconfig to rezconfig.py #1692 (@brycegbrazen)

3.1.0

1 month ago

Source | Diff

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!

Features

  • Add support for virtualenv in the installer #1645 (@Pixel-Minions)
  • Add -e/--editable flag to the installer to create an editable install #1672 (@JeanChristopheMorinPerso)

Fixes

  • Add retry mechanism when renaming folders on Windows #1666 (@loonghao)
  • Apply package orderers on variants #1684 (@isohedronpipeline and @pmolodo)

Documentation

  • 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)

Miscellaneous

  • 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)

3.0.0

3 months ago

Source | Diff

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.

Features

  • 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)

Fixes

  • Fix infinite loop in the dot graph generation when --fail-graph is used and there are indirect cycles. #1620 (@Pantsworth)

Removed

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

    • rez-pip: The --pip-version is removed.
    • rez-search: The --sort is removed.
  • API

    • The 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)
    • 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)

Changed

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 was cmd and was causing a lot of problems.

Docs

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)

2.114.1

5 months ago

Source | Diff

Merged pull requests:

2.114.0

5 months ago

Source | Diff

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.

Features

  • 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.

    This feature was added by dgovil in #1550.

Deprecations

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:
  • Modules:
    • 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.
  • 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.
  • API:
    • The 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(...)
      
  • Python: rez 3.0.0 will completely drop support for installing and using the rez API with Python 2.

Change of default values due to deprecations

Some default values have changed:

Some default values will change in 3.0.0:

2.113.0

8 months ago

Source | Diff

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)

2.112.0

1 year ago

Source | Diff

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)

2.111.3

1 year ago

Source | Diff

Merged pull requests:

Closed issues:

  • benchmarking CI fails to push changes, does not error #1328

2.111.2

1 year ago

Source | Diff

Merged pull requests:

2.111.1

1 year ago

Source | Diff

Merged pull requests:

Closed issues:

  • Fix regression in benchmark CI #1323