Skip to content

Commit

Permalink
update main to kit 106.1.0-ea
Browse files Browse the repository at this point in the history
  • Loading branch information
SchultzC committed Sep 19, 2024
1 parent 70f7641 commit 1ef8df0
Show file tree
Hide file tree
Showing 63 changed files with 2,307 additions and 703 deletions.
86 changes: 86 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [106.1.0] - 2024-09-17

### Added
- Support for containerization of streaming applications and services via `repo package --container`
- Support extension only builds via `repo build`
- Support the ability to launch created containers via `repo launch --container`
- repo_usd tooling dependency
- Support for USD Viewer Template to send scene loading state to client via messaging

### Changed
- Aligned default testing for applications and extensions
- Update and align code formatting/style across templates

### Fixed
- Extra setup extensions appear in standard extension template menu
- "Could not find cgroup memory limit" error during build
- Fixed default manipulator pivot back to "bounding box base" in USD Explorer Template


## [106.0.2] - 2024-07-29

### Added
- Support for local streaming configurations for UI based Applications
- Support for multiple setup extensions per application
- Ability to pass arguments to Kit via the 'repo launch` tool.
- USD Composer Application Template and Documentation
- USD Viewer Application Template and Documentation
- USD Composer Setup Extension and Documentation
- USD Viewer Setup Extension and Documentation
- Repository Issue Templates Bug/Question/Feature Request
- Omniverse Product-Specific Terms (PRODUCT_TERMS_OMNIVERSE)
- Support for type ordering in templates.toml
- Metrics Assembler to Kit Base Editor Template to support unit correct assets
- Support for automatic launch if only single `.kit` file is present in `source/apps`

### Changed
- Updated all relevant application templates READMEs to reflect the addition of local streaming configurations
- Updated .gitattributes to ensure LFS is used for all relevant file types
- Updated .gitignore to exclude streaming app event traces
- Updated .vscode/launch.json to better support debugging behavior
- Updated LICENSE to separate NVIDIA License from Omniverse Product-Specific Terms
- Updated top level README.md to reflect additional templates and improve documentation clarity
- Updated Developer Bundle extension availability and corresponding documentation
- Updated public extension registry to reflect current Kit 106 registry location
- Updated templates.toml to support multiple setup extensions and new templates


## [106.0.0] - 2024-06-07

### Added
- Kit Base Editor Application Template and Documentation
- USD Explorer Application Template and Documentation
- USD Explorer Setup Extension and Documentation
- Kit Service Template and Documentation
- Simple Python Extension Template and Documentation
- Simple C++ Extension Template and Documentation
- Python UI Extension Template and Documentation
- Template configuration file (templates.toml)
- Added local `repo launch` tool for launching applications and fat packages directly
- Added local `repo package` functionality to improve package naming
- Omniverse EULA acceptance to Kit App Template via tooling
- tasks.json for better VSCode support
- SECURITY.md for security policy
- Notice for data collection and use
- Early access Developer Bundle extensions
- Kit App Template related Developer Bundle documentation (developer_bundle_extensions.md)
- Kit App Template related repo tools documentation (kit_app_template_tooling_guide.md)
- Usage and troubleshooting documentation for Kit App Template (usage_and_troubleshooting.md)
- repo_tools.toml to configure local repo tools

### Changed
- Updated repo_kit_template tooling to support Applications and Extensions
- Updated repo_kit_template tooling to allow for application setup extensions
- Updated top level README.md to reflect updated tooling and templates
- Updated LICENSE.md to reflect updated tooling and templates
- Updated .gitattributes to reflect use of templates rather directly from source
- Added configuration to repo.toml to support new tools and templates

### Removed
- Top level build .bat/.sh scripts in favor of using `repo build` directly
- Predefined `define_app` declarations from `premake5.lua` in favor of developer defined applications
- Predefined source/apps in favor of templates for developers to build from
41 changes: 33 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
</p>


**This branch branch is based on Omniverse Kit SDK 106.0**
## :warning: EA Release Information
**This branch is based on Omniverse Kit 106.1 EA. It includes EA versions of the Kit SDK, associated development tools, and templates. For the latest stable release, see the `106` branch.**

