Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
bebdfc8
Add a bash test harness for the notices tooling
abrarshivani Aug 24, 2026
74abe1e
Fix guard regression test to be environment-independent
abrarshivani Aug 24, 2026
056eeb8
Add pure transforms for license URL construction
abrarshivani Aug 24, 2026
9d9e001
Emit module, version and verified license location
abrarshivani Aug 24, 2026
a6c3f1d
Fix emit_index_table swallowing location_cell's fatal error
abrarshivani Aug 24, 2026
4f3e709
Resolve each vendored module to its upstream repository
abrarshivani Aug 24, 2026
2ba12fa
Verify every license URL against the vendored bytes
abrarshivani Aug 24, 2026
0693b17
Check remote_sha's exit status, not just its output
abrarshivani Aug 24, 2026
7d88bc6
Regenerate notices with verified upstream license links
abrarshivani Aug 24, 2026
e327a05
Close the remaining gaps in the third-party notices fail-closed chain
abrarshivani Aug 24, 2026
46006bb
Silence shellcheck source/unused-variable notes in tools/
abrarshivani Aug 24, 2026
edfea23
Recover secondary license files dropped from third-party notices
abrarshivani Aug 25, 2026
41bde62
Rename local variables in third-party notices tooling for clarity
abrarshivani Aug 25, 2026
3c21d80
Trim comments that restate the code they sit above
abrarshivani Aug 25, 2026
cec0b75
Add curated license-identifier override for dual-licensed modules
abrarshivani Aug 25, 2026
9903287
Drop Module column from the third-party notices index table
abrarshivani Aug 25, 2026
dffc54f
Drop the Module bullet from the third-party notices detail sections
abrarshivani Aug 25, 2026
3476d8a
Reflow the notices header sentence and drop its em dashes
abrarshivani Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/third-party-notices-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@
# limitations under the License.

# Regenerates THIRD_PARTY_NOTICES.md and fails if it differs from the committed
# copy, so a dependency change cannot land without refreshed attribution.
# copy, so a dependency change cannot land without refreshed attribution. The
# generator also fails when a license file has no verified URL in
# tools/license-urls.tsv, which catches a bump that skipped
# 'make third-party-notices-urls'. Link rot is caught separately by
# third-party-notices-links.yaml.

name: Third-Party Notices Check

Expand Down
61 changes: 61 additions & 0 deletions .github/workflows/third-party-notices-links.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright NVIDIA CORPORATION
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Re-verifies every license URL against the vendored bytes. Links are proven
# correct when written, but upstream can retag, rename or archive a repository
# afterwards, and no offline gate can see that. This runs on a schedule rather
# than per pull request so link rot does not block unrelated work.

name: Third-Party Notices Link Check

on:
schedule:
- cron: '0 6 * * 1'
workflow_dispatch:

permissions:
contents: read

jobs:
verify-links:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Checkout code
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false

- name: Get Golang version
run: |
GOLANG_VERSION=$( grep "GOLANG_VERSION ?=" versions.mk )
echo "GOLANG_VERSION=${GOLANG_VERSION##GOLANG_VERSION ?= }" >> "${GITHUB_ENV}"

- name: Install Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
go-version: ${{ env.GOLANG_VERSION }}

- name: Re-verify every license URL
env:
URLS_OUTPUT: /tmp/license-urls-fresh.tsv
run: make install-tools && bash tools/verify-license-urls.sh

- name: Compare against the committed map
run: |
if ! diff -u <(LC_ALL=C grep -v '^#' tools/license-urls.tsv) \
<(LC_ALL=C grep -v '^#' /tmp/license-urls-fresh.tsv); then
echo "::error::A license URL no longer serves the vendored bytes. Upstream may have retagged or moved."
exit 1
fi
20 changes: 19 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ push-bundle-image: build-bundle-image
CMDS := $(patsubst ./cmd/%/,%,$(sort $(dir $(wildcard ./cmd/*/))))
CMD_TARGETS := $(patsubst %,cmd-%, $(CMDS))

CHECK_TARGETS := lint license-check validate-modules validate-generated-assets
CHECK_TARGETS := lint license-check validate-modules validate-generated-assets test-tools
MAKE_TARGETS := build check coverage cmds $(CMD_TARGETS) $(CHECK_TARGETS)
DOCKER_TARGETS := $(patsubst %,docker-%, $(MAKE_TARGETS))
.PHONY: $(MAKE_TARGETS) $(DOCKER_TARGETS)
Expand Down Expand Up @@ -203,6 +203,24 @@ check-third-party-notices: third-party-notices
@git diff --exit-code -- THIRD_PARTY_NOTICES.md \
|| { echo "ERROR: THIRD_PARTY_NOTICES.md is stale. Run 'make third-party-notices' and commit the change."; exit 1; }

# Needs network. Rarely run: keyed by module, so a version bump does not
# invalidate it. Only a new dependency does.
.PHONY: third-party-notices-repos
third-party-notices-repos:
@bash tools/resolve-module-repos.sh

# Needs network. Every URL is content-verified against the vendored copy before
# it is written, so re-run this whenever a dependency version changes.
.PHONY: third-party-notices-urls
third-party-notices-urls: third-party-notices-repos
@bash tools/verify-license-urls.sh

.PHONY: test-tools
test-tools:
@for t in tools/*_test.sh; do \
bash "$$t" || exit 1; \
done

# Apply go fmt to the codebase
fmt:
go list -f '{{.Dir}}' $(MODULE)/... \
Expand Down
1,632 changes: 1,379 additions & 253 deletions THIRD_PARTY_NOTICES.md

Large diffs are not rendered by default.

Loading
Loading