11# GitHub Actions Workflows
22
3- This repository contains automated workflows for building OpenUSD MinSizeRel binaries on both Linux and Windows platforms.
3+ This repository contains automated workflows for building OpenUSD MinSizeRel binaries on multiple platforms:
4+ - Linux x86_64 and ARM64
5+ - Windows x86_64 and ARM64
6+ - macOS ARM64 (Apple Silicon)
47
5- ## Workflows
8+ ## CI Workflows (Build on every push/PR)
69
7- ### 1. Build OpenUSD MinSizeRel Linux (` build-minsizerel.yml ` )
10+ ### 1. Build OpenUSD MinSizeRel Linux x86_64 (` build-minsizerel.yml ` )
811
912** Triggers:**
1013- Push to ` main ` or ` master ` branch
@@ -33,7 +36,36 @@ cd openusd-minsizerel-linux-x86_64
3336source setup-usd-env.sh
3437```
3538
36- ### 2. Build OpenUSD MinSizeRel Windows (` build-minsizerel-windows.yml ` )
39+ ### 2. Build OpenUSD MinSizeRel Linux ARM64 (` build-minsizerel-linux-arm64.yml ` )
40+
41+ ** Triggers:**
42+ - Push to ` main ` or ` master ` branch
43+ - Pull requests to ` main ` or ` master ` branch
44+ - Manual dispatch via GitHub UI
45+
46+ ** What it does:**
47+ 1 . Sets up Ubuntu ARM64 build environment
48+ 2 . Installs dependencies (cmake, ninja, uv, etc.)
49+ 3 . Clones OpenUSD repository
50+ 4 . Builds TBB library
51+ 5 . Configures and builds OpenUSD in MinSizeRel mode
52+ 6 . Verifies the build
53+ 7 . Packages and uploads artifacts
54+
55+ ** Artifacts:**
56+ - ` openusd-minsizerel-linux-arm64.tar.gz ` - Compressed installation (retained 30 days)
57+ - ` openusd-minsizerel-installation-linux-arm64 ` - Uncompressed directory (retained 7 days)
58+
59+ ** Usage:**
60+ ``` bash
61+ # Download artifact from GitHub Actions run
62+ # Extract and use
63+ tar -xzf openusd-minsizerel-linux-arm64.tar.gz
64+ cd openusd-minsizerel-linux-arm64
65+ source setup-usd-env.sh
66+ ```
67+
68+ ### 3. Build OpenUSD MinSizeRel Windows x86_64 (` build-minsizerel-windows.yml ` )
3769
3870** Triggers:**
3971- Push to ` main ` or ` master ` branch
@@ -62,7 +94,67 @@ cd openusd-minsizerel-windows-x86_64
6294.\setup-usd-env.bat
6395```
6496
65- ### 3. Build and Release Linux (` release.yml ` )
97+ ### 4. Build OpenUSD MinSizeRel Windows ARM64 (` build-minsizerel-windows-arm64.yml ` )
98+
99+ ** Triggers:**
100+ - Push to ` main ` or ` master ` branch
101+ - Pull requests to ` main ` or ` master ` branch
102+ - Manual dispatch via GitHub UI
103+
104+ ** What it does:**
105+ 1 . Sets up Windows ARM64 build environment (Visual Studio 2022)
106+ 2 . Installs dependencies (cmake, ninja, uv)
107+ 3 . Clones OpenUSD repository
108+ 4 . Builds TBB library for ARM64
109+ 5 . Configures and builds OpenUSD in MinSizeRel mode
110+ 6 . Verifies the build
111+ 7 . Packages and uploads artifacts
112+
113+ ** Artifacts:**
114+ - ` openusd-minsizerel-windows-arm64.zip ` - Compressed installation (retained 30 days)
115+ - ` openusd-minsizerel-installation-windows-arm64 ` - Uncompressed directory (retained 7 days)
116+
117+ ** Usage:**
118+ ``` powershell
119+ # Download artifact from GitHub Actions run
120+ # Extract and use
121+ Expand-Archive openusd-minsizerel-windows-arm64.zip
122+ cd openusd-minsizerel-windows-arm64
123+ .\setup-usd-env.bat
124+ ```
125+
126+ ### 5. Build OpenUSD MinSizeRel macOS ARM64 (` build-minsizerel-macos-arm64.yml ` )
127+
128+ ** Triggers:**
129+ - Push to ` main ` or ` master ` branch
130+ - Pull requests to ` main ` or ` master ` branch
131+ - Manual dispatch via GitHub UI
132+
133+ ** What it does:**
134+ 1 . Sets up macOS ARM64 build environment (macOS 14 - M1/M2/M3)
135+ 2 . Installs dependencies (cmake, ninja via Homebrew, uv)
136+ 3 . Clones OpenUSD repository
137+ 4 . Builds TBB library for ARM64
138+ 5 . Configures and builds OpenUSD in MinSizeRel mode
139+ 6 . Verifies the build
140+ 7 . Packages and uploads artifacts
141+
142+ ** Artifacts:**
143+ - ` openusd-minsizerel-macos-arm64.tar.gz ` - Compressed installation (retained 30 days)
144+ - ` openusd-minsizerel-installation-macos-arm64 ` - Uncompressed directory (retained 7 days)
145+
146+ ** Usage:**
147+ ``` bash
148+ # Download artifact from GitHub Actions run
149+ # Extract and use
150+ tar -xzf openusd-minsizerel-macos-arm64.tar.gz
151+ cd openusd-minsizerel-macos-arm64
152+ source setup-usd-env.sh
153+ ```
154+
155+ ## Release Workflows (Triggered by git tags)
156+
157+ ### 6. Build and Release Linux x86_64 (` release.yml ` )
66158
67159** Triggers:**
68160- ** Push a git tag** starting with 'v' (e.g., ` v1.0.0 ` ) - ** Automated release**
@@ -100,7 +192,26 @@ Go to Actions → Build and Release → Run workflow
100192- Check "Create a new release"
101193- Enter release tag (e.g., ` v1.0.0 ` )
102194
103- ### 4. Build and Release Windows (` release-windows.yml ` )
195+ ### 7. Build and Release Linux ARM64 (` release-linux-arm64.yml ` )
196+
197+ ** Triggers:**
198+ - ** Push a git tag** starting with 'v' (e.g., ` v1.0.0 ` ) - ** Automated release**
199+ - GitHub release created
200+ - Manual dispatch with optional release creation
201+
202+ ** What it does:**
203+ 1 . Builds OpenUSD MinSizeRel on Ubuntu ARM64
204+ 2 . Generates build information file
205+ 3 . Creates versioned package
206+ 4 . Calculates SHA256 checksums
207+ 5 . ** Automatically creates a GitHub release** and attaches artifacts
208+
209+ ** Release Artifacts:**
210+ - ` openusd-X.Y.Z-minsizerel-linux-arm64.tar.gz ` - Versioned build
211+ - ` checksums-linux-arm64.txt ` - SHA256 checksums
212+ - ` BUILD_INFO.txt ` - Detailed build information (included in tarball)
213+
214+ ### 8. Build and Release Windows x86_64 (` release-windows.yml ` )
104215
105216** Triggers:**
106217- ** Push a git tag** starting with 'v' (e.g., ` v1.0.0 ` ) - ** Automated release**
@@ -119,17 +230,62 @@ Go to Actions → Build and Release → Run workflow
119230- ` checksums.txt ` - SHA256 checksums
120231- ` BUILD_INFO.txt ` - Detailed build information (included in ZIP)
121232
233+ ### 9. Build and Release Windows ARM64 (` release-windows-arm64.yml ` )
234+
235+ ** Triggers:**
236+ - ** Push a git tag** starting with 'v' (e.g., ` v1.0.0 ` ) - ** Automated release**
237+ - GitHub release created
238+ - Manual dispatch with optional release creation
239+
240+ ** What it does:**
241+ 1 . Builds OpenUSD MinSizeRel on Windows ARM64
242+ 2 . Generates build information file
243+ 3 . Creates versioned package
244+ 4 . Calculates SHA256 checksums
245+ 5 . ** Automatically creates a GitHub release** and attaches artifacts
246+
247+ ** Release Artifacts:**
248+ - ` openusd-X.Y.Z-minsizerel-windows-arm64.zip ` - Versioned build
249+ - ` checksums-windows-arm64.txt ` - SHA256 checksums
250+ - ` BUILD_INFO.txt ` - Detailed build information (included in ZIP)
251+
252+ ### 10. Build and Release macOS ARM64 (` release-macos-arm64.yml ` )
253+
254+ ** Triggers:**
255+ - ** Push a git tag** starting with 'v' (e.g., ` v1.0.0 ` ) - ** Automated release**
256+ - GitHub release created
257+ - Manual dispatch with optional release creation
258+
259+ ** What it does:**
260+ 1 . Builds OpenUSD MinSizeRel on macOS ARM64 (M1/M2/M3)
261+ 2 . Generates build information file
262+ 3 . Creates versioned package
263+ 4 . Calculates SHA256 checksums
264+ 5 . ** Automatically creates a GitHub release** and attaches artifacts
265+
266+ ** Release Artifacts:**
267+ - ` openusd-X.Y.Z-minsizerel-macos-arm64.tar.gz ` - Versioned build
268+ - ` checksums-macos-arm64.txt ` - SHA256 checksums
269+ - ` BUILD_INFO.txt ` - Detailed build information (included in tarball)
270+
122271** Creating a Release:**
123272
124- ** Option 1: Automated (Recommended)**
273+ ** Automated (Recommended)**
125274``` bash
126- # Tag and push (same as Linux - both workflows run in parallel)
275+ # Tag and push - ALL 5 platform workflows run in parallel
127276git tag v1.0.0
128277git push origin v1.0.0
129278```
130279
131- ** Option 2: Manual**
132- Go to Actions → Build and Release (Windows) → Run workflow
280+ This triggers builds for:
281+ - Linux x86_64
282+ - Linux ARM64
283+ - Windows x86_64
284+ - Windows ARM64
285+ - macOS ARM64
286+
287+ ** Manual**
288+ Go to Actions → Select platform workflow → Run workflow
133289- Check "Create a new release"
134290- Enter release tag (e.g., ` v1.0.0 ` )
135291
@@ -140,10 +296,13 @@ All workflows build with:
140296- ** Namespace:** pxr_lte
141297- ** Library Prefix:** lte
142298- ** Monolithic:** ON
143- - ** Library Size:** ~ 45 MB (Linux) / varies (Windows)
299+ - ** Library Size:** ~ 45 MB (Linux x86_64 ) / varies by platform
144300- ** Platforms:**
145- - Linux: Ubuntu latest (currently 22.04)
146- - Windows: Windows Server 2022
301+ - Linux x86_64: Ubuntu latest (currently 22.04)
302+ - Linux ARM64: Ubuntu 24.04 ARM64
303+ - Windows x86_64: Windows Server 2022
304+ - Windows ARM64: Windows Server 2022 ARM64
305+ - macOS ARM64: macOS 14 (Apple Silicon M1/M2/M3)
147306
148307## Environment Requirements
149308
@@ -156,26 +315,37 @@ All workflows build with:
156315- uv (Python package manager)
157316
158317### Windows Workflows Install:
159- - Visual Studio 2022 (MSVC)
318+ - Visual Studio 2022 (MSVC) - configured for x86_64 or ARM64
160319- cmake
161320- ninja (via Chocolatey)
162321- uv (Python package manager)
163322
323+ ### macOS Workflows Install:
324+ - cmake
325+ - ninja (via Homebrew)
326+ - uv (Python package manager)
327+ - Xcode Command Line Tools (automatic)
328+
164329## Build Time
165330
166331Typical build times on GitHub Actions runners:
167- - ** Linux:** ~ 30-45 minutes
168- - ** Windows:** ~ 35-50 minutes
332+ - ** Linux x86_64:** ~ 30-45 minutes
333+ - ** Linux ARM64:** ~ 30-45 minutes
334+ - ** Windows x86_64:** ~ 35-50 minutes
335+ - ** Windows ARM64:** ~ 35-50 minutes
336+ - ** macOS ARM64:** ~ 25-40 minutes
169337
170338## Artifact Usage
171339
172340After downloading an artifact:
173341
174- ### Linux
342+ ### Linux (x86_64 and ARM64)
175343
176344``` bash
177- # Extract
345+ # Extract (use appropriate file for your platform)
178346tar -xzf openusd-* -minsizerel-linux-x86_64.tar.gz
347+ # or
348+ tar -xzf openusd-* -minsizerel-linux-arm64.tar.gz
179349
180350# The extracted directory contains:
181351# - bin/ USD command-line tools
@@ -192,11 +362,13 @@ usdcat --help
192362python -c " from pxr import Usd; print(Usd.GetVersion())"
193363```
194364
195- ### Windows
365+ ### Windows (x86_64 and ARM64)
196366
197367``` powershell
198- # Extract
368+ # Extract (use appropriate file for your platform)
199369Expand-Archive openusd-*-minsizerel-windows-x86_64.zip
370+ # or
371+ Expand-Archive openusd-*-minsizerel-windows-arm64.zip
200372
201373# The extracted directory contains:
202374# - bin/ USD command-line tools (.exe)
@@ -213,13 +385,40 @@ usdcat --help
213385python -c "from pxr import Usd; print(Usd.GetVersion())"
214386```
215387
388+ ### macOS ARM64 (Apple Silicon)
389+
390+ ``` bash
391+ # Extract
392+ tar -xzf openusd-* -minsizerel-macos-arm64.tar.gz
393+
394+ # The extracted directory contains:
395+ # - bin/ USD command-line tools
396+ # - lib/ Shared libraries (lteusd_ms.dylib)
397+ # - include/ Header files
398+ # - lib/python/ Python bindings
399+ # - setup-usd-env.sh Environment setup script
400+
401+ # Setup environment
402+ source setup-usd-env.sh
403+
404+ # Verify
405+ usdcat --help
406+ python -c " from pxr import Usd; print(Usd.GetVersion())"
407+ ```
408+
216409## Notes
217410
218- - Artifacts are built for ** Linux x86_64** and ** Windows x86_64**
411+ - Artifacts are built for ** 5 platforms:**
412+ - Linux x86_64
413+ - Linux ARM64
414+ - Windows x86_64
415+ - Windows ARM64
416+ - macOS ARM64 (Apple Silicon M1/M2/M3)
219417- TBB library is included in the distribution
220418- Python version is determined by the GitHub Actions runner (currently Python 3.10+)
221419- The build excludes imaging, MaterialX, OpenVDB, and other optional features
222420- ` .pyc ` files and ` __pycache__ ` directories are excluded from artifacts
421+ - macOS builds use ` DYLD_LIBRARY_PATH ` instead of ` LD_LIBRARY_PATH `
223422
224423## Customization
225424
0 commit comments