## Overview

Expand Down Expand Up @@ -59,21 +60,30 @@ These resources empower developers at all experience levels to fully utilize the
Ensure your system is set up with the following to work with Omniverse Applications and Extensions:

- **Operating System**: Windows 10/11 or Linux (Ubuntu 20.04/22.04 recommended)

- **GPU**: NVIDIA RTX capable GPU (Turing or newer recommended)

- **Driver**: Latest NVIDIA driver compatible with your GPU

- **Internet Access**: Required for downloading the Omniverse Kit SDK, extensions, and tools.

### Required Software Dependencies

- **Git**: For version control and repository management
- **Git LFS**: For managing large files within the repository
- [**Git**](https://git-scm.com/downloads): For version control and repository management

- [**Git LFS**](https://git-lfs.com/): For managing large files within the repository

- **(Windows) Microsoft Visual C++ Redistributable**: Many Windows systems will already have this, but if not, it can be obtained from [latest-supported-vc-redist](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-microsoft-visual-c-redistributable-version)

- **(Linux) build-essentials**: A package that includes `make` and other essential tools for building applications. For Ubuntu, install with `sudo apt-get install build-essential`

### Recommended Software

- **(Linux) Docker**: For containerized development and deployment.
- **VSCode (or your preferred IDE)**: For code editing and development
- [**(Linux) Docker**](https://docs.docker.com/engine/install/ubuntu/): For containerized development and deployment. **Ensure non-root users have Docker permissions.**

- [**(Linux) NVIDIA Container Toolkit**](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html): For GPU-accelerated containerized development and deployment. **Installation and Configuring Docker steps are required.**

- [**VSCode**](https://code.visualstudio.com/download) (or your preferred IDE): For code editing and development


## Repository Structure
Expand Down Expand Up @@ -129,7 +139,7 @@ Run the following command to initiate the configuration wizard:
.\repo.bat template new
```

> **Note:** If this is your first time running the `template new` tool, you'll be prompted to accept the Omniverse Licensing Terms.
> **NOTE:** If this is your first time running the `template new` tool, you'll be prompted to accept the Omniverse Licensing Terms.
Follow the prompt instructions:
- **? Select with arrow keys what you want to create:** Application
Expand Down Expand Up @@ -180,8 +190,23 @@ Initiate your newly created application using:
![Kit Base Editor Image](readme-assets/kit_base_editor.png)


***NOTE:* The initial startup may take 5 to 8 minutes as shaders compile for the first time. After initial shader compilation, startup time will reduce dramatically**
> **NOTE:** The initial startup may take 5 to 8 minutes as shaders compile for the first time. After initial shader compilation, startup time will reduce dramatically
**Launch with Developer Bundle (Alternative):** Instead of running the default launch command, developers might prefer to include the developer bundle for access to developer-specific extensions, such as the Script Editor, Extension Manager, and more.

To launch with the developer bundle, use the `--dev-bundle` or `-d` flag:

**Linux:**
```bash
./repo.sh launch -d
```

**Windows:**
```powershell
.\repo.bat launch -d
```

For more information on the extensions available in the developer bundle, see the [Developer Bundle Extensions](readme-assets/additional-docs/developer_bundle_extensions.md) document.

## Templates

Expand Down Expand Up @@ -246,7 +271,7 @@ To learn more about what data is collected, how we use it and how you can change

- [Usage and Troubleshooting](readme-assets/additional-docs/usage_and_troubleshooting.md)

- [BETA - Developer Bundle Extensions](readme-assets/additional-docs/developer_bundle_extensions.md)
- [Developer Bundle Extensions](readme-assets/additional-docs/developer_bundle_extensions.md)

- [Omniverse Kit SDK Manual](https://docs.omniverse.nvidia.com/kit/docs/kit-manual/latest/index.html)

Expand Down
2 changes: 1 addition & 1 deletion premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ repo_build.prebuild_copy {
{ "%{root}/tools/deps/user.toml", "%{root}/_build/deps/user.toml" },
}

-- Apps: for each app generate batch files and a project based on kit files (e.g. my_name.my_app.kit)
-- Apps: for each app generate batch files and a project based on kit files (e.g. my_name.my_app.kit)
105 changes: 69 additions & 36 deletions readme-assets/additional-docs/kit_app_template_tooling_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ Run the build command before testing or packaging your application to ensure all
```

Other common build options:
- `-c` or `--clean`: Cleans the build directory before building.
- `x` or `--rebuild`: Rebuilds the project from scratch.
- **`-c` or `--clean`:** Cleans the build directory before building.
- **`x` or `--rebuild`:** Rebuilds the project from scratch.

## Launch Tool

Expand All @@ -91,37 +91,49 @@ Select and run a built .kit file from the `source/apps` directory:
.\repo.bat launch
```

Additional launch options:
- `d` or `--dev-bundle`: Launches with a suite of developer tools enabled in UI-based applications.
- `-p` or `--package`: Launches a packaged application from a specified path.
Additional package options:
- **`-d` or `--dev-bundle`:** Launches with a suite of developer tools enabled in UI-based applications.

**Linux:**
```bash
./repo.sh launch -p /path/to/package.zip
```
**Windows:**
```powershell
.\repo.bat launch -p C:\path\to\package.zip
```
- **`-p` or `--package`:** Launches a packaged application from a specified path.

Passing args to launched Kit executable:
You can pass through arguments to your targeted Kit executable by appending `--` to your launch command. Anything after `--` will be passed through to Kit. The following examples will pass the `--clear-cache` flag to Kit.
**Linux:**
```bash
./repo.sh launch -p </path/to/package.zip>
```
**Windows:**
```powershell
.\repo.bat launch -p <C:\path\to\package.zip>
```

**Linux:**
```bash
./repo.sh launch -- --clear-cache
```
**Windows:**
```powershell
.\repo.bat launch -- --clear-cache
```
- **`--container`:** Launches a containerized application (Linux only).

**Linux:**
```bash
./repo.sh launch --container
```
**Windows:**
```powershell
.\repo.bat launch --container
```

- **Passing args to launched Kit executable:**
You can pass through arguments to your targeted Kit executable by appending `--` to your launch command. Any flags added after `--` will be passed through to Kit directly. The following examples will pass the `--clear-cache` flag to Kit.

**Linux:**
```bash
./repo.sh launch -- --clear-cache
```
**Windows:**
```powershell
.\repo.bat launch -- --clear-cache
```

## Test Tool

**Command:** `./repo.sh test` or `.\repo.bat test`

### Purpose
The test tool facilitates the execution of automated tests on your applications and extensions to help ensure their functionality and stability.
The test tooling facilitates the execution of automated tests on your applications and extensions to help ensure their functionality and stability. Applications configurations (`.kit` files) are tested to ensure they can startup and shutdown without issue. However, the tests written within the extensions will dictate a majority of application functionality testing. Extension templates provided by the Kit App Template repository include sample tests which can be expanded upon to increase test coverage as needed.

### Usage
Always run a build before testing:
Expand Down Expand Up @@ -154,21 +166,42 @@ Always run a build before packaging to ensure the application is up-to-date:
.\repo.bat package
```

By default, the `package` tool creates a `.zip` file named `kit-app-template` in the `_build/packages` directory. The package name can be specified using the `-n` or `--name` flag:

**Linux:**
```bash
./repo.sh package -n my_package
```
**Windows:**
```powershell
.\repo.bat package -n my_package
```
Additional launch options:
- **`-n` or `--name`:** Specifies the package (or container image) name.

**Linux:**
```bash
./repo.sh package -n <package_name>
```
**Windows:**
```powershell
.\repo.bat package -n <package_name>
```

- **`--thin`:** Creates a thin package that includes only custom extensions and configurations for required registry extensions.

**Linux:**
```bash
./repo.sh package --thin
```
**Windows:**
```powershell
.\repo.bat package --thin
```

- **`--container`:** Packages the application as a container image (Linux only). When using the `--container` flag, the user will be asked to select a `.kit` file to use within the entry point script for the container. This can also be specified without user interaction by passing it appropriate `.kit` file name via the `--target-app` flag.

**Linux:**
```bash
./repo.sh package --container
```
**Windows:**
```powershell
.\repo.bat package --container
```

:warning: **Important Note for Packaging:** Because the packaging operation will package everything within the `source/` directory the package version will need to be set independently of a given `kit` file. **The version is set within the `tools/VERSION.md` file.**

#### Fat and Thin Packages
Packages can be either 'fat' (including all dependencies) or 'thin' (including only custom extensions and configurations for required registry extensions). Thin packages are created using the `--thin` flag. A fat package is created by default to facilitate ease of use and testing, whereas **thin package distribution is required for broader dissemination.**

## Additional Resources
- [Kit App Template Companion Tutorial](https://docs.omniverse.nvidia.com/kit/docs/kit-app-template/latest/docs/intro.html)
24 changes: 23 additions & 1 deletion readme-assets/additional-docs/usage_and_troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,26 @@ The `template new` tooling ensures that any created application is properly conf
For a clean build, use the command `./repo.sh build -c` or `.\repo.bat build -c` to clean the build directory before building.

### Windows Long Path
Due to path length limitations on Windows it is recommended to place repository artifacts in a location closer to the root of the drive. This will help avoid issues with the path lengths when building and packaging applications.
Due to path length limitations on Windows it is recommended to place repository artifacts in a location closer to the root of the drive. This will help avoid issues with the path lengths when building and packaging applications.


### Space Constraints Due to Docker Artifacts
When performing extensive local testing of container images created via `repo package --container`, Docker artifacts can accumulate over time, consuming significant disk space.

`docker system df` can be used to determine disk space utilized by Docker objects. To reclaim space, consider the following options:

1. **Regular Safe Cleanup**:
- **Command**: `docker container prune`
- **Description**: This command removes all stopped containers, which is typically safe and helps manage disk space without affecting images, networks, or volumes.
- **Use**: Recommended for regular maintenance.

2. **Extensive Cleanup (:warning:Use with Caution:warning:)**:
- **Command**: `docker system prune`
- **Description**: This command removes all unused containers, networks, images, and optionally, volumes. It is akin to running a `rm -rf` for Docker resources.
- **Warning**: Use this command carefully, as it will remove many resources indiscriminately. Ensure you review and understand what will be deleted.

For image-specific cleanup, use `docker images` to list all images and `docker rmi <image>` to manually remove those that are no longer needed.


### exFAT Drive Compatibility Limitations
The Kit App Template repository and associated tooling are designed to work with drive formats that support junctions/symlinks. If you are using an exFAT-formatted drive, you may encounter errors during the build process. To resolve this issue, consider using a different drive format such as NTFS.
9 changes: 6 additions & 3 deletions repo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@

set -e

# Set OMNI_REPO_ROOT early so `repo` bootstrapping can target the repository
# root when writing out Python dependencies.
export OMNI_REPO_ROOT="$( cd "$(dirname "$0")" ; pwd -P )"

SCRIPT_DIR=$(dirname ${BASH_SOURCE})
cd "$SCRIPT_DIR"

# Set OMNI_REPO_ROOT early so `repo` bootstrapping can target the repository
# root when writing out Python dependencies.
OMNI_REPO_ROOT="$( cd "$(dirname "$0")" ; pwd -P )" exec "tools/packman/python.sh" tools/repoman/repoman.py "$@"
# Use "exec" to ensure that envrionment variables don't accidentally affect other processes.
exec "tools/packman/python.sh" tools/repoman/repoman.py "$@"
13 changes: 12 additions & 1 deletion repo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,18 @@ import_configs = [
# Repository Name
name = "kit-app-template"

# Disable linbuild until we know what we want to do with this.
[repo_build]
# These are necessary to avoid a repo_build failure where the source/apps directory
# is expected to always exist.
fetch."platform:linux-x86_64".before_pull_commands = [
["mkdir", "--parents", "${root}/source/apps"],
]

fetch."platform:windows-x86_64".before_pull_commands = [
["powershell", "-Command", "New-Item -ItemType Directory -Path ${root}/source/apps -ErrorAction SilentlyContinue", ";", "Write-Host 'Done'"],
]

# Disable linbuild until we have a public image available.
[repo_build.docker]
enabled = false

Expand Down
Loading

0 comments on commit 1ef8df0

Please sign in to comment.