diff --git a/.github/workflows/test-csharp.yml b/.github/workflows/test-csharp.yml index 34bb195a..f047b35d 100644 --- a/.github/workflows/test-csharp.yml +++ b/.github/workflows/test-csharp.yml @@ -31,17 +31,18 @@ jobs: target: x86_64-unknown-linux-gnu libpath: | **/release/libregorus_ffi.so - # Disabled for now - #- os: macos-latest - # target: aarch64-apple-darwin - # libpath: | - # **/release/libregorus_ffi.dylib + - os: macos-latest + target: aarch64-apple-darwin + libpath: | + **/release/libregorus_ffi.dylib steps: - name: Checkout repository uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4 with: fetch-depth: 0 - uses: ./.github/actions/toolchains/rust + with: + targets: ${{ matrix.runtime.target }} - name: Cache cargo uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2 with: @@ -99,13 +100,15 @@ jobs: run: ls -R ./bindings/csharp/Regorus/tmp - name: Build Regorus nuget via xtask - run: cargo xtask build-csharp --release --clean --artifacts-dir ./bindings/csharp/Regorus/tmp/bindings/ffi/target --enforce-artifacts + run: cargo xtask build-csharp --release --clean --artifacts-dir ./bindings/csharp/Regorus/tmp/bindings/ffi/target --enforce-artifacts --repository-commit ${{ github.sha }} --include-symbols - name: Upload Regorus nuget uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: regorus-nuget - path: bindings/csharp/Regorus/bin/Release/Regorus*.nupkg + path: | + bindings/csharp/Regorus/bin/Release/Regorus*.nupkg + bindings/csharp/Regorus/bin/Release/Regorus*.snupkg if-no-files-found: error retention-days: 1 @@ -122,8 +125,8 @@ jobs: target: x86_64-pc-windows-msvc - os: ubuntu-latest target: x86_64-unknown-linux-gnu - #- os: macos-latest - # target: aarch64-apple-darwin + - os: macos-latest + target: aarch64-apple-darwin steps: - name: Checkout repository uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4 diff --git a/bindings/csharp/Regorus/Regorus.csproj b/bindings/csharp/Regorus/Regorus.csproj index 136a4694..dac5ef62 100644 --- a/bindings/csharp/Regorus/Regorus.csproj +++ b/bindings/csharp/Regorus/Regorus.csproj @@ -11,6 +11,15 @@ 0.9.0 $(VersionSuffix) README.md + MIT AND Apache-2.0 AND BSD-3-Clause + https://github.com/microsoft/regorus + https://github.com/microsoft/regorus + git + Microsoft + Microsoft + rego;policy;engine;authorization;opa;rust + Fast, lightweight Rego interpreter and policy engine for .NET, powered by Rust. + Copyright (c) Microsoft Corporation. @@ -46,10 +55,14 @@ + + + diff --git a/bindings/ffi/Cargo.toml b/bindings/ffi/Cargo.toml index d83f9ca9..5c93b5cc 100644 --- a/bindings/ffi/Cargo.toml +++ b/bindings/ffi/Cargo.toml @@ -4,6 +4,7 @@ name = "regorus-ffi" version = "0.9.0" edition = "2021" +license = "MIT AND Apache-2.0 AND BSD-3-Clause" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] diff --git a/bindings/java/Cargo.toml b/bindings/java/Cargo.toml index e443ee32..d15e6375 100644 --- a/bindings/java/Cargo.toml +++ b/bindings/java/Cargo.toml @@ -6,6 +6,7 @@ version = "0.9.0" edition = "2021" repository = "https://github.com/microsoft/regorus/bindings/java" description = "Java bindings for Regorus - a fast, lightweight Rego interpreter written in Rust" +license = "MIT AND Apache-2.0 AND BSD-3-Clause" keywords = ["interpreter", "opa", "policy-as-code", "rego"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml index 2d2960ea..a1124e63 100644 --- a/bindings/java/pom.xml +++ b/bindings/java/pom.xml @@ -18,7 +18,15 @@ MIT License - https://opensource.org/blog/license/mit + https://opensource.org/licenses/MIT + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + + + BSD 3-Clause License + https://opensource.org/licenses/BSD-3-Clause diff --git a/bindings/python/Cargo.toml b/bindings/python/Cargo.toml index d0e06e0c..0b8bb560 100644 --- a/bindings/python/Cargo.toml +++ b/bindings/python/Cargo.toml @@ -6,6 +6,7 @@ version = "0.9.0" edition = "2021" repository = "https://github.com/microsoft/regorus/bindings/python" description = "Python bindings for Regorus - a fast, lightweight Rego interpreter written in Rust" +license = "MIT AND Apache-2.0 AND BSD-3-Clause" keywords = ["interpreter", "opa", "policy-as-code", "rego"] diff --git a/bindings/python/pyproject.toml b/bindings/python/pyproject.toml index f135e1ec..082e4400 100644 --- a/bindings/python/pyproject.toml +++ b/bindings/python/pyproject.toml @@ -5,7 +5,11 @@ build-backend = "maturin" [project] name = "regorus" requires-python = ">=3.8" +license = { text = "MIT AND Apache-2.0 AND BSD-3-Clause" } classifiers = [ + "License :: OSI Approved :: Apache Software License", + "License :: OSI Approved :: BSD License", + "License :: OSI Approved :: MIT License", "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", diff --git a/bindings/ruby/ext/regorusrb/Cargo.toml b/bindings/ruby/ext/regorusrb/Cargo.toml index e0841bee..5917dbdc 100644 --- a/bindings/ruby/ext/regorusrb/Cargo.toml +++ b/bindings/ruby/ext/regorusrb/Cargo.toml @@ -3,6 +3,7 @@ name = "regorusrb" version = "0.9.0" edition = "2024" description = "Ruby bindings for Regorus - a fast, lightweight Rego interpreter written in Rust" +license = "MIT AND Apache-2.0 AND BSD-3-Clause" publish = false [lib] diff --git a/bindings/ruby/regorusrb.gemspec b/bindings/ruby/regorusrb.gemspec index 92b52c3b..01f2281a 100644 --- a/bindings/ruby/regorusrb.gemspec +++ b/bindings/ruby/regorusrb.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |spec| spec.summary = "Ruby bindings for Regorus - a fast, lightweight Rego interpreter written in Rust" spec.homepage = "https://github.com/microsoft/regorus/blob/main/bindings/ruby" - spec.license = "MIT" + spec.licenses = ["MIT", "Apache-2.0", "BSD-3-Clause"] spec.required_ruby_version = ">= 3.4.2" spec.required_rubygems_version = ">= 3.6.5" diff --git a/bindings/wasm/Cargo.toml b/bindings/wasm/Cargo.toml index ab66dc8e..7cb797a7 100644 --- a/bindings/wasm/Cargo.toml +++ b/bindings/wasm/Cargo.toml @@ -6,6 +6,7 @@ version = "0.9.0" edition = "2021" repository = "https://github.com/microsoft/regorus/bindings/wasm" description = "WASM bindings for Regorus - a fast, lightweight Rego interpreter written in Rust" +license = "MIT AND Apache-2.0 AND BSD-3-Clause" keywords = ["interpreter", "opa", "policy-as-code", "rego"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/xtask/src/tasks/bindings/all.rs b/xtask/src/tasks/bindings/all.rs index 4cbc344e..1352c4d6 100644 --- a/xtask/src/tasks/bindings/all.rs +++ b/xtask/src/tasks/bindings/all.rs @@ -36,6 +36,8 @@ impl BuildAllBindingsCommand { clean: false, artifacts_dir: Some(ffi_dir.clone()), enforce_artifacts: false, + repository_commit: None, + include_symbols: false, })?; if nuget_result.packages.is_empty() { diff --git a/xtask/src/tasks/bindings/csharp.rs b/xtask/src/tasks/bindings/csharp.rs index d9b79557..e12e758f 100644 --- a/xtask/src/tasks/bindings/csharp.rs +++ b/xtask/src/tasks/bindings/csharp.rs @@ -35,6 +35,14 @@ pub struct BuildNugetCommand { /// Require all platform artefacts to exist before packing. #[arg(long)] pub enforce_artifacts: bool, + + /// Include repository commit metadata in the package. + #[arg(long = "repository-commit", value_name = "SHA")] + pub repository_commit: Option, + + /// Build a symbols package (snupkg). + #[arg(long)] + pub include_symbols: bool, } /// Parsed build options shared across tasks that need a NuGet package. @@ -45,6 +53,8 @@ pub struct BuildNugetConfig { pub clean: bool, pub artifacts_dir: Option, pub enforce_artifacts: bool, + pub repository_commit: Option, + pub include_symbols: bool, } /// Result of a NuGet build, including generated artefacts. @@ -86,6 +96,8 @@ pub fn build_nuget_package(config: &BuildNugetConfig) -> Result, + include_symbols: bool, ) -> Result { let project_dir = root.join("bindings/csharp/Regorus"); let artifacts_dir_str = artifacts_dir @@ -140,6 +154,12 @@ fn invoke_dotnet_pack( let profile_arg = format!("/p:RegorusFFIArtifactsProfile={}", profile); let dir_arg = format!("/p:RegorusFFIArtifactsDir={}", artifacts_dir_str); + let repo_commit_arg = repository_commit.map(|sha| format!("/p:RepositoryCommit={}", sha)); + let symbols_args = if include_symbols { + Some(("/p:IncludeSymbols=true", "/p:SymbolPackageFormat=snupkg")) + } else { + None + }; if clean { clean_msbuild_project(&project_dir)?; @@ -169,6 +189,9 @@ fn invoke_dotnet_pack( build.arg("minimal"); build.arg(&dir_arg); build.arg(&profile_arg); + if let Some(arg) = &repo_commit_arg { + build.arg(arg); + } if ignore_missing { build.arg("/p:IgnoreMissingArtifacts=true"); } @@ -182,6 +205,13 @@ fn invoke_dotnet_pack( pack.arg(configuration); pack.arg(&dir_arg); pack.arg(&profile_arg); + if let Some(arg) = &repo_commit_arg { + pack.arg(arg); + } + if let Some((include_symbols_arg, symbols_format_arg)) = symbols_args { + pack.arg(include_symbols_arg); + pack.arg(symbols_format_arg); + } if ignore_missing { pack.arg("/p:IgnoreMissingArtifacts=true"); } @@ -217,6 +247,8 @@ impl BuildNugetCommand { clean: self.clean, artifacts_dir: self.artifacts_dir.clone(), enforce_artifacts: self.enforce_artifacts, + repository_commit: self.repository_commit.clone(), + include_symbols: self.include_symbols, } } } @@ -307,6 +339,8 @@ impl TestCsharpCommand { clean: self.clean, artifacts_dir: self.artifacts_dir.clone(), enforce_artifacts: self.enforce_artifacts, + repository_commit: None, + include_symbols: false, }; let mut packages = find_packages(&package_dir)?;