Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.58.4] - 2024-04-29
Enable repo_poetry to point at a different pyproject.toml than the one in
${root}
Sync sentry-sdk version between pyproject.toml and
vendor.py
[1.58.3] - 2024-04-25
Add a –wait-for-debugger option to allow for repo tool script debugging
[1.58.2] - 2024-04-04
Remove old DEBUG_MODE from
update.py
[1.58.1] - 2024-04-24
Quotes around system called file ops
[1.58.0] - 2024-04-24
Removed
repo_build_docs
tool as it has been superseded byrepo_docs
.
[1.57.13] - 2024-04-23
Addressed many small clarity and security items
[1.57.12] - 2024-04-12
Fixes recursion error when an invalid tool is called
[1.57.11] - 2024-04-11
When a bad argument is passed to a tool, usage for that tool is now displayed
[1.57.10] - 2024-04-10
License as MIT
[1.57.9] - 2024-04-09
Change exception message output for external users
[1.57.8] - 2024-03-27
Usage provides additional information about tools
[1.57.7] - 2024-03-27
Add mermaid diagram to docs for sample invocation to execution flow
[1.57.6] - 2024-03-27
make exit code reported via telemetry match actual exit code returned by repo_man
[1.57.5] - 2024-03-27
Disable sentry and telemetry for external users
[1.57.4] - 2024-03-27
Add missing base exception
KeyboardInterrupt
handling inrun_process
functions.
[1.57.3] - 2024-03-26
Add
Exception
handling inrun_process
functions, will catch the decoding errors that can happen when the process is killed.
[1.57.2] - 2024-03-25
chore: add poetry licensing verbiage to readme
[1.57.1] - 2024-03-15
lock poetry deps to urllib-1.26.18 for CVE-2023-43804
[1.57.0] - 2024-03-14
Allow requirements file locations to be overridden by repo tools.
[1.56.5] - 2024-03-13
Prevent the teamcity log publishing from running outside of teamcity.
[1.56.4] - 2024-03-13
Conform all current copyrights to use SPDX
Introduce and supply standard NVIDIA license into final package
Update packman, update repo deps
Fix a repo_test upgrade bug and e2e test failure residual from pytest migration
[1.56.3] - 2024-03-11
Add a utility function is_git_tracked() and relevant unit test
[1.56.2] - 2024-03-08
add requests package for nicer HTTP calls
[1.56.1] - 2024-03-07
clean_folders util now normalizes folder paths
[1.56.0] - 2024-02-28
nv_env.in_nvidia / nvenv.in_corpnet functions for helping to avoid wasting time on retryerrors etc
[1.55.2] - 2024-02-27
Move all tests to pytest
[1.55.1] - 2024-02-21
Reduce gitlab ci_message-ing
[1.55.0] - 2024-02-20
Added
omni.repo.man.deps.install_dependencies
to replace by the formeromni.repo.deps.verify_vendor_integrity
that involved a heavy hashing verification.Added
hash_directory
arg toomni.repo.man.deps.validate_dependencies
so users can opt-in for dependency verification. Defaults to false.
[1.54.0] - 2024-02-16
Quick refactor of repo_poetry to instead ingest
tools/poetry/pyproject.toml
This converts poetry from a static vendor-requirements.txt in the downstream project directory structure to a packaged pyproject.toml.
[1.53.2] - 2024-02-16
Propagate block disabling behavior to non-generic blocks
Uniqify gitlab message blocks to decouple section-linkage in log window
[1.53.1] - 2024-02-15
ci_message/block can now filter by ci platform
[1.53.0] - 2024-02-12
Add config arg
repo.file_logging_max_bytes
config option for controlling size of RotatingFileHandler logfile.Update
exception_utils._push_logfile_to_teamcity()
to push logfile + optional rotated file to TeamCity.
[1.52.0] - 2024-02-09
Add PushEnv, a commonly reused OS environ context manager, to utils
[1.51.10] - 2024-02-08
Make sure the py.typed marker actually makes it into the package
[1.51.9] - 2024-02-08
Add py.typed marker for PEP-561 compliance
[1.51.8] - 2024-02-06
Store original
sys.argv
on theoptions
for use in other repo_tools.
[1.51.7] - 2024-02-05
output get_git_branch, get_git_hash git call errors as info, it is callers responsibility to handle None return value
[1.51.6] - 2024-01-24
Fixed tests/pytest/test_e2e.py
Default test suite switch to ‘pytest’ suite, as it contains for more tests than ‘unittest’ suite
[1.51.5] - 2024-01-31
allow packman lookup in find_new_version to be optimized with a version string
[1.51.4] - 2024-01-25
Fix bad type error on Python 3.7 in configuration classes.
[1.51.3] - 2024-01-23
avoid deprecated distutils usage
[1.51.2] - 2024-01-19
build_number uses ci_message and repo_man’s own version is detectable by build_number
[1.51.1] - 2024-01-18
env-var
DISABLE_CI_MESSAGE_BLOCK
being truthy will short-circuit ci_message_block
[1.51.0] - 2024-01-17
Added configuration classes using Pydantic for improved configuration handling.
[1.50.15] - 2024-01-17
Fix mutable default in dependencies md5 calculation incorrectly invalidating package installs on multiple calls.
[1.50.14] - 2024-01-12
Fix urllib version to 1.26.16 so that repo test will work again
[1.50.13] - 2024-01-11
Revert MR !187 that breaks
repo update repo
.
[1.50.12] - 2024-01-11
Fix bug where there was a dependency on
dateutil
from packman. Dependency removed. This will allow usage with packman 7.17.
[1.50.11] - 2024-01-10
Add missing export for
QuietExpectedError
.
[1.50.10] - 2024-01-10
Add
QuietExpectedError
that will not print anything to the console or file log when raised.
[1.50.9] - 2024-01-03
Set pip timeout to 60 seconds and retries to 5.
[1.50.8] - 2023-12-20
Added config arg to repo_packman tool (for release/debug tokens)
Forward repo.tokens to repo_packman tool
[1.50.7] - 2023-12-15
Don’t open/close ci blocks from a background thread.
[1.50.6] - 2023-12-14
Swapped the base_delay and growth_rate values for
omni.repo.man.deps._retry_rename
to correctly backoff.
[1.50.5] - 2023-12-13
Added
omni.repo.man.utils.exponential_backoff_retry
decorator for easy exponential retry of functions.Exponential retry for the move operation in omni.repo.man.deps for moving
repo
Python deps install folder. This potentially addresses the PermissionError issue encountered on Windows.
[1.50.4] - 2023-12-11
Changed copy and link time diagnostics to print in milliseconds instead of seconds
[1.50.3] - 2023-12-07
In repo.sh prefix the
exec
command with the setter for OMNI_REPO_ROOT rather than usingexport
and polluting the user’s shell.In repo.bat use
SETLOCAL
andENDLOCAL
to constrain OMNI_REPO_ROOT to the batch file scope.
[1.50.2] - 2023-12-01
Use
print
instead ofprint_log
in deps.py
[1.50.1] - 2023-12-01
Add an option to bypass rich print in
print_log
[1.50.0] - 2023-11-30
Brief refactor of build_docs.py, build_number.py, cmd_config_overrider.py, configuration.py, debugging.py, and deps.py.
sys.exit
and baseException
swapped for eitheromni.repo.man.exceptions.RepoToolError
or built-inException
subclasses where it makes sense.
[1.49.2] - 2023-11-30
Sanitize your inputs. The OMNI_REPO_ROOT envvar for
repo
Python dependency loading included extra quotes and pathlib.Path explodes on py37 but silently fails on py310. Neither behavior is desirable, strip quotes instead.
[1.49.1] - 2023-11-28
Patch
omni.repo.man.deps.pip_install_requirements
to emit the stdout/stderr coming out of pip in the event of failure, even if thequiet
argument is passed.Retry
omni.repo.man.deps.pip_install_requirements
3 times with 15 second delays to provide a little buffer for our unreliable network.
[1.49.0] - 2023-11-09
Implement a decorator which can be used to enforce a minimum version of a given repo-tool for function execution with a clear exception. e.g. repotool_min_version(“repo_man”, “1.50.0”)
[1.48.1] - 2023-11-07
Corrected a bug where logger propagation was set to False in omni.repo.man.exceptions_utils.emit_stack_to_logfile. This caused the helpful exception related messaging to not get pushed to the console leading to confusion and tedium referencing logfiles.
[1.48.0] - 2023-11-03
Permanently mute repo_telemetry
whoami
call to avoid error level log messages in Linbuild.Refactor omni.repo.man.exceptions to extract all helper utilities into omni.repo.man.exceptions_utils to avoid circular dependency loading.
[1.47.2] - 2023-10-31
Import repo-tool template yml for CI
[1.47.1] - 2023-10-31
Add repo logs artifacts (CI only)
[1.47.0] - 2023-10-30
Update .gitlab-ci.yml, add new jobs for more validation.
Fixed tests that were not working on Gitlab CI during merge requests pipelines
Renamed
CHANGES.md
toCHANGELOG.md
Renamed mytest suite to unittest
[1.46.6] - 2023-10-30
Emit TeamCity buildProblem status message first to set the build log anchor point, then emit the log messages stating an error has occured.
[1.46.6] - 2023-10-25
Fix exception name to be correct for any exception
Print repo tools errors to the console
[1.46.5] - 2023-10-18
Added the exception error message for the general repo on-exit error reporting. This is added context for scenarios where the
repo.log
logfile does not get saved off, and a stack is not emitted to console.
Release 1.46.4
Fix unnecessary cache re-population in the edge case where requirements.txt is more recent than the existing cache, but the regenerated cache is identical to the existing cache.
Release 1.46.3
Silence git errors from repo telemetry. If telemetry fails it should not spam the console, it isn’t a critical path tool.
Release 1.46.2
Added a file lock around Python dependency operations. Turns out my testing against Kit missed rapid-thrash projects that 100% stomped each other.
Release 1.46.1
MacOS is missing
realpath
. Swap to usingpwd -P
when settingOMNI_REPO_ROOT
envvar.
Release 1.46.0
Refactored repo tool Python dependency caching:
Tool dependencies will now be stored in the path
${root}/_repo/deps/${tool_name}_deps/${platform}/${python_version}/${requirements.txt hash}
The intention is that the execution of tools with multiple python versions against one repository will not reuse dependencies for another python version.
This sets up our dependencies for purposeful shared caching as well with rigid validation that shared dependencies have not changed.
Parallel attempts to pull the dependencies should no longer clash. A tempdir is used and a final fight will occur during the copy with retries, validation, and acceptance if another process wins.
Simplified the entrypoint for Python dependency caching within
omni.repo.man.__init__.py
Release 1.45.0
Add
import_optional_configs
to be able to import configs only if exist
Release 1.44.1
rich
: Document tool settings and support older python runtimes by catching the unprotectedrich.print
call
Release 1.44.0
Refactor on-exit exception handling for repo tools. Current behavior should not change much, but this sets up tooling to start raising precise exceptions rather than exiting non-zero or raising a generic Exception.
New exit code rules:
exit code 1 == an unexpected error was encountered, e.g. compiler error
exit code 2 == an expected error was encountered, e.g. a test failed or
repo format --verify
failed.
omni.repo.man.exceptions contains an exception base class and several subclasses to act as a start.
tracebacks_on_exit
has been deprecated as a configuration file option. It in general was not used, and moving forward we should be deprecating our sys.exit(1) calls, thereby nullifying this exit path.
Release 1.43.2
fix long dormant bug in OVFlowBuildIdentifier
Release 1.43.1
fix typing issue when repo_man used with python-3.7
Release 1.43.0
new nvgitlab.py module, new utils for ci_message / ci_message_block to help with teamcity-to-gitlab migrations
moved some ci-independent utils from nvteamcity to utils
Release 1.42.5
repo update
- don’t match versions with a different build metadata parts, e.g. kit package with.cp39
in the version
Release 1.42.4
fix
get_git_branch
on Gitlab
Release 1.42.3
rich
: replace_bultin_print default to false, as allprint("##teamcity...")
statements stop workingrich
: leaveprint_log
to userich.print
Release 1.42.2
rich
: disable wrapping for a print functionrich
: disable custom logger when running on CI
Release 1.42.1
Use
GITLAB_CI
to detect if we run on Gitlab CI - more accurate than usingCI_PIPELINE_ID
Release 1.42.0
add
rich
module dependency and integration
Release 1.41.0
RepoTelemetry
timeout is now customizable at object instantiation. The index version is also customizable at object instantiation.
Release 1.40.2
Fix parse_packman_config for packman 7 API
Release 1.40.1
Bump nspect version and allow changing it with
repo.nspect_version
key in config
Release 1.40.0
Added support for a global repo config file located at
~/.nvidia-omniverse/config/global_repo.toml
This config file is the second to final layer for our repo configs, and has been documented in docs/configuration.md.
Added support for per-project config file located in
${repo_root}/user.repo.toml
This config file is the final layer for our repo configs, and has been documented in docs/configuration.md.
A print_log statement will emit the global repo config path and per-project config path if one is detected.
Release 1.39.0
OSEC-774: add basic API to run omni-nspect
Release 1.38.1
make it possible to override tokens and interpolations with CLI
Release 1.38.0
Add setting to make
repo_publish
exit with a failure when no packages are locatedFixed
repo build_number
(and subsequently package naming) for Gitlab CI Merge Requests
Release 1.37.1
Fixed regression in run_process when it won’t exit even with
exit_on_error=True
if the executable doesn’t exist
Release 1.37.0
Add support for “++” syntax in configuration to merge arrays.
Release 1.36.1
fixed a bug in
repo update
that failed to updaterepo man
correctly due to a recursion CLI argument breadcrumb being interpreted as a package to be updated.tokens are now resolved in packman packages that are updated via
repo update
. This enabled tokens to be set in a package name. Hopefully a sane default for the token is provided by the user.
Release 1.36.0
add
py_ver
token that provides the Python interpreter version major + minor e.g. 3.10.4 == py310.
Release 1.35.2
target fixation happened, missed the scenario where no tokens are defined on the CLI, yet referenced within the repo.toml. We now load the combined repo.toml + repo_tools.toml merged config, set any discovered tokens, and then load the file again. This avoids a high impact refactor within the token code to correctly handle token escaping.
Release 1.35.1
Add
repo poetry
tool (moved from custom command batch scripts) to update poetry.lock files for repo tools
Release 1.35.0
Follow-on to
1.31.0
that moves command line custom token resolution earlier in bootstrapping such that config files are then loaded with these tokens set before we build the massive argparse parser. The prior solution only resolved tokens after the parser was built, which skipped scenarios where a token was referenced within a subtool argparse argument.Adds the
in_ci
boolean token that reflects if running on gitlab, teamcity, or local. Utilizes the--ci-env
flag as well so this can be faked.
Release 1.34.1
Fixed missing argument to
update_packman
Release 1.34.0
Add
tomli
dependency and switch to using it to load toml files (faster)
Release 1.33.2
Add timeout support in
run_process
Release 1.33.1
Fix a typo in repo_update to properly match repo_man and packman wildcards.
Release 1.33.0
Add the –ci-env argument to repo_man to pretend to be a CI environment for testing purposes.
Release 1.32.1
update default repo_package used by repo upload to “5.8.6”
Release 1.32.0
teach repo update to update repo.bat/sh scripts and packman
add process_args_to_cmd
Release 1.31.0
Users can now define custom tokens at the command line. This is ideally paired with a default token value in repo.toml. docs/configuration.md has more information on how this can be used.
Release 1.30.0
Added a
timer
context manager toRepoTelemetry
that can be used within other tools to push duration metrics.Slight refactor of our
RepoTelemetry
metrics gathering object to limit whatset_exit_code
does. It no longer setsts_end_time
andl_duration
keys in the payload. The expected behavior is to now use thetimer
context manager.
Release 1.29.0
Refactored how repo_man presents the
--config
argument along with providing a secondary helper action so that repo_build’s alternate--release
and--debug
flags also cooperate.This unified handling of config also enables the
${config}
token to resolve correctly in all scenarios when a single config value is passed in.
Release 1.28.8
WAR for Teamcity exception on Windows -> UnicodeEncodeError: ‘charmap’ codec can’t encode character ‘\uf06a’
Release 1.28.5
Add the default to the help message in
add_config_arg()
.
Release 1.28.4
add
encoding="utf-8"
tosubprocess.Popen
inrun_process_return_output
to avoid the exception: ‘charmap’ codec can’t encode characterFileNotFoundError
was unreachable in bothrun_process
andrun_process_return_output
Release 1.28.3
support argparse config being a single entry list or a string, and setting a complimentary config token correctly.
map in stdin in our subprocess.Popen wrappers to enable live debugging within nested
repo
calls due topython_exectuable
being set.
Release 1.28.2
repo_publish - remove separator from the config for package mask to support both dot and dash separators.
Release 1.28.1
Setting a user defined Python interpreter on Windows had an odd behavior. Visually it looked correct, but in reality the child process with the correct executable was running in parallel on the console with the parent process. Instead we subprocess.Popen on Windows. Unix is unchanged.
Release 1.28.0
Improves
omni.repo.man.utils.run_process_return_output()
.You are now able to omit
stderr
from the returned output.You can now choose whether to print the process output to
stdout
. Ifstderr
was ommitted from the output, you can choose whehter to print that tostderr
.
Prevents potential crashes from several internal subprocess calls.
Release 1.27.0
Support user defined Python interpreter via either system path, packman dependency defined in source controls packman.xml file, or via packman dependency defined in repo.toml.
This will hot reload the interpreter to whatever the user defines, ideal for projects that need to release build artifacts across a range of Python versions.
It is possible this will break some tooling, please report issues you encounter.
Release 1.26.1
Fix edge case where a symlink exists in the destination directory
Fix FileNotFoundError from occurring when
run_process()
is called on a nonexistent program.
Release 1.26.0
Refactored entry a little bit to move the
run_tool
block into a discrete function to make it a little easier to test it.Stack traces are now always dumped into the logfile, which by default is located at
${root}/_repo/repo.log
.Stacks are dumped to the console if either
--verbose
or--tracebacks
.The logfile is pushed to TeamCity as a build artifact in case the logging isn’t sufficient to debug.
Maybe this will be a suitable compromise for debugging purposes vs confusing stacks to console.
Release 1.25.5
Bugfix logging.info
Release 1.25.4
Bugfix Retry of http request
Release 1.25.3
Update RepoTelemetry class to allow sending multiple payloads to NVDataFlow in a single request.
Expand the environment metadata collected by RepoTelemetry.
Refactor RepoTelemetry to require an extra step to collect environment metadata.
Update logic for determining which NVDataFlow index to post telemetry data to.
Release 1.25.2
Include commit hash in repo telemetry
Include flag indicating local repo run in repo telemetry
Release 1.25.1
Improve repo build_number for use with formatted md files
Release 1.25.0
Add
utils.is_running_on_ci()
to check if you’re running on CI vs local.
Release 1.24.1
Fix bug where
add_config_arg()
was setting the default to a string whenallow_multiple
was set toTrue
.
Release 1.24.0
Remove the
require_build_config
and addadd_config_arg
insteadAdd
get_tool_config
to get the current config for a tool
Release 1.23.0
Add utils.set_niceness(): This increases the niceness of your process so that other processes get more CPU and IO time. CPU niceness is implemented on Linux and Mac right now. IO niceness is only implemented on Linux.
Release 1.22.1
Silence warnings about git operations failing when running in linbuild
Release 1.22.0
Adds the
require_build_config
setting to each repo tool, so that a tool can specify that it uses theconfig
value from its options. This adds the ability for users to specifydefault_build_config
inrepo.toml
to haverelease
ordebug
set whenconfig
wasn’t specified by the user. This also sets the${config}
token.
Release 1.21.6
Fixed bug that alters first value of sys.argv
Release 1.21.5
Silence git errors when gathering telemetry data
Added OS type, CPU architecture, and sys.argv values to telemetry
Fixed test_report_error()
Fixed version numbers in changelog
Release 1.21.4
Fixed python typing issues
Added CONTRIB.md to index.rst
Release 1.21.3
Fixed an issue with wrong types in http handling
Fixed python typing issues
Fixed issue with not checknig return value for none
Release 1.21.2
fixed an issue where
run_process
could result in a python error:[WinError 6] The handle is invalid
.
Release 1.21.1
optimize telemetry to gather data on a separate thread and only do that if enabled.
Release 1.21.0
collect telemetry about how long each repo tool takes to run.
look for settings in the merged repo config to enable/disable sending telemetry data to NVDataFlow.
Release 1.20.5
push repo.log as a TeamCity artifact on failure
print the exception message on non-verbose executions of repo
Release 1.20.4
tool version retrieval with
version.get_tool_version
withinentry.report_error
expected the imported subtool to be a true module with a path attribute. Turns out that is not reliable, so make a check and skip file VERSION check if said attribute is missing.
Release 1.20.3
workaround for \?\ paths in link folders allowed check for python 3.10+ on windows.
Release 1.20.2
remove stacktrace on exception dump to console. Can be enabled via
--tracebacks
OR flaggingtracebacks_on_exit
andtracebacks_on_raise
in repo.toml PLUS--verbose
. The tracebacks were causing some confusion.tracebacks are still logged to the default logfile at _repo/repo.log.
cleaned up the TeamCity buildProblem on failure. Now includes an easy to copy command for the failure plus the repo_man + sub-tool’s versions to easily identify common failures.
Release 1.20.1
nvenv.TemporaryDirectory accepts the keeptemp flag as a constructor argument.
Release 1.20.0
Add support for
--
to pass extra arguments to any tool usingoptions.extra_args
Release 1.19.3
added SWIPAT links to pyproject.toml for toml + yaml libraries.
Release 1.19.2
repo update was sort of broken since 1.16.3 because of “version” variable shadowing
repo update: add
--repo-root
to be able to run on a different repoproperly fix platform filters from 1.16.3 version
Release 1.19.1
Had a typo in gitlab config referencing repo vs repo.sh + forgot about git config.
Release 1.19.0
CICD changes: repo format –verify on merge requests. publish packman package on merge to
$CI_DEFAULT_BRANCH
.repo_test reporting coverage value for pytest suite. Push git tag on merge to
$CI_DEFAULT_BRANCH
.
Release 1.18.0
Rework tokens (!!):
add API to resolve tokens, set and print tokens
add
repo.tokens
field and use them during config resolutionsupport resolving tokens in list/dict/tuple
support recursive tokens resolution
add
--print-tokens
cmd to list all of themupdate documentation for tokens
Release 1.17.1
Leverage fileutils’ ERROR_IF_NOT_EXIST flag for our linking process to enable people to opt out of link source checking.
This will enable people to create dead links, but that behavior is the old behavior and Kit is littered with this.
Release 1.17.0
More thorough handling of our _vendor directories via hashing and rebuilding on conflict.
Moved this handling from init.py into deps.verify_vendor_integrity so other tools can use it.
This is associated with the changes in 1.15.0. These changes are now ready for other tools and projects to use.
Release 1.16.3
fix platform filters for a case where we have a
.release
BRANCH in version, but we want all branches
Release 1.16.2
fix platform filters after adding overrides
Release 1.16.1
repo_update: try to support packages with ${platform} and ${config} in their name
Release 1.16.0
Add config overrides from CLI: –/foo/bar=123
Release 1.15.0
Add support to deps for pulling Python dependencies via pip requirements.txt with
pip_install_requirements
Swapped repo_man’s vendoring setup from definitions in source to requirements.txt. repo_man continues to vendor deps at build time.
Release 1.14.0
Add renaming suffix for static libraries (staticlib_ext)
If we want to package static libs, we need rules like this or people will use very broad globbing rules.
Release 1.13.0
repo publish tool: fix behavior of fail_if_exist option
Release 1.12.2
fileutils: fail folder link when src path does not exist
Release 1.12.1
disable Sentry integration by default
Release 1.12.0
Reduce the teamcity buildProblem that gets published on unhandled exception/non-zero exit.
Release 1.11.5
repo publish tool: fix support for multiple packages. The tool config took a list of packages to publish, but only the first was ever used.
Release 1.11.4
fix getpass.getuser() exception breaking repo_man because of Sentry
Release 1.11.3
added experimental Sentry integration
Release 1.11.2
repo update tool: fix over-agressive replacement of ie, ${config} tokens
ie, we had a kit-sdk old version of:
104.0+release.94673.4b1c9203.tc.${platform}.${config}
and a new possible version of104.0+release.94898.d9e2e7c7.tc.windows-x86_64.debug
that got changed to104.0+${config}.94898.d9e2e7c7.tc.${platform}.${config}
Now, in order to consider something a valid match, the surrounding “context” must be the same, which is the preceeding / following characters, which must be either a non-alphanumeric or the start/end of the string.
So in the above case, the original context is:
(".", "")
The context for “release” in the new version does not match:("+", ".")
…while the context for “debug” in the new version does:(".", "")
Release 1.11.1
Corrected the
bindings_ext
token for themacos-universal
platform.
Release 1.11.0
Pass repo_man’s verbosity setting to packman when calling backman via repo.
Release 1.10.1
Speed up fileutils copy by moving exclude check earlier (behavior hasn’t changed)
Release 1.10.0
Separate trackback reporting to sys.exit and raise exception. This enables repo_test as the tool level to disable sys.exit traceback reporting.
Release 1.9.4
repo update tool: when inserting new version, keep ${platform} even if it doesn’t have a leading “.” - ie,
1.37.0_main.local.29536596-linux-x86_64
will now be swapped to1.37.0_main.local.29536596-${platform}
if the original version had${platform}
Release 1.9.3
repo update tool: don’t detect the platform as a prerelease this allows packages like:
linbuild@1.37.0_main.local.29536596-linux-x86_64
…to be upgraded to, without needing
--include-pre-release
Release 1.9.2
Fix running build_number not from the root of repo
Release 1.9.1
repo update tool: fix, it was broken (accidentally pushed in debug mode)
Release 1.9.0
Added a –tracebacks flag and repo.toml tracebacks key to enable feature-flagged traceback reporting.
Added traceback reporting to repo_man on sys.exit and exception raised. This is primarily for pushing tracebacks to TeamCity as a buildProblem, and optionally for traceback reporting when an underlying tool exists via sys.exit(!=0).
Release 1.8.6
repo update tool: sort by versions instead of date (add –sort-by-date for previous behavior)
Release 1.8.5
Add
strip_to_first_wildcard
option tocopy_files
Release 1.8.4
Fixed an ordering bug with repo.toml and repo_tools.toml. Reverted back to order prior to Release 1.8.0.
Release 1.8.3
Fix bug in build_number when the gitbranch is Merge-Request with no MR number
Release 1.8.2
Fix a bug in
entry.py
where the variable for the subtool repo_tools.toml was used instead of the repo_man packaged repo_tools.toml.
Release 1.8.1
Fix bug in build_number where “Merge-Request” branch name is not converted to “mr” token
Release 1.8.0
Rename
main.py
toentry.py
Light Refactor of
entry.py
and added pytest tests.
Release 1.7.1
Do not raise exception when temp directory fails to be removed
Release 1.7.0
Added
print_log
which emits a message to the calling module’s logger and optionally prints the message if the configured root logger stdout StreamHandler would drop the message due to greater configured logging level.
Release 1.6.1
Allow
nvteamcity.teamcity_message_block
to be used as a decorator with no args (so it can replace deprecatedteamcity_block
); added tests forteamcity_message_block
Release 1.6.0
Added
run_process_return_output
which duplicatesrun_process
while returning stdout/stderr in a list as a secondary return value.
Release 1.5.1
fix glob on hidden files in fileutils
Release 1.5.0
Add repo_packman - shotcut to packman
Release 1.4.5
Updates to allow fileutils (and
repo package
) to work with long filepaths (>=260) on windows, even if the registry setting to enable longpath support isn’t set
Release 1.4.4
Change default log location to be in
_repo
folder to avoid issues with log file lock when clean building
Release 1.4.3
Changing the teamcity reponse to use
status
rather thanmsg
because it seemsmsg
is now empty after th 30th of may 2022 upgrade.Updating packman to 6.44
Release 1.4.2
Support macos-x86_64 and macos-aarch64 platform targets in PLATFORM_MAPPING. This prevents a particularly cryptic crash on launch when using mac without specifying a platform target of macos-universal. Note: you should be using macos-universal instead of these where possible.
Release 1.4.1
Change ${file:} macro to only read the first line of the file
Release 1.4.0
Add
pip_install_multiple
Release 1.3.1
Improve error output for execute_git
Release 1.3.0
Add more tests for omniflow naming of versions and branches for different omniflow versions
Added ‘macos-universal’ as a supported platform.
Added detection for ‘Darwin’ platforms and changed their names to the more friendly ‘macos’.
Release 1.2.4
Fix for teamcity_message with a single unnamed arg Teamcity only allows EITHER exactly one unnamed arg, and no named args OR only named args. Before this fix, when using with single-arg messages (like publishArtifacts), it would add a timestamp named arg, which would cause teamcity to error
Release 1.2.3
Allow teamcity_message to take non-keyword args
teamcity_escape_value now properly escapes unicode characters
Add nvteamcity unit tests
Fix test_nvenv on linux when not root
Release 1.2.2
Fix file logging starting a new file every time
Release 1.2.1
Improve error report on run_process failure
Release 1.2.0
Logging: add
-v
and-vv
to control loggingLogging: add
file_logging
andfile_logging_path
to control log to file. Log “info” level by default into “${root}/_build/repo.log”
Release 1.1.5
Fix how branch is converted to build number on older “Omniverse Flow”
Release 1.1.4
Add “changelog_file” to repo_folders guidelines
Release 1.1.3
Fix breaking change: “Omniverse Flow version to comply with updated standard” to not be enabled by default. Can be enabled with
omniverse_flow_version_scheme_2 = true
Release 1.1.2
Fix breaking change introduced in 1.1.0 where version_file default changed to be without .md ext.
Release 1.1.1
Fix a file handle leak in build_number - caught by unit testing
Fix bugs in how branch names are converted to strings without slashes (compliant with Omniverse Flow); added unit tests
Release 1.1.0
Change Omniverse Flow version to comply with updated standard
{software-version}+{branch}.{builder}{count}.{hash}
Release 1.0.0
Add repo_test requirement
Add Python unit test stubs to run in Gitlab-CI
Added copyright and license information
Release 0.4.10
only log info and skip when there are multiple tools with the same name present
Release 0.4.9
detect and error when there are multiple tools with the same name present
Release 0.4.8
vendor yaml and add
get_yaml_module()
Release 0.4.7
only leave parallel folder link, file copy produces permission issues/races
Release 0.4.6
force vendor pip dep
Release 0.4.5
unify TC service messages usage, provide more API
parallel file copy and folder link
Release 0.4.4
repo update tool: add –include-pre-release flag, default to false
Release 0.4.3
Bug fix to first merge import configs, before actual config
Release 0.4.2
Bug fix to resolve main config with the same pipeline as a tool config
Release 0.4.1
Bug fix to only resolve string interpolation
Release 0.4.0
Add support for config interpolations, like
${conf:path.to.foo}
Add config import with
repo.import_configs
Release 0.3.46
Adding a bit of support for build numbers and branches when running in gitlab.
Release 0.3.45
Added a new variable
symbols_check
tocopy_files
and when set to true makes sure there is a pdb for any dll, exe, pyd and lib for a file thats being copied.
Release 0.3.44
Patch up repo update replacing “+release” with “+${config}”.
Release 0.3.43
Add more logging to git calls
Release 0.3.42
Expose
load_toml_config_with_tokens
function and format code
Release 0.3.41
Fixes for 0.3.40
Release 0.3.40
Removing the dual build number stuff for now. Its become a bit of a problem for somethings and isn’t worth the effort right now.
Release 0.3.39
Update sphinx package in repo build_docs and allow overriding it with a setting
Release 0.3.38
Add
find_and_extract_package
,extract_archive_to_folder
,short_hash
Release 0.3.37
extra_tool_paths
to add more tools from other location
Release 0.3.36
Remove unused code that fixes publish of some packages with versions that triggered exception
Release 0.3.35
Change
replace_file_tokens
to strip file content, removing new lines at the end
Release 0.3.34
Version/OmniverseFlow - allow version only, ensure is_valid returns bool
Release 0.3.33
Add more TC block: for pip_install and for each tool run
Release 0.3.32
Minor fix to the process when checking for allowed paths.
Release 0.3.31
Code formatting.
Changed the TC blocks a little so that we get less spam in the logs and they are not doubled when they are used.
Release 0.3.30
fix applying dict filter correctly for list and tuples inside of a config dict
Release 0.3.29
move a number of modules from repo_package (mostly related to changelog generation) to here, to allow them to be used by repo_publish. Update repo publish to support changelog generation
Release 0.3.28
ignore version from other branches by default in
repo update
(add setting to control it)
Release 0.3.27
fixing the issue where after sorting the latest package the list is empty and an index error is raised
Release 0.3.26
Fix typo in build_number
repo update can now search just by passing start of the package name (no wildcard needed). But if match is perfect update only that one.
Small refactor in nvteamcity
Release 0.3.25
Changed the new build number stuff a little so that the dual build number is opt in for now.
FINAL_BUILD_NUMBER
has to be set to 0 for it to work.
Release 0.3.24
omni.repo.man.update - update_packages returns modified versions
Release 0.3.23
Minor fix for the build number order.
Release 0.3.21
Add
label_regexps
for publish
Release 0.3.20
Fix output build number
Release 0.3.19
repo update
added control over version filtering. By default major version is switched and MR packages are ignored. CLI switches to control
Release 0.3.18
Bugfix to the
store_teamcity_statistics
Release 0.3.17
Allowing a custom key for the new
store_teamcity_statistics
stuff.
Release 0.3.16
Removed all the test stuff from
nvteamcity.py
, it was mostly used during dev and had a manual verification.Added a new decorator for teamcity statistics called
teamcity_statistics_timer
. You just need to pass in a string thats used as the key and the function will be timed and the key+value pair will be stored in teamcity. If nothing is passed in, then the function name will be used as the key. This will also create a Teamcity block.Added a function
store_teamcity_statistics(key, value)
for the statistics to store a custom key/value if you dont want to use the wrapper. Both thekey
andvalue
are required.Added a new decorator called
show_calling_function
that will print out what file and line called the function that is wrapped.Some build numbers are getting a little long and the CI systems are truncating the number, so we have added support for a shorter build number for CI and keeping the existing for packaging. This is inline with Omniverse Flow.
Release 0.3.15
Fixing the issue where we get double build numbers in the name because we check for a
-
and in the new Omniverse Flow scheme we dont have any. Now we check for a-
and+
.Disabled a broken unittest.
Release 0.3.14
Fixing the issue where a branch might contain a
/
which causes confusion in with the paths.
Release 0.3.13
Allow for recurisve mappings eg $a -> $b -> $c in the prebuild.toml files section
Release 0.3.12
build_number tool, switch to version:
{VERSION}+{gitbranch}.{githash}.{build_location}.{build_number}
Release 0.3.11
build_number tool, switch to version:
{VERSION}[-rc.number]{[-|.]gitbranch}+{githash}.{ci}.{build_counter}
Release 0.3.10
Add resolve and print url for publish
Release 0.3.9
Add platform filter for config, e.g.: ‘platform:windows_x86-64’
Release 0.3.8
Add ‘exclude_path_patterns’ to copy_files.
Release 0.3.7
Added a check if we are doing file link instead of folder (and failure)
Release 0.3.6
Add “allowed_paths” param for copy and link file utils
Release 0.3.5
change default remote for publishing to “cloudfront” as we switching to new remote2 configuration of packman everywhere
Release 0.3.4
update upload to use latest repo_package by default
Release 0.3.3
add
--output-file
to build_number
Release 0.3.2
add
default_remote
to publish
Release 0.3.1
build_number as a tool
replace some prints with logging info and error
Release 0.3.0
New repo update tool
Release 0.2.9
Added generate_build_number() function
Formats build_number based on Omniverse Flow guidelines.
Release 0.2.8
Add
extra_args
to pip_install
Release 0.2.7
change default
repo_deps
path to be in _repo/deps
Release 0.2.6
publish: fail_if_exist
Release 0.2.5
Start producing more labels when uploading
Allow specifying any package in publish tool
Release 0.2.4
Fix vendoring if toml happen to be already installed in python’s site-packages
Release 0.2.3
Cache getting git branch and hash to optimize as they called many times often
Release 0.2.2
Fix git autoinstall from packman
Release 0.2.1
Add support for ${file:PATH} syntax in config
Switch to use VERSION file in root
Release 0.2
New functionality: ‘repo’ command as a central entry point for all repoman tools. Repoman becomes a framework to register and configure repo tools.
Introducing repo_build_docs and repo_upload builtin tools. Switching to use them.
Bring in repo_fileutils in repo_man
Release 0.1.22.4
Fixes
Release 0.1.22.3
Removed a print block used for debugging.
Release 0.1.22.2
Renamed
teamcity_block
toteamcity_message_block
and changed it so you can pass inname
anddescription
.Started to add teamcity blocks around the git, teamcity api and gitlab api functions.
Release 0.1.22.1
Forgot to return the output when
teamcity_block
is used.
Release 0.1.22
Continued work on the teamcity blocks started in 0.1.21. You can use the decorator
teamcity_block
to create a teamcity block around a function.Please see teamcity.py for some test examples. Better documentation will happen soon.
Release 0.1.21
Added a teamcity module to start collecting up functions related to teamcity usage.
Added
open_teamcity_block
andclose_teamcity_block
which can be used to add better stats in the build log.
Release 0.1.20
Added a timeout when running git commands. Timeout default is 60 seconds and retry default is 5 times.
Release 0.1.19
Adding a timeout of 5 seconds to the gitlab api call. If it fails, the timeout will increase by 5 seconds for each try.
Release 0.1.18
Added a function to access the gitlab api.
gitlab_api(url, data, gitlab_url)
. url is required, data (json only) and gitlab_url are optional.Added a function to access the teamcity api.
teamcity_api(url, data)
. url is required, data (xml only) is optional.
Release 0.1.17
Bug fix only.
Release 0.1.16
get_path_hash
will return a tuple containing the githash of the path specified and the githash with the MR number if its running as a MR,["<hash>", "<hash>-<mr>"]
. If its not a merge request, then both strings will be the same hash.trigger_teamcity_build
can trigger a teamcity build if following args are passed in. The response code is returned.branch_name
- This is the name of the branch in the repo to build.commit_id
- This is the commit hash of the change to build.build_config_id
- This is the build configuration ID of the job in teamcity. Its found in the general settings for a job underBuild configuration ID
.
Release 0.1.15
call_git
andget_git_hash
now accept the argcwd
, which points to the directory that the subprocess running git should run in.
Release 0.1.14
When deleting a file we now remove the read-only flag first before attempting the delete
Release 0.1.13
Add repo-deps to repo folders
Release 0.1.12
Hotfix $lib_prefix in get_platform_file_mapping
Release 0.1.11
Add gather_files_from_dict_for_platform, get_platform_os_and_arch, get_platform_file_mapping, gather_files_from_dict
Add few tests for those
Release 0.1.10
Add change_syspath
disable pip_install checks explicitly for passed folder only, that doesn’t work well with std library deps.
Release 0.1.9
Add change_syspath
pip_install checks explicitly for passed folder only (on import)
Release 0.1.8
Add module param to pip_install
Release 0.1.7
Fix few bugs, more stable
Release 0.1.6
Add change_envvar, docs
Release 0.1.5
Restructure internally: split into submodules.
Bring nvenv from packagemaker
Add git status check API and in upload script
Add explicit build_label_filename API
Add package_only flag to package_and_upload
Add basic test
Release 0.1.4
Add optional version param to pip_install
Release 0.1.3
Add package and upload API and script.
Default logging to stdout (enable_std_logging)
Add optional version param to pip_install
Release 0.1.0
First release of the repoman tool, a rebranding of the multitool