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.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 to CHANGELOG.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 using pwd -P when setting OMNI_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 unprotected rich.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 all print("##teamcity...") statements stop working

  • rich: leave print_log to use rich.print

Release 1.42.2

  • rich: disable wrapping for a print function

  • rich: 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 using CI_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 located

  • Fixed 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 update repo 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 to RepoTelemetry that can be used within other tools to push duration metrics.

  • Slight refactor of our RepoTelemetry metrics gathering object to limit what set_exit_code does. It no longer sets ts_end_time and l_duration keys in the payload. The expected behavior is to now use the timer 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" to subprocess.Popen in run_process_return_output to avoid the exception: ‘charmap’ codec can’t encode character

  • FileNotFoundError was unreachable in both run_process and run_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 to python_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. If stderr was ommitted from the output, you can choose whehter to print that to stderr.

  • 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 when allow_multiple was set to True.

Release 1.24.0

  • Remove the require_build_config and add add_config_arg instead

  • Add 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 the config value from its options. This adds the ability for users to specify default_build_config in repo.toml to have release or debug set when config 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 within entry.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 flagging tracebacks_on_exit and tracebacks_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 using options.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 repo

  • properly 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 resolution

  • support resolving tokens in list/dict/tuple

  • support recursive tokens resolution

  • add --print-tokens cmd to list all of them

  • update 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 of 104.0+release.94898.d9e2e7c7.tc.windows-x86_64.debug that got changed to 104.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 the macos-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 to 1.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 to copy_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 to entry.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 deprecated teamcity_block); added tests for teamcity_message_block

Release 1.6.0

  • Added run_process_return_output which duplicates run_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 than msg because it seems msg 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 logging

  • Logging: add file_logging and file_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 to copy_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 the key and value 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 to teamcity_message_block and changed it so you can pass in name and description.

  • 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 and close_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 under Build configuration ID.

Release 0.1.15

  • call_git and get_git_hash now accept the arg cwd, 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