From 8a723aa7363e89f848042f79f58d05b4e8d8f859 Mon Sep 17 00:00:00 2001 From: frathe Date: Mon, 21 Sep 2026 21:00:33 +0200 Subject: [PATCH 1/2] Add embedded license viewer and AVIF notice guards --- .github/workflows/ci.yml | 3 + AGENTS.md | 2 +- ARCHITECTURE.md | 19 +- Makefile | 10 +- THIRD-PARTY-NOTICES.md | 2318 +++++++++++++++++ docs/packaging-inputs.md | 14 +- internal/ui/help/help.go | 12 +- internal/ui/help/licenses.go | 30 + internal/ui/help/licenses_test.go | 152 ++ internal/ui/help/manual_test.go | 15 +- internal/ui/preferences_wiring_test.go | 2 +- internal/ui/run.go | 6 +- main.go | 8 +- main_test.go | 10 + plans/2026-09-21-avif-license-viewer.md | 171 ++ qodana.yaml | 2 + scripts/avifnotices/README.md | 86 + scripts/avifnotices/licenses/CC0-1.0.txt | 121 + scripts/avifnotices/licenses/aom-LICENSE.txt | 27 + scripts/avifnotices/licenses/aom-PATENTS.txt | 108 + .../licenses/aom-fastfeat-LICENSE.txt | 30 + .../licenses/aom-vector-LICENSE.txt | 19 + .../licenses/cloudlibc-LICENSE.txt | 22 + .../licenses/compiler-rt-CREDITS.txt | 36 + .../licenses/compiler-rt-LICENSE.txt | 311 +++ .../avifnotices/licenses/dav1d-COPYING.txt | 23 + .../avifnotices/licenses/dlmalloc-NOTICE.txt | 9 + .../licenses/gen2brain-avif-LICENSE.txt | 21 + .../avifnotices/licenses/libavif-LICENSE.txt | 387 +++ .../avifnotices/licenses/libyuv-AUTHORS.txt | 4 + .../avifnotices/licenses/libyuv-LICENSE.txt | 29 + .../avifnotices/licenses/libyuv-PATENTS.txt | 24 + .../avifnotices/licenses/musl-COPYRIGHT.txt | 193 ++ .../licenses/musl-arm-exp-NOTICE.txt | 6 + .../licenses/musl-arm-expf-NOTICE.txt | 6 + .../licenses/musl-qsort-NOTICE.txt | 20 + .../avifnotices/licenses/musl-sun-NOTICE.txt | 10 + .../wasi-libc-LICENSE-APACHE-LLVM.txt | 220 ++ .../licenses/wasi-libc-LICENSE-APACHE.txt | 201 ++ .../licenses/wasi-libc-LICENSE-MIT.txt | 23 + .../licenses/wasi-libc-LICENSE.txt | 17 + .../avifnotices/licenses/wazero-LICENSE.txt | 201 ++ .../avifnotices/licenses/wazero-NOTICE.txt | 2 + scripts/avifnotices/main.go | 192 ++ scripts/avifnotices/main_test.go | 135 + scripts/avifnotices/manifest.json | 272 ++ scripts/updaternotices/README.md | 7 + scripts/updaternotices/artifacts.go | 102 +- scripts/updaternotices/main_test.go | 183 +- todos.md | 40 +- translations/de.json | 1 + translations/en.json | 1 + 52 files changed, 5814 insertions(+), 49 deletions(-) create mode 100644 internal/ui/help/licenses.go create mode 100644 internal/ui/help/licenses_test.go create mode 100644 plans/2026-09-21-avif-license-viewer.md create mode 100644 scripts/avifnotices/README.md create mode 100644 scripts/avifnotices/licenses/CC0-1.0.txt create mode 100644 scripts/avifnotices/licenses/aom-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/aom-PATENTS.txt create mode 100644 scripts/avifnotices/licenses/aom-fastfeat-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/aom-vector-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/cloudlibc-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/compiler-rt-CREDITS.txt create mode 100644 scripts/avifnotices/licenses/compiler-rt-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/dav1d-COPYING.txt create mode 100644 scripts/avifnotices/licenses/dlmalloc-NOTICE.txt create mode 100644 scripts/avifnotices/licenses/gen2brain-avif-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/libavif-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/libyuv-AUTHORS.txt create mode 100644 scripts/avifnotices/licenses/libyuv-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/libyuv-PATENTS.txt create mode 100644 scripts/avifnotices/licenses/musl-COPYRIGHT.txt create mode 100644 scripts/avifnotices/licenses/musl-arm-exp-NOTICE.txt create mode 100644 scripts/avifnotices/licenses/musl-arm-expf-NOTICE.txt create mode 100644 scripts/avifnotices/licenses/musl-qsort-NOTICE.txt create mode 100644 scripts/avifnotices/licenses/musl-sun-NOTICE.txt create mode 100644 scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE-LLVM.txt create mode 100644 scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE.txt create mode 100644 scripts/avifnotices/licenses/wasi-libc-LICENSE-MIT.txt create mode 100644 scripts/avifnotices/licenses/wasi-libc-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/wazero-LICENSE.txt create mode 100644 scripts/avifnotices/licenses/wazero-NOTICE.txt create mode 100644 scripts/avifnotices/main.go create mode 100644 scripts/avifnotices/main_test.go create mode 100644 scripts/avifnotices/manifest.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d86207d9..b539002c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,6 +57,9 @@ jobs: - name: Check updater dependency notices run: make check-updater-notices + - name: Check AVIF payload and dependency notices + run: make check-avif-notices + - name: Install Linux GUI build dependencies run: | sudo apt-get update diff --git a/AGENTS.md b/AGENTS.md index f51d6db5..4ab9e67a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -109,7 +109,7 @@ precedence over its default handoff procedure. ## Project Conventions - Prefer code that makes its intent clear to human readers over terse shorthand where possible. For example, write byte sizes as `256 * 1024 * 1024` (or `256 * MiB` with a named unit) instead of `256 << 20`. -- Check the license and shipped dependency closure before selecting or upgrading a dependency, including native runtimes and model assets. Record the exact source/version, distribution obligations, and notice delivery in the implementation plan before calling the feature release-ready; unchanged dependencies still carry obligations. +- Check the license and shipped dependency closure before selecting or upgrading a dependency, including native runtimes and model assets. Record the exact source/version, distribution obligations, and notice delivery in the implementation plan before calling the feature release-ready; unchanged dependencies still carry obligations. AVIF, ONNX and other bundled native/WASM changes must include corresponding third-party notice updates in the same change. Follow [the notice checks](scripts/avifnotices/README.md) for AVIF payload/source review; retain upstream ONNX license/notices alongside its runtime. - Every user-visible string is `lang.L("English text")`; add that exact key to every `translations/*.json` bundle. English is an identity map and `main_test.go` enforces locale parity. - No Unicode arrows in anything the app draws — not in `lang.L` keys or catalogue values, not in the manuals, not even inside backticks. The theme font (NotoSans) has no arrow glyphs, the shaper falls back to a 23-glyph symbol subset with no space, `/` or `-`, and the character *after* the arrow is painted as `�`. Write menu paths and cycles as ASCII `->` and keys as `Left` / `Right` / `Up` / `Down`. Guarded by `TestManualHasNoUnicodeArrows` and `TestTranslationsHaveNoUnicodeArrows`. - Report UI-boundary failures with `fyne.LogError`; viewer-independent packages return errors. Mark intentionally ignored errors explicitly (`_ =` or `_, _ =`) so IDE/`errcheck` inspections see intent. diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index e538e288..afbbcd9a 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -15,8 +15,9 @@ subprocess mode before desktop startup, calls `openwith.Install` (first statement after that, see `internal/openwith`), skips GitHub-update predecessor cleanup for Store-managed builds and explicit Explorer trials, asks `launch.Options.ApplicationID` to validate and select the app identity before building the `fyne.App`, loads embedded -`translations/*.json`, converts CLI paths to URIs (`argsToURIs`), and calls -`ui.Run`. `main_darwin_test.go` asserts the graft landed — this is the only +`translations/*.json`, embeds `THIRD-PARTY-NOTICES.md`, converts CLI paths to URIs +(`argsToURIs`), and passes the immutable notices to `ui.Run`, which supplies +Help's offline Licenses window before startup. `main_darwin_test.go` asserts the graft landed — this is the only test binary that links the Cocoa driver. ### `scripts/historymovie` @@ -262,8 +263,14 @@ Generation uses local `cwebp`; the application keeps its existing image decoders `scripts/updaternotices` reconciles the six-target production updater dependency union with its reviewed `manifest.json`, checks source-file hashes and generates the bounded updater section of `THIRD-PARTY-NOTICES.md`. `artifacts.go` verifies -byte-identical license/privacy/notices inside finished ZIP/tar.gz archives and -both MSIX bundle payloads; CI runs this before release publication/Store upload. +byte-identical license/privacy/notices and the complete notice document embedded +in each executable inside finished ZIP/tar.gz archives and both MSIX bundle +payloads; CI runs this before release publication/Store upload. + +`scripts/avifnotices` checks resolved AVIF/wazero versions and hashes of the +reviewed WASM payload, build recipe and retained source license texts against +`manifest.json`; it generates the AVIF section of `THIRD-PARTY-NOTICES.md` offline. +Its README records the libyuv/WASI source-provenance limits. `packaging/tools.mk` owns reviewed CLI versions and multiarchitecture image digests consumed by Makefile and the release/Store workflows. @@ -564,6 +571,10 @@ The concurrency invariant: see `AGENTS.md` § Concurrency and Fyne. | `internal/ui/widgets/` | Shared UI mechanics: `ChoicePanel` / `ChoiceCard` (+ its optional `ExtraRows` slot above the button row, Up/Down between them, Return offered to the focused row before it commits, and `SetSelectionActive` muting the button ring so only one mark is ever at full strength), `TappableArea`, `Singleton` (+ geometry memory), `NewSizeTracker`, focus-ring style. `gaze.go` extracts the compact single-row atlas and owns the 16-direction/neutral portrait presenter shared by Trane and Finis; callers own artwork preparation, hosting and face-relative coordinates. `circlegesture.go` recognizes timestamped head-relative pointer turns; hosts own independent instances, geometry normalization and lifecycle reset. | Leaf aside from `internal/winpos`. | | `internal/ui/assets/` | Embedded viewer artwork, including `ExplorerIntroPNG` for first use. | Leaf. | +Help's `licenses.go` displays the complete immutable release notice document +supplied by `main.go` through `ui.Run` and `Help.SetLicenses`. Help -> Licenses +opens a scrollable Markdown singleton, with no runtime file reads or downloads. + ### `internal/imaging` Viewer-independent probe → decode → EXIF-orient → cache pipeline (JPEG, PNG, diff --git a/Makefile b/Makefile index a76b206f..4a6ee240 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ COVERAGE_HTML := $(COVERAGE_DIR)/coverage.html .PHONY: all build build-linux-all run fmt fmt-check vet test coverage ci-failures update-test-image enter-test-container test-native test-race test-race-direct test-race-non-ui-direct test-race-ui-direct verify golden tidy clean package-mac warm-fyne-cross-windows warm-fyne-cross-linux package-windows package-windows-store package-windows-debug package-linux package-linux-debug build-all install-tools install-fyne install-fyne-cross install-linux-tools security security-govulncheck security-github bump-version release check-tuf-root sync-tuf-root sync-qodana-test-exclusions check-qodana-test-exclusions check-test-shards check-test-shards-direct help .PHONY: verify-build --skip-local-tests -.PHONY: generate-updater-notices check-updater-notices +.PHONY: generate-updater-notices check-updater-notices generate-avif-notices check-avif-notices all: build @@ -59,6 +59,12 @@ generate-updater-notices: ## Regenerate updater notices from the reviewed source check-updater-notices: ## Check all six updater dependency targets and exact license/NOTICE text go run ./scripts/updaternotices +generate-avif-notices: ## Regenerate AVIF/WASM notices from the reviewed payload/source manifest + go run ./scripts/avifnotices -write + +check-avif-notices: ## Check pinned AVIF/WASM payload, runtime versions and complete notice text + go run ./scripts/avifnotices + .PHONY: generate-tag-vectors check-tag-vectors generate-app-assets check-app-assets generate-tag-vectors: ## Generate exact embedded float32 vectors from the authoritative JSON (offline) go run ./scripts/tagvectors @@ -401,7 +407,7 @@ test-race: ## Run the guarded race partitions concurrently in one Linux/amd64 Do @bash scripts/testshards/docker-race.sh "$(CURDIR)" "$(TEST_IMAGE)" \ "$(TEST_MEMORY_GIB)" "$(TEST_CONTAINER_LABEL)" "$(TEST_LOCALE)" "$(TEST_ARTIFACTS_DIR)" -verify-build: fmt-check check-tuf-root check-qodana-test-exclusions check-tag-vectors check-app-assets check-updater-notices ## Run local verification without the test suite (format, TUF root, generated assets, notices, Qodana exclusions, vet, build) +verify-build: fmt-check check-tuf-root check-qodana-test-exclusions check-tag-vectors check-app-assets check-updater-notices check-avif-notices ## Run local verification without the test suite (format, TUF root, generated assets, notices, Qodana exclusions, vet, build) go vet -tags "$(APP_TAGS)" ./... go build -tags "$(APP_TAGS)" ./... diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 28276c11..27ff14fd 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -7,6 +7,10 @@ The original module inventory was generated from `go.mod`/`go.sum` with license text selected at that time. The updater section below separately reconciles the pinned production updater sources across all six desktop targets; `make check-updater-notices` verifies that inventory and its exact source texts. +The AVIF/WASM section additionally records the embedded payload, codec sources +and WASI/runtime notices; `make check-avif-notices` verifies those reviewed +versions, file hashes and complete texts. Help -> Licenses displays this exact +document embedded in the executable, including in Microsoft Store builds. Test-only dependencies are excluded because they do not ship. The historical `github.com/hashicorp/golang-lru/v2` notices remain below, @@ -1000,6 +1004,2320 @@ SOFTWARE. --- + + +## AVIF and embedded WASM licenses and notices + +PicFetch ships github.com/gen2brain/avif's embedded WASM payload under the nodynamic build policy, using the wazero Go runtime. The complete payload includes the AV1 encoder even when PicFetch only decodes an image. This section retains the codec and runtime notices, including bundled libaom helpers and the AOM patent license. Licenses are also available offline through Help -> Licenses. + +The module's build recipe pins libavif v1.4.2, libaom v3.14.1 and dav1d 1.5.3. The payload's version strings confirm libaom and dav1d. Libyuv's build input is the floating stable branch; its exact historical checkout is not attested. WASM debug paths identify wasisdk://v33.0+m and its compiler identifies LLVM 4434dabb69916856b824f68a64b029c67175e532. The SDK 33 wasi-libc revision below is the corresponding upstream reference; the +m build's local modifications are not documented. These source references describe the reviewed notices, not a reproducible-build claim. The exact shipped payload is bound by the hashes below. + +The complete upstream license aggregates are retained, including notices for optional source components not necessarily linked into this build. Source license texts are not translated. scripts/avifnotices/manifest.json records the reviewed inputs; make check-avif-notices rejects version, payload, source-text or generated-notice drift. + +### Reviewed build input: github.com/gen2brain/avif v0.6.0 + +- `LICENSE` SHA-256: `7ccd0e2f82eac9b87608576a9e559567f1ba049bebe709135eef3a9661bbc96e` +- `lib/Makefile` SHA-256: `1404fe10eb61f9733e967ff1ffea5f02bde13d17fd78038f237ba32346e5c3ec` +- `lib/avif.c` SHA-256: `7e9603ea6d645c64c86857043b3d97102546c7a8a2d701149daec7a96118bfb9` +- `avif_wazero.go` SHA-256: `a60925be429779481cc683b39489194ce6e533d2cf8bde6e1efec3661049df31` +- `lib/avif.wasm` SHA-256: `52181752f8d92a43dfd0ca33179d32fdf7452a669cc1e260f37fabb8319de6bf` +- `lib/avif.wasm.gz` SHA-256: `92ffd604d276359c2df829effc615cd9f286c36ece5761644929e4396eb97360` + +### Reviewed build input: github.com/tetratelabs/wazero v1.12.0 + +- `LICENSE` SHA-256: `c46f033d017a5af71a1de0105ec56c41bd47f81a0bbdf779fffe316336dc7c1f` +- `NOTICE` SHA-256: `e6f0c5c151a3ff1eba8f5930a31ec084ca6d7adda43c8675ab81f7d36af50b4f` + +### github.com/gen2brain/avif + +Version/source revision: v0.6.0 (1fd2a9a51895ca03a192dd49917840794c8a77a1) + +License: MIT + +Source: https://raw.githubusercontent.com/gen2brain/avif/1fd2a9a51895ca03a192dd49917840794c8a77a1/LICENSE + +````text +MIT License + +Copyright (c) 2024 gen2brain + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +```` + +### libavif + +Version/source revision: v1.4.2 (c5240fc79fe5c2407e10afd35f5505ef6333ea49) + +License: BSD-2-Clause and upstream aggregate notices + +The complete license aggregate is from the build recipe's libavif revision. The older LICENSE.libavif copy in the Go module is not used as the source of this notice. + +Source: https://raw.githubusercontent.com/AOMediaCodec/libavif/c5240fc79fe5c2407e10afd35f5505ef6333ea49/LICENSE + +````text +Copyright 2019 Joe Drago. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +Files: src/obu.c + +Copyright © 2018-2019, VideoLAN and dav1d authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +Files: third_party/iccjpeg/* + +In plain English: + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-2013, Thomas G. Lane, Guido Vollbeding. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +The Unix configuration script "configure" was produced with GNU Autoconf. +It is copyright by the Free Software Foundation but is freely distributable. +The same holds for its supporting scripts (config.guess, config.sub, +ltmain.sh). Another support script, install-sh, is copyright by X Consortium +but is also freely distributable. + +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has +been removed altogether, and the GIF writer has been simplified to produce +"uncompressed GIFs". This technique does not use the LZW algorithm; the +resulting GIF files are larger than usual, but are readable by all standard +GIF decoders. + +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + +------------------------------------------------------------------------------ + +Files: contrib/gdk-pixbuf/* + +Copyright 2020 Emmanuel Gil Peyrot. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +Files: android_jni/gradlew* + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +------------------------------------------------------------------------------ + +Files: third_party/libyuv/* + +Copyright 2011 The LibYuv Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +```` + +### dav1d + +Version/source revision: 1.5.3 (b546257f770768b2c88258c533da38b91a06f737) + +License: BSD-2-Clause + +Source: https://raw.githubusercontent.com/videolan/dav1d/b546257f770768b2c88258c533da38b91a06f737/COPYING + +````text +Copyright © 2018-2025, VideoLAN and dav1d authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +```` + +### libaom + +Version/source revision: v3.14.1 (03087864cf4bea6abb0d28f95cf7843511413d8f) + +License: BSD-3-Clause and Alliance for Open Media Patent License 1.0 + +Source: https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/LICENSE + +````text +Copyright (c) 2016, Alliance for Open Media. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +```` + +Source: https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/PATENTS + +````text +Alliance for Open Media Patent License 1.0 + +1. License Terms. + +1.1. Patent License. Subject to the terms and conditions of this License, each + Licensor, on behalf of itself and successors in interest and assigns, + grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, + no-charge, royalty-free, irrevocable (except as expressly stated in this + License) patent license to its Necessary Claims to make, use, sell, offer + for sale, import or distribute any Implementation. + +1.2. Conditions. + +1.2.1. Availability. As a condition to the grant of rights to Licensee to make, + sell, offer for sale, import or distribute an Implementation under + Section 1.1, Licensee must make its Necessary Claims available under + this License, and must reproduce this License with any Implementation + as follows: + + a. For distribution in source code, by including this License in the + root directory of the source code with its Implementation. + + b. For distribution in any other form (including binary, object form, + and/or hardware description code (e.g., HDL, RTL, Gate Level Netlist, + GDSII, etc.)), by including this License in the documentation, legal + notices, and/or other written materials provided with the + Implementation. + +1.2.2. Additional Conditions. This license is directly from Licensor to + Licensee. Licensee acknowledges as a condition of benefiting from it + that no rights from Licensor are received from suppliers, distributors, + or otherwise in connection with this License. + +1.3. Defensive Termination. If any Licensee, its Affiliates, or its agents + initiates patent litigation or files, maintains, or voluntarily + participates in a lawsuit against another entity or any person asserting + that any Implementation infringes Necessary Claims, any patent licenses + granted under this License directly to the Licensee are immediately + terminated as of the date of the initiation of action unless 1) that suit + was in response to a corresponding suit regarding an Implementation first + brought against an initiating entity, or 2) that suit was brought to + enforce the terms of this License (including intervention in a third-party + action by a Licensee). + +1.4. Disclaimers. The Reference Implementation and Specification are provided + "AS IS" and without warranty. The entire risk as to implementing or + otherwise using the Reference Implementation or Specification is assumed + by the implementer and user. Licensor expressly disclaims any warranties + (express, implied, or otherwise), including implied warranties of + merchantability, non-infringement, fitness for a particular purpose, or + title, related to the material. IN NO EVENT WILL LICENSOR BE LIABLE TO + ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF + ACTION OF ANY KIND WITH RESPECT TO THIS LICENSE, WHETHER BASED ON BREACH + OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR + NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +2. Definitions. + +2.1. Affiliate. "Affiliate" means an entity that directly or indirectly + Controls, is Controlled by, or is under common Control of that party. + +2.2. Control. "Control" means direct or indirect control of more than 50% of + the voting power to elect directors of that corporation, or for any other + entity, the power to direct management of such entity. + +2.3. Decoder. "Decoder" means any decoder that conforms fully with all + non-optional portions of the Specification. + +2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can + be decoded by a Decoder only to the extent it produces such a bitstream. + +2.5. Final Deliverable. "Final Deliverable" means the final version of a + deliverable approved by the Alliance for Open Media as a Final + Deliverable. + +2.6. Implementation. "Implementation" means any implementation, including the + Reference Implementation, that is an Encoder and/or a Decoder. An + Implementation also includes components of an Implementation only to the + extent they are used as part of an Implementation. + +2.7. License. "License" means this license. + +2.8. Licensee. "Licensee" means any person or entity who exercises patent + rights granted under this License. + +2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers + for sale, imports or distributes any Implementation, or (ii) a person + or entity that has a licensing obligation to the Implementation as a + result of its membership and/or participation in the Alliance for Open + Media working group that developed the Specification. + +2.10. Necessary Claims. "Necessary Claims" means all claims of patents or + patent applications, (a) that currently or at any time in the future, + are owned or controlled by the Licensor, and (b) (i) would be an + Essential Claim as defined by the W3C Policy as of February 5, 2004 + (https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential) + as if the Specification was a W3C Recommendation; or (ii) are infringed + by the Reference Implementation. + +2.11. Reference Implementation. "Reference Implementation" means an Encoder + and/or Decoder released by the Alliance for Open Media as a Final + Deliverable. + +2.12. Specification. "Specification" means the specification designated by + the Alliance for Open Media as a Final Deliverable for which this + License was issued. + +```` + +### libaom bundled fastfeat and vector + +Version/source revision: libaom v3.14.1 + +License: BSD-3-Clause (fastfeat) and MIT (vector) + +The shipped payload contains aom_fast9_detect and aom_vector_* functions. + +Source: https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/third_party/fastfeat/LICENSE + +````text +Copyright (c) 2006, 2008 Edward Rosten +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + *Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + *Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + *Neither the name of the University of Cambridge nor the names of + its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +```` + +Source: https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/third_party/vector/LICENSE + +````text +The MIT License (MIT) +Copyright (c) 2016 Peter Goldsborough + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +```` + +### libyuv + +Version/source revision: stable; reviewed reference eb6e7bb63738e29efd82ea3cf2a115238a89fa51 + +License: BSD-3-Clause and accompanying Google patent grant + +The build recipe does not pin a commit. This reference is the stable branch tip observed on 2026-09-21, not proof of the historical checkout. The complete PATENTS text below has only a terminal newline added. + +Source: https://chromium.googlesource.com/libyuv/libyuv/+/eb6e7bb63738e29efd82ea3cf2a115238a89fa51/LICENSE + +````text +Copyright 2011 The LibYuv Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +```` + +Source: https://chromium.googlesource.com/libyuv/libyuv/+/eb6e7bb63738e29efd82ea3cf2a115238a89fa51/AUTHORS + +````text +# Names should be added to this file like so: +# Name or Organization + +Google Inc. +```` + +Source: https://chromium.googlesource.com/libyuv/libyuv/+/eb6e7bb63738e29efd82ea3cf2a115238a89fa51/PATENTS + +````text +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the LibYuv code package. + +Google hereby grants to you a perpetual, worldwide, non-exclusive, +no-charge, irrevocable (except as stated in this section) patent +license to make, have made, use, offer to sell, sell, import, +transfer, and otherwise run, modify and propagate the contents of this +implementation of the LibYuv code package, where such license applies +only to those patent claims, both currently owned by Google and +acquired in the future, licensable by Google that are necessarily +infringed by this implementation of the LibYuv code package. This +grant does not include claims that would be infringed only as a +consequence of further modification of this implementation. If you or +your agent or exclusive licensee institute or order or agree to the +institution of patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that this +implementation of the LibYuv code package or any code incorporated +within this implementation of the LibYuv code package constitutes +direct or contributory patent infringement, or inducement of patent +infringement, then any patent rights granted to you under this License +for this implementation of the LibYuv code package shall terminate as +of the date such litigation is filed. +```` + +### WASI libc + +Version/source revision: SDK 33 upstream reference 161b3195fc2558d2b1ba3eb9ffae3b2b47407623 + +License: Apache-2.0 WITH LLVM-exception, Apache-2.0, MIT, and component licenses + +The payload identifies SDK 33.0+m; the upstream SDK pins this wasi-libc revision. All three offered license texts and the component index are retained. Unknown local SDK modifications remain a provenance limitation. + +Source: https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE + +````text +wasi-libc as a whole is multi-licensed under the +Apache License v2.0 with LLVM Exceptions, the Apache License v2.0, and +the MIT License. See the LICENSE-APACHE-LLVM, LICENSE-APACHE and LICENSE-MIT +files, respectively, for details. + +Portions of this software are derived from third-party works covered by +their own licenses: + +dlmalloc/ - CC0; see the notice in malloc.c for details +emmalloc/ - MIT; see the notice in emmalloc.c for details +libc-bottom-half/cloudlibc/ - BSD-2-Clause; see the LICENSE file for details +libc-top-half/musl/ - MIT; see the COPYRIGHT file for details +fts/musl-fts/ - BSD-3-Clause; see the COPYING file for details + +wasi-libc's changes to these files are multi-licensed under the +Apache License v2.0 with LLVM Exceptions, the Apache License v2.0, +the MIT License, and the original licenses of the third-party works. +```` + +Source: https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE-MIT + +````text +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +```` + +Source: https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE-APACHE + +````text + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +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. +```` + +Source: https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE-APACHE-LLVM + +````text + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + +--- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +```` + +### WASI libc: musl and math/sorting notices + +Version/source revision: 161b3195fc2558d2b1ba3eb9ffae3b2b47407623 + +License: MIT and Sun Microsystems permissive notice + +Complete musl copyright terms and the applicable in-source notices are reproduced below. Arm's SPDX MIT references use the full MIT terms reproduced in the WASI libc section. + +Source: https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/COPYRIGHT + +````text +musl as a whole is licensed under the following standard MIT license: + +---------------------------------------------------------------------- +Copyright © 2005-2020 Rich Felker, et al. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +---------------------------------------------------------------------- + +Authors/contributors include: + +A. Wilcox +Ada Worcester +Alex Dowad +Alex Suykov +Alexander Monakov +Andre McCurdy +Andrew Kelley +Anthony G. Basile +Aric Belsito +Arvid Picciani +Bartosz Brachaczek +Benjamin Peterson +Bobby Bingham +Boris Brezillon +Brent Cook +Chris Spiegel +Clément Vasseur +Daniel Micay +Daniel Sabogal +Daurnimator +David Carlier +David Edelsohn +Denys Vlasenko +Dmitry Ivanov +Dmitry V. Levin +Drew DeVault +Emil Renner Berthing +Fangrui Song +Felix Fietkau +Felix Janda +Gianluca Anzolin +Hauke Mehrtens +He X +Hiltjo Posthuma +Isaac Dunham +Jaydeep Patil +Jens Gustedt +Jeremy Huntwork +Jo-Philipp Wich +Joakim Sindholt +John Spencer +Julien Ramseier +Justin Cormack +Kaarle Ritvanen +Khem Raj +Kylie McClain +Leah Neukirchen +Luca Barbato +Luka Perkov +M Farkas-Dyck (Strake) +Mahesh Bodapati +Markus Wichmann +Masanori Ogino +Michael Clark +Michael Forney +Mikhail Kremnyov +Natanael Copa +Nicholas J. Kain +orc +Pascal Cuoq +Patrick Oppenlander +Petr Hosek +Petr Skocik +Pierre Carrier +Reini Urban +Rich Felker +Richard Pennington +Ryan Fairfax +Samuel Holland +Segev Finer +Shiz +sin +Solar Designer +Stefan Kristiansson +Stefan O'Rear +Szabolcs Nagy +Timo Teräs +Trutz Behn +Valentin Ochs +Will Dietz +William Haddon +William Pitcock + +Portions of this software are derived from third-party works licensed +under terms compatible with the above MIT license: + +The TRE regular expression implementation (src/regex/reg* and +src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed +under a 2-clause BSD license (license text in the source files). The +included version has been heavily modified by Rich Felker in 2012, in +the interests of size, simplicity, and namespace cleanliness. + +Much of the math library code (src/math/* and src/complex/*) is +Copyright © 1993,2004 Sun Microsystems or +Copyright © 2003-2011 David Schultz or +Copyright © 2003-2009 Steven G. Kargl or +Copyright © 2003-2009 Bruce D. Evans or +Copyright © 2008 Stephen L. Moshier or +Copyright © 2017-2018 Arm Limited +and labelled as such in comments in the individual source files. All +have been licensed under extremely permissive terms. + +The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008 +The Android Open Source Project and is licensed under a two-clause BSD +license. It was taken from Bionic libc, used on Android. + +The AArch64 memcpy and memset code (src/string/aarch64/*) are +Copyright © 1999-2019, Arm Limited. + +The implementation of DES for crypt (src/crypt/crypt_des.c) is +Copyright © 1994 David Burren. It is licensed under a BSD license. + +The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was +originally written by Solar Designer and placed into the public +domain. The code also comes with a fallback permissive license for use +in jurisdictions that may not recognize the public domain. + +The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 +Valentin Ochs and is licensed under an MIT-style license. + +The x86_64 port was written by Nicholas J. Kain and is licensed under +the standard MIT terms. + +The mips and microblaze ports were originally written by Richard +Pennington for use in the ellcc project. The original code was adapted +by Rich Felker for build system and code conventions during upstream +integration. It is licensed under the standard MIT terms. + +The mips64 port was contributed by Imagination Technologies and is +licensed under the standard MIT terms. + +The powerpc port was also originally written by Richard Pennington, +and later supplemented and integrated by John Spencer. It is licensed +under the standard MIT terms. + +All other files which have no copyright comments are original works +produced specifically for use as part of this library, written either +by Rich Felker, the main author of the library, or by one or more +contibutors listed above. Details on authorship of individual files +can be found in the git version control history of the project. The +omission of copyright and license comments in each file is in the +interest of source tree size. + +In addition, permission is hereby granted for all public header files +(include/* and arch/*/bits/*) and crt files intended to be linked into +applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit +the copyright notice and permission notice otherwise required by the +license, and to use these files without any requirement of +attribution. These files include substantial contributions from: + +Bobby Bingham +John Spencer +Nicholas J. Kain +Rich Felker +Richard Pennington +Stefan Kristiansson +Szabolcs Nagy + +all of whom have explicitly granted such permission. + +This file previously contained text expressing a belief that most of +the files covered by the above exception were sufficiently trivial not +to be subject to copyright, resulting in confusion over whether it +negated the permissions granted in the license. In the spirit of +permissive licensing, and of not having licensing issues being an +obstacle to adoption, that text has been removed. +```` + +Source: https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/math/__cos.c#L2-L11 + +````text +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ +```` + +Source: https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/math/exp.c#L1-L6 + +````text +/* + * Double-precision e^x function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +```` + +Source: https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/math/expf.c#L1-L6 + +````text +/* + * Single-precision e^x function. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ +```` + +Source: https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/stdlib/qsort.c#L1-L20 + +````text +/* Copyright (C) 2011 by Valentin Ochs + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +```` + +### WASI libc: cloudlibc + +Version/source revision: 161b3195fc2558d2b1ba3eb9ffae3b2b47407623 + +License: BSD-2-Clause + +Source: https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-bottom-half/cloudlibc/LICENSE + +````text +Copyright (c) 2015-2017 Nuxi (https://nuxi.nl/) and contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +```` + +### WASI libc: dlmalloc + +Version/source revision: 2.8.6 in wasi-libc 161b3195fc2558d2b1ba3eb9ffae3b2b47407623 + +License: CC0-1.0 / public domain + +Source: https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/dlmalloc/src/malloc.c#L1-L9 + +````text +/* + This is a version (aka dlmalloc) of malloc/free/realloc written by + Doug Lea and released to the public domain, as explained at + http://creativecommons.org/publicdomain/zero/1.0/ Send questions, + comments, complaints, performance data, etc to dl@cs.oswego.edu + +* Version 2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea + Note: There may be an updated version of this malloc obtainable at + ftp://gee.cs.oswego.edu/pub/misc/malloc.c +```` + +Source: https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt + +````text +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. +```` + +### LLVM compiler-rt + +Version/source revision: 4434dabb69916856b824f68a64b029c67175e532 + +License: Apache-2.0 WITH LLVM-exception and legacy runtime license texts + +The WASM producer identifies this LLVM revision, and the payload includes compiler runtime builtins such as __multi3. + +Source: https://raw.githubusercontent.com/llvm/llvm-project/4434dabb69916856b824f68a64b029c67175e532/compiler-rt/LICENSE.TXT + +````text +============================================================================== +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): +============================================================================== + +The compiler_rt library is dual licensed under both the University of Illinois +"BSD-Like" license and the MIT license. As a user of this code you may choose +to use it under either license. As a contributor, you agree to allow your code +to be used under both. + +Full text of the relevant licenses is included below. + +============================================================================== + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== + +Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +```` + +Source: https://raw.githubusercontent.com/llvm/llvm-project/4434dabb69916856b824f68a64b029c67175e532/compiler-rt/CREDITS.TXT + +````text +This file is a partial list of people who have contributed to the LLVM/CompilerRT +project. If you have contributed a patch or made some other contribution to +LLVM/CompilerRT, please submit a patch to this file to add yourself, and it will be +done! + +The list is sorted by surname and formatted to allow easy grepping and +beautification by scripts. The fields are: name (N), email (E), web-address +(W), PGP key ID and fingerprint (P), description (D), and snail-mail address +(S). + +N: Craig van Vliet +E: cvanvliet@auroraux.org +W: http://www.auroraux.org +D: Code style and Readability fixes. + +N: Edward O'Callaghan +E: eocallaghan@auroraux.org +W: http://www.auroraux.org +D: CMake'ify Compiler-RT build system +D: Maintain Solaris & AuroraUX ports of Compiler-RT + +N: Howard Hinnant +E: hhinnant@apple.com +D: Architect and primary author of compiler-rt + +N: Guan-Hong Liu +E: koviankevin@hotmail.com +D: IEEE Quad-precision functions + +N: Joerg Sonnenberger +E: joerg@NetBSD.org +D: Maintains NetBSD port. + +N: Matt Thomas +E: matt@NetBSD.org +D: ARM improvements. +```` + +### github.com/tetratelabs/wazero + +Version/source revision: v1.12.0 + +License: Apache-2.0 + +This Go runtime executes the embedded WASM and implements its WASI host calls. Its complete LICENSE and NOTICE are reproduced. + +Source: https://raw.githubusercontent.com/tetratelabs/wazero/v1.12.0/LICENSE + +````text + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020-2023 wazero authors + + 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. +```` + +Source: https://raw.githubusercontent.com/tetratelabs/wazero/v1.12.0/NOTICE + +````text +wazero +Copyright 2020-2023 wazero authors +```` + + + +--- + ## github.com/godbus/dbus/v5 License: BSD-2-Clause diff --git a/docs/packaging-inputs.md b/docs/packaging-inputs.md index f4e1b189..2cf72163 100644 --- a/docs/packaging-inputs.md +++ b/docs/packaging-inputs.md @@ -6,13 +6,23 @@ Make targets, the release workflow and the Store workflow use these same inputs. Tools install into version-specific, ignored `.tools/` directories; a globally installed CLI does not select the version used by these targets. -App build/run and packaging targets pass Fyne's supported `no_emoji` build tag; +App build/run and packaging targets pass `no_emoji,nodynamic` build tags; Store packages also retain `microsoftstore`. The bundled emoji font is omitted -by project choice. Direct Go app builds should likewise pass `-tags no_emoji`. +by project choice. Direct Go app builds should likewise pass `-tags no_emoji,nodynamic`. Before compilation, Make regenerates exact binary tag vectors from the retained JSON source; CI checks freshness with `make check-tag-vectors`. Neither step changes the signing order or adds a runtime dependency. +`THIRD-PARTY-NOTICES.md` is embedded directly by `main.go` for offline Help -> +Licenses in every distribution, as well as copied beside release artifacts. +`make check-avif-notices` binds the reviewed AVIF/wazero versions, embedded WASM +payload and full retained source notices; `make check-updater-notices` covers +the updater dependency closure. Both are CI and `verify-build` prerequisites. +See [AVIF provenance and upgrade checks](../scripts/avifnotices/README.md). +The final archive check compares the loose notices and the full document inside +each executable, including both MSIX payloads. Run it on the newly built release +artifacts; older binaries cannot establish delivery of the current notices. + The image digests name multiarchitecture indexes, supporting amd64 and arm64 build hosts. An image upgrade must retain both host architectures. The container contains its own Fyne CLI: pinning the host CLI alone does not pin cross-packaging. diff --git a/internal/ui/help/help.go b/internal/ui/help/help.go index 865bcfd3..932816fe 100644 --- a/internal/ui/help/help.go +++ b/internal/ui/help/help.go @@ -17,7 +17,7 @@ import ( const DiscussionsURL = "https://github.com/frathe/picfetch/discussions" -// Help owns the documentation windows (manual, About, What's New). Each is +// Help owns the documentation windows (manual, About, What's New, Licenses). Each is // a widgets.Singleton, so a second request raises the window that's already // open instead of stacking up duplicates. type Help struct { @@ -32,6 +32,8 @@ type Help struct { manualWin widgets.Singleton aboutWin widgets.Singleton whatsNewWin widgets.Singleton + licensesWin widgets.Singleton + licenses string finisWin widgets.Singleton finis *finisView manual *manualView @@ -56,6 +58,9 @@ func New(application fyne.App, title string, art []byte) *Help { } } +// SetLicenses supplies the build's embedded notice document before opening Help. +func (h *Help) SetLicenses(notices string) { h.licenses = notices } + // SetOnSpiral registers the manual secret callback. It is read at invocation, // so replacing it while the manual is open takes effect immediately. func (h *Help) SetOnSpiral(f func()) { h.onSpiral = f } @@ -88,7 +93,7 @@ func (h *Help) ShowDiscussions() { } } -// Menu is the app's Help menu: manual, release notes, community, and About +// Menu is the app's Help menu: manual, release notes, licenses, community, and About // below a separator. Returns the *fyne.Menu // itself rather than a whole *fyne.MainMenu, so internal/ui can combine it // with its own File menu into one bar - composing menus is the app's job, @@ -101,8 +106,9 @@ func (h *Help) Menu() *fyne.Menu { // same menu-hint pattern File uses for Open/Save/Export. manual.Shortcut = &desktop.CustomShortcut{KeyName: fyne.KeyF1} releases := fyne.NewMenuItem(lang.L("Release Notes"), h.ShowReleaseNotes) + licenses := fyne.NewMenuItem(lang.L("Licenses"), h.ShowLicenses) about := fyne.NewMenuItem(lang.L("About"), h.ShowAbout) discussions := fyne.NewMenuItem(lang.L("GitHub Discussions"), h.ShowDiscussions) - return fyne.NewMenu(lang.L("Help"), manual, releases, discussions, fyne.NewMenuItemSeparator(), about) + return fyne.NewMenu(lang.L("Help"), manual, releases, licenses, discussions, fyne.NewMenuItemSeparator(), about) } diff --git a/internal/ui/help/licenses.go b/internal/ui/help/licenses.go new file mode 100644 index 00000000..f0863367 --- /dev/null +++ b/internal/ui/help/licenses.go @@ -0,0 +1,30 @@ +package help + +import ( + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/lang" + "fyne.io/fyne/v2/widget" +) + +// ShowLicenses renders the embedded release document without reading files or +// fetching license texts. Repeated requests raise the same window; Escape closes. +func (h *Help) ShowLicenses() { + if h.stopped { + return + } + h.licensesWin.Show(h.app, lang.L("Licenses"), fyne.NewSize(760, 720), func() fyne.CanvasObject { + text := widget.NewRichTextFromMarkdown(h.licenses) + for i, segment := range text.Segments { + if block, ok := segment.(*widget.CodeBlockSegment); ok { + // Fyne's code-block panels contain horizontal scrollers that + // swallow vertical wheel events. These are license prose, not + // code: keep the verbatim monospace text, but wrap and scroll + // it with the document instead of using a nested viewport. + text.Segments[i] = &widget.TextSegment{Text: block.Text, Style: widget.RichTextStyleCodeBlock} + } + } + text.Wrapping = fyne.TextWrapWord + return container.NewVScroll(text) + }, nil) +} diff --git a/internal/ui/help/licenses_test.go b/internal/ui/help/licenses_test.go new file mode 100644 index 00000000..121c0d3a --- /dev/null +++ b/internal/ui/help/licenses_test.go @@ -0,0 +1,152 @@ +package help + +import ( + "net/http" + "os" + "strings" + "testing" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/lang" + "fyne.io/fyne/v2/test" + "fyne.io/fyne/v2/widget" +) + +func TestLicensesWheelScrollsOverCodeBlocks(t *testing.T) { + h := New(test.NewApp(), "PicFetch", nil) + h.SetLicenses("# Notices\n\n```text\n" + strings.Repeat("Copyright Example. Permission to redistribute.\n", 80) + "```\n") + h.ShowLicenses() + win := h.licensesWin.Window() + defer win.Close() + scroll := win.Content().(*container.Scroll) + for _, target := range []struct { + name string + pos fyne.Position + }{ + {"heading", fyne.NewPos(100, 20)}, + {"code block", fyne.NewPos(100, 120)}, + } { + t.Run(target.name, func(t *testing.T) { + scroll.ScrollToTop() + test.Scroll(win.Canvas(), target.pos, 0, -100) + if scroll.Offset.Y <= 0 { + t.Fatalf("wheel over %s did not scroll the license document", target.name) + } + }) + } + before := scroll.Offset.Y + test.Scroll(win.Canvas(), fyne.NewPos(100, 120), 0, 40) + if scroll.Offset.Y >= before { + t.Fatal("wheel over the code block did not scroll back up") + } +} + +func TestLicensesMenuShowsOfflineMarkdown(t *testing.T) { + app := &discussionLinkApp{App: test.NewApp()} + h := New(app, "PicFetch", nil) + h.SetLicenses("# Third-Party Notices\n\n## Example component\n\n```text\nCopyright Example\nPermission to redistribute.\n```\n") + h.SetImageClient(&http.Client{Transport: releaseImageTransport(func(_ *http.Request) (*http.Response, error) { + t.Fatal("opening Licenses must not fetch remote resources") + return nil, nil + })}) + var action func() + for _, item := range h.Menu().Items { + if item.Label == lang.L("Licenses") { + action = item.Action + } + } + if action == nil { + t.Fatal("Help has no Licenses action") + } + if h.licensesWin.Open() { + t.Fatal("building Help must not open Licenses") + } + t.Cleanup(func() { + if win := h.licensesWin.Window(); win != nil { + win.Close() + } + }) + action() + win := h.licensesWin.Window() + if win == nil || win.Title() != lang.L("Licenses") { + t.Fatal("Licenses must open its own titled window") + } + text := findRichText(win.Content()) + if text == nil || text.Wrapping != fyne.TextWrapWord { + t.Fatal("the notice text must reach the visible surface with word wrapping") + } + var plain strings.Builder + for _, segment := range text.Segments { + plain.WriteString(segment.Textual()) + } + for _, want := range []string{"Third-Party Notices", "Example component", "Copyright Example", "Permission to redistribute."} { + if !strings.Contains(plain.String(), want) { + t.Errorf("Licenses omitted %q", want) + } + } + heading, ok := text.Segments[0].(*widget.TextSegment) + if !ok || heading.Style != widget.RichTextStyleHeading { + t.Fatal("notice headings must be rendered as Markdown") + } + if app.opened != nil { + t.Fatal("opening Licenses must not open the browser") + } + action() + if h.licensesWin.Window() != win { + t.Fatal("reopening Licenses must raise the existing window") + } + win.Canvas().OnTypedKey()(&fyne.KeyEvent{Name: fyne.KeyEscape}) + if h.licensesWin.Open() { + t.Fatal("Escape must close Licenses") + } + action() + if h.licensesWin.Window() == nil || h.licensesWin.Window() == win { + t.Fatal("Licenses must reopen after closing") + } + h.licensesWin.Window().Close() + h.Stop() + action() + if h.licensesWin.Open() { + t.Fatal("Licenses must not reopen after application shutdown") + } +} + +func TestLicensesReleaseDocumentIsReadableOffline(t *testing.T) { + notices, err := os.ReadFile("../../../THIRD-PARTY-NOTICES.md") + if err != nil { + t.Fatal(err) + } + // Markdown images can initiate synchronous URI reads during layout. Keep + // the entire shipped document text-only so opening it requires no I/O. + parsed := widget.NewRichTextFromMarkdown(string(notices)) + walkRichText(parsed.Segments, func(segment widget.RichTextSegment) { + if _, ok := segment.(*widget.ImageSegment); ok { + t.Fatal("release notices must not contain images requiring runtime I/O") + } + }) + h := New(test.NewApp(), "PicFetch", nil) + h.SetLicenses(string(notices)) + h.ShowLicenses() + defer h.licensesWin.Window().Close() + text := findRichText(h.licensesWin.Window().Content()) + if text == nil || len(text.Segments) != len(parsed.Segments) { + t.Fatal("the complete notice document must be present in the window") + } + for i, segment := range parsed.Segments { + if text.Segments[i].Textual() != segment.Textual() { + t.Fatalf("notice content was lost at segment %d", i) + } + if _, ok := segment.(*widget.CodeBlockSegment); ok { + block, ok := text.Segments[i].(*widget.TextSegment) + if !ok || block.Style != widget.RichTextStyleCodeBlock { + t.Fatalf("license block %d must retain its monospace block style", i) + } + } + } + walkRichText(text.Segments, func(segment widget.RichTextSegment) { + if _, ok := segment.(*widget.CodeBlockSegment); ok { + t.Fatal("license blocks must not contain nested scrollers") + } + }) +} diff --git a/internal/ui/help/manual_test.go b/internal/ui/help/manual_test.go index a9b16f8b..9222bac6 100644 --- a/internal/ui/help/manual_test.go +++ b/internal/ui/help/manual_test.go @@ -401,8 +401,8 @@ func TestHelpMenu(t *testing.T) { t.Errorf("expected menu label %q, got %q", "Help", help.Label) } - if got := len(help.Items); got != 5 { - t.Fatalf("expected 5 help items, got %d", got) + if got := len(help.Items); got != 6 { + t.Fatalf("expected 6 help items, got %d", got) } manual := help.Items[0] @@ -428,7 +428,12 @@ func TestHelpMenu(t *testing.T) { t.Fatal("Help does not offer release notes") } - discussions := help.Items[2] + licenses := help.Items[2] + if licenses.Label != "Licenses" || licenses.Action == nil { + t.Fatal("Help does not offer licenses") + } + + discussions := help.Items[3] if discussions.Label != "GitHub Discussions" || discussions.Action == nil { t.Fatal("Help does not offer a GitHub Discussions link") } @@ -439,11 +444,11 @@ func TestHelpMenu(t *testing.T) { if application.opened == nil || application.opened.String() != "https://github.com/frathe/picfetch/discussions" { t.Fatalf("Discussions opened %v; want the public project page without attached user data", application.opened) } - if !help.Items[3].IsSeparator { + if !help.Items[4].IsSeparator { t.Error("expected a separator before About") } - about := help.Items[4] + about := help.Items[5] if about.Label != "About" { t.Errorf("expected item label %q, got %q", "About", about.Label) diff --git a/internal/ui/preferences_wiring_test.go b/internal/ui/preferences_wiring_test.go index 7f122e05..c3a2668f 100644 --- a/internal/ui/preferences_wiring_test.go +++ b/internal/ui/preferences_wiring_test.go @@ -41,7 +41,7 @@ func TestRun_RejectsUnavailableFavoriteStorageBeforeBuildingViewer(t *testing.T) // A nil app makes accidental viewer construction fail instead of starting // workers after the storage failure. - err := Run(nil, nil, launch.Options{}) + err := Run(nil, nil, launch.Options{}, "") if !errors.Is(err, os.ErrNotExist) || !strings.Contains(err.Error(), "create private favorites directory") { t.Fatalf("Run error = %v, want the private-storage creation failure", err) } diff --git a/internal/ui/run.go b/internal/ui/run.go index 17a564eb..1e469ee8 100644 --- a/internal/ui/run.go +++ b/internal/ui/run.go @@ -37,8 +37,9 @@ const ( // file set to open on startup (command-line arguments, resolved to URIs by // the caller); empty for a plain launch. opts carries that launch's flags, // already parsed and validated by internal/launch; the zero value is a -// plain launch that overrides nothing. -func Run(application fyne.App, initial []fyne.URI, opts launch.Options) error { +// plain launch that overrides nothing. notices is this build's embedded +// third-party notice document, supplied by main alongside its other resources. +func Run(application fyne.App, initial []fyne.URI, opts launch.Options, notices string) error { var trial *explorertrial.Session var err error var favoritesDir string @@ -55,6 +56,7 @@ func Run(application fyne.App, initial []fyne.URI, opts launch.Options) error { } } view, window := buildStartupViewer(application) + view.help.SetLicenses(notices) options := view.explorer.Options() options.Trial = trial diff --git a/main.go b/main.go index 052b72be..4fea0c74 100644 --- a/main.go +++ b/main.go @@ -36,6 +36,12 @@ import ( //go:embed translations/*.json var translationsFS embed.FS +// thirdPartyNotices is the same document distributed beside the executable. +// Embedding it keeps Help -> Licenses available offline in every distribution. +// +//go:embed THIRD-PARTY-NOTICES.md +var thirdPartyNotices string + // appID is the stable key Fyne uses for application-scoped preferences and // cache data. Keep it in sync with FyneApp.toml's ID and the Makefile's // PACKAGE_ID (the bundle identifier packaging stamps in); changing it would @@ -150,7 +156,7 @@ func main() { fyne.LogError("failed to load translations", err) } - if err := ui.Run(application, argsToURIs(paths), opts); err != nil { + if err := ui.Run(application, argsToURIs(paths), opts, thirdPartyNotices); err != nil { _, _ = fmt.Fprintln(os.Stderr, err) os.Exit(1) } diff --git a/main_test.go b/main_test.go index 79109dc3..e667581b 100644 --- a/main_test.go +++ b/main_test.go @@ -10,6 +10,16 @@ import ( "unicode" ) +func TestEmbeddedNoticesMatchShippedDocument(t *testing.T) { + want, err := os.ReadFile("THIRD-PARTY-NOTICES.md") + if err != nil { + t.Fatal(err) + } + if len(want) == 0 || thirdPartyNotices != string(want) { + t.Fatal("the executable must embed the exact nonempty release notice document") + } +} + func TestArgsToURIs_ResolvesRelativeToAbsolute(t *testing.T) { uris := argsToURIs([]string{"one.jpg", filepath.Join("sub", "two.png")}) diff --git a/plans/2026-09-21-avif-license-viewer.md b/plans/2026-09-21-avif-license-viewer.md new file mode 100644 index 00000000..9dffc6bc --- /dev/null +++ b/plans/2026-09-21-avif-license-viewer.md @@ -0,0 +1,171 @@ +# AVIF notices and offline Licenses viewer + +Route: Deep (release/Store packaging, resource plumbing and Help UI). +Deliverable: ship the reviewed AVIF/WASM notices, display the release's exact +notice document from Help -> Licenses offline, and reject incomplete packages. + +## Decisions and scope + +- Preserve the user's existing `todos.md` edits; no commits or publication. +- Keep `THIRD-PARTY-NOTICES.md` authoritative. Embed it in package main and + pass the immutable text through `ui.Run` to Help before showing the viewer. +- Reuse Help's singleton window and Markdown renderer. License source text + remains verbatim; translate only the Licenses UI label (English/German). +- Extend the existing final-archive checker, which already checks loose + notices in all six GitHub archives and both Store payloads. +- Pin AVIF's Go module, embedded payload and build recipe, plus reviewed + source notices. A changed payload or dependency must require a fresh review. +- No decoder/runtime upgrades, legal-text paraphrasing, runtime downloads, + updater changes, or release publication. Source provenance uncertainty will + be recorded explicitly; artifact fixtures do not prove native platform runs. + +## Acceptance criteria and agreed test boundaries + +1. AVIF notices contain complete reviewed source licenses, including libaom's + patent grant and relevant WASI/runtime texts. Versions/payload/source hashes + are checked against the resolved Go dependency. + Command: `make check-avif-notices` and focused notice-tool tests. +2. Help's public menu opens a Markdown Licenses window with supplied shipped + text, works without fetching resources, raises an existing window, and + closes/reopens normally. Main embeds the authoritative file. Wheel scrolling + works over headings and license blocks in both directions; license blocks + keep their complete text and monospace style while wrapping with the page. + Command: `go test -tags no_emoji,nodynamic ./internal/ui/help . -run 'TestLicenses|TestEmbeddedNotices|TestTranslations'`. +3. Every release format rejects absent/stale loose notices or embedded notices + in its executable, including each architecture of an MSIX bundle. + Command: `go test ./scripts/updaternotices -run 'TestArtifact|TestEmbedded|TestWorkflow'`. +4. Notice checking runs in CI and local verification. Changed code passes + focused regression tests and GoLand inspections including weak warnings. + Commands: `make verify`, Windows cross-vet, and GoLand file inspections. + +## Tasks and graph + +`T1 provenance -> T2 notice inventory -> T4 final verification` +`T3 viewer ---------------------------> T4` +`T5 artifact guard -------------------> T4` + +### T1 — Source provenance +Owner: T3 read-only scout; Lead assesses conclusions. +Files: module cache/upstream only, no repository edits. +Contract: exact dependency versions, payload hash, source/license provenance, +and explicit limits where build inputs are not pinned upstream. +Verify: independently inspect pinned build recipe, payload and source files. +Budget: 1 spawn, 1 Lead assessment, no full suite. + +### T2 — Notice inventory and upgrade gate +Owner: T0 inline. +Files: notice document; new AVIF inventory/checker beside updater tooling; +Makefile/CI; packaging documentation; Qodana exclusion for any new tests. +Contract: `make check-avif-notices` checks the selected module/payload and +verbatim source text against a reviewed manifest; generation stays offline. +Test: current inputs pass; missing/changed inputs and stale notice text fail. +Budget: 0 spawns, 1 review round, focused tests only. + +### T3 — Embedded offline viewer +Owner: T0 inline. +Files: main.go/main_test.go; internal/ui/run.go; Help implementation/tests; +translations/en.json and de.json; ARCHITECTURE.md. +Contract: main's embedded string reaches Help before window display; Help +provides `SetLicenses(string)` and `ShowLicenses()` with a singleton window. +Test: menu-driven content/lifecycle and embedded-file parity. +Budget: 0 spawns, 1 review round, focused tests only. + +### T5 — Finished archive embedding guard +Owner: delegated implementer (artifact_embedding). +Files: scripts/updaternotices/artifacts.go and main_test.go only. +Contract: existing `-artifact` requires exact notice bytes in the executable +as well as existing loose-file checks. Bound reads; propagate full read errors. +Test: missing/stale embedding on every format/Store architecture; chunk edges. +Verify: `go test ./scripts/updaternotices -run 'TestArtifact|TestEmbedded|TestWorkflow'`. +Budget: 1 spawn, 1 Lead review, focused tests only. + +### T4 — Final verification and record +Owner: T0 inline. +Files: docs, todos.md, this evidence record. +Verify: all acceptance commands, negative guards, diff review, GoLand, full +`make verify` where the native Linux/amd64 daemon requirement can be met. +Budget: 0 spawns; final suite once; unavailable native checks reported honestly. + +## Delegation gate and cost ledger + +Both delegated tasks satisfy G1 (bounded prompt), G2 (source commands or focused +tests), G3 (read-only or two exclusive files), G4 (independent context), G5 +(Lead has not derived their implementation). Rule S does not replace the source +investigation or behavioral archive guard; Rule W: contracts only, no code in +the plan. Lead retains architecture, UI strings, all review and resulting fixes. +The harness has no repository-named Scout/Implementer models; inherited available +agents perform those roles. At most two run concurrently. + +| Task | Spawns budget/actual | Review rounds | Full suite | +| --- | --- | --- | --- | +| T1 | 1/1 | 1 | no | +| T2 | 0/0 | 1 | no | +| T3 | 0/0 | 2 (including reported scrolling defect) | no | +| T5 | 1/1 | 1 | no | +| T4 | 0/0 | 1 | attempted; native-daemon gate blocked | + +## Evidence and remaining limits + +### Implemented + +- Retained 26 full license/notice sources covering the AVIF wrapper, libavif, + dav1d, libaom and bundled helpers, libyuv, WASI libc/compiler support, and + wazero. The manifest pins source hashes and the exact cached Go-module build + recipe/payload. Its checker rejects missing/changed files, module replacements, + dependency drift and stale generated text. No dependencies were upgraded. +- Embedded the canonical document in main and plumbed it to Help before startup. + Added localized Licenses action, Markdown display, singleton/Escape lifecycle, + and full-document/embedded-byte parity tests. No notice fetches occur at runtime. +- Extended final archive checking to require the complete canonical document + inside each executable as well as exact loose files. Tests cover all formats, + both bundled Store architectures, missing/stale content, scan chunk boundaries, + and ZIP CRC/gzip trailer failures. CI/Make and dependency-update docs are wired. + +### Red/green and regression evidence (2026-09-21) + +- Missing embed/menu tests failed before implementation. Notice and artifact + negative fixtures reject changed or missing inputs; focused suites pass. +- Ronin reported that wheel scrolling stopped over code blocks. A direct canvas + wheel test reproduced it twice: the heading scrolled down, the code block did + not. Fyne 2.8's `CodeBlockSegment` contains its own horizontal scroller, which + consumes vertical events. Replacing those top-level notice blocks with native + monospace `TextSegment`s and a single vertical document scroller fixes both + directions without changing any license text. Full-document tests reject + remaining nested code-block scrollers and verify block style/content parity. +- `go test -tags no_emoji,nodynamic -race ./internal/ui/help ./scripts/avifnotices + ./scripts/updaternotices . -count=1`: pass after the scrolling fix (Help 42.181s, + AVIF checker 1.461s, artifact checker 4.394s, main 1.550s). +- Focused root UI menu/Help/startup/Run tests: pass. Windows/amd64 cross-vet: + pass. `make verify-build`: pass (format, generated/TUF/notice checks, vet/build). +- GoLand inspections with `errorsOnly=false`: all 12 changed Go files clean; + both scrolling-fix files inspected again after the fix, also clean. +- Offline license tests passed under macOS `sandbox-exec` with `(deny network*)`. + Rendered top, AOM license/patent section, and document end inspected; regenerated + screenshots after the scrolling fix preserve readable complete text. + +### Package smoke evidence and limits + +An isolated checkout in `/tmp/picfetch-license-package.PtcxEZ` preserved the +user's working-tree build metadata/artifacts. Both macOS architectures, Windows +amd64/arm64, Linux amd64/arm64 and Store Windows amd64/arm64 built successfully. +The six unsigned GitHub-layout archives and both Store executable smoke ZIPs +passed the existing final-artifact checker with the new embedded-byte guard. +Mach-O, PE and ELF architectures were checked; Store build tags/module versions +were checked with `go version -m`. These package builds preceded the scrolling +follow-up; the resource plumbing/document are unchanged, and the subsequent +viewer change is covered by the build/test gates above. Store smoke ZIPs are +not signed MSIX files; synthetic tests cover MSIX/bundle structure separately. + +`make verify` cannot run its complete race suite here: the Docker daemon reports +Linux/aarch64, not the required native Linux/amd64. The isolation policy was not +weakened or bypassed. Native Windows/Linux offline UI runs and signed MSIX/WACK +qualification also remain unverified. + +Upstream provenance still lacks the historical floating libyuv checkout and +attestation of the modified WASI SDK `33.0+m`/libc inputs. Exact reviewed source +references and retained notices are documented in +[`scripts/avifnotices/README.md`](../scripts/avifnotices/README.md); the payload +is pinned, but that cannot prove its historical source closure. These are open +release qualifications in `todos.md`, not a claim of legal certification or +fully attested source correspondence. No commit, push, signing or publication +was authorized or performed. Keep this plan active until acceptance/qualification. diff --git a/qodana.yaml b/qodana.yaml index ac3d6a2b..f656e1b2 100644 --- a/qodana.yaml +++ b/qodana.yaml @@ -267,6 +267,7 @@ exclude: - "internal/ui/help/about_test.go" - "internal/ui/help/easteregg_test.go" - "internal/ui/help/finis_test.go" + - "internal/ui/help/licenses_test.go" - "internal/ui/help/manual_search_test.go" - "internal/ui/help/manual_test.go" - "internal/ui/help/mascot_test.go" @@ -381,6 +382,7 @@ exclude: - "scripts/synctuf/main_test.go" - "scripts/tagvectors/main_test.go" - "scripts/testshards/main_test.go" + - "scripts/avifnotices/main_test.go" - "scripts/updaternotices/main_test.go" - "scripts/wingettag/tag_test.go" - "scripts/wingettag/workflow_test.go" diff --git a/scripts/avifnotices/README.md b/scripts/avifnotices/README.md new file mode 100644 index 00000000..1b0f64c2 --- /dev/null +++ b/scripts/avifnotices/README.md @@ -0,0 +1,86 @@ +# AVIF payload notices + +```sh +make check-avif-notices +make generate-avif-notices +go test -race ./scripts/avifnotices ./scripts/updaternotices +``` + +The checker resolves `github.com/gen2brain/avif` and `github.com/tetratelabs/wazero` +from the current module graph, rejects replacements/version drift, and verifies +the reviewed source/payload hashes in `manifest.json`. It compares the generated +AVIF section with `THIRD-PARTY-NOTICES.md`. Generation is offline once the pinned +Go modules are cached; it reads retained notice sources under `licenses/` and +changes only the bounded AVIF section. It never fetches license texts. + +The original file is embedded by `main.go`, passed through `ui.Run`, and shown +as Markdown by Help -> Licenses. Both languages localize the window/menu title; +the license texts stay verbatim. All release packages also include the original +Markdown file. The existing [artifact checker](../updaternotices/README.md) checks +the loose document and its complete embedded bytes in each executable. + +## Reviewed sources and obligations + +The manifest records each retained file's complete-text hash and upstream URL. +License texts and required copyright/attribution statements are reproduced in +full, including the AOM Patent License 1.0 and libyuv's separate patent grant. +The libyuv PATENTS copy adds only a final newline; its upstream byte hash before +that addition is `4da84211f947c6f9f7dd8fbce513e1522e01833407ae732b8c9a2bbb75fed495`. +The five musl/dlmalloc in-source notices are exact excerpts at the linked line +ranges. Their complete applicable terms are retained: musl MIT/Sun and qsort MIT, +the WASI MIT text for Arm's SPDX-MIT declarations, and CC0 for dlmalloc. + +The AVIF module's Makefile pins libavif 1.4.2, libaom 3.14.1 and dav1d 1.5.3. +The WASM's strings independently identify AOM 3.14.1 and dav1d 1.5.3. The full +libavif license aggregate is fetched from its pinned source, because the older +`lib/LICENSE.libavif` inside the Go module is incomplete for that revision. +Both encoder and decoder code are in the shipped WASM, so the notices also cover +libaom's embedded fastfeat (BSD) and vector (MIT) helpers. The build does not +enable libaom's Highway component. + +WASI source paths identify `wasisdk://v33.0+m`, and the producer section names +LLVM commit `4434dabb69916856b824f68a64b029c67175e532`. The SDK 33 reference pins +wasi-libc `161b3195fc2558d2b1ba3eb9ffae3b2b47407623`; its musl, cloudlibc, dlmalloc +and compiler-rt notices are included, along with every top-level WASI license +alternative. Payload source paths identify the additional Sun/Arm/qsort notices. +The payload contains compiler-rt's `__multi3`. No emmalloc or musl-fts code was +identified. Wazero's Apache-2.0 LICENSE and NOTICE cover the Go runtime/WASI host. + +BSD/MIT attribution and disclaimer delivery is provided by the full embedded +and loose document. Apache texts include their applicable NOTICE/LLVM exceptions. +Patent grants are reproduced without changing or independently evaluating their +terms. The full upstream aggregates also retain optional-source notices; that +does not assert that every upstream tool or example is linked into PicFetch. + +## Provenance limits + +Libyuv is built from a floating `stable` branch, not a commit recorded by the +AVIF module. That branch resolved to `eb6e7bb63738e29efd82ea3cf2a115238a89fa51` +on 2026-09-21. The retained license/patent/author files use that exact reference, +but it does not prove the historical checkout used for the payload. Likewise, +SDK `33.0+m` identifies a modified SDK build; the module supplies no builder +attestation establishing its exact libc checkout or documenting local changes. +Those remain upstream provenance questions before claiming fully qualified +release-source correspondence. The checker binds the exact existing payload; +passing it does not resolve these historical unknowns. + +## Upgrade and release checks + +1. Review the new Go module, selected WASM/runtime path, build recipe and complete + linked source closure, including vendored helpers and runtime components. +2. Obtain exact source revisions or document unresolved provenance. Preserve + original LICENSE, COPYING, NOTICE, PATENTS, attribution and applicable source + headers in `licenses/`. Update the manifest's versions and hashes after review. +3. Run `make generate-avif-notices`; inspect the complete document diff, then + `make check-avif-notices`. Update source evidence and limitations here. +4. Run focused notice/viewer tests and `make verify`. The complete suite requires + a native Linux/amd64 daemon or its native CI runner. +5. On the actual release checkout, run the artifact checker on all six final + GitHub archives and both Store payloads. The release/Store workflows already + do this before publishing/uploading. Verify Help -> Licenses offline on native + platforms; cross-builds and synthetic archive tests are separate evidence. + +AVIF, ONNX and other bundled native/WASM dependency changes must carry their +notice updates in the same change. ONNX runtime package/license selection stays +in `internal/similarity/assets.go` and `assets_package.go`; preserve Microsoft's +LICENSE, ThirdPartyNotices and privacy documents when staging those runtimes. diff --git a/scripts/avifnotices/licenses/CC0-1.0.txt b/scripts/avifnotices/licenses/CC0-1.0.txt new file mode 100644 index 00000000..0e259d42 --- /dev/null +++ b/scripts/avifnotices/licenses/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/scripts/avifnotices/licenses/aom-LICENSE.txt b/scripts/avifnotices/licenses/aom-LICENSE.txt new file mode 100644 index 00000000..fc340c37 --- /dev/null +++ b/scripts/avifnotices/licenses/aom-LICENSE.txt @@ -0,0 +1,27 @@ +Copyright (c) 2016, Alliance for Open Media. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + diff --git a/scripts/avifnotices/licenses/aom-PATENTS.txt b/scripts/avifnotices/licenses/aom-PATENTS.txt new file mode 100644 index 00000000..fc4de9ed --- /dev/null +++ b/scripts/avifnotices/licenses/aom-PATENTS.txt @@ -0,0 +1,108 @@ +Alliance for Open Media Patent License 1.0 + +1. License Terms. + +1.1. Patent License. Subject to the terms and conditions of this License, each + Licensor, on behalf of itself and successors in interest and assigns, + grants Licensee a non-sublicensable, perpetual, worldwide, non-exclusive, + no-charge, royalty-free, irrevocable (except as expressly stated in this + License) patent license to its Necessary Claims to make, use, sell, offer + for sale, import or distribute any Implementation. + +1.2. Conditions. + +1.2.1. Availability. As a condition to the grant of rights to Licensee to make, + sell, offer for sale, import or distribute an Implementation under + Section 1.1, Licensee must make its Necessary Claims available under + this License, and must reproduce this License with any Implementation + as follows: + + a. For distribution in source code, by including this License in the + root directory of the source code with its Implementation. + + b. For distribution in any other form (including binary, object form, + and/or hardware description code (e.g., HDL, RTL, Gate Level Netlist, + GDSII, etc.)), by including this License in the documentation, legal + notices, and/or other written materials provided with the + Implementation. + +1.2.2. Additional Conditions. This license is directly from Licensor to + Licensee. Licensee acknowledges as a condition of benefiting from it + that no rights from Licensor are received from suppliers, distributors, + or otherwise in connection with this License. + +1.3. Defensive Termination. If any Licensee, its Affiliates, or its agents + initiates patent litigation or files, maintains, or voluntarily + participates in a lawsuit against another entity or any person asserting + that any Implementation infringes Necessary Claims, any patent licenses + granted under this License directly to the Licensee are immediately + terminated as of the date of the initiation of action unless 1) that suit + was in response to a corresponding suit regarding an Implementation first + brought against an initiating entity, or 2) that suit was brought to + enforce the terms of this License (including intervention in a third-party + action by a Licensee). + +1.4. Disclaimers. The Reference Implementation and Specification are provided + "AS IS" and without warranty. The entire risk as to implementing or + otherwise using the Reference Implementation or Specification is assumed + by the implementer and user. Licensor expressly disclaims any warranties + (express, implied, or otherwise), including implied warranties of + merchantability, non-infringement, fitness for a particular purpose, or + title, related to the material. IN NO EVENT WILL LICENSOR BE LIABLE TO + ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF + ACTION OF ANY KIND WITH RESPECT TO THIS LICENSE, WHETHER BASED ON BREACH + OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR + NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +2. Definitions. + +2.1. Affiliate. "Affiliate" means an entity that directly or indirectly + Controls, is Controlled by, or is under common Control of that party. + +2.2. Control. "Control" means direct or indirect control of more than 50% of + the voting power to elect directors of that corporation, or for any other + entity, the power to direct management of such entity. + +2.3. Decoder. "Decoder" means any decoder that conforms fully with all + non-optional portions of the Specification. + +2.4. Encoder. "Encoder" means any encoder that produces a bitstream that can + be decoded by a Decoder only to the extent it produces such a bitstream. + +2.5. Final Deliverable. "Final Deliverable" means the final version of a + deliverable approved by the Alliance for Open Media as a Final + Deliverable. + +2.6. Implementation. "Implementation" means any implementation, including the + Reference Implementation, that is an Encoder and/or a Decoder. An + Implementation also includes components of an Implementation only to the + extent they are used as part of an Implementation. + +2.7. License. "License" means this license. + +2.8. Licensee. "Licensee" means any person or entity who exercises patent + rights granted under this License. + +2.9. Licensor. "Licensor" means (i) any Licensee that makes, sells, offers + for sale, imports or distributes any Implementation, or (ii) a person + or entity that has a licensing obligation to the Implementation as a + result of its membership and/or participation in the Alliance for Open + Media working group that developed the Specification. + +2.10. Necessary Claims. "Necessary Claims" means all claims of patents or + patent applications, (a) that currently or at any time in the future, + are owned or controlled by the Licensor, and (b) (i) would be an + Essential Claim as defined by the W3C Policy as of February 5, 2004 + (https://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential) + as if the Specification was a W3C Recommendation; or (ii) are infringed + by the Reference Implementation. + +2.11. Reference Implementation. "Reference Implementation" means an Encoder + and/or Decoder released by the Alliance for Open Media as a Final + Deliverable. + +2.12. Specification. "Specification" means the specification designated by + the Alliance for Open Media as a Final Deliverable for which this + License was issued. + diff --git a/scripts/avifnotices/licenses/aom-fastfeat-LICENSE.txt b/scripts/avifnotices/licenses/aom-fastfeat-LICENSE.txt new file mode 100644 index 00000000..ee48fe68 --- /dev/null +++ b/scripts/avifnotices/licenses/aom-fastfeat-LICENSE.txt @@ -0,0 +1,30 @@ +Copyright (c) 2006, 2008 Edward Rosten +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + + *Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + *Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + *Neither the name of the University of Cambridge nor the names of + its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/scripts/avifnotices/licenses/aom-vector-LICENSE.txt b/scripts/avifnotices/licenses/aom-vector-LICENSE.txt new file mode 100644 index 00000000..afcb9f00 --- /dev/null +++ b/scripts/avifnotices/licenses/aom-vector-LICENSE.txt @@ -0,0 +1,19 @@ +The MIT License (MIT) +Copyright (c) 2016 Peter Goldsborough + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/scripts/avifnotices/licenses/cloudlibc-LICENSE.txt b/scripts/avifnotices/licenses/cloudlibc-LICENSE.txt new file mode 100644 index 00000000..dd33b051 --- /dev/null +++ b/scripts/avifnotices/licenses/cloudlibc-LICENSE.txt @@ -0,0 +1,22 @@ +Copyright (c) 2015-2017 Nuxi (https://nuxi.nl/) and contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. diff --git a/scripts/avifnotices/licenses/compiler-rt-CREDITS.txt b/scripts/avifnotices/licenses/compiler-rt-CREDITS.txt new file mode 100644 index 00000000..6964eba0 --- /dev/null +++ b/scripts/avifnotices/licenses/compiler-rt-CREDITS.txt @@ -0,0 +1,36 @@ +This file is a partial list of people who have contributed to the LLVM/CompilerRT +project. If you have contributed a patch or made some other contribution to +LLVM/CompilerRT, please submit a patch to this file to add yourself, and it will be +done! + +The list is sorted by surname and formatted to allow easy grepping and +beautification by scripts. The fields are: name (N), email (E), web-address +(W), PGP key ID and fingerprint (P), description (D), and snail-mail address +(S). + +N: Craig van Vliet +E: cvanvliet@auroraux.org +W: http://www.auroraux.org +D: Code style and Readability fixes. + +N: Edward O'Callaghan +E: eocallaghan@auroraux.org +W: http://www.auroraux.org +D: CMake'ify Compiler-RT build system +D: Maintain Solaris & AuroraUX ports of Compiler-RT + +N: Howard Hinnant +E: hhinnant@apple.com +D: Architect and primary author of compiler-rt + +N: Guan-Hong Liu +E: koviankevin@hotmail.com +D: IEEE Quad-precision functions + +N: Joerg Sonnenberger +E: joerg@NetBSD.org +D: Maintains NetBSD port. + +N: Matt Thomas +E: matt@NetBSD.org +D: ARM improvements. diff --git a/scripts/avifnotices/licenses/compiler-rt-LICENSE.txt b/scripts/avifnotices/licenses/compiler-rt-LICENSE.txt new file mode 100644 index 00000000..5a79a1b9 --- /dev/null +++ b/scripts/avifnotices/licenses/compiler-rt-LICENSE.txt @@ -0,0 +1,311 @@ +============================================================================== +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): +============================================================================== + +The compiler_rt library is dual licensed under both the University of Illinois +"BSD-Like" license and the MIT license. As a user of this code you may choose +to use it under either license. As a contributor, you agree to allow your code +to be used under both. + +Full text of the relevant licenses is included below. + +============================================================================== + +University of Illinois/NCSA +Open Source License + +Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT + +All rights reserved. + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +============================================================================== + +Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/scripts/avifnotices/licenses/dav1d-COPYING.txt b/scripts/avifnotices/licenses/dav1d-COPYING.txt new file mode 100644 index 00000000..8d4d6418 --- /dev/null +++ b/scripts/avifnotices/licenses/dav1d-COPYING.txt @@ -0,0 +1,23 @@ +Copyright © 2018-2025, VideoLAN and dav1d authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/scripts/avifnotices/licenses/dlmalloc-NOTICE.txt b/scripts/avifnotices/licenses/dlmalloc-NOTICE.txt new file mode 100644 index 00000000..0953d3ce --- /dev/null +++ b/scripts/avifnotices/licenses/dlmalloc-NOTICE.txt @@ -0,0 +1,9 @@ +/* + This is a version (aka dlmalloc) of malloc/free/realloc written by + Doug Lea and released to the public domain, as explained at + http://creativecommons.org/publicdomain/zero/1.0/ Send questions, + comments, complaints, performance data, etc to dl@cs.oswego.edu + +* Version 2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea + Note: There may be an updated version of this malloc obtainable at + ftp://gee.cs.oswego.edu/pub/misc/malloc.c diff --git a/scripts/avifnotices/licenses/gen2brain-avif-LICENSE.txt b/scripts/avifnotices/licenses/gen2brain-avif-LICENSE.txt new file mode 100644 index 00000000..94d43951 --- /dev/null +++ b/scripts/avifnotices/licenses/gen2brain-avif-LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 gen2brain + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/scripts/avifnotices/licenses/libavif-LICENSE.txt b/scripts/avifnotices/licenses/libavif-LICENSE.txt new file mode 100644 index 00000000..350eb9d1 --- /dev/null +++ b/scripts/avifnotices/licenses/libavif-LICENSE.txt @@ -0,0 +1,387 @@ +Copyright 2019 Joe Drago. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +Files: src/obu.c + +Copyright © 2018-2019, VideoLAN and dav1d authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +Files: third_party/iccjpeg/* + +In plain English: + +1. We don't promise that this software works. (But if you find any bugs, + please let us know!) +2. You can use this software for whatever you want. You don't have to pay us. +3. You may not pretend that you wrote this software. If you use it in a + program, you must acknowledge somewhere in your documentation that + you've used the IJG code. + +In legalese: + +The authors make NO WARRANTY or representation, either express or implied, +with respect to this software, its quality, accuracy, merchantability, or +fitness for a particular purpose. This software is provided "AS IS", and you, +its user, assume the entire risk as to its quality and accuracy. + +This software is copyright (C) 1991-2013, Thomas G. Lane, Guido Vollbeding. +All Rights Reserved except as specified below. + +Permission is hereby granted to use, copy, modify, and distribute this +software (or portions thereof) for any purpose, without fee, subject to these +conditions: +(1) If any part of the source code for this software is distributed, then this +README file must be included, with this copyright and no-warranty notice +unaltered; and any additions, deletions, or changes to the original files +must be clearly indicated in accompanying documentation. +(2) If only executable code is distributed, then the accompanying +documentation must state that "this software is based in part on the work of +the Independent JPEG Group". +(3) Permission for use of this software is granted only if the user accepts +full responsibility for any undesirable consequences; the authors accept +NO LIABILITY for damages of any kind. + +These conditions apply to any software derived from or based on the IJG code, +not just to the unmodified library. If you use our work, you ought to +acknowledge us. + +Permission is NOT granted for the use of any IJG author's name or company name +in advertising or publicity relating to this software or products derived from +it. This software may be referred to only as "the Independent JPEG Group's +software". + +We specifically permit and encourage the use of this software as the basis of +commercial products, provided that all warranty or liability claims are +assumed by the product vendor. + + +The Unix configuration script "configure" was produced with GNU Autoconf. +It is copyright by the Free Software Foundation but is freely distributable. +The same holds for its supporting scripts (config.guess, config.sub, +ltmain.sh). Another support script, install-sh, is copyright by X Consortium +but is also freely distributable. + +The IJG distribution formerly included code to read and write GIF files. +To avoid entanglement with the Unisys LZW patent, GIF reading support has +been removed altogether, and the GIF writer has been simplified to produce +"uncompressed GIFs". This technique does not use the LZW algorithm; the +resulting GIF files are larger than usual, but are readable by all standard +GIF decoders. + +We are required to state that + "The Graphics Interchange Format(c) is the Copyright property of + CompuServe Incorporated. GIF(sm) is a Service Mark property of + CompuServe Incorporated." + +------------------------------------------------------------------------------ + +Files: contrib/gdk-pixbuf/* + +Copyright 2020 Emmanuel Gil Peyrot. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ + +Files: android_jni/gradlew* + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +------------------------------------------------------------------------------ + +Files: third_party/libyuv/* + +Copyright 2011 The LibYuv Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/scripts/avifnotices/licenses/libyuv-AUTHORS.txt b/scripts/avifnotices/licenses/libyuv-AUTHORS.txt new file mode 100644 index 00000000..9686ac13 --- /dev/null +++ b/scripts/avifnotices/licenses/libyuv-AUTHORS.txt @@ -0,0 +1,4 @@ +# Names should be added to this file like so: +# Name or Organization + +Google Inc. diff --git a/scripts/avifnotices/licenses/libyuv-LICENSE.txt b/scripts/avifnotices/licenses/libyuv-LICENSE.txt new file mode 100644 index 00000000..c911747a --- /dev/null +++ b/scripts/avifnotices/licenses/libyuv-LICENSE.txt @@ -0,0 +1,29 @@ +Copyright 2011 The LibYuv Project Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/scripts/avifnotices/licenses/libyuv-PATENTS.txt b/scripts/avifnotices/licenses/libyuv-PATENTS.txt new file mode 100644 index 00000000..95630c29 --- /dev/null +++ b/scripts/avifnotices/licenses/libyuv-PATENTS.txt @@ -0,0 +1,24 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the LibYuv code package. + +Google hereby grants to you a perpetual, worldwide, non-exclusive, +no-charge, irrevocable (except as stated in this section) patent +license to make, have made, use, offer to sell, sell, import, +transfer, and otherwise run, modify and propagate the contents of this +implementation of the LibYuv code package, where such license applies +only to those patent claims, both currently owned by Google and +acquired in the future, licensable by Google that are necessarily +infringed by this implementation of the LibYuv code package. This +grant does not include claims that would be infringed only as a +consequence of further modification of this implementation. If you or +your agent or exclusive licensee institute or order or agree to the +institution of patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that this +implementation of the LibYuv code package or any code incorporated +within this implementation of the LibYuv code package constitutes +direct or contributory patent infringement, or inducement of patent +infringement, then any patent rights granted to you under this License +for this implementation of the LibYuv code package shall terminate as +of the date such litigation is filed. diff --git a/scripts/avifnotices/licenses/musl-COPYRIGHT.txt b/scripts/avifnotices/licenses/musl-COPYRIGHT.txt new file mode 100644 index 00000000..c1628e9a --- /dev/null +++ b/scripts/avifnotices/licenses/musl-COPYRIGHT.txt @@ -0,0 +1,193 @@ +musl as a whole is licensed under the following standard MIT license: + +---------------------------------------------------------------------- +Copyright © 2005-2020 Rich Felker, et al. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +---------------------------------------------------------------------- + +Authors/contributors include: + +A. Wilcox +Ada Worcester +Alex Dowad +Alex Suykov +Alexander Monakov +Andre McCurdy +Andrew Kelley +Anthony G. Basile +Aric Belsito +Arvid Picciani +Bartosz Brachaczek +Benjamin Peterson +Bobby Bingham +Boris Brezillon +Brent Cook +Chris Spiegel +Clément Vasseur +Daniel Micay +Daniel Sabogal +Daurnimator +David Carlier +David Edelsohn +Denys Vlasenko +Dmitry Ivanov +Dmitry V. Levin +Drew DeVault +Emil Renner Berthing +Fangrui Song +Felix Fietkau +Felix Janda +Gianluca Anzolin +Hauke Mehrtens +He X +Hiltjo Posthuma +Isaac Dunham +Jaydeep Patil +Jens Gustedt +Jeremy Huntwork +Jo-Philipp Wich +Joakim Sindholt +John Spencer +Julien Ramseier +Justin Cormack +Kaarle Ritvanen +Khem Raj +Kylie McClain +Leah Neukirchen +Luca Barbato +Luka Perkov +M Farkas-Dyck (Strake) +Mahesh Bodapati +Markus Wichmann +Masanori Ogino +Michael Clark +Michael Forney +Mikhail Kremnyov +Natanael Copa +Nicholas J. Kain +orc +Pascal Cuoq +Patrick Oppenlander +Petr Hosek +Petr Skocik +Pierre Carrier +Reini Urban +Rich Felker +Richard Pennington +Ryan Fairfax +Samuel Holland +Segev Finer +Shiz +sin +Solar Designer +Stefan Kristiansson +Stefan O'Rear +Szabolcs Nagy +Timo Teräs +Trutz Behn +Valentin Ochs +Will Dietz +William Haddon +William Pitcock + +Portions of this software are derived from third-party works licensed +under terms compatible with the above MIT license: + +The TRE regular expression implementation (src/regex/reg* and +src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed +under a 2-clause BSD license (license text in the source files). The +included version has been heavily modified by Rich Felker in 2012, in +the interests of size, simplicity, and namespace cleanliness. + +Much of the math library code (src/math/* and src/complex/*) is +Copyright © 1993,2004 Sun Microsystems or +Copyright © 2003-2011 David Schultz or +Copyright © 2003-2009 Steven G. Kargl or +Copyright © 2003-2009 Bruce D. Evans or +Copyright © 2008 Stephen L. Moshier or +Copyright © 2017-2018 Arm Limited +and labelled as such in comments in the individual source files. All +have been licensed under extremely permissive terms. + +The ARM memcpy code (src/string/arm/memcpy.S) is Copyright © 2008 +The Android Open Source Project and is licensed under a two-clause BSD +license. It was taken from Bionic libc, used on Android. + +The AArch64 memcpy and memset code (src/string/aarch64/*) are +Copyright © 1999-2019, Arm Limited. + +The implementation of DES for crypt (src/crypt/crypt_des.c) is +Copyright © 1994 David Burren. It is licensed under a BSD license. + +The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was +originally written by Solar Designer and placed into the public +domain. The code also comes with a fallback permissive license for use +in jurisdictions that may not recognize the public domain. + +The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 +Valentin Ochs and is licensed under an MIT-style license. + +The x86_64 port was written by Nicholas J. Kain and is licensed under +the standard MIT terms. + +The mips and microblaze ports were originally written by Richard +Pennington for use in the ellcc project. The original code was adapted +by Rich Felker for build system and code conventions during upstream +integration. It is licensed under the standard MIT terms. + +The mips64 port was contributed by Imagination Technologies and is +licensed under the standard MIT terms. + +The powerpc port was also originally written by Richard Pennington, +and later supplemented and integrated by John Spencer. It is licensed +under the standard MIT terms. + +All other files which have no copyright comments are original works +produced specifically for use as part of this library, written either +by Rich Felker, the main author of the library, or by one or more +contibutors listed above. Details on authorship of individual files +can be found in the git version control history of the project. The +omission of copyright and license comments in each file is in the +interest of source tree size. + +In addition, permission is hereby granted for all public header files +(include/* and arch/*/bits/*) and crt files intended to be linked into +applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit +the copyright notice and permission notice otherwise required by the +license, and to use these files without any requirement of +attribution. These files include substantial contributions from: + +Bobby Bingham +John Spencer +Nicholas J. Kain +Rich Felker +Richard Pennington +Stefan Kristiansson +Szabolcs Nagy + +all of whom have explicitly granted such permission. + +This file previously contained text expressing a belief that most of +the files covered by the above exception were sufficiently trivial not +to be subject to copyright, resulting in confusion over whether it +negated the permissions granted in the license. In the spirit of +permissive licensing, and of not having licensing issues being an +obstacle to adoption, that text has been removed. diff --git a/scripts/avifnotices/licenses/musl-arm-exp-NOTICE.txt b/scripts/avifnotices/licenses/musl-arm-exp-NOTICE.txt new file mode 100644 index 00000000..8847835f --- /dev/null +++ b/scripts/avifnotices/licenses/musl-arm-exp-NOTICE.txt @@ -0,0 +1,6 @@ +/* + * Double-precision e^x function. + * + * Copyright (c) 2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ diff --git a/scripts/avifnotices/licenses/musl-arm-expf-NOTICE.txt b/scripts/avifnotices/licenses/musl-arm-expf-NOTICE.txt new file mode 100644 index 00000000..f1302329 --- /dev/null +++ b/scripts/avifnotices/licenses/musl-arm-expf-NOTICE.txt @@ -0,0 +1,6 @@ +/* + * Single-precision e^x function. + * + * Copyright (c) 2017-2018, Arm Limited. + * SPDX-License-Identifier: MIT + */ diff --git a/scripts/avifnotices/licenses/musl-qsort-NOTICE.txt b/scripts/avifnotices/licenses/musl-qsort-NOTICE.txt new file mode 100644 index 00000000..1ed3a71f --- /dev/null +++ b/scripts/avifnotices/licenses/musl-qsort-NOTICE.txt @@ -0,0 +1,20 @@ +/* Copyright (C) 2011 by Valentin Ochs + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ diff --git a/scripts/avifnotices/licenses/musl-sun-NOTICE.txt b/scripts/avifnotices/licenses/musl-sun-NOTICE.txt new file mode 100644 index 00000000..087d7700 --- /dev/null +++ b/scripts/avifnotices/licenses/musl-sun-NOTICE.txt @@ -0,0 +1,10 @@ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ diff --git a/scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE-LLVM.txt b/scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE-LLVM.txt new file mode 100644 index 00000000..f9d81955 --- /dev/null +++ b/scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE-LLVM.txt @@ -0,0 +1,220 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + +--- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + diff --git a/scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE.txt b/scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE.txt new file mode 100644 index 00000000..16fe87b0 --- /dev/null +++ b/scripts/avifnotices/licenses/wasi-libc-LICENSE-APACHE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +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. diff --git a/scripts/avifnotices/licenses/wasi-libc-LICENSE-MIT.txt b/scripts/avifnotices/licenses/wasi-libc-LICENSE-MIT.txt new file mode 100644 index 00000000..31aa7938 --- /dev/null +++ b/scripts/avifnotices/licenses/wasi-libc-LICENSE-MIT.txt @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/scripts/avifnotices/licenses/wasi-libc-LICENSE.txt b/scripts/avifnotices/licenses/wasi-libc-LICENSE.txt new file mode 100644 index 00000000..d3e73789 --- /dev/null +++ b/scripts/avifnotices/licenses/wasi-libc-LICENSE.txt @@ -0,0 +1,17 @@ +wasi-libc as a whole is multi-licensed under the +Apache License v2.0 with LLVM Exceptions, the Apache License v2.0, and +the MIT License. See the LICENSE-APACHE-LLVM, LICENSE-APACHE and LICENSE-MIT +files, respectively, for details. + +Portions of this software are derived from third-party works covered by +their own licenses: + +dlmalloc/ - CC0; see the notice in malloc.c for details +emmalloc/ - MIT; see the notice in emmalloc.c for details +libc-bottom-half/cloudlibc/ - BSD-2-Clause; see the LICENSE file for details +libc-top-half/musl/ - MIT; see the COPYRIGHT file for details +fts/musl-fts/ - BSD-3-Clause; see the COPYING file for details + +wasi-libc's changes to these files are multi-licensed under the +Apache License v2.0 with LLVM Exceptions, the Apache License v2.0, +the MIT License, and the original licenses of the third-party works. diff --git a/scripts/avifnotices/licenses/wazero-LICENSE.txt b/scripts/avifnotices/licenses/wazero-LICENSE.txt new file mode 100644 index 00000000..e21d6995 --- /dev/null +++ b/scripts/avifnotices/licenses/wazero-LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020-2023 wazero authors + + 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. diff --git a/scripts/avifnotices/licenses/wazero-NOTICE.txt b/scripts/avifnotices/licenses/wazero-NOTICE.txt new file mode 100644 index 00000000..2f5ea8eb --- /dev/null +++ b/scripts/avifnotices/licenses/wazero-NOTICE.txt @@ -0,0 +1,2 @@ +wazero +Copyright 2020-2023 wazero authors diff --git a/scripts/avifnotices/main.go b/scripts/avifnotices/main.go new file mode 100644 index 00000000..c046d8e9 --- /dev/null +++ b/scripts/avifnotices/main.go @@ -0,0 +1,192 @@ +// Command avifnotices checks the reviewed AVIF payload and its bundled notices. +package main + +import ( + "bytes" + "crypto/sha256" + "encoding/json" + "flag" + "fmt" + "io" + "os" + "os/exec" + "path/filepath" +) + +const ( + sectionStart = "" + sectionEnd = "" +) + +type sourceFile struct { + Path string `json:"path"` + SHA256 string `json:"sha256"` + Source string `json:"source,omitempty"` +} + +type modulePin struct { + Path string `json:"path"` + Version string `json:"version"` + Files []sourceFile `json:"files"` +} + +type component struct { + Name string `json:"name"` + Version string `json:"version"` + License string `json:"license"` + Notes string `json:"notes,omitempty"` + Files []sourceFile `json:"files"` +} + +type manifest struct { + Notes string `json:"notes"` + Modules []modulePin `json:"modules"` + Components []component `json:"components"` +} + +type resolvedModule struct { + Path, Version, Dir string + Replace *resolvedModule +} + +func main() { + root := flag.String("root", ".", "repository root") + write := flag.Bool("write", false, "regenerate the AVIF notice section from reviewed inputs") + flag.Parse() + if err := run(*root, *write); err != nil { + _, _ = fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func run(root string, write bool) error { + cmd := exec.Command("go", "list", "-mod=readonly", "-m", "-json", "github.com/gen2brain/avif", "github.com/tetratelabs/wazero") + cmd.Dir = root + cmd.Env = append(os.Environ(), "GOWORK=off") + var stderr bytes.Buffer + cmd.Stderr = &stderr + data, err := cmd.Output() + if err != nil { + return fmt.Errorf("resolve AVIF modules: %w: %s", err, &stderr) + } + modules := make(map[string]resolvedModule) + decoder := json.NewDecoder(bytes.NewReader(data)) + for { + var module resolvedModule + if err := decoder.Decode(&module); err == io.EOF { + break + } else if err != nil { + return err + } + modules[module.Path] = module + } + return notices(root, write, modules) +} + +func notices(root string, write bool, modules map[string]resolvedModule) error { + data, err := os.ReadFile(filepath.Join(root, "scripts/avifnotices/manifest.json")) + if err != nil { + return err + } + var inventory manifest + if err := json.Unmarshal(data, &inventory); err != nil { + return err + } + generated, err := renderNotices(root, inventory, modules) + if err != nil { + return err + } + path := filepath.Join(root, "THIRD-PARTY-NOTICES.md") + existing, err := os.ReadFile(path) + if err != nil { + return err + } + updated, err := replaceSection(existing, generated) + if err != nil { + return err + } + if bytes.Equal(existing, updated) { + return nil + } + if !write { + return fmt.Errorf("AVIF notices are missing or stale; review scripts/avifnotices/manifest.json, then run make generate-avif-notices") + } + return os.WriteFile(path, updated, 0o644) +} + +func renderNotices(root string, inventory manifest, modules map[string]resolvedModule) ([]byte, error) { + if len(inventory.Modules) == 0 || len(inventory.Modules) != len(modules) || len(inventory.Components) == 0 || inventory.Notes == "" { + return nil, fmt.Errorf("incomplete reviewed AVIF inventory") + } + var out bytes.Buffer + out.WriteString(sectionStart + "\n\n## AVIF and embedded WASM licenses and notices\n\n") + out.WriteString(inventory.Notes + "\n\n") + seen := make(map[string]bool) + for _, pin := range inventory.Modules { + module, ok := modules[pin.Path] + if !ok || seen[pin.Path] || module.Replace != nil || module.Version != pin.Version || len(pin.Files) == 0 { + return nil, fmt.Errorf("AVIF module %s@%s changed, was replaced, or lacks reviewed inputs", pin.Path, pin.Version) + } + seen[pin.Path] = true + _, _ = fmt.Fprintf(&out, "### Reviewed build input: %s %s\n\n", pin.Path, pin.Version) + for _, file := range pin.Files { + if _, err := readVerified(module.Dir, file); err != nil { + return nil, err + } + _, _ = fmt.Fprintf(&out, "- `%s` SHA-256: `%s`\n", file.Path, file.SHA256) + } + out.WriteByte('\n') + } + seen = make(map[string]bool) + for _, entry := range inventory.Components { + if entry.Name == "" || seen[entry.Name] || entry.Version == "" || entry.License == "" || len(entry.Files) == 0 { + return nil, fmt.Errorf("incomplete or duplicate AVIF component %q", entry.Name) + } + seen[entry.Name] = true + _, _ = fmt.Fprintf(&out, "### %s\n\nVersion/source revision: %s\n\nLicense: %s\n\n", entry.Name, entry.Version, entry.License) + if entry.Notes != "" { + out.WriteString(entry.Notes + "\n\n") + } + for _, file := range entry.Files { + if file.Source == "" { + return nil, fmt.Errorf("notice %s lacks source provenance", file.Path) + } + text, err := readVerified(filepath.Join(root, "scripts/avifnotices"), file) + if err != nil { + return nil, err + } + _, _ = fmt.Fprintf(&out, "Source: %s\n\n````text\n", file.Source) + out.Write(text) + if !bytes.HasSuffix(text, []byte("\n")) { + out.WriteByte('\n') + } + out.WriteString("````\n\n") + } + } + out.WriteString(sectionEnd) + return out.Bytes(), nil +} + +func readVerified(dir string, file sourceFile) ([]byte, error) { + if !filepath.IsLocal(file.Path) { + return nil, fmt.Errorf("non-local source path %q", file.Path) + } + data, err := os.ReadFile(filepath.Join(dir, filepath.FromSlash(file.Path))) + if err != nil { + return nil, err + } + if len(data) == 0 || fmt.Sprintf("%x", sha256.Sum256(data)) != file.SHA256 { + return nil, fmt.Errorf("%s changed; review the payload/source license before updating notices", file.Path) + } + return data, nil +} + +func replaceSection(existing, generated []byte) ([]byte, error) { + start, end := []byte(sectionStart), []byte(sectionEnd) + first, last := bytes.Index(existing, start), bytes.Index(existing, end) + if bytes.Count(existing, start) != 1 || bytes.Count(existing, end) != 1 || last < first { + return nil, fmt.Errorf("missing or duplicate AVIF notice section markers") + } + updated := append(bytes.Clone(existing[:first]), generated...) + return append(updated, existing[last+len(end):]...), nil +} diff --git a/scripts/avifnotices/main_test.go b/scripts/avifnotices/main_test.go new file mode 100644 index 00000000..f6cb3f89 --- /dev/null +++ b/scripts/avifnotices/main_test.go @@ -0,0 +1,135 @@ +package main + +import ( + "bytes" + "crypto/sha256" + "encoding/json" + "fmt" + "os" + "path/filepath" + "slices" + "strings" + "testing" +) + +func TestAVIFNoticesMatchReviewedPayload(t *testing.T) { + if err := run(filepath.Join("..", ".."), false); err != nil { + t.Fatal(err) + } +} + +func TestAVIFNoticesRejectUnreviewedInputs(t *testing.T) { + root := t.TempDir() + payload := []byte("reviewed WASM payload") + license := []byte("Copyright Example\nAll conditions and disclaimers.\n") + writeFixture(t, filepath.Join(root, "payload.wasm.gz"), payload) + writeFixture(t, filepath.Join(root, "scripts/avifnotices/licenses/example.txt"), license) + pin := modulePin{Path: "example.org/avif", Version: "v1.0.0", Files: []sourceFile{{Path: "payload.wasm.gz", SHA256: digest(payload)}}} + entry := component{Name: "Example codec", Version: "v1", License: "MIT", Files: []sourceFile{{Path: "licenses/example.txt", SHA256: digest(license), Source: "https://example.org/revision/LICENSE"}}} + modules := map[string]resolvedModule{pin.Path: {Path: pin.Path, Version: pin.Version, Dir: root}} + for _, change := range []string{"valid", "missing pin", "duplicate pin", "version", "replacement", "payload", "missing payload", "missing component", "duplicate component", "missing license", "license bytes", "source provenance", "outside path"} { + t.Run(change, func(t *testing.T) { + candidate := manifest{Notes: "Reviewed fixture", Modules: []modulePin{pin}, Components: []component{entry}} + candidate.Modules[0].Files = slices.Clone(pin.Files) + candidate.Components[0].Files = slices.Clone(entry.Files) + resolved := modules[pin.Path] + switch change { + case "missing pin": + candidate.Modules = nil + case "duplicate pin": + candidate.Modules = append(candidate.Modules, pin) + case "version": + resolved.Version = "v2.0.0" + case "replacement": + resolved.Replace = &resolvedModule{Dir: root} + case "payload": + candidate.Modules[0].Files[0].SHA256 = digest([]byte("different WASM")) + case "missing payload": + candidate.Modules[0].Files[0].Path = "absent.wasm.gz" + case "missing component": + candidate.Components = nil + case "duplicate component": + candidate.Components = append(candidate.Components, entry) + case "missing license": + candidate.Components[0].Files = nil + case "license bytes": + candidate.Components[0].Files[0].SHA256 = digest([]byte("abbreviated terms")) + case "source provenance": + candidate.Components[0].Files[0].Source = "" + case "outside path": + candidate.Components[0].Files[0].Path = "../example.txt" + } + text, err := renderNotices(root, candidate, map[string]resolvedModule{pin.Path: resolved}) + if change != "valid" { + if err == nil { + t.Fatal("accepted unreviewed or incomplete source inventory") + } + return + } + if err != nil || !bytes.Contains(text, license) { + t.Fatalf("complete original license text missing: %v", err) + } + encoded, err := json.Marshal(candidate) + if err != nil { + t.Fatal(err) + } + writeFixture(t, filepath.Join(root, "scripts/avifnotices/manifest.json"), encoded) + path := filepath.Join(root, "THIRD-PARTY-NOTICES.md") + writeFixture(t, path, []byte("other notices before\n"+sectionStart+"\nstale\n"+sectionEnd+"\nother notices after\n")) + if err := notices(root, false, modules); err == nil { + t.Fatal("accepted a stale shipped notice") + } + if err := notices(root, true, modules); err != nil { + t.Fatal(err) + } + if err := notices(root, false, modules); err != nil { + t.Fatalf("regenerated notices fail their own check: %v", err) + } + updated, err := os.ReadFile(path) + if err != nil || !bytes.HasPrefix(updated, []byte("other notices before\n")) || !bytes.HasSuffix(updated, []byte("other notices after\n")) || !bytes.Contains(updated, license) { + t.Fatalf("generation lost surrounding notices or original license text: %v", err) + } + }) + } +} + +func TestAVIFNoticesRejectMissingOrAmbiguousSection(t *testing.T) { + for _, document := range []string{"", sectionStart, sectionEnd + sectionStart, sectionStart + sectionEnd + sectionStart} { + if _, err := replaceSection([]byte(document), []byte("generated")); err == nil { + t.Fatalf("accepted broken notice section %q", document) + } + } +} + +func TestAVIFNoticesRunBeforeBuild(t *testing.T) { + for _, check := range []struct{ path, want string }{ + {"Makefile", "verify-build: "}, + {".github/workflows/ci.yml", "run: make check-avif-notices"}, + } { + data, err := os.ReadFile(filepath.Join("..", "..", check.path)) + if err != nil { + t.Fatal(err) + } + if !strings.Contains(string(data), check.want) { + t.Errorf("%s lacks %q", check.path, check.want) + } + if check.path == "Makefile" { + for line := range strings.SplitSeq(string(data), "\n") { + if strings.HasPrefix(line, check.want) && !strings.Contains(line, " check-avif-notices") { + t.Error("verify-build must require check-avif-notices") + } + } + } + } +} + +func digest(data []byte) string { return fmt.Sprintf("%x", sha256.Sum256(data)) } + +func writeFixture(t *testing.T, path string, data []byte) { + if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(path, data, 0o644); err != nil { + t.Fatal(err) + } +} diff --git a/scripts/avifnotices/manifest.json b/scripts/avifnotices/manifest.json new file mode 100644 index 00000000..2b7e9776 --- /dev/null +++ b/scripts/avifnotices/manifest.json @@ -0,0 +1,272 @@ +{ + "notes": "PicFetch ships github.com/gen2brain/avif's embedded WASM payload under the nodynamic build policy, using the wazero Go runtime. The complete payload includes the AV1 encoder even when PicFetch only decodes an image. This section retains the codec and runtime notices, including bundled libaom helpers and the AOM patent license. Licenses are also available offline through Help -> Licenses.\n\nThe module's build recipe pins libavif v1.4.2, libaom v3.14.1 and dav1d 1.5.3. The payload's version strings confirm libaom and dav1d. Libyuv's build input is the floating stable branch; its exact historical checkout is not attested. WASM debug paths identify wasisdk://v33.0+m and its compiler identifies LLVM 4434dabb69916856b824f68a64b029c67175e532. The SDK 33 wasi-libc revision below is the corresponding upstream reference; the +m build's local modifications are not documented. These source references describe the reviewed notices, not a reproducible-build claim. The exact shipped payload is bound by the hashes below.\n\nThe complete upstream license aggregates are retained, including notices for optional source components not necessarily linked into this build. Source license texts are not translated. scripts/avifnotices/manifest.json records the reviewed inputs; make check-avif-notices rejects version, payload, source-text or generated-notice drift.", + "modules": [ + { + "path": "github.com/gen2brain/avif", + "version": "v0.6.0", + "files": [ + { + "path": "LICENSE", + "sha256": "7ccd0e2f82eac9b87608576a9e559567f1ba049bebe709135eef3a9661bbc96e" + }, + { + "path": "lib/Makefile", + "sha256": "1404fe10eb61f9733e967ff1ffea5f02bde13d17fd78038f237ba32346e5c3ec" + }, + { + "path": "lib/avif.c", + "sha256": "7e9603ea6d645c64c86857043b3d97102546c7a8a2d701149daec7a96118bfb9" + }, + { + "path": "avif_wazero.go", + "sha256": "a60925be429779481cc683b39489194ce6e533d2cf8bde6e1efec3661049df31" + }, + { + "path": "lib/avif.wasm", + "sha256": "52181752f8d92a43dfd0ca33179d32fdf7452a669cc1e260f37fabb8319de6bf" + }, + { + "path": "lib/avif.wasm.gz", + "sha256": "92ffd604d276359c2df829effc615cd9f286c36ece5761644929e4396eb97360" + } + ] + }, + { + "path": "github.com/tetratelabs/wazero", + "version": "v1.12.0", + "files": [ + { + "path": "LICENSE", + "sha256": "c46f033d017a5af71a1de0105ec56c41bd47f81a0bbdf779fffe316336dc7c1f" + }, + { + "path": "NOTICE", + "sha256": "e6f0c5c151a3ff1eba8f5930a31ec084ca6d7adda43c8675ab81f7d36af50b4f" + } + ] + } + ], + "components": [ + { + "name": "github.com/gen2brain/avif", + "version": "v0.6.0 (1fd2a9a51895ca03a192dd49917840794c8a77a1)", + "license": "MIT", + "files": [ + { + "path": "licenses/gen2brain-avif-LICENSE.txt", + "sha256": "7ccd0e2f82eac9b87608576a9e559567f1ba049bebe709135eef3a9661bbc96e", + "source": "https://raw.githubusercontent.com/gen2brain/avif/1fd2a9a51895ca03a192dd49917840794c8a77a1/LICENSE" + } + ] + }, + { + "name": "libavif", + "version": "v1.4.2 (c5240fc79fe5c2407e10afd35f5505ef6333ea49)", + "license": "BSD-2-Clause and upstream aggregate notices", + "notes": "The complete license aggregate is from the build recipe's libavif revision. The older LICENSE.libavif copy in the Go module is not used as the source of this notice.", + "files": [ + { + "path": "licenses/libavif-LICENSE.txt", + "sha256": "165abf92cc04b39e80d29cadea7a6a7e8fddf59407d4ad2616507a7ebe8216f9", + "source": "https://raw.githubusercontent.com/AOMediaCodec/libavif/c5240fc79fe5c2407e10afd35f5505ef6333ea49/LICENSE" + } + ] + }, + { + "name": "dav1d", + "version": "1.5.3 (b546257f770768b2c88258c533da38b91a06f737)", + "license": "BSD-2-Clause", + "files": [ + { + "path": "licenses/dav1d-COPYING.txt", + "sha256": "dd92c3c2247c5651606fc23a5e2d6a1ebc5ace9a3e49cbde0e12f05ad1cb1ee5", + "source": "https://raw.githubusercontent.com/videolan/dav1d/b546257f770768b2c88258c533da38b91a06f737/COPYING" + } + ] + }, + { + "name": "libaom", + "version": "v3.14.1 (03087864cf4bea6abb0d28f95cf7843511413d8f)", + "license": "BSD-3-Clause and Alliance for Open Media Patent License 1.0", + "files": [ + { + "path": "licenses/aom-LICENSE.txt", + "sha256": "4764a286d8b2faeaf42f4418e7d7a28d58fc8fd4d00a3d0a7f44b0a4099de7f2", + "source": "https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/LICENSE" + }, + { + "path": "licenses/aom-PATENTS.txt", + "sha256": "661fb8e504744e95587b556b94a58343448300606a41bea8c7a9b97125696e61", + "source": "https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/PATENTS" + } + ] + }, + { + "name": "libaom bundled fastfeat and vector", + "version": "libaom v3.14.1", + "license": "BSD-3-Clause (fastfeat) and MIT (vector)", + "notes": "The shipped payload contains aom_fast9_detect and aom_vector_* functions.", + "files": [ + { + "path": "licenses/aom-fastfeat-LICENSE.txt", + "sha256": "499041ddee5227b6f29ca06c17803e5fe24d60f243c69635cd76b7ba08d0ddd5", + "source": "https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/third_party/fastfeat/LICENSE" + }, + { + "path": "licenses/aom-vector-LICENSE.txt", + "sha256": "ff6c857ce2708e87701323078aef115c1872a1f80a9649f86dc899b48083bc60", + "source": "https://aomedia.googlesource.com/aom/+/03087864cf4bea6abb0d28f95cf7843511413d8f/third_party/vector/LICENSE" + } + ] + }, + { + "name": "libyuv", + "version": "stable; reviewed reference eb6e7bb63738e29efd82ea3cf2a115238a89fa51", + "license": "BSD-3-Clause and accompanying Google patent grant", + "notes": "The build recipe does not pin a commit. This reference is the stable branch tip observed on 2026-09-21, not proof of the historical checkout. The complete PATENTS text below has only a terminal newline added.", + "files": [ + { + "path": "licenses/libyuv-LICENSE.txt", + "sha256": "2b2cc1180c7e6988328ad2033b04b80117419db9c4c584918bbb3cfec7e9364f", + "source": "https://chromium.googlesource.com/libyuv/libyuv/+/eb6e7bb63738e29efd82ea3cf2a115238a89fa51/LICENSE" + }, + { + "path": "licenses/libyuv-AUTHORS.txt", + "sha256": "1e8751834a0341c39c75a06021fdad56aa614fc6cd7cf0a7f8a18921689c9e2c", + "source": "https://chromium.googlesource.com/libyuv/libyuv/+/eb6e7bb63738e29efd82ea3cf2a115238a89fa51/AUTHORS" + }, + { + "path": "licenses/libyuv-PATENTS.txt", + "sha256": "a26701f5f944a26a03684f6ed26698c540b7f54712c42b5e6fe27ed7cda0914d", + "source": "https://chromium.googlesource.com/libyuv/libyuv/+/eb6e7bb63738e29efd82ea3cf2a115238a89fa51/PATENTS" + } + ] + }, + { + "name": "WASI libc", + "version": "SDK 33 upstream reference 161b3195fc2558d2b1ba3eb9ffae3b2b47407623", + "license": "Apache-2.0 WITH LLVM-exception, Apache-2.0, MIT, and component licenses", + "notes": "The payload identifies SDK 33.0+m; the upstream SDK pins this wasi-libc revision. All three offered license texts and the component index are retained. Unknown local SDK modifications remain a provenance limitation.", + "files": [ + { + "path": "licenses/wasi-libc-LICENSE.txt", + "sha256": "2711a8b5a5cdfef0e639f96c1aca12ae23d7d64a02d0507f1bdf14d2b27bbc3a", + "source": "https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE" + }, + { + "path": "licenses/wasi-libc-LICENSE-MIT.txt", + "sha256": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3", + "source": "https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE-MIT" + }, + { + "path": "licenses/wasi-libc-LICENSE-APACHE.txt", + "sha256": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2", + "source": "https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE-APACHE" + }, + { + "path": "licenses/wasi-libc-LICENSE-APACHE-LLVM.txt", + "sha256": "268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5", + "source": "https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/LICENSE-APACHE-LLVM" + } + ] + }, + { + "name": "WASI libc: musl and math/sorting notices", + "version": "161b3195fc2558d2b1ba3eb9ffae3b2b47407623", + "license": "MIT and Sun Microsystems permissive notice", + "files": [ + { + "path": "licenses/musl-COPYRIGHT.txt", + "sha256": "f9bc4423732350eb0b3f7ed7e91d530298476f8fec0c6c427a1c04ade22655af", + "source": "https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/COPYRIGHT" + }, + { + "path": "licenses/musl-sun-NOTICE.txt", + "sha256": "16cd38a2d4dd0bf4b8a51ab4bd8779856a38d7ac96d4f8a3b092d8c707b0a021", + "source": "https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/math/__cos.c#L2-L11" + }, + { + "path": "licenses/musl-arm-exp-NOTICE.txt", + "sha256": "f116966f95dc0f50b5cb67894c89e342a21be93ae821e841efb8cca987a8c949", + "source": "https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/math/exp.c#L1-L6" + }, + { + "path": "licenses/musl-arm-expf-NOTICE.txt", + "sha256": "b11e271534b26e37a6b82ff5246a72e97b13abc388288d97c5e7690a2931eea2", + "source": "https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/math/expf.c#L1-L6" + }, + { + "path": "licenses/musl-qsort-NOTICE.txt", + "sha256": "67f1f2f3c0447c68be581010fee98dca1c7ea1edf8fbfc61c7e5ee6ad9f99de4", + "source": "https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-top-half/musl/src/stdlib/qsort.c#L1-L20" + } + ], + "notes": "Complete musl copyright terms and the applicable in-source notices are reproduced below. Arm's SPDX MIT references use the full MIT terms reproduced in the WASI libc section." + }, + { + "name": "WASI libc: cloudlibc", + "version": "161b3195fc2558d2b1ba3eb9ffae3b2b47407623", + "license": "BSD-2-Clause", + "files": [ + { + "path": "licenses/cloudlibc-LICENSE.txt", + "sha256": "c8b789cf5a746611e6300a0cc7750dbf92b61912a709d04e639245f7290656d0", + "source": "https://raw.githubusercontent.com/WebAssembly/wasi-libc/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/libc-bottom-half/cloudlibc/LICENSE" + } + ] + }, + { + "name": "WASI libc: dlmalloc", + "version": "2.8.6 in wasi-libc 161b3195fc2558d2b1ba3eb9ffae3b2b47407623", + "license": "CC0-1.0 / public domain", + "files": [ + { + "path": "licenses/dlmalloc-NOTICE.txt", + "sha256": "a72fc0671bf75e5c156ecf2c0a11ad795d75d520a9f0d2bdce4718e168789efb", + "source": "https://github.com/WebAssembly/wasi-libc/blob/161b3195fc2558d2b1ba3eb9ffae3b2b47407623/dlmalloc/src/malloc.c#L1-L9" + }, + { + "path": "licenses/CC0-1.0.txt", + "sha256": "a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499", + "source": "https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt" + } + ] + }, + { + "name": "LLVM compiler-rt", + "version": "4434dabb69916856b824f68a64b029c67175e532", + "license": "Apache-2.0 WITH LLVM-exception and legacy runtime license texts", + "notes": "The WASM producer identifies this LLVM revision, and the payload includes compiler runtime builtins such as __multi3.", + "files": [ + { + "path": "licenses/compiler-rt-LICENSE.txt", + "sha256": "1a8f1058753f1ba890de984e48f0242a3a5c29a6a8f2ed9fd813f36985387e8d", + "source": "https://raw.githubusercontent.com/llvm/llvm-project/4434dabb69916856b824f68a64b029c67175e532/compiler-rt/LICENSE.TXT" + }, + { + "path": "licenses/compiler-rt-CREDITS.txt", + "sha256": "a9901f47a089da41e4690682d00ce4cedaa2baf41fedbe79beee366d43ac2461", + "source": "https://raw.githubusercontent.com/llvm/llvm-project/4434dabb69916856b824f68a64b029c67175e532/compiler-rt/CREDITS.TXT" + } + ] + }, + { + "name": "github.com/tetratelabs/wazero", + "version": "v1.12.0", + "license": "Apache-2.0", + "notes": "This Go runtime executes the embedded WASM and implements its WASI host calls. Its complete LICENSE and NOTICE are reproduced.", + "files": [ + { + "path": "licenses/wazero-LICENSE.txt", + "sha256": "c46f033d017a5af71a1de0105ec56c41bd47f81a0bbdf779fffe316336dc7c1f", + "source": "https://raw.githubusercontent.com/tetratelabs/wazero/v1.12.0/LICENSE" + }, + { + "path": "licenses/wazero-NOTICE.txt", + "sha256": "e6f0c5c151a3ff1eba8f5930a31ec084ca6d7adda43c8675ab81f7d36af50b4f", + "source": "https://raw.githubusercontent.com/tetratelabs/wazero/v1.12.0/NOTICE" + } + ] + } + ] +} diff --git a/scripts/updaternotices/README.md b/scripts/updaternotices/README.md index fef5ec8f..02648d00 100644 --- a/scripts/updaternotices/README.md +++ b/scripts/updaternotices/README.md @@ -44,6 +44,13 @@ use the archive root. An MSIX bundle must contain `picfetch-x64.msix` and misplaced or non-regular notices fail. Archive inspection reads without extraction and does not validate code signatures, executable behavior or Windows SDK schemas. +Every payload must also contain exactly one regular executable with the complete +checkout `THIRD-PARTY-NOTICES.md` embedded as contiguous bytes: `picfetch.exe` +for Windows/Store, `PicFetch.app/Contents/MacOS/picfetch` for macOS, and the archive +basename without `.tar.gz` for Linux. The bounded-memory scan reads through EOF +even after finding the text so checksum/trailer errors still fail. This checks +the offline notice resource after linking/signing; Help's tests check its display. + CI checks source coverage. Release checks all six final archives after Windows signing and before publication; Store packaging checks the final signed bundle before recording its provenance or uploading it. Artifact mode intentionally diff --git a/scripts/updaternotices/artifacts.go b/scripts/updaternotices/artifacts.go index b9f4de0f..f8d50038 100644 --- a/scripts/updaternotices/artifacts.go +++ b/scripts/updaternotices/artifacts.go @@ -12,6 +12,8 @@ import ( "strings" ) +const maxPackageBytes = 512 * 1024 * 1024 + func inspectArtifact(root, artifact string) error { want := make(map[string][]byte) for _, name := range []string{"LICENSE", "THIRD-PARTY-NOTICES.md", "PRIVACY.md"} { @@ -33,10 +35,12 @@ func inspectArtifact(root, artifact string) error { return inspectBundle(&reader.Reader, want) } prefix := "" + executable := "picfetch.exe" if strings.HasPrefix(filepath.Base(artifact), "picfetch-macos-") { prefix = "PicFetch.app/Contents/Resources/" + executable = "PicFetch.app/Contents/MacOS/picfetch" } - return inspectZip(&reader.Reader, prefix, want) + return inspectZip(&reader.Reader, prefix, executable, want) } func inspectBundle(reader *zip.Reader, want map[string][]byte) error { @@ -51,7 +55,6 @@ func inspectBundle(reader *zip.Reader, want map[string][]byte) error { seen[file.Name] = true // Current payloads are below 100 MiB. Bound allocation when inspecting // an invalid archive without extracting any files to the filesystem. - const maxPackageBytes = 512 * 1024 * 1024 data, err := readZipEntry(file, maxPackageBytes) if err != nil { return err @@ -60,7 +63,7 @@ func inspectBundle(reader *zip.Reader, want map[string][]byte) error { if err != nil { return err } - if err := inspectZip(payload, "", want); err != nil { + if err := inspectZip(payload, "", "picfetch.exe", want); err != nil { return fmt.Errorf("%s: %w", file.Name, err) } } @@ -70,9 +73,20 @@ func inspectBundle(reader *zip.Reader, want map[string][]byte) error { return nil } -func inspectZip(reader *zip.Reader, prefix string, want map[string][]byte) error { +func inspectZip(reader *zip.Reader, prefix, executable string, want map[string][]byte) error { seen := make(map[string]bool) + executableSeen := false for _, file := range reader.File { + if file.Name == executable { + if executableSeen || !file.Mode().IsRegular() { + return fmt.Errorf("duplicate or non-regular executable %s", file.Name) + } + if err := inspectZipExecutable(file, want["THIRD-PARTY-NOTICES.md"]); err != nil { + return err + } + executableSeen = true + continue + } name, ok := strings.CutPrefix(file.Name, prefix) if !ok { continue @@ -93,7 +107,62 @@ func inspectZip(reader *zip.Reader, prefix string, want map[string][]byte) error } seen[name] = true } - return requireNotices(seen, want) + if err := requireNotices(seen, want); err != nil { + return err + } + if !executableSeen { + return fmt.Errorf("missing executable %s", executable) + } + return nil +} + +func inspectZipExecutable(file *zip.File, want []byte) error { + if file.UncompressedSize64 > maxPackageBytes { + return fmt.Errorf("oversized archive entry %s", file.Name) + } + r, err := file.Open() + if err != nil { + return err + } + defer func() { _ = r.Close() }() + return inspectEmbeddedNotices(r, file.Name, want) +} + +func inspectEmbeddedNotices(reader io.Reader, name string, want []byte) error { + // Keep enough overlap to find the complete notice across read boundaries. + // Memory depends on the checkout's notice size, never on executable size. + chunkSize := max(32*1024, len(want)) + buffer := make([]byte, chunkSize+max(0, len(want)-1)) + reader = io.LimitReader(reader, maxPackageBytes+1) + var total int64 + retained := 0 + found := len(want) == 0 + for { + n, err := reader.Read(buffer[retained:]) + total += int64(n) + if total > maxPackageBytes { + return fmt.Errorf("oversized archive entry %s", name) + } + window := buffer[:retained+n] + if !found { + found = bytes.Contains(window, want) + } + if err != nil { + if err != io.EOF { + return fmt.Errorf("%s: %w", name, err) + } + if !found { + return fmt.Errorf("missing or stale embedded THIRD-PARTY-NOTICES.md in %s", name) + } + return nil + } + // Continue to EOF after matching: ZIP checksums may fail on the final read. + retained = 0 + if !found { + retained = min(len(want)-1, len(window)) + copy(buffer, window[len(window)-retained:]) + } + } } func readZipEntry(file *zip.File, limit int64) ([]byte, error) { @@ -128,6 +197,8 @@ func inspectTar(artifact string, want map[string][]byte) error { defer func() { _ = compressed.Close() }() reader := tar.NewReader(compressed) seen := make(map[string]bool) + executable := strings.TrimSuffix(filepath.Base(artifact), ".tar.gz") + executableSeen := false for { header, err := reader.Next() if err == io.EOF { @@ -135,6 +206,19 @@ func inspectTar(artifact string, want map[string][]byte) error { } else if err != nil { return err } + if header.Name == executable { + if executableSeen || header.Typeflag != tar.TypeReg { + return fmt.Errorf("duplicate or non-regular executable %s", header.Name) + } + if header.Size > maxPackageBytes { + return fmt.Errorf("oversized archive entry %s", header.Name) + } + if err := inspectEmbeddedNotices(reader, header.Name, want["THIRD-PARTY-NOTICES.md"]); err != nil { + return err + } + executableSeen = true + continue + } expected, ok := want[header.Name] if !ok { continue @@ -156,7 +240,13 @@ func inspectTar(artifact string, want map[string][]byte) error { if _, err := io.Copy(io.Discard, compressed); err != nil { return err } - return requireNotices(seen, want) + if err := requireNotices(seen, want); err != nil { + return err + } + if !executableSeen { + return fmt.Errorf("missing executable %s", executable) + } + return nil } func requireNotices(seen map[string]bool, want map[string][]byte) error { diff --git a/scripts/updaternotices/main_test.go b/scripts/updaternotices/main_test.go index 888fd51a..84d3050d 100644 --- a/scripts/updaternotices/main_test.go +++ b/scripts/updaternotices/main_test.go @@ -6,6 +6,7 @@ import ( "bytes" "compress/gzip" "crypto/sha256" + "errors" "fmt" "os" "path/filepath" @@ -108,16 +109,38 @@ func TestNoticesRejectUnreviewedChanges(t *testing.T) { type archiveMember struct { name string data []byte + mode os.FileMode } -func TestArtifactNoticeDelivery(t *testing.T) { +func artifactNoticeFixture(t *testing.T) (string, []archiveMember) { + t.Helper() root := t.TempDir() var members []archiveMember for _, name := range []string{"LICENSE", "THIRD-PARTY-NOTICES.md", "PRIVACY.md"} { data := []byte("current text: " + name) writeTestFile(t, filepath.Join(root, name), data) - members = append(members, archiveMember{name, data}) + members = append(members, archiveMember{name: name, data: data}) } + return root, members +} + +func artifactEntries(format string, notices []archiveMember, executable []byte) []archiveMember { + entries := slices.Clone(notices) + name := "picfetch.exe" + if strings.Contains(format, "macos") { + for i := range entries { + entries[i].name = "PicFetch.app/Contents/Resources/" + entries[i].name + } + name = "PicFetch.app/Contents/MacOS/picfetch" + } else if before, ok := strings.CutSuffix(format, ".tar.gz"); ok { + name = before + } + return append(entries, archiveMember{name: name, data: executable}) +} + +func TestArtifactNoticeDelivery(t *testing.T) { + root, members := artifactNoticeFixture(t) + executable := append([]byte("executable bytes\x00"), members[1].data...) for _, format := range []string{"picfetch-windows-amd64.zip", "picfetch-macos-arm64.zip", "picfetch-linux-arm64.tar.gz", "picfetch-x64.msix"} { for _, change := range []string{"valid", "missing", "stale", "duplicate", "wrong directory"} { t.Run(format+"/"+change, func(t *testing.T) { @@ -132,11 +155,7 @@ func TestArtifactNoticeDelivery(t *testing.T) { case "wrong directory": entries[1].name = "elsewhere/" + entries[1].name } - if strings.Contains(format, "macos") { - for i := range entries { - entries[i].name = "PicFetch.app/Contents/Resources/" + entries[i].name - } - } + entries = artifactEntries(format, entries, executable) path := filepath.Join(t.TempDir(), format) writeTestFile(t, path, archiveBytes(t, entries, strings.HasSuffix(format, ".tar.gz"))) err := inspectArtifact(root, path) @@ -148,15 +167,15 @@ func TestArtifactNoticeDelivery(t *testing.T) { } for _, change := range []string{"valid", "missing arch", "stale arm64", "duplicate arch", "unexpected arch"} { t.Run("bundle/"+change, func(t *testing.T) { - payload := archiveBytes(t, members, false) - entries := []archiveMember{{"picfetch-x64.msix", payload}, {"picfetch-arm64.msix", payload}} + payload := archiveBytes(t, artifactEntries("picfetch-x64.msix", members, executable), false) + entries := []archiveMember{{name: "picfetch-x64.msix", data: payload}, {name: "picfetch-arm64.msix", data: payload}} switch change { case "missing arch": entries = entries[:1] case "stale arm64": bad := slices.Clone(members) bad[1].data = []byte("stale") - entries[1].data = archiveBytes(t, bad, false) + entries[1].data = archiveBytes(t, artifactEntries("picfetch-arm64.msix", bad, executable), false) case "duplicate arch": entries = append(entries, entries[0]) case "unexpected arch": @@ -172,6 +191,133 @@ func TestArtifactNoticeDelivery(t *testing.T) { } } +func TestArtifactEmbeddedNotices(t *testing.T) { + root, notices := artifactNoticeFixture(t) + for _, format := range []string{"picfetch-windows-amd64.zip", "picfetch-macos-arm64.zip", "picfetch-linux-arm64.tar.gz", "picfetch-x64.msix", "bundle x64", "bundle arm64"} { + for _, change := range []string{"valid", "missing executable", "missing embedding", "stale embedding", "partial embedding", "duplicate executable", "wrong directory", "non-regular executable"} { + t.Run(format+"/"+change, func(t *testing.T) { + executable := append([]byte("executable prefix\x00"), notices[1].data...) + executable = append(executable, []byte("\x00executable suffix")...) + entries := artifactEntries(format, notices, executable) + index := len(entries) - 1 + switch change { + case "missing executable": + entries = entries[:index] + case "missing embedding": + entries[index].data = []byte("executable without notices") + case "stale embedding": + entries[index].data = bytes.Replace(executable, []byte("current"), []byte("outdated"), 1) + case "partial embedding": + entries[index].data = notices[1].data[:len(notices[1].data)-1] + case "duplicate executable": + entries = append(entries, entries[index]) + case "wrong directory": + entries[index].name = "elsewhere/" + entries[index].name + case "non-regular executable": + entries[index].mode = os.ModeSymlink | 0o755 + } + archiveName := format + if strings.HasPrefix(format, "bundle ") { + good := archiveBytes(t, artifactEntries("picfetch-x64.msix", notices, executable), false) + bad := archiveBytes(t, entries, false) + entries = []archiveMember{{name: "picfetch-x64.msix", data: good}, {name: "picfetch-arm64.msix", data: good}} + if format == "bundle x64" { + entries[0].data = bad + } else { + entries[1].data = bad + } + archiveName = "picfetch-microsoft-store.msixbundle" + } + path := filepath.Join(t.TempDir(), archiveName) + writeTestFile(t, path, archiveBytes(t, entries, strings.HasSuffix(archiveName, ".tar.gz"))) + err := inspectArtifact(root, path) + if (err == nil) != (change == "valid") { + t.Fatalf("artifact check = %v", err) + } + }) + } + } +} + +func TestArtifactEmbeddedNoticesAcrossReadBoundaries(t *testing.T) { + for _, size := range []int{37, 100 * 1024} { + root, notices := artifactNoticeFixture(t) + notices[1].data = append(bytes.Repeat([]byte("notice text\n"), size/12), []byte("end of notice\n")...) + writeTestFile(t, filepath.Join(root, "THIRD-PARTY-NOTICES.md"), notices[1].data) + for _, format := range []string{"picfetch-windows-amd64.zip", "picfetch-macos-arm64.zip", "picfetch-linux-arm64.tar.gz", "picfetch-x64.msix"} { + for _, offset := range []int{0, 32*1024 - 1, 64*1024 - 1} { + t.Run(fmt.Sprintf("%s/%d bytes/offset %d", format, size, offset), func(t *testing.T) { + executable := bytes.Repeat([]byte{0xa5}, offset) + executable = append(executable, notices[1].data...) + executable = append(executable, bytes.Repeat([]byte{0x5a}, 64*1024)...) + entries := artifactEntries(format, notices, executable) + path := filepath.Join(t.TempDir(), format) + writeTestFile(t, path, archiveBytes(t, entries, strings.HasSuffix(format, ".tar.gz"))) + if err := inspectArtifact(root, path); err != nil { + t.Fatalf("complete embedded notice rejected: %v", err) + } + }) + } + } + } +} + +func TestArtifactRejectsExecutableChecksumErrors(t *testing.T) { + root, notices := artifactNoticeFixture(t) + executable := append(slices.Clone(notices[1].data), bytes.Repeat([]byte{0xa5}, 96*1024)...) + for _, format := range []string{"picfetch-windows-amd64.zip", "picfetch-macos-arm64.zip", "picfetch-x64.msix", "bundle x64", "bundle arm64"} { + t.Run(format, func(t *testing.T) { + entries := artifactEntries(format, notices, executable) + data := archiveBytes(t, entries, false) + reader, err := zip.NewReader(bytes.NewReader(data), int64(len(data))) + if err != nil { + t.Fatal(err) + } + var corrupt bytes.Buffer + writer := zip.NewWriter(&corrupt) + for _, file := range reader.File { + if file.Name == entries[len(entries)-1].name { + file.CRC32 ^= 1 + } + if err := writer.Copy(file); err != nil { + t.Fatal(err) + } + } + if err := writer.Close(); err != nil { + t.Fatal(err) + } + data = corrupt.Bytes() + archiveName := format + if strings.HasPrefix(format, "bundle ") { + good := archiveBytes(t, entries, false) + payloads := []archiveMember{{name: "picfetch-x64.msix", data: good}, {name: "picfetch-arm64.msix", data: good}} + if format == "bundle x64" { + payloads[0].data = data + } else { + payloads[1].data = data + } + data = archiveBytes(t, payloads, false) + archiveName = "picfetch-microsoft-store.msixbundle" + } + path := filepath.Join(t.TempDir(), archiveName) + writeTestFile(t, path, data) + if err := inspectArtifact(root, path); !errors.Is(err, zip.ErrChecksum) { + t.Fatalf("executable checksum error = %v, want %v", err, zip.ErrChecksum) + } + }) + } + t.Run("gzip trailer", func(t *testing.T) { + format := "picfetch-linux-arm64.tar.gz" + data := archiveBytes(t, artifactEntries(format, notices, executable), true) + data[len(data)-8] ^= 1 + path := filepath.Join(t.TempDir(), format) + writeTestFile(t, path, data) + if err := inspectArtifact(root, path); !errors.Is(err, gzip.ErrChecksum) { + t.Fatalf("gzip trailer error = %v, want %v", err, gzip.ErrChecksum) + } + }) +} + func archiveBytes(t *testing.T, entries []archiveMember, compressedTar bool) []byte { t.Helper() var out bytes.Buffer @@ -179,9 +325,18 @@ func archiveBytes(t *testing.T, entries []archiveMember, compressedTar bool) []b gz := gzip.NewWriter(&out) writer := tar.NewWriter(gz) for _, entry := range entries { - if err := writer.WriteHeader(&tar.Header{Name: entry.name, Mode: 0o644, Size: int64(len(entry.data))}); err != nil { + header := &tar.Header{Name: entry.name, Mode: 0o644, Size: int64(len(entry.data))} + if entry.mode&os.ModeSymlink != 0 { + header.Typeflag = tar.TypeSymlink + header.Linkname = "other-executable" + header.Size = 0 + } + if err := writer.WriteHeader(header); err != nil { t.Fatal(err) } + if header.Typeflag == tar.TypeSymlink { + continue + } if _, err := writer.Write(entry.data); err != nil { t.Fatal(err) } @@ -195,7 +350,11 @@ func archiveBytes(t *testing.T, entries []archiveMember, compressedTar bool) []b } else { writer := zip.NewWriter(&out) for _, entry := range entries { - file, err := writer.Create(entry.name) + header := &zip.FileHeader{Name: entry.name, Method: zip.Deflate} + if entry.mode != 0 { + header.SetMode(entry.mode) + } + file, err := writer.CreateHeader(header) if err != nil { t.Fatal(err) } diff --git a/todos.md b/todos.md index 9000142a..d61e7c07 100644 --- a/todos.md +++ b/todos.md @@ -6,21 +6,41 @@ #### New Features +- Added Help -> Licenses, showing the release's embedded third-party notices + as Markdown without an internet connection, including Store builds. + #### Bugfix +- License blocks now wrap and share the document's scroll surface, so mouse + wheel scrolling works over the text as well as the background. + #### Internal -## Open +- Expanded the AVIF/native/WASI notices with full reviewed license, patent and + attribution texts. Added pinned source/payload checks and release-archive + guards for both loose notices and the executable's embedded document. -### Native Windows similarity-cache tests +## Open -The full `internal/similarity` suite has three failures on Windows that also -reproduce with the pre-fix search implementation: permission assumptions in -`TestAnalysisCacheMaintenancePartialFailure`, URI/native path comparison in -`TestAnalysisCacheConfinementManagedUsageAndTemps`, and open-directory rename -sharing in `TestFavoriteAnalysisFollowsOpenedDirectory`. Qualify these separately; -the Windows search tests and production search/cache integration pass. See -[the regression evidence](plans/2026-09-19-windows-visual-search-paths.md). +### Finish AVIF notice release qualification + +Implementation and local evidence are recorded in +[the plan](plans/2026-09-21-avif-license-viewer.md). Remaining before release: + +- Obtain upstream evidence for the historical libyuv checkout and modified + WASI SDK/libc inputs used in the pinned AVIF payload. The source texts are + retained, but the floating libyuv branch and SDK `33.0+m` do not establish + exact historical source correspondence; see + [provenance limits](scripts/avifnotices/README.md#provenance-limits). +- Run complete verification on native Linux/amd64 or CI; this workstation's + Linux/aarch64 Docker daemon cannot satisfy the worker-isolation test gate. +- Verify native offline Licenses UI on Windows/Linux, and final signed Store + MSIX/bundle plus WACK. Unsigned GitHub archives for both architectures and + Store executable payloads passed local notice checks; actual MSIX/bundle + structure has automated fixture coverage, not a signed local build. +- Recheck all final release artifacts against their exact dependency/payload + versions. AVIF, ONNX and other bundled native/WASM updates must include + corresponding notice updates in the same change. ## Deferred @@ -45,7 +65,7 @@ remains background for that deferred work. HEIC/HEIF is currently unsupported. A future restoration needs a documented distribution grant or another qualified decoder, containment and platform verification. The previous fork-upgrade watch [MA-023](needs_refactoring.md#ma-023) -is closed by removal. +is closed by removal. The [independent alternatives](docs/image-codec-alternatives-2026-09-15.md#heic-alternatives) include libheif/libde265 with LGPL distribution work and hpvcd with unresolved diff --git a/translations/de.json b/translations/de.json index 241a6161..c6955ce1 100644 --- a/translations/de.json +++ b/translations/de.json @@ -2,6 +2,7 @@ "Loading image...": "Bild wird geladen...", "Image unavailable": "Bild nicht verfügbar", "Release Notes": "Versionshinweise", + "Licenses": "Lizenzen", "Browse all releases": "Alle Versionen ansehen", "Image order": "Bildreihenfolge", "Main order": "Hauptansicht", diff --git a/translations/en.json b/translations/en.json index a0cbae7d..a613269f 100644 --- a/translations/en.json +++ b/translations/en.json @@ -2,6 +2,7 @@ "Loading image...": "Loading image...", "Image unavailable": "Image unavailable", "Release Notes": "Release Notes", + "Licenses": "Licenses", "Browse all releases": "Browse all releases", "Image order": "Image order", "Main order": "Main order", From 47d8224ef9f4b6a8c953a102f93c4f0745de5a61 Mon Sep 17 00:00:00 2001 From: frathe Date: Tue, 22 Sep 2026 14:12:11 +0200 Subject: [PATCH 2/2] docs: restore Windows cache test follow-up --- plans/2026-09-21-avif-license-viewer.md | 28 +++++++++++++++++++++++++ todos.md | 12 +++++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/plans/2026-09-21-avif-license-viewer.md b/plans/2026-09-21-avif-license-viewer.md index 9dffc6bc..515a128b 100644 --- a/plans/2026-09-21-avif-license-viewer.md +++ b/plans/2026-09-21-avif-license-viewer.md @@ -169,3 +169,31 @@ is pinned, but that cannot prove its historical source closure. These are open release qualifications in `todos.md`, not a claim of legal certification or fully attested source correspondence. No commit, push, signing or publication was authorized or performed. Keep this plan active until acceptance/qualification. + +### PR #49 review loop (2026-09-22) + +The user invoked the repository's GitHub Codex review loop, authorizing fix +commits, pushes, review replies and thread resolution. This supersedes the +implementation session's no-commit restriction above; release qualification +remains open. + +- Confirmed the Codex finding on `todos.md`: the AVIF section displaced the + unrelated Windows similarity-cache follow-up. Restored that section verbatim + from the PR's parent, alongside the AVIF work, including all three test names + and the existing evidence link. No Windows behavior changed. +- Thin repair: two Markdown files, no agents, no source or test changes. + Verification compares the restored section byte-for-byte with the parent, + checks both open sections and their evidence links, and runs `git diff --check`. +- [CI run 35642591941](https://github.com/frathe/picfetch/actions/runs/35642591941) + passed on `8a723aa736`: validation, all four native Linux race partitions, + Windows tests, and both macOS native guards. This completes the previously + pending full Linux CI qualification, so that item was removed from `todos.md`. + Native offline UI and signed Store/WACK qualifications remain open. +- [Qodana run 35642591966](https://github.com/frathe/picfetch/actions/runs/35642591966) + passed; the downloaded post-suppression `qodana.sarif.json` contains zero + results. CodeQL has no open alerts for this PR. Existing job annotations only + announce the future `ubuntu-latest` runner-image migration. +- Codex security review completed without findings on `8a723aa736`. The code + review found the displaced TODO above; the repaired commit requires another + fresh code/security review and its own CI results before loop completion. + Final results will be recorded on the PR after those checks complete. diff --git a/todos.md b/todos.md index d61e7c07..a7ffc0f6 100644 --- a/todos.md +++ b/todos.md @@ -22,6 +22,16 @@ ## Open +### Native Windows similarity-cache tests + +The full `internal/similarity` suite has three failures on Windows that also +reproduce with the pre-fix search implementation: permission assumptions in +`TestAnalysisCacheMaintenancePartialFailure`, URI/native path comparison in +`TestAnalysisCacheConfinementManagedUsageAndTemps`, and open-directory rename +sharing in `TestFavoriteAnalysisFollowsOpenedDirectory`. Qualify these separately; +the Windows search tests and production search/cache integration pass. See +[the regression evidence](plans/2026-09-19-windows-visual-search-paths.md). + ### Finish AVIF notice release qualification Implementation and local evidence are recorded in @@ -32,8 +42,6 @@ Implementation and local evidence are recorded in retained, but the floating libyuv branch and SDK `33.0+m` do not establish exact historical source correspondence; see [provenance limits](scripts/avifnotices/README.md#provenance-limits). -- Run complete verification on native Linux/amd64 or CI; this workstation's - Linux/aarch64 Docker daemon cannot satisfy the worker-isolation test gate. - Verify native offline Licenses UI on Windows/Linux, and final signed Store MSIX/bundle plus WACK. Unsigned GitHub archives for both architectures and Store executable payloads passed local notice checks; actual MSIX/bundle