diff --git a/.github/workflows/bootstrap.skip.yml b/.github/workflows/bootstrap.skip.yml deleted file mode 100644 index 3a47870b533..00000000000 --- a/.github/workflows/bootstrap.skip.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Bootstrap Skip - -# This Workflow is special and contains a workaround for a known limitation of GitHub CI. -# -# The problem: We don't want to run the "bootstrap" jobs on PRs which contain only changes -# to the docs, since these jobs take a long time to complete without providing any benefit. -# We therefore use path-filtering in the workflow triggers for the bootstrap jobs, namely -# "paths-ignore: doc/**". But the "Bootstrap post job" is a required job, therefore a PR cannot -# be merged unless the "Bootstrap post job" completes succesfully, which it doesn't do if we -# filter it out. -# -# The solution: We use a second job with the same name which always returns the exit code 0. -# The logic implemented for "required" workflows accepts if 1) at least one job with that name -# runs through, AND 2) If multiple jobs of that name exist, then all jobs of that name have to -# finish successfully. -on: - push: - paths: - - 'doc/**' - - '**/README.md' - - 'CONTRIBUTING.md' - branches: - - master - pull_request: - paths: - - 'doc/**' - - '**/README.md' - - 'CONTRIBUTING.md' - release: - types: - - created - -jobs: - bootstrap-post-job: - if: always() - name: Bootstrap post job - runs-on: ubuntu-latest - steps: - - run: exit 0 diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index e74d355360f..9436a24cb6f 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -5,22 +5,11 @@ concurrency: group: ${{ github.ref }}-${{ github.workflow }} cancel-in-progress: true -# Note: This workflow file contains the required job "Bootstrap post job". We are using path filtering -# here to ignore PRs which only change documentation. This can cause a problem, see the workflow file -# "bootstrap.skip.yml" for a description of the problem and the solution provided in that file. on: push: - paths-ignore: - - 'doc/**' - - '**/README.md' - - 'CONTRIBUTING.md' branches: - master pull_request: - paths-ignore: - - 'doc/**' - - '**/README.md' - - 'CONTRIBUTING.md' release: types: - created @@ -43,7 +32,7 @@ jobs: rm -rf ~/.config/cabal rm -rf ~/.cache/cabal - - uses: actions/cache@v3 + - uses: actions/cache@v4 name: Cache the downloads id: bootstrap-cache with: diff --git a/.github/workflows/check-sdist.yml b/.github/workflows/check-sdist.yml index d295ad0ccca..a0455d0f003 100644 --- a/.github/workflows/check-sdist.yml +++ b/.github/workflows/check-sdist.yml @@ -7,17 +7,9 @@ concurrency: on: push: - paths-ignore: - - "doc/**" - - "**/README.md" - - "CONTRIBUTING.md" branches: - master pull_request: - paths-ignore: - - "doc/**" - - "**/README.md" - - "CONTRIBUTING.md" release: types: - created @@ -28,23 +20,17 @@ jobs: # No caching, since the point is to verify they can be installed "from scratch" # Don't run on master or a PR targeting master, because there's never an installable Cabal dogfood-sdists: - name: Dogfood sdist on ${{ matrix.os }} ghc-${{ matrix.ghc }} + name: Dogfood sdist on ghc-${{ matrix.ghc }} if: github.ref != 'refs/heads/master' && github.base_ref != 'master' - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest strategy: matrix: - os: [ubuntu-latest] # this should be kept up to date with the list in validate.yml, but should be the # *first* compiler release so we validate against what is hopefully the first # release of a corresponding Cabal and friends. it can also be short since it's # highly unlikely that we are releasing really old branches. ghc: - [ - "9.10.1", - "9.8.1", - "9.6.1", - "9.4.1", - ] + ["9.10.1", "9.8.1", "9.6.1"] steps: @@ -68,9 +54,9 @@ jobs: # (don't look at this too closely) sdist="$(ls dist-newstyle/sdist/cabal-install-*.tar.gz | sed -n '\,^dist-newstyle/sdist/cabal-install-[0-9.]*\.tar\.gz$,{;p;q;}')" # extract the cabal-install major version - ver="$(echo "$sdist" | sed -n 's,^dist-newstyle/sdist/cabal-install-\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9.]*$,\1,p')" + ver="$(echo "$sdist" | sed -n 's,^dist-newstyle/sdist/cabal-install-\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9.]*\.tar\.gz$,\1,p')" # dunno if this will ever be extended to freebsd, but grep -q is a gnu-ism - if ghc-pkg --global --simple-output list Cabal | grep "^Cabal-$cbl\\." >/dev/null; then + if ghc-pkg --global --simple-output list Cabal | grep "^Cabal-$ver\\." >/dev/null; then # sigh, someone broke installing from tarballs rm -rf cabal*.project Cabal Cabal-syntax cabal-install-solver cabal-install tar xfz "$sdist" @@ -80,3 +66,17 @@ jobs: echo No matching bootlib Cabal version to test against. exit 0 fi + + check-sdist-post-job: + if: always() + name: Check sdist post job + runs-on: ubuntu-latest + # IMPORTANT! Any job added to the workflow should be added here too + needs: [dogfood-sdists] + + steps: + - run: | + echo "jobs info: ${{ toJSON(needs) }}" + - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') + run: exit 1 + diff --git a/.github/workflows/validate.skip.yml b/.github/workflows/validate.skip.yml deleted file mode 100644 index af608e92d49..00000000000 --- a/.github/workflows/validate.skip.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Validate Skip - -# This Workflow is special and contains a workaround for a known limitation of GitHub CI. -# -# The problem: We don't want to run the "validate" jobs on PRs which contain only changes -# to the docs, since these jobs take a long time to complete without providing any benefit. -# We therefore use path-filtering in the workflow triggers for the validate jobs, namely -# "paths-ignore: doc/**". But the "Validate post job" is a required job, therefore a PR cannot -# be merged unless the "Validate post job" completes succesfully, which it doesn't do if we -# filter it out. -# -# The solution: We use a second job with the same name which always returns the exit code 0. -# The logic implemented for "required" workflows accepts if 1) at least one job with that name -# runs through, AND 2) If multiple jobs of that name exist, then all jobs of that name have to -# finish successfully. -on: - push: - paths: - - 'doc/**' - - '**/README.md' - - 'CONTRIBUTING.md' - branches: - - master - pull_request: - paths: - - 'doc/**' - - '**/README.md' - - 'CONTRIBUTING.md' - release: - types: - - created - -jobs: - validate-post-job: - if: always() - name: Validate post job - runs-on: ubuntu-latest - steps: - - run: exit 0 diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 432277a9d5c..6a4af0abbd8 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -5,22 +5,11 @@ concurrency: group: ${{ github.ref }}-${{ github.workflow }} cancel-in-progress: true -# Note: This workflow file contains the required job "Validate post job". We are using path filtering -# here to ignore PRs which only change documentation. This can cause a problem, see the workflow file -# "validate.skip.yml" for a description of the problem and the solution provided in that file. on: push: - paths-ignore: - - "doc/**" - - "**/README.md" - - "CONTRIBUTING.md" branches: - master pull_request: - paths-ignore: - - "doc/**" - - "**/README.md" - - "CONTRIBUTING.md" release: types: - created @@ -62,16 +51,17 @@ jobs: matrix: sys: - { os: windows-latest, shell: "C:/msys64/usr/bin/bash.exe -e {0}" } - - { os: ubuntu-latest, shell: bash } + - { os: ubuntu-22.04, shell: bash } - { os: macos-13, shell: bash } # If you remove something from here, then add it to the old-ghcs job. # Also a removed GHC from here means that we are actually dropping # support, so the PR *must* have a changelog entry. ghc: [ + "9.12.1", "9.10.1", - "9.8.2", - "9.6.4", + "9.8.4", + "9.6.6", "9.4.8", "9.2.8", "9.0.2", @@ -133,7 +123,7 @@ jobs: key: ${{ runner.os }}-${{ matrix.ghc }}-${{ github.sha }} restore-keys: ${{ runner.os }}-${{ matrix.ghc }}- - - name: Work around git problem https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586 (cabal PR #8546) + - name: "Work around git problem https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586 (cabal PR #8546)" run: git config --global protocol.file.allow always # The tool is not essential to the rest of the test suite. If @@ -146,10 +136,15 @@ jobs: run: cabal install --ignore-project hackage-repo-tool # Needed by cabal-testsuite/PackageTests/Configure/setup.test.hs - - name: Install Autotools + - name: "MAC: Install Autotools" if: runner.os == 'macOS' run: brew install automake + # Needed by cabal-testsuite/PackageTests/Configure/setup.test.hs + - name: "WIN: Install Autotools" + if: runner.os == 'Windows' + run: /usr/bin/pacman --noconfirm -S autotools + - name: Set validate inputs run: | FLAGS="${{ env.COMMON_FLAGS }}" @@ -170,6 +165,16 @@ jobs: - name: Validate build run: sh validate.sh $FLAGS -s build + - name: Canonicalize architecture + run: | + case ${{ runner.arch }} in + X86) arch=i386 ;; + X64) arch=x86_64 ;; + ARM64) arch=aarch64 ;; + *) echo "Unsupported architecture, please fix validate.yaml" 2>/dev/null; exit 1 ;; + esac + echo "CABAL_ARCH=$arch" >> "$GITHUB_ENV" + - name: Tar cabal head executable if: matrix.ghc == env.GHC_FOR_RELEASE run: | @@ -188,7 +193,7 @@ jobs: fi DIR=$(dirname "$CABAL_EXEC") FILE=$(basename "$CABAL_EXEC") - CABAL_EXEC_TAR="cabal-head-${{ runner.os }}-x86_64.tar.gz" + CABAL_EXEC_TAR="cabal-head-${{ runner.os }}-$CABAL_ARCH.tar.gz" tar -czvf "$CABAL_EXEC_TAR" -C "$DIR" "$FILE" echo "CABAL_EXEC_TAR=$CABAL_EXEC_TAR" >> "$GITHUB_ENV" @@ -199,36 +204,37 @@ jobs: if: matrix.ghc == env.GHC_FOR_RELEASE uses: actions/upload-artifact@v4 with: - name: cabal-${{ runner.os }}-x86_64 + name: cabal-${{ runner.os }}-${{ env.CABAL_ARCH }} path: ${{ env.CABAL_EXEC_TAR }} - - name: Validate lib-tests + - name: Validate tests env: # `rawSystemStdInOut reports text decoding errors` # test does not find ghc without the full path in windows GHCPATH: ${{ steps.setup-haskell.outputs.ghc-exe }} - run: sh validate.sh $FLAGS -s lib-tests - - - name: Validate lib-suite - run: sh validate.sh $FLAGS -s lib-suite - - - name: Validate cli-tests - run: sh validate.sh $FLAGS -s cli-tests - - - name: Validate cli-suite - run: sh validate.sh $FLAGS -s cli-suite - - - name: Validate solver-benchmarks-tests - if: matrix.ghc == env.GHC_FOR_SOLVER_BENCHMARKS - run: sh validate.sh $FLAGS -s solver-benchmarks-tests - - - name: Validate solver-benchmarks-run - if: matrix.ghc == env.GHC_FOR_SOLVER_BENCHMARKS - run: sh validate.sh $FLAGS -s solver-benchmarks-run + run: | + set +e + rc=0 + tests="lib-tests lib-suite cli-tests cli-suite" + if [ "${{ matrix.ghc }}" = "${{ env.GHC_FOR_SOLVER_BENCHMARKS }}" ]; then + tests="$tests solver-benchmarks-tests solver-benchmarks-run" + fi + for test in $tests; do + echo Validate "$test" + sh validate.sh $FLAGS -s "$test" || rc=1 + echo End "$test" + done + exit $rc + # The above ensures all the tests get run, for a single platform+ghc. + # Trying to ensure they run for *all* combinations but still fail + # at the end seems to be extremely difficult at best. It's doable, + # but it requires a continuously growing stack of conditions and + # one possibly nightmarish final conditional. 'fail-fast' gets us + # partway there, at least, but is still imperfect. validate-old-ghcs: name: Validate old ghcs ${{ matrix.extra-ghc }} - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: validate strategy: @@ -278,12 +284,15 @@ jobs: restore-keys: ${{ runner.os }}-${{ env.GHC_FOR_RELEASE }}- - name: Validate build + id: build run: sh validate.sh ${{ env.COMMON_FLAGS }} -s build - name: "Validate lib-suite-extras --extra-hc ghc-${{ matrix.extra-ghc }}" env: EXTRA_GHC: ghc-${{ matrix.extra-ghc }} run: sh validate.sh ${{ env.COMMON_FLAGS }} --lib-only -s lib-suite-extras --extra-hc "${{ env.EXTRA_GHC }}" + # See the comment above about running all tests but still failing if one + # of them does; it also applies here. build-alpine: name: Build statically linked using alpine @@ -352,19 +361,36 @@ jobs: # This one uses the cabal HEAD generated executable in the previous step # to build itself again, as sanity check dogfooding: - name: Dogfooding ${{ matrix.os }} ghc-${{ matrix.ghc }} - runs-on: ${{ matrix.os }} + name: Dogfooding ${{ matrix.sys.os }} ghc-${{ matrix.ghc }} + runs-on: ${{ matrix.sys.os }} needs: validate strategy: matrix: - os: [ubuntu-latest, macos-13, windows-latest] + sys: + - { os: windows-latest, shell: "C:/msys64/usr/bin/bash.exe -e {0}" } + - { os: ubuntu-22.04, shell: bash } + - { os: macos-13, shell: bash } # We only use one ghc version the used one for the next release (defined at top of the workflow) # We need to build an array dynamically to inject the appropiate env var in a previous job, # see https://docs.github.com/en/actions/learn-github-actions/expressions#fromjson ghc: ${{ fromJSON (needs.validate.outputs.GHC_FOR_RELEASE) }} + defaults: + run: + shell: ${{ matrix.sys.shell }} steps: - - name: Work around XDG directories existence (haskell-actions/setup#62) + # TODO: make a reusable action for this + - name: Canonicalize architecture + run: | + case ${{ runner.arch }} in + X86) arch=i386 ;; + X64) arch=x86_64 ;; + ARM64) arch=aarch64 ;; + *) echo "Unsupported architecture" 2>/dev/null; exit 1 ;; + esac + echo "CABAL_ARCH=$arch" >> "$GITHUB_ENV" + + - name: "MAC: Work around XDG directories existence (haskell-actions/setup#62)" if: runner.os == 'macOS' run: | rm -rf ~/.config/cabal @@ -381,11 +407,11 @@ jobs: - name: Download cabal executable from workflow artifacts uses: actions/download-artifact@v4 with: - name: cabal-${{ runner.os }}-x86_64 + name: cabal-${{ runner.os }}-${{ env.CABAL_ARCH }} path: cabal-head - name: Untar the cabal executable - run: tar -xzf "./cabal-head/cabal-head-${{ runner.os }}-x86_64.tar.gz" -C cabal-head + run: tar -xzf "./cabal-head/cabal-head-${{ runner.os }}-$CABAL_ARCH.tar.gz" -C cabal-head - name: print-config using cabal HEAD run: sh validate.sh ${{ env.COMMON_FLAGS }} --with-cabal ./cabal-head/cabal -s print-config @@ -399,39 +425,54 @@ jobs: name: Create a GitHub prerelease with the binary artifacts runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' + permissions: + contents: write # IMPORTANT! Any job added to the workflow should be added here too needs: [validate, validate-old-ghcs, build-alpine, dogfooding] steps: + # for now this is hardcoded. is there a better way? - uses: actions/download-artifact@v4 with: - name: cabal-Windows-x86_64 + pattern: cabal-* + path: binaries - - uses: actions/download-artifact@v4 + - name: Create GitHub prerelease + uses: softprops/action-gh-release@v2 with: - name: cabal-Linux-x86_64 + tag_name: cabal-head + prerelease: true + files: binaries/cabal-* - - uses: actions/download-artifact@v4 - with: - name: cabal-Linux-static-x86_64 + prerelease-lts: + name: Create a GitHub LTS prerelease with the binary artifacts + runs-on: ubuntu-latest + # The LTS branch is hardcoded for now, update it on a new LTS! + if: github.ref == 'refs/heads/3.12' - - uses: actions/download-artifact@v4 - with: - name: cabal-macOS-x86_64 + # IMPORTANT! Any job added to the workflow should be added here too + needs: [validate, validate-old-ghcs, build-alpine, dogfooding] - - name: Create GitHub prerelease - uses: marvinpinto/action-automatic-releases@v1.2.1 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - automatic_release_tag: cabal-head - prerelease: true - title: cabal-head - files: | - cabal-head-Windows-x86_64.tar.gz - cabal-head-Linux-x86_64.tar.gz - cabal-head-Linux-static-x86_64.tar.gz - cabal-head-macOS-x86_64.tar.gz + steps: + - uses: actions/download-artifact@v4 + with: + pattern: cabal-* + path: binaries + + - run: | + # bash-ism, but we forced bash above + mv cabal-{,lts-}head-Windows-x86_64.tar.gz + mv cabal-{,lts-}head-Linux-x86_64.tar.gz + mv cabal-{,lts-}head-Linux-static-x86_64.tar.gz + mv cabal-{,lts-}head-macOS-x86_64.tar.gz + + - name: Create GitHub prerelease + uses: softprops/action-gh-release@v2 + with: + tag_name: cabal-lts-head + prerelease: true + files: binaries/cabal-* # We use this job as a summary of the workflow # It will fail if any of the previous jobs does diff --git a/.github/workflows/whitespace.yml b/.github/workflows/whitespace.yml index 46088d3d351..93c1a41b07f 100644 --- a/.github/workflows/whitespace.yml +++ b/.github/workflows/whitespace.yml @@ -7,8 +7,22 @@ on: jobs: whitespace: + defaults: + run: + shell: bash runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 - - uses: andreasabel/fix-whitespace-action@v1 + + + - run: | + # no longer using the action because apparently we're supposed to use the Makefile here + wget -q https://github.com/agda/fix-whitespace/releases/download/v0.1/fix-whitespace-0.1-linux.binary + mkdir -p "$HOME/.local/bin" + mv fix-whitespace-0.1-linux.binary "$HOME/.local/bin/fix-whitespace" + chmod +x "$HOME/.local/bin/fix-whitespace" + echo "$HOME/.local/bin" >> $GITHUB_PATH + + - run: make whitespace diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 31066604616..87b6d0de22a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,6 @@ linux: - ARCH: x86_64 TAG: x86_64-linux OS: - - centos7 - deb9 - deb10 - deb11 @@ -50,6 +49,14 @@ linux: - ubuntu18_04 - ubuntu20_04 - ubuntu22_04 + # Pull this one from the future, since it's missing. + # We can't move the entire file to this DOCKER_REV, because + # i386-linux-deb9 is missing from it. + - ARCH: x86_64 + TAG: x86_64-linux + OS: centos7 + DOCKER_REV: f2d12519f45a13a61fcca03a949f927ceead6492 + - ARCH: aarch64 TAG: aarch64-linux OS: diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh index 1515a6afe22..94abd39cdf9 100755 --- a/.gitlab/ci.sh +++ b/.gitlab/ci.sh @@ -4,7 +4,14 @@ set -Eeuo pipefail source "$CI_PROJECT_DIR/.gitlab/common.sh" -if [[ "$(uname)" == "Linux" ]]; then +## Figure out how to get the Haskell toolchain. + +# For backport, the centos image no longer has the right GHC version, so use +# ghcup. +if [[ -f /etc/os-release && "$(grep ^ID /etc/os-release)" =~ "centos" ]]; then + . "$CI_PROJECT_DIR/.gitlab/ghcup.sh" +# All the other ones are fine. +elif [[ "$(uname)" == "Linux" ]]; then export PATH="/opt/ghc/${GHC_VERSION}/bin:${PATH}" # Not all runners use ci-images, so ghcup is used. else diff --git a/.hlint.yaml b/.hlint.yaml index 0170ee22ebd..506bbbdb2c4 100644 --- a/.hlint.yaml +++ b/.hlint.yaml @@ -49,9 +49,8 @@ - ignore: {name: "Use concatMap"} # 1 hint - ignore: {name: "Use const"} # 36 hints - ignore: {name: "Use elem"} # 2 hints -- ignore: {name: "Use fewer imports"} # 19 hints - ignore: {name: "Use first"} # 4 hints -- ignore: {name: "Use fmap"} # 24 hints +- ignore: {name: "Use fmap"} # 25 hints - ignore: {name: "Use fold"} # 1 hint - ignore: {name: "Use for"} # 1 hint - ignore: {name: "Use forM_"} # 1 hint @@ -67,7 +66,7 @@ - ignore: {name: "Use isNothing"} # 1 hint - ignore: {name: "Use lambda-case"} # 47 hints - ignore: {name: "Use lefts"} # 1 hint -- ignore: {name: "Use list comprehension"} # 16 hints +- ignore: {name: "Use list comprehension"} # 19 hints - ignore: {name: "Use list literal"} # 3 hints - ignore: {name: "Use list literal pattern"} # 11 hints - ignore: {name: "Use map once"} # 7 hints @@ -96,6 +95,9 @@ - arguments: - --ignore-glob=Cabal-syntax/src/Distribution/Fields/Lexer.hs + - --ignore-glob=Cabal-tests/tests/custom-setup/CabalDoctestSetup.hs + - --ignore-glob=Cabal-tests/tests/custom-setup/IdrisSetup.hs + - --ignore-glob=cabal-testsuite/PackageTests/BuildWays/q/app/Main.hs - --ignore-glob=cabal-testsuite/PackageTests/CmmSources/src/Demo.hs - --ignore-glob=cabal-testsuite/PackageTests/CmmSourcesDyn/src/Demo.hs - --ignore-glob=cabal-testsuite/PackageTests/CmmSourcesExe/src/Demo.hs diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2049b978528..c02af86e872 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -191,7 +191,9 @@ Whitespace Conventions We use automated whitespace convention checking. Violations can be fixed by running [fix-whitespace](https://hackage.haskell.org/package/fix-whitespace). If -you push a fix of a whitespace violation, please do so in a _separate commit_. +you push a fix of a whitespace violation, please do so in a _separate commit_. For convenience, +`make whitespace` will show violations and `make fix-whitespace` will fix them, if the +`fix-whitespace` utility is installed. Other Conventions ----------------- diff --git a/Cabal-QuickCheck/Cabal-QuickCheck.cabal b/Cabal-QuickCheck/Cabal-QuickCheck.cabal index 37c0f88fc4e..aa010c6b054 100644 --- a/Cabal-QuickCheck/Cabal-QuickCheck.cabal +++ b/Cabal-QuickCheck/Cabal-QuickCheck.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: Cabal-QuickCheck -version: 3.13.0.0 +version: 3.14.0.0 synopsis: QuickCheck instances for types in Cabal category: Testing build-type: Simple @@ -14,9 +14,9 @@ library build-depends: , base , bytestring - , Cabal ^>=3.13.0.0 - , Cabal-syntax ^>=3.13.0.0 - , QuickCheck ^>=2.13.2 || ^>=2.14 + , Cabal ^>=3.14.0.0 + , Cabal-syntax ^>=3.14.0.0 + , QuickCheck >= 2.13.2 && < 2.18 exposed-modules: Test.QuickCheck.GenericArbitrary diff --git a/Cabal-QuickCheck/src/Test/QuickCheck/GenericArbitrary.hs b/Cabal-QuickCheck/src/Test/QuickCheck/GenericArbitrary.hs index 29f0b5d85e9..0a9f92be693 100644 --- a/Cabal-QuickCheck/src/Test/QuickCheck/GenericArbitrary.hs +++ b/Cabal-QuickCheck/src/Test/QuickCheck/GenericArbitrary.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE TypeOperators #-} diff --git a/Cabal-described/Cabal-described.cabal b/Cabal-described/Cabal-described.cabal index 86b516d94ef..363a8b1e7b9 100644 --- a/Cabal-described/Cabal-described.cabal +++ b/Cabal-described/Cabal-described.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: Cabal-described -version: 3.13.0.0 +version: 3.14.0.0 synopsis: Described functionality for types in Cabal category: Testing, Parsec description: Provides rere bindings @@ -12,8 +12,8 @@ library ghc-options: -Wall build-depends: , base - , Cabal ^>=3.13.0.0 - , Cabal-syntax ^>=3.13.0.0 + , Cabal ^>=3.14.0.0 + , Cabal-syntax ^>=3.14.0.0 , containers , pretty , QuickCheck diff --git a/Cabal-hooks/CHANGELOG.md b/Cabal-hooks/CHANGELOG.md new file mode 100644 index 00000000000..2143a41771f --- /dev/null +++ b/Cabal-hooks/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog for `Cabal-hooks` + +## 3.14.2 - April 2025 + * No changes + +## 3.14 – November 2024 + + * Initial release of the `Hooks` API. + diff --git a/Cabal-hooks/Cabal-hooks.cabal b/Cabal-hooks/Cabal-hooks.cabal index db309369330..4109173a09c 100644 --- a/Cabal-hooks/Cabal-hooks.cabal +++ b/Cabal-hooks/Cabal-hooks.cabal @@ -1,68 +1,68 @@ -cabal-version: 2.2 -name: Cabal-hooks -version: 0.1 -copyright: 2023, Cabal Development Team -license: BSD-3-Clause -license-file: LICENSE -author: Cabal Development Team -maintainer: cabal-devel@haskell.org -homepage: http://www.haskell.org/cabal/ -bug-reports: https://github.com/haskell/cabal/issues -synopsis: API for the Hooks build-type -description: - User-facing API for the Hooks build-type. -category: Distribution -build-type: Simple - -extra-source-files: - readme.md changelog.md - -source-repository head - type: git - location: https://github.com/haskell/cabal/ - subdir: Cabal-hooks - -library - default-language: Haskell2010 - hs-source-dirs: src - - build-depends: - Cabal-syntax >= 3.13 && < 3.15, - Cabal >= 3.13 && < 3.15, - base >= 4.13 && < 5, - containers >= 0.5.0.0 && < 0.8, - transformers >= 0.5.6.0 && < 0.7 - - ghc-options: -Wall -fno-ignore-asserts -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates - - exposed-modules: - Distribution.Simple.SetupHooks - - other-extensions: - BangPatterns - CPP - DefaultSignatures - DeriveDataTypeable - DeriveFoldable - DeriveFunctor - DeriveGeneric - DeriveTraversable - ExistentialQuantification - FlexibleContexts - FlexibleInstances - GeneralizedNewtypeDeriving - ImplicitParams - KindSignatures - LambdaCase - NondecreasingIndentation - OverloadedStrings - PatternSynonyms - RankNTypes - RecordWildCards - ScopedTypeVariables - StandaloneDeriving - Trustworthy - TypeFamilies - TypeOperators - TypeSynonymInstances - UndecidableInstances +cabal-version: 2.2 +name: Cabal-hooks +version: 3.14 +copyright: 2023, Cabal Development Team +license: BSD-3-Clause +license-file: LICENSE +author: Cabal Development Team +maintainer: cabal-devel@haskell.org +homepage: http://www.haskell.org/cabal/ +bug-reports: https://github.com/haskell/cabal/issues +synopsis: API for the Hooks build-type +description: + User-facing API for the Hooks build-type. +category: Distribution +build-type: Simple + +extra-doc-files: + README.md CHANGELOG.md + +source-repository head + type: git + location: https://github.com/haskell/cabal/ + subdir: Cabal-hooks + +library + default-language: Haskell2010 + hs-source-dirs: src + + build-depends: + Cabal-syntax >= 3.14 && < 3.15, + Cabal >= 3.14 && < 3.15, + base >= 4.13 && < 5, + containers >= 0.5.0.0 && < 0.8, + transformers >= 0.5.6.0 && < 0.7 + + ghc-options: -Wall -fno-ignore-asserts -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates + + exposed-modules: + Distribution.Simple.SetupHooks + + other-extensions: + BangPatterns + CPP + DefaultSignatures + DeriveDataTypeable + DeriveFoldable + DeriveFunctor + DeriveGeneric + DeriveTraversable + ExistentialQuantification + FlexibleContexts + FlexibleInstances + GeneralizedNewtypeDeriving + ImplicitParams + KindSignatures + LambdaCase + NondecreasingIndentation + OverloadedStrings + PatternSynonyms + RankNTypes + RecordWildCards + ScopedTypeVariables + StandaloneDeriving + Trustworthy + TypeFamilies + TypeOperators + TypeSynonymInstances + UndecidableInstances diff --git a/Cabal-hooks/readme.md b/Cabal-hooks/README.md similarity index 100% rename from Cabal-hooks/readme.md rename to Cabal-hooks/README.md diff --git a/Cabal-hooks/changelog.md b/Cabal-hooks/changelog.md deleted file mode 100644 index ea633b2936a..00000000000 --- a/Cabal-hooks/changelog.md +++ /dev/null @@ -1,6 +0,0 @@ -# Changelog for `Cabal-hooks` - -## 0.1 – December 2023 - - * Initial release of the `Hooks` API. - diff --git a/Cabal-hooks/src/Distribution/Simple/SetupHooks.hs b/Cabal-hooks/src/Distribution/Simple/SetupHooks.hs index 2b49ffc5e5f..1d7afa39daa 100644 --- a/Cabal-hooks/src/Distribution/Simple/SetupHooks.hs +++ b/Cabal-hooks/src/Distribution/Simple/SetupHooks.hs @@ -260,7 +260,7 @@ Usage example: > custom-setup > setup-depends: > base >= 4.18 && < 5, -> Cabal-hooks >= 0.1 && < 0.2 +> Cabal-hooks >= 3.14 && < 3.15 > > The declared Cabal version should also be at least 3.14. diff --git a/Cabal-syntax/Cabal-syntax.cabal b/Cabal-syntax/Cabal-syntax.cabal index 1bc8bcabeb2..71303e5f220 100644 --- a/Cabal-syntax/Cabal-syntax.cabal +++ b/Cabal-syntax/Cabal-syntax.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: Cabal-syntax -version: 3.13.0.0 +version: 3.14.2.0 copyright: 2003-2024, Cabal Development Team (see AUTHORS file) license: BSD-3-Clause license-file: LICENSE diff --git a/Cabal-syntax/ChangeLog.md b/Cabal-syntax/ChangeLog.md index 73c417220df..15eaf05e88b 100644 --- a/Cabal-syntax/ChangeLog.md +++ b/Cabal-syntax/ChangeLog.md @@ -1 +1 @@ -Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.1.0.md +Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md diff --git a/Cabal-syntax/src/Distribution/Backpack.hs b/Cabal-syntax/src/Distribution/Backpack.hs index b30028bc41c..7115b852203 100644 --- a/Cabal-syntax/src/Distribution/Backpack.hs +++ b/Cabal-syntax/src/Distribution/Backpack.hs @@ -91,7 +91,7 @@ data OpenUnitId -- MUST NOT be for an indefinite component; an 'OpenUnitId' -- is guaranteed not to have any holes. DefiniteUnitId DefUnitId - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) -- TODO: cache holes? @@ -165,7 +165,7 @@ mkDefUnitId cid insts = data OpenModule = OpenModule OpenUnitId ModuleName | OpenModuleVar ModuleName - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary OpenModule instance Structured OpenModule diff --git a/Cabal-syntax/src/Distribution/CabalSpecVersion.hs b/Cabal-syntax/src/Distribution/CabalSpecVersion.hs index 3d1f9418e4a..a81e8921a94 100644 --- a/Cabal-syntax/src/Distribution/CabalSpecVersion.hs +++ b/Cabal-syntax/src/Distribution/CabalSpecVersion.hs @@ -35,7 +35,7 @@ data CabalSpecVersion | -- 3.10: no changes CabalSpecV3_12 | CabalSpecV3_14 - deriving (Eq, Ord, Show, Read, Enum, Bounded, Typeable, Data, Generic) + deriving (Eq, Ord, Show, Read, Enum, Bounded, Data, Generic) instance Binary CabalSpecVersion instance Structured CabalSpecVersion diff --git a/Cabal-syntax/src/Distribution/Compat/Binary.hs b/Cabal-syntax/src/Distribution/Compat/Binary.hs index 8849fc13b10..ffb1c987e6f 100644 --- a/Cabal-syntax/src/Distribution/Compat/Binary.hs +++ b/Cabal-syntax/src/Distribution/Compat/Binary.hs @@ -1,6 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE PatternSynonyms #-} - module Distribution.Compat.Binary ( decodeOrFailIO , decodeFileOrFail' @@ -20,4 +17,4 @@ decodeOrFailIO :: Binary a => ByteString -> IO (Either String a) decodeOrFailIO bs = catch (evaluate (decode bs) >>= return . Right) handler where - handler (ErrorCallWithLocation str _) = return $ Left str + handler (ErrorCall str) = return $ Left str diff --git a/Cabal-syntax/src/Distribution/Compat/Exception.hs b/Cabal-syntax/src/Distribution/Compat/Exception.hs index e2a9419e5a5..048ef25158b 100644 --- a/Cabal-syntax/src/Distribution/Compat/Exception.hs +++ b/Cabal-syntax/src/Distribution/Compat/Exception.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} - module Distribution.Compat.Exception ( catchIO , catchExit diff --git a/Cabal-syntax/src/Distribution/Compat/Graph.hs b/Cabal-syntax/src/Distribution/Compat/Graph.hs index 1a6de3a571b..c716563f52a 100644 --- a/Cabal-syntax/src/Distribution/Compat/Graph.hs +++ b/Cabal-syntax/src/Distribution/Compat/Graph.hs @@ -1,16 +1,10 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Compat.Graph -- Copyright : (c) Edward Z. Yang 2016 @@ -122,7 +116,6 @@ data Graph a = Graph , graphKeyToVertex :: Key a -> Maybe G.Vertex , graphBroken :: [(a, [Key a])] } - deriving (Typeable) -- NB: Not a Functor! (or Traversable), because you need -- to restrict Key a ~ Key b. We provide our own mapping diff --git a/Cabal-syntax/src/Distribution/Compat/MonadFail.hs b/Cabal-syntax/src/Distribution/Compat/MonadFail.hs index 3516aef7e77..4185bca592f 100644 --- a/Cabal-syntax/src/Distribution/Compat/MonadFail.hs +++ b/Cabal-syntax/src/Distribution/Compat/MonadFail.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} - -- | Compatibility layer for "Control.Monad.Fail" module Distribution.Compat.MonadFail (Control.Monad.Fail.MonadFail (fail)) where diff --git a/Cabal-syntax/src/Distribution/Compat/Newtype.hs b/Cabal-syntax/src/Distribution/Compat/Newtype.hs index 56f55a9282b..c4275bed305 100644 --- a/Cabal-syntax/src/Distribution/Compat/Newtype.hs +++ b/Cabal-syntax/src/Distribution/Compat/Newtype.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} diff --git a/Cabal-syntax/src/Distribution/Compat/NonEmptySet.hs b/Cabal-syntax/src/Distribution/Compat/NonEmptySet.hs index 17e3811e9a4..69dca8dd4cb 100644 --- a/Cabal-syntax/src/Distribution/Compat/NonEmptySet.hs +++ b/Cabal-syntax/src/Distribution/Compat/NonEmptySet.hs @@ -32,7 +32,6 @@ import Control.DeepSeq (NFData (..)) import Data.Data (Data) import Data.List.NonEmpty (NonEmpty (..)) import Data.Semigroup (Semigroup (..)) -import Data.Typeable (Typeable) import qualified Data.Foldable as F import qualified Data.Set as Set @@ -48,7 +47,7 @@ import Control.Monad (fail) -- | @since 3.4.0.0 newtype NonEmptySet a = NES (Set.Set a) - deriving (Eq, Ord, Typeable, Data, Read) + deriving (Eq, Ord, Data, Read) ------------------------------------------------------------------------------- -- Instances diff --git a/Cabal-syntax/src/Distribution/Compat/Prelude.hs b/Cabal-syntax/src/Distribution/Compat/Prelude.hs index 2d6f92b5da6..59401b5d00e 100644 --- a/Cabal-syntax/src/Distribution/Compat/Prelude.hs +++ b/Cabal-syntax/src/Distribution/Compat/Prelude.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE Trustworthy #-} diff --git a/Cabal-syntax/src/Distribution/Compat/Semigroup.hs b/Cabal-syntax/src/Distribution/Compat/Semigroup.hs index 9db9f6ebe98..679cabb69e2 100644 --- a/Cabal-syntax/src/Distribution/Compat/Semigroup.hs +++ b/Cabal-syntax/src/Distribution/Compat/Semigroup.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -18,7 +16,6 @@ module Distribution.Compat.Semigroup , gmempty ) where -import Data.Typeable (Typeable) import Distribution.Compat.Binary (Binary) import Distribution.Utils.Structured (Structured) @@ -39,7 +36,7 @@ instance Semigroup (First' a) where -- | A copy of 'Data.Semigroup.Last'. newtype Last' a = Last' {getLast' :: a} - deriving (Eq, Ord, Read, Show, Generic, Binary, Typeable) + deriving (Eq, Ord, Read, Show, Generic, Binary) instance Structured a => Structured (Last' a) @@ -52,7 +49,7 @@ instance Functor Last' where -- | A wrapper around 'Maybe', providing the 'Semigroup' and 'Monoid' instances -- implemented for 'Maybe' since @base-4.11@. newtype Option' a = Option' {getOption' :: Maybe a} - deriving (Eq, Ord, Read, Show, Binary, Generic, Functor, Typeable) + deriving (Eq, Ord, Read, Show, Binary, Generic, Functor) instance Structured a => Structured (Option' a) diff --git a/Cabal-syntax/src/Distribution/Compiler.hs b/Cabal-syntax/src/Distribution/Compiler.hs index d715efbf951..571b0ad1b95 100644 --- a/Cabal-syntax/src/Distribution/Compiler.hs +++ b/Cabal-syntax/src/Distribution/Compiler.hs @@ -78,7 +78,7 @@ data CompilerFlavor | MHS -- MicroHS, see https://github.com/augustss/MicroHs | HaskellSuite String -- string is the id of the actual compiler | OtherCompiler String - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary CompilerFlavor instance Structured CompilerFlavor @@ -143,7 +143,6 @@ data PerCompilerFlavor v = PerCompilerFlavor v v , Read , Eq , Ord - , Typeable , Data , Functor , Foldable @@ -174,7 +173,7 @@ instance (Semigroup a, Monoid a) => Monoid (PerCompilerFlavor a) where -- ------------------------------------------------------------ data CompilerId = CompilerId CompilerFlavor Version - deriving (Eq, Generic, Ord, Read, Show, Typeable) + deriving (Eq, Generic, Ord, Read, Show) instance Binary CompilerId instance Structured CompilerId @@ -224,7 +223,7 @@ instance Binary CompilerInfo data AbiTag = NoAbiTag | AbiTag String - deriving (Eq, Generic, Show, Read, Typeable) + deriving (Eq, Generic, Show, Read) instance Binary AbiTag instance Structured AbiTag diff --git a/Cabal-syntax/src/Distribution/FieldGrammar/Class.hs b/Cabal-syntax/src/Distribution/FieldGrammar/Class.hs index df8b69414f2..fa815a49a5e 100644 --- a/Cabal-syntax/src/Distribution/FieldGrammar/Class.hs +++ b/Cabal-syntax/src/Distribution/FieldGrammar/Class.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal-syntax/src/Distribution/Fields/ParseResult.hs b/Cabal-syntax/src/Distribution/Fields/ParseResult.hs index aad7de2737a..912ea7fb02f 100644 --- a/Cabal-syntax/src/Distribution/Fields/ParseResult.hs +++ b/Cabal-syntax/src/Distribution/Fields/ParseResult.hs @@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal-syntax/src/Distribution/License.hs b/Cabal-syntax/src/Distribution/License.hs index f79ef6d0549..bcd2b84b63b 100644 --- a/Cabal-syntax/src/Distribution/License.hs +++ b/Cabal-syntax/src/Distribution/License.hs @@ -111,7 +111,7 @@ data License OtherLicense | -- | Indicates an erroneous license name. UnknownLicense String - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary License instance Structured License diff --git a/Cabal-syntax/src/Distribution/ModuleName.hs b/Cabal-syntax/src/Distribution/ModuleName.hs index 90082d29f06..59c318004a9 100644 --- a/Cabal-syntax/src/Distribution/ModuleName.hs +++ b/Cabal-syntax/src/Distribution/ModuleName.hs @@ -40,7 +40,7 @@ import qualified Text.PrettyPrint as Disp -- | A valid Haskell module name. newtype ModuleName = ModuleName ShortText - deriving (Eq, Generic, Ord, Read, Show, Typeable, Data) + deriving (Eq, Generic, Ord, Read, Show, Data) unModuleName :: ModuleName -> String unModuleName (ModuleName s) = fromShortText s diff --git a/Cabal-syntax/src/Distribution/PackageDescription/Parsec.hs b/Cabal-syntax/src/Distribution/PackageDescription/Parsec.hs index ae4c0cfec6b..9ea72925f78 100644 --- a/Cabal-syntax/src/Distribution/PackageDescription/Parsec.hs +++ b/Cabal-syntax/src/Distribution/PackageDescription/Parsec.hs @@ -1,11 +1,8 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE ScopedTypeVariables #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.PackageDescription.Parsec -- Copyright : Isaac Jones 2003-2005 diff --git a/Cabal-syntax/src/Distribution/Parsec.hs b/Cabal-syntax/src/Distribution/Parsec.hs index 3bf62597222..d0197616fd6 100644 --- a/Cabal-syntax/src/Distribution/Parsec.hs +++ b/Cabal-syntax/src/Distribution/Parsec.hs @@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal-syntax/src/Distribution/SPDX/License.hs b/Cabal-syntax/src/Distribution/SPDX/License.hs index af271e9115a..2331e66c669 100644 --- a/Cabal-syntax/src/Distribution/SPDX/License.hs +++ b/Cabal-syntax/src/Distribution/SPDX/License.hs @@ -41,7 +41,7 @@ data License NONE | -- | A valid SPDX License Expression as defined in Appendix IV. License LicenseExpression - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) instance Binary License instance Structured License diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs index 6246d8df41d..a82ade17265 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs @@ -30,76 +30,81 @@ import qualified Text.PrettyPrint as Disp -- LicenseExceptionId ------------------------------------------------------------------------------- --- | SPDX License Exceptions identifiers list v3.23 +-- | SPDX License Exceptions identifiers list v3.25 data LicenseExceptionId = DS389_exception -- ^ @389-exception@, 389 Directory Server Exception - | Asterisk_exception -- ^ @Asterisk-exception@, Asterisk exception, SPDX License List 3.23 + | Asterisk_exception -- ^ @Asterisk-exception@, Asterisk exception, SPDX License List 3.23, SPDX License List 3.25 + | Asterisk_linking_protocols_exception -- ^ @Asterisk-linking-protocols-exception@, Asterisk linking protocols exception, SPDX License List 3.25 | Autoconf_exception_2_0 -- ^ @Autoconf-exception-2.0@, Autoconf exception 2.0 | Autoconf_exception_3_0 -- ^ @Autoconf-exception-3.0@, Autoconf exception 3.0 - | Autoconf_exception_generic_3_0 -- ^ @Autoconf-exception-generic-3.0@, Autoconf generic exception for GPL-3.0, SPDX License List 3.23 - | Autoconf_exception_generic -- ^ @Autoconf-exception-generic@, Autoconf generic exception, SPDX License List 3.23 - | Autoconf_exception_macro -- ^ @Autoconf-exception-macro@, Autoconf macro exception, SPDX License List 3.23 - | Bison_exception_1_24 -- ^ @Bison-exception-1.24@, Bison exception 1.24, SPDX License List 3.23 + | Autoconf_exception_generic_3_0 -- ^ @Autoconf-exception-generic-3.0@, Autoconf generic exception for GPL-3.0, SPDX License List 3.23, SPDX License List 3.25 + | Autoconf_exception_generic -- ^ @Autoconf-exception-generic@, Autoconf generic exception, SPDX License List 3.23, SPDX License List 3.25 + | Autoconf_exception_macro -- ^ @Autoconf-exception-macro@, Autoconf macro exception, SPDX License List 3.23, SPDX License List 3.25 + | Bison_exception_1_24 -- ^ @Bison-exception-1.24@, Bison exception 1.24, SPDX License List 3.23, SPDX License List 3.25 | Bison_exception_2_2 -- ^ @Bison-exception-2.2@, Bison exception 2.2 | Bootloader_exception -- ^ @Bootloader-exception@, Bootloader Distribution Exception | Classpath_exception_2_0 -- ^ @Classpath-exception-2.0@, Classpath exception 2.0 | CLISP_exception_2_0 -- ^ @CLISP-exception-2.0@, CLISP exception 2.0 - | Cryptsetup_OpenSSL_exception -- ^ @cryptsetup-OpenSSL-exception@, cryptsetup OpenSSL exception, SPDX License List 3.23 + | Cryptsetup_OpenSSL_exception -- ^ @cryptsetup-OpenSSL-exception@, cryptsetup OpenSSL exception, SPDX License List 3.23, SPDX License List 3.25 | DigiRule_FOSS_exception -- ^ @DigiRule-FOSS-exception@, DigiRule FOSS License Exception | ECos_exception_2_0 -- ^ @eCos-exception-2.0@, eCos exception 2.0 + | Erlang_otp_linking_exception -- ^ @erlang-otp-linking-exception@, Erlang/OTP Linking Exception, SPDX License List 3.25 | Fawkes_Runtime_exception -- ^ @Fawkes-Runtime-exception@, Fawkes Runtime Exception | FLTK_exception -- ^ @FLTK-exception@, FLTK exception - | Fmt_exception -- ^ @fmt-exception@, fmt exception, SPDX License List 3.23 + | Fmt_exception -- ^ @fmt-exception@, fmt exception, SPDX License List 3.23, SPDX License List 3.25 | Font_exception_2_0 -- ^ @Font-exception-2.0@, Font exception 2.0 | Freertos_exception_2_0 -- ^ @freertos-exception-2.0@, FreeRTOS Exception 2.0 - | GCC_exception_2_0_note -- ^ @GCC-exception-2.0-note@, GCC Runtime Library exception 2.0 - note variant, SPDX License List 3.23 + | GCC_exception_2_0_note -- ^ @GCC-exception-2.0-note@, GCC Runtime Library exception 2.0 - note variant, SPDX License List 3.23, SPDX License List 3.25 | GCC_exception_2_0 -- ^ @GCC-exception-2.0@, GCC Runtime Library exception 2.0 | GCC_exception_3_1 -- ^ @GCC-exception-3.1@, GCC Runtime Library exception 3.1 - | Gmsh_exception -- ^ @Gmsh-exception@, Gmsh exception>, SPDX License List 3.23 - | GNAT_exception -- ^ @GNAT-exception@, GNAT exception, SPDX License List 3.23 - | GNOME_examples_exception -- ^ @GNOME-examples-exception@, GNOME examples exception, SPDX License List 3.23 - | GNU_compiler_exception -- ^ @GNU-compiler-exception@, GNU Compiler Exception, SPDX License List 3.23 + | Gmsh_exception -- ^ @Gmsh-exception@, Gmsh exception>, SPDX License List 3.23, SPDX License List 3.25 + | GNAT_exception -- ^ @GNAT-exception@, GNAT exception, SPDX License List 3.23, SPDX License List 3.25 + | GNOME_examples_exception -- ^ @GNOME-examples-exception@, GNOME examples exception, SPDX License List 3.23, SPDX License List 3.25 + | GNU_compiler_exception -- ^ @GNU-compiler-exception@, GNU Compiler Exception, SPDX License List 3.23, SPDX License List 3.25 | Gnu_javamail_exception -- ^ @gnu-javamail-exception@, GNU JavaMail exception - | GPL_3_0_interface_exception -- ^ @GPL-3.0-interface-exception@, GPL-3.0 Interface Exception, SPDX License List 3.23 - | GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GStreamer_exception_2005 -- ^ @GStreamer-exception-2005@, GStreamer Exception (2005), SPDX License List 3.23 - | GStreamer_exception_2008 -- ^ @GStreamer-exception-2008@, GStreamer Exception (2008), SPDX License List 3.23 + | GPL_3_0_interface_exception -- ^ @GPL-3.0-interface-exception@, GPL-3.0 Interface Exception, SPDX License List 3.23, SPDX License List 3.25 + | GPL_3_0_linking_exception -- ^ @GPL-3.0-linking-exception@, GPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GPL_3_0_linking_source_exception -- ^ @GPL-3.0-linking-source-exception@, GPL-3.0 Linking Exception (with Corresponding Source), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GPL_CC_1_0 -- ^ @GPL-CC-1.0@, GPL Cooperation Commitment 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GStreamer_exception_2005 -- ^ @GStreamer-exception-2005@, GStreamer Exception (2005), SPDX License List 3.23, SPDX License List 3.25 + | GStreamer_exception_2008 -- ^ @GStreamer-exception-2008@, GStreamer Exception (2008), SPDX License List 3.23, SPDX License List 3.25 | I2p_gpl_java_exception -- ^ @i2p-gpl-java-exception@, i2p GPL+Java Exception - | KiCad_libraries_exception -- ^ @KiCad-libraries-exception@, KiCad Libraries Exception, SPDX License List 3.23 - | LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Libpri_OpenH323_exception -- ^ @libpri-OpenH323-exception@, libpri OpenH323 exception, SPDX License List 3.23 + | KiCad_libraries_exception -- ^ @KiCad-libraries-exception@, KiCad Libraries Exception, SPDX License List 3.23, SPDX License List 3.25 + | LGPL_3_0_linking_exception -- ^ @LGPL-3.0-linking-exception@, LGPL-3.0 Linking Exception, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Libpri_OpenH323_exception -- ^ @libpri-OpenH323-exception@, libpri OpenH323 exception, SPDX License List 3.23, SPDX License List 3.25 | Libtool_exception -- ^ @Libtool-exception@, Libtool Exception | Linux_syscall_note -- ^ @Linux-syscall-note@, Linux Syscall Note - | LLGPL -- ^ @LLGPL@, LLGPL Preamble, SPDX License List 3.23 - | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | LLGPL -- ^ @LLGPL@, LLGPL Preamble, SPDX License List 3.23, SPDX License List 3.25 + | LLVM_exception -- ^ @LLVM-exception@, LLVM Exception, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | LZMA_exception -- ^ @LZMA-exception@, LZMA exception | Mif_exception -- ^ @mif-exception@, Macros and Inline Functions Exception | Nokia_Qt_exception_1_1 -- ^ @Nokia-Qt-exception-1.1@, Nokia Qt LGPL exception 1.1, SPDX License List 3.0, SPDX License List 3.2 - | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | OCaml_LGPL_linking_exception -- ^ @OCaml-LGPL-linking-exception@, OCaml LGPL Linking Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | OCCT_exception_1_0 -- ^ @OCCT-exception-1.0@, Open CASCADE Exception 1.0 - | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | OpenJDK_assembly_exception_1_0 -- ^ @OpenJDK-assembly-exception-1.0@, OpenJDK Assembly exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Openvpn_openssl_exception -- ^ @openvpn-openssl-exception@, OpenVPN OpenSSL Exception - | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | QPL_1_0_INRIA_2004_exception -- ^ @QPL-1.0-INRIA-2004-exception@, INRIA QPL 1.0 2004 variant exception, SPDX License List 3.23 - | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | PCRE2_exception -- ^ @PCRE2-exception@, PCRE2 exception, SPDX License List 3.25 + | PS_or_PDF_font_exception_20170817 -- ^ @PS-or-PDF-font-exception-20170817@, PS/PDF font exception (2017-08-17), SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | QPL_1_0_INRIA_2004_exception -- ^ @QPL-1.0-INRIA-2004-exception@, INRIA QPL 1.0 2004 variant exception, SPDX License List 3.23, SPDX License List 3.25 + | Qt_GPL_exception_1_0 -- ^ @Qt-GPL-exception-1.0@, Qt GPL exception 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Qt_LGPL_exception_1_1 -- ^ @Qt-LGPL-exception-1.1@, Qt LGPL exception 1.1, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Qwt_exception_1_0 -- ^ @Qwt-exception-1.0@, Qwt exception 1.0 - | SANE_exception -- ^ @SANE-exception@, SANE Exception, SPDX License List 3.23 - | SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Stunnel_exception -- ^ @stunnel-exception@, stunnel Exception, SPDX License List 3.23 - | SWI_exception -- ^ @SWI-exception@, SWI exception, SPDX License List 3.23 - | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Texinfo_exception -- ^ @Texinfo-exception@, Texinfo exception, SPDX License List 3.23 + | Romic_exception -- ^ @romic-exception@, Romic Exception, SPDX License List 3.25 + | RRDtool_FLOSS_exception_2_0 -- ^ @RRDtool-FLOSS-exception-2.0@, RRDtool FLOSS exception 2.0, SPDX License List 3.25 + | SANE_exception -- ^ @SANE-exception@, SANE Exception, SPDX License List 3.23, SPDX License List 3.25 + | SHL_2_0 -- ^ @SHL-2.0@, Solderpad Hardware License v2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | SHL_2_1 -- ^ @SHL-2.1@, Solderpad Hardware License v2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Stunnel_exception -- ^ @stunnel-exception@, stunnel Exception, SPDX License List 3.23, SPDX License List 3.25 + | SWI_exception -- ^ @SWI-exception@, SWI exception, SPDX License List 3.23, SPDX License List 3.25 + | Swift_exception -- ^ @Swift-exception@, Swift Exception, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Texinfo_exception -- ^ @Texinfo-exception@, Texinfo exception, SPDX License List 3.23, SPDX License List 3.25 | U_boot_exception_2_0 -- ^ @u-boot-exception-2.0@, U-Boot exception 2.0 - | UBDL_exception -- ^ @UBDL-exception@, Unmodified Binary Distribution exception, SPDX License List 3.23 - | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Vsftpd_openssl_exception -- ^ @vsftpd-openssl-exception@, vsftpd OpenSSL exception, SPDX License List 3.23 + | UBDL_exception -- ^ @UBDL-exception@, Unmodified Binary Distribution exception, SPDX License List 3.23, SPDX License List 3.25 + | Universal_FOSS_exception_1_0 -- ^ @Universal-FOSS-exception-1.0@, Universal FOSS Exception, Version 1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Vsftpd_openssl_exception -- ^ @vsftpd-openssl-exception@, vsftpd OpenSSL exception, SPDX License List 3.23, SPDX License List 3.25 | WxWindows_exception_3_1 -- ^ @WxWindows-exception-3.1@, WxWindows Library Exception 3.1 - | X11vnc_openssl_exception -- ^ @x11vnc-openssl-exception@, x11vnc OpenSSL Exception, SPDX License List 3.23 - deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable, Data, Generic) + | X11vnc_openssl_exception -- ^ @x11vnc-openssl-exception@, x11vnc OpenSSL Exception, SPDX License List 3.23, SPDX License List 3.25 + deriving (Eq, Ord, Enum, Bounded, Show, Read, Data, Generic) instance Binary LicenseExceptionId where put = Binary.putWord8 . fromIntegral . fromEnum @@ -134,6 +139,7 @@ instance NFData LicenseExceptionId where licenseExceptionId :: LicenseExceptionId -> String licenseExceptionId DS389_exception = "389-exception" licenseExceptionId Asterisk_exception = "Asterisk-exception" +licenseExceptionId Asterisk_linking_protocols_exception = "Asterisk-linking-protocols-exception" licenseExceptionId Autoconf_exception_2_0 = "Autoconf-exception-2.0" licenseExceptionId Autoconf_exception_3_0 = "Autoconf-exception-3.0" licenseExceptionId Autoconf_exception_generic_3_0 = "Autoconf-exception-generic-3.0" @@ -147,6 +153,7 @@ licenseExceptionId CLISP_exception_2_0 = "CLISP-exception-2.0" licenseExceptionId Cryptsetup_OpenSSL_exception = "cryptsetup-OpenSSL-exception" licenseExceptionId DigiRule_FOSS_exception = "DigiRule-FOSS-exception" licenseExceptionId ECos_exception_2_0 = "eCos-exception-2.0" +licenseExceptionId Erlang_otp_linking_exception = "erlang-otp-linking-exception" licenseExceptionId Fawkes_Runtime_exception = "Fawkes-Runtime-exception" licenseExceptionId FLTK_exception = "FLTK-exception" licenseExceptionId Fmt_exception = "fmt-exception" @@ -181,11 +188,14 @@ licenseExceptionId OCaml_LGPL_linking_exception = "OCaml-LGPL-linking-exception" licenseExceptionId OCCT_exception_1_0 = "OCCT-exception-1.0" licenseExceptionId OpenJDK_assembly_exception_1_0 = "OpenJDK-assembly-exception-1.0" licenseExceptionId Openvpn_openssl_exception = "openvpn-openssl-exception" +licenseExceptionId PCRE2_exception = "PCRE2-exception" licenseExceptionId PS_or_PDF_font_exception_20170817 = "PS-or-PDF-font-exception-20170817" licenseExceptionId QPL_1_0_INRIA_2004_exception = "QPL-1.0-INRIA-2004-exception" licenseExceptionId Qt_GPL_exception_1_0 = "Qt-GPL-exception-1.0" licenseExceptionId Qt_LGPL_exception_1_1 = "Qt-LGPL-exception-1.1" licenseExceptionId Qwt_exception_1_0 = "Qwt-exception-1.0" +licenseExceptionId Romic_exception = "romic-exception" +licenseExceptionId RRDtool_FLOSS_exception_2_0 = "RRDtool-FLOSS-exception-2.0" licenseExceptionId SANE_exception = "SANE-exception" licenseExceptionId SHL_2_0 = "SHL-2.0" licenseExceptionId SHL_2_1 = "SHL-2.1" @@ -204,6 +214,7 @@ licenseExceptionId X11vnc_openssl_exception = "x11vnc-openssl-exception" licenseExceptionName :: LicenseExceptionId -> String licenseExceptionName DS389_exception = "389 Directory Server Exception" licenseExceptionName Asterisk_exception = "Asterisk exception" +licenseExceptionName Asterisk_linking_protocols_exception = "Asterisk linking protocols exception" licenseExceptionName Autoconf_exception_2_0 = "Autoconf exception 2.0" licenseExceptionName Autoconf_exception_3_0 = "Autoconf exception 3.0" licenseExceptionName Autoconf_exception_generic_3_0 = "Autoconf generic exception for GPL-3.0" @@ -217,6 +228,7 @@ licenseExceptionName CLISP_exception_2_0 = "CLISP exception 2.0" licenseExceptionName Cryptsetup_OpenSSL_exception = "cryptsetup OpenSSL exception" licenseExceptionName DigiRule_FOSS_exception = "DigiRule FOSS License Exception" licenseExceptionName ECos_exception_2_0 = "eCos exception 2.0" +licenseExceptionName Erlang_otp_linking_exception = "Erlang/OTP Linking Exception" licenseExceptionName Fawkes_Runtime_exception = "Fawkes Runtime Exception" licenseExceptionName FLTK_exception = "FLTK exception" licenseExceptionName Fmt_exception = "fmt exception" @@ -251,11 +263,14 @@ licenseExceptionName OCaml_LGPL_linking_exception = "OCaml LGPL Linking Exceptio licenseExceptionName OCCT_exception_1_0 = "Open CASCADE Exception 1.0" licenseExceptionName OpenJDK_assembly_exception_1_0 = "OpenJDK Assembly exception 1.0" licenseExceptionName Openvpn_openssl_exception = "OpenVPN OpenSSL Exception" +licenseExceptionName PCRE2_exception = "PCRE2 exception" licenseExceptionName PS_or_PDF_font_exception_20170817 = "PS/PDF font exception (2017-08-17)" licenseExceptionName QPL_1_0_INRIA_2004_exception = "INRIA QPL 1.0 2004 variant exception" licenseExceptionName Qt_GPL_exception_1_0 = "Qt GPL exception 1.0" licenseExceptionName Qt_LGPL_exception_1_1 = "Qt LGPL exception 1.1" licenseExceptionName Qwt_exception_1_0 = "Qwt exception 1.0" +licenseExceptionName Romic_exception = "Romic Exception" +licenseExceptionName RRDtool_FLOSS_exception_2_0 = "RRDtool FLOSS exception 2.0" licenseExceptionName SANE_exception = "SANE Exception" licenseExceptionName SHL_2_0 = "Solderpad Hardware License v2.0" licenseExceptionName SHL_2_1 = "Solderpad Hardware License v2.1" @@ -394,6 +409,54 @@ licenseExceptionIdList LicenseListVersion_3_23 = , X11vnc_openssl_exception ] ++ bulkOfLicenses +licenseExceptionIdList LicenseListVersion_3_25 = + [ Asterisk_exception + , Asterisk_linking_protocols_exception + , Autoconf_exception_generic_3_0 + , Autoconf_exception_generic + , Autoconf_exception_macro + , Bison_exception_1_24 + , Cryptsetup_OpenSSL_exception + , Erlang_otp_linking_exception + , Fmt_exception + , GCC_exception_2_0_note + , Gmsh_exception + , GNAT_exception + , GNOME_examples_exception + , GNU_compiler_exception + , GPL_3_0_interface_exception + , GPL_3_0_linking_exception + , GPL_3_0_linking_source_exception + , GPL_CC_1_0 + , GStreamer_exception_2005 + , GStreamer_exception_2008 + , KiCad_libraries_exception + , LGPL_3_0_linking_exception + , Libpri_OpenH323_exception + , LLGPL + , LLVM_exception + , OCaml_LGPL_linking_exception + , OpenJDK_assembly_exception_1_0 + , PCRE2_exception + , PS_or_PDF_font_exception_20170817 + , QPL_1_0_INRIA_2004_exception + , Qt_GPL_exception_1_0 + , Qt_LGPL_exception_1_1 + , Romic_exception + , RRDtool_FLOSS_exception_2_0 + , SANE_exception + , SHL_2_0 + , SHL_2_1 + , Stunnel_exception + , SWI_exception + , Swift_exception + , Texinfo_exception + , UBDL_exception + , Universal_FOSS_exception_1_0 + , Vsftpd_openssl_exception + , X11vnc_openssl_exception + ] + ++ bulkOfLicenses -- | Create a 'LicenseExceptionId' from a 'String'. mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId @@ -404,6 +467,7 @@ mkLicenseExceptionId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9 mkLicenseExceptionId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10 mkLicenseExceptionId LicenseListVersion_3_16 s = Map.lookup s stringLookup_3_16 mkLicenseExceptionId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23 +mkLicenseExceptionId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25 stringLookup_3_0 :: Map String LicenseExceptionId stringLookup_3_0 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $ @@ -433,6 +497,10 @@ stringLookup_3_23 :: Map String LicenseExceptionId stringLookup_3_23 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $ licenseExceptionIdList LicenseListVersion_3_23 +stringLookup_3_25 :: Map String LicenseExceptionId +stringLookup_3_25 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $ + licenseExceptionIdList LicenseListVersion_3_25 + -- | License exceptions in all SPDX License lists bulkOfLicenses :: [LicenseExceptionId] bulkOfLicenses = diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseExpression.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseExpression.hs index c77314746f8..2fe784b2792 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseExpression.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseExpression.hs @@ -43,7 +43,7 @@ data LicenseExpression = ELicense !SimpleLicenseExpression !(Maybe LicenseExceptionId) | EAnd !LicenseExpression !LicenseExpression | EOr !LicenseExpression !LicenseExpression - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) -- | Simple License Expressions. data SimpleLicenseExpression @@ -53,7 +53,7 @@ data SimpleLicenseExpression ELicenseIdPlus LicenseId | -- | A SPDX user defined license reference: For example: @LicenseRef-23@, @LicenseRef-MIT-Style-1@, or @DocumentRef-spdx-tool-1.2:LicenseRef-MIT-Style-2@ ELicenseRef LicenseRef - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) simpleLicenseExpression :: LicenseId -> LicenseExpression simpleLicenseExpression i = ELicense (ELicenseId i) Nothing diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs index 5af7fd86e8b..a8a4b78180e 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseId.hs @@ -33,16 +33,17 @@ import qualified Text.PrettyPrint as Disp -- LicenseId ------------------------------------------------------------------------------- --- | SPDX License identifiers list v3.23 +-- | SPDX License identifiers list v3.25 data LicenseId = NullBSD -- ^ @0BSD@, BSD Zero Clause License + | X3D_Slicer_1_0 -- ^ @3D-Slicer-1.0@, 3D Slicer License v1.0, SPDX License List 3.25 | AAL -- ^ @AAL@, Attribution Assurance License | Abstyles -- ^ @Abstyles@, Abstyles License - | AdaCore_doc -- ^ @AdaCore-doc@, AdaCore Doc License, SPDX License List 3.23 + | AdaCore_doc -- ^ @AdaCore-doc@, AdaCore Doc License, SPDX License List 3.23, SPDX License List 3.25 | Adobe_2006 -- ^ @Adobe-2006@, Adobe Systems Incorporated Source Code License Agreement - | Adobe_Display_PostScript -- ^ @Adobe-Display-PostScript@, Adobe Display PostScript License, SPDX License List 3.23 + | Adobe_Display_PostScript -- ^ @Adobe-Display-PostScript@, Adobe Display PostScript License, SPDX License List 3.23, SPDX License List 3.25 | Adobe_Glyph -- ^ @Adobe-Glyph@, Adobe Glyph List License - | Adobe_Utopia -- ^ @Adobe-Utopia@, Adobe Utopia Font License, SPDX License List 3.23 + | Adobe_Utopia -- ^ @Adobe-Utopia@, Adobe Utopia Font License, SPDX License List 3.23, SPDX License List 3.25 | ADSL -- ^ @ADSL@, Amazon Digital Services License | AFL_1_1 -- ^ @AFL-1.1@, Academic Free License v1.1 | AFL_1_2 -- ^ @AFL-1.2@, Academic Free License v1.2 @@ -51,151 +52,155 @@ data LicenseId | AFL_3_0 -- ^ @AFL-3.0@, Academic Free License v3.0 | Afmparse -- ^ @Afmparse@, Afmparse License | AGPL_1_0 -- ^ @AGPL-1.0@, Affero General Public License v1.0, SPDX License List 3.0 - | AGPL_1_0_only -- ^ @AGPL-1.0-only@, Affero General Public License v1.0 only, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | AGPL_1_0_or_later -- ^ @AGPL-1.0-or-later@, Affero General Public License v1.0 or later, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | AGPL_1_0_only -- ^ @AGPL-1.0-only@, Affero General Public License v1.0 only, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | AGPL_1_0_or_later -- ^ @AGPL-1.0-or-later@, Affero General Public License v1.0 or later, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | AGPL_3_0_only -- ^ @AGPL-3.0-only@, GNU Affero General Public License v3.0 only | AGPL_3_0_or_later -- ^ @AGPL-3.0-or-later@, GNU Affero General Public License v3.0 or later | Aladdin -- ^ @Aladdin@, Aladdin Free Public License + | AMD_newlib -- ^ @AMD-newlib@, AMD newlib License, SPDX License List 3.25 | AMDPLPA -- ^ @AMDPLPA@, AMD's plpa_map.c License - | AML_glslang -- ^ @AML-glslang@, AML glslang variant License, SPDX License List 3.23 + | AML_glslang -- ^ @AML-glslang@, AML glslang variant License, SPDX License List 3.23, SPDX License List 3.25 | AML -- ^ @AML@, Apple MIT License | AMPAS -- ^ @AMPAS@, Academy of Motion Picture Arts and Sciences BSD - | ANTLR_PD_fallback -- ^ @ANTLR-PD-fallback@, ANTLR Software Rights Notice with license fallback, SPDX License List 3.16, SPDX License List 3.23 + | ANTLR_PD_fallback -- ^ @ANTLR-PD-fallback@, ANTLR Software Rights Notice with license fallback, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | ANTLR_PD -- ^ @ANTLR-PD@, ANTLR Software Rights Notice + | Any_OSI -- ^ @any-OSI@, Any OSI License, SPDX License List 3.25 | Apache_1_0 -- ^ @Apache-1.0@, Apache License 1.0 | Apache_1_1 -- ^ @Apache-1.1@, Apache License 1.1 | Apache_2_0 -- ^ @Apache-2.0@, Apache License 2.0 | APAFML -- ^ @APAFML@, Adobe Postscript AFM License | APL_1_0 -- ^ @APL-1.0@, Adaptive Public License 1.0 - | App_s2p -- ^ @App-s2p@, App::s2p License, SPDX License List 3.16, SPDX License List 3.23 + | App_s2p -- ^ @App-s2p@, App::s2p License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | APSL_1_0 -- ^ @APSL-1.0@, Apple Public Source License 1.0 | APSL_1_1 -- ^ @APSL-1.1@, Apple Public Source License 1.1 | APSL_1_2 -- ^ @APSL-1.2@, Apple Public Source License 1.2 | APSL_2_0 -- ^ @APSL-2.0@, Apple Public Source License 2.0 - | Arphic_1999 -- ^ @Arphic-1999@, Arphic Public License, SPDX License List 3.23 + | Arphic_1999 -- ^ @Arphic-1999@, Arphic Public License, SPDX License List 3.23, SPDX License List 3.25 | Artistic_1_0_cl8 -- ^ @Artistic-1.0-cl8@, Artistic License 1.0 w/clause 8 | Artistic_1_0_Perl -- ^ @Artistic-1.0-Perl@, Artistic License 1.0 (Perl) | Artistic_1_0 -- ^ @Artistic-1.0@, Artistic License 1.0 | Artistic_2_0 -- ^ @Artistic-2.0@, Artistic License 2.0 - | ASWF_Digital_Assets_1_0 -- ^ @ASWF-Digital-Assets-1.0@, ASWF Digital Assets License version 1.0, SPDX License List 3.23 - | ASWF_Digital_Assets_1_1 -- ^ @ASWF-Digital-Assets-1.1@, ASWF Digital Assets License 1.1, SPDX License List 3.23 - | Baekmuk -- ^ @Baekmuk@, Baekmuk License, SPDX License List 3.23 + | ASWF_Digital_Assets_1_0 -- ^ @ASWF-Digital-Assets-1.0@, ASWF Digital Assets License version 1.0, SPDX License List 3.23, SPDX License List 3.25 + | ASWF_Digital_Assets_1_1 -- ^ @ASWF-Digital-Assets-1.1@, ASWF Digital Assets License 1.1, SPDX License List 3.23, SPDX License List 3.25 + | Baekmuk -- ^ @Baekmuk@, Baekmuk License, SPDX License List 3.23, SPDX License List 3.25 | Bahyph -- ^ @Bahyph@, Bahyph License | Barr -- ^ @Barr@, Barr License - | Bcrypt_Solar_Designer -- ^ @bcrypt-Solar-Designer@, bcrypt Solar Designer License, SPDX License List 3.23 + | Bcrypt_Solar_Designer -- ^ @bcrypt-Solar-Designer@, bcrypt Solar Designer License, SPDX License List 3.23, SPDX License List 3.25 | Beerware -- ^ @Beerware@, Beerware License - | Bitstream_Charter -- ^ @Bitstream-Charter@, Bitstream Charter Font License, SPDX License List 3.23 - | Bitstream_Vera -- ^ @Bitstream-Vera@, Bitstream Vera Font License, SPDX License List 3.23 + | Bitstream_Charter -- ^ @Bitstream-Charter@, Bitstream Charter Font License, SPDX License List 3.23, SPDX License List 3.25 + | Bitstream_Vera -- ^ @Bitstream-Vera@, Bitstream Vera Font License, SPDX License List 3.23, SPDX License List 3.25 | BitTorrent_1_0 -- ^ @BitTorrent-1.0@, BitTorrent Open Source License v1.0 | BitTorrent_1_1 -- ^ @BitTorrent-1.1@, BitTorrent Open Source License v1.1 - | Blessing -- ^ @blessing@, SQLite Blessing, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | BlueOak_1_0_0 -- ^ @BlueOak-1.0.0@, Blue Oak Model License 1.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Boehm_GC -- ^ @Boehm-GC@, Boehm-Demers-Weiser GC License, SPDX License List 3.23 + | Blessing -- ^ @blessing@, SQLite Blessing, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | BlueOak_1_0_0 -- ^ @BlueOak-1.0.0@, Blue Oak Model License 1.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Boehm_GC -- ^ @Boehm-GC@, Boehm-Demers-Weiser GC License, SPDX License List 3.23, SPDX License List 3.25 | Borceux -- ^ @Borceux@, Borceux license - | Brian_Gladman_2_Clause -- ^ @Brian-Gladman-2-Clause@, Brian Gladman 2-Clause License, SPDX License List 3.23 - | Brian_Gladman_3_Clause -- ^ @Brian-Gladman-3-Clause@, Brian Gladman 3-Clause License, SPDX License List 3.23 + | Brian_Gladman_2_Clause -- ^ @Brian-Gladman-2-Clause@, Brian Gladman 2-Clause License, SPDX License List 3.23, SPDX License List 3.25 + | Brian_Gladman_3_Clause -- ^ @Brian-Gladman-3-Clause@, Brian Gladman 3-Clause License, SPDX License List 3.23, SPDX License List 3.25 | BSD_1_Clause -- ^ @BSD-1-Clause@, BSD 1-Clause License | BSD_2_Clause_FreeBSD -- ^ @BSD-2-Clause-FreeBSD@, BSD 2-Clause FreeBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9 | BSD_2_Clause_NetBSD -- ^ @BSD-2-Clause-NetBSD@, BSD 2-Clause NetBSD License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6 - | BSD_2_Clause_Darwin -- ^ @BSD-2-Clause-Darwin@, BSD 2-Clause - Ian Darwin variant, SPDX License List 3.23 + | BSD_2_Clause_Darwin -- ^ @BSD-2-Clause-Darwin@, BSD 2-Clause - Ian Darwin variant, SPDX License List 3.23, SPDX License List 3.25 + | BSD_2_Clause_first_lines -- ^ @BSD-2-Clause-first-lines@, BSD 2-Clause - first lines requirement, SPDX License List 3.25 | BSD_2_Clause_Patent -- ^ @BSD-2-Clause-Patent@, BSD-2-Clause Plus Patent License - | BSD_2_Clause_Views -- ^ @BSD-2-Clause-Views@, BSD 2-Clause with views sentence, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | BSD_2_Clause_Views -- ^ @BSD-2-Clause-Views@, BSD 2-Clause with views sentence, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | BSD_2_Clause -- ^ @BSD-2-Clause@, BSD 2-Clause "Simplified" License - | BSD_3_Clause_acpica -- ^ @BSD-3-Clause-acpica@, BSD 3-Clause acpica variant, SPDX License List 3.23 + | BSD_3_Clause_acpica -- ^ @BSD-3-Clause-acpica@, BSD 3-Clause acpica variant, SPDX License List 3.23, SPDX License List 3.25 | BSD_3_Clause_Attribution -- ^ @BSD-3-Clause-Attribution@, BSD with attribution | BSD_3_Clause_Clear -- ^ @BSD-3-Clause-Clear@, BSD 3-Clause Clear License - | BSD_3_Clause_flex -- ^ @BSD-3-Clause-flex@, BSD 3-Clause Flex variant, SPDX License List 3.23 - | BSD_3_Clause_HP -- ^ @BSD-3-Clause-HP@, Hewlett-Packard BSD variant license, SPDX License List 3.23 + | BSD_3_Clause_flex -- ^ @BSD-3-Clause-flex@, BSD 3-Clause Flex variant, SPDX License List 3.23, SPDX License List 3.25 + | BSD_3_Clause_HP -- ^ @BSD-3-Clause-HP@, Hewlett-Packard BSD variant license, SPDX License List 3.23, SPDX License List 3.25 | BSD_3_Clause_LBNL -- ^ @BSD-3-Clause-LBNL@, Lawrence Berkeley National Labs BSD variant license - | BSD_3_Clause_Modification -- ^ @BSD-3-Clause-Modification@, BSD 3-Clause Modification, SPDX License List 3.16, SPDX License List 3.23 - | BSD_3_Clause_No_Military_License -- ^ @BSD-3-Clause-No-Military-License@, BSD 3-Clause No Military License, SPDX License List 3.16, SPDX License List 3.23 + | BSD_3_Clause_Modification -- ^ @BSD-3-Clause-Modification@, BSD 3-Clause Modification, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | BSD_3_Clause_No_Military_License -- ^ @BSD-3-Clause-No-Military-License@, BSD 3-Clause No Military License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | BSD_3_Clause_No_Nuclear_License_2014 -- ^ @BSD-3-Clause-No-Nuclear-License-2014@, BSD 3-Clause No Nuclear License 2014 | BSD_3_Clause_No_Nuclear_License -- ^ @BSD-3-Clause-No-Nuclear-License@, BSD 3-Clause No Nuclear License | BSD_3_Clause_No_Nuclear_Warranty -- ^ @BSD-3-Clause-No-Nuclear-Warranty@, BSD 3-Clause No Nuclear Warranty - | BSD_3_Clause_Open_MPI -- ^ @BSD-3-Clause-Open-MPI@, BSD 3-Clause Open MPI variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | BSD_3_Clause_Sun -- ^ @BSD-3-Clause-Sun@, BSD 3-Clause Sun Microsystems, SPDX License List 3.23 + | BSD_3_Clause_Open_MPI -- ^ @BSD-3-Clause-Open-MPI@, BSD 3-Clause Open MPI variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | BSD_3_Clause_Sun -- ^ @BSD-3-Clause-Sun@, BSD 3-Clause Sun Microsystems, SPDX License List 3.23, SPDX License List 3.25 | BSD_3_Clause -- ^ @BSD-3-Clause@, BSD 3-Clause "New" or "Revised" License - | BSD_4_Clause_Shortened -- ^ @BSD-4-Clause-Shortened@, BSD 4 Clause Shortened, SPDX License List 3.16, SPDX License List 3.23 + | BSD_4_Clause_Shortened -- ^ @BSD-4-Clause-Shortened@, BSD 4 Clause Shortened, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | BSD_4_Clause_UC -- ^ @BSD-4-Clause-UC@, BSD-4-Clause (University of California-Specific) | BSD_4_Clause -- ^ @BSD-4-Clause@, BSD 4-Clause "Original" or "Old" License - | BSD_4_3RENO -- ^ @BSD-4.3RENO@, BSD 4.3 RENO License, SPDX License List 3.23 - | BSD_4_3TAHOE -- ^ @BSD-4.3TAHOE@, BSD 4.3 TAHOE License, SPDX License List 3.23 - | BSD_Advertising_Acknowledgement -- ^ @BSD-Advertising-Acknowledgement@, BSD Advertising Acknowledgement License, SPDX License List 3.23 - | BSD_Attribution_HPND_disclaimer -- ^ @BSD-Attribution-HPND-disclaimer@, BSD with Attribution and HPND disclaimer, SPDX License List 3.23 - | BSD_Inferno_Nettverk -- ^ @BSD-Inferno-Nettverk@, BSD-Inferno-Nettverk, SPDX License List 3.23 + | BSD_4_3RENO -- ^ @BSD-4.3RENO@, BSD 4.3 RENO License, SPDX License List 3.23, SPDX License List 3.25 + | BSD_4_3TAHOE -- ^ @BSD-4.3TAHOE@, BSD 4.3 TAHOE License, SPDX License List 3.23, SPDX License List 3.25 + | BSD_Advertising_Acknowledgement -- ^ @BSD-Advertising-Acknowledgement@, BSD Advertising Acknowledgement License, SPDX License List 3.23, SPDX License List 3.25 + | BSD_Attribution_HPND_disclaimer -- ^ @BSD-Attribution-HPND-disclaimer@, BSD with Attribution and HPND disclaimer, SPDX License List 3.23, SPDX License List 3.25 + | BSD_Inferno_Nettverk -- ^ @BSD-Inferno-Nettverk@, BSD-Inferno-Nettverk, SPDX License List 3.23, SPDX License List 3.25 | BSD_Protection -- ^ @BSD-Protection@, BSD Protection License - | BSD_Source_beginning_file -- ^ @BSD-Source-beginning-file@, BSD Source Code Attribution - beginning of file variant, SPDX License List 3.23 + | BSD_Source_beginning_file -- ^ @BSD-Source-beginning-file@, BSD Source Code Attribution - beginning of file variant, SPDX License List 3.23, SPDX License List 3.25 | BSD_Source_Code -- ^ @BSD-Source-Code@, BSD Source Code Attribution - | BSD_Systemics_W3Works -- ^ @BSD-Systemics-W3Works@, Systemics W3Works BSD variant license, SPDX License List 3.23 - | BSD_Systemics -- ^ @BSD-Systemics@, Systemics BSD variant license, SPDX License List 3.23 + | BSD_Systemics_W3Works -- ^ @BSD-Systemics-W3Works@, Systemics W3Works BSD variant license, SPDX License List 3.23, SPDX License List 3.25 + | BSD_Systemics -- ^ @BSD-Systemics@, Systemics BSD variant license, SPDX License List 3.23, SPDX License List 3.25 | BSL_1_0 -- ^ @BSL-1.0@, Boost Software License 1.0 | Bzip2_1_0_5 -- ^ @bzip2-1.0.5@, bzip2 and libbzip2 License v1.0.5, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10 - | BUSL_1_1 -- ^ @BUSL-1.1@, Business Source License 1.1, SPDX License List 3.16, SPDX License List 3.23 + | BUSL_1_1 -- ^ @BUSL-1.1@, Business Source License 1.1, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Bzip2_1_0_6 -- ^ @bzip2-1.0.6@, bzip2 and libbzip2 License v1.0.6 - | C_UDA_1_0 -- ^ @C-UDA-1.0@, Computational Use of Data Agreement v1.0, SPDX License List 3.16, SPDX License List 3.23 - | CAL_1_0_Combined_Work_Exception -- ^ @CAL-1.0-Combined-Work-Exception@, Cryptographic Autonomy License 1.0 (Combined Work Exception), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CAL_1_0 -- ^ @CAL-1.0@, Cryptographic Autonomy License 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Caldera_no_preamble -- ^ @Caldera-no-preamble@, Caldera License (without preamble), SPDX License List 3.23 + | C_UDA_1_0 -- ^ @C-UDA-1.0@, Computational Use of Data Agreement v1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CAL_1_0_Combined_Work_Exception -- ^ @CAL-1.0-Combined-Work-Exception@, Cryptographic Autonomy License 1.0 (Combined Work Exception), SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CAL_1_0 -- ^ @CAL-1.0@, Cryptographic Autonomy License 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Caldera_no_preamble -- ^ @Caldera-no-preamble@, Caldera License (without preamble), SPDX License List 3.23, SPDX License List 3.25 | Caldera -- ^ @Caldera@, Caldera License + | Catharon -- ^ @Catharon@, Catharon License, SPDX License List 3.25 | CATOSL_1_1 -- ^ @CATOSL-1.1@, Computer Associates Trusted Open Source License 1.1 | CC_BY_1_0 -- ^ @CC-BY-1.0@, Creative Commons Attribution 1.0 Generic | CC_BY_2_0 -- ^ @CC-BY-2.0@, Creative Commons Attribution 2.0 Generic - | CC_BY_2_5_AU -- ^ @CC-BY-2.5-AU@, Creative Commons Attribution 2.5 Australia, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_2_5_AU -- ^ @CC-BY-2.5-AU@, Creative Commons Attribution 2.5 Australia, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_2_5 -- ^ @CC-BY-2.5@, Creative Commons Attribution 2.5 Generic - | CC_BY_3_0_AT -- ^ @CC-BY-3.0-AT@, Creative Commons Attribution 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_3_0_AU -- ^ @CC-BY-3.0-AU@, Creative Commons Attribution 3.0 Australia, SPDX License List 3.23 - | CC_BY_3_0_DE -- ^ @CC-BY-3.0-DE@, Creative Commons Attribution 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_3_0_IGO -- ^ @CC-BY-3.0-IGO@, Creative Commons Attribution 3.0 IGO, SPDX License List 3.23 - | CC_BY_3_0_NL -- ^ @CC-BY-3.0-NL@, Creative Commons Attribution 3.0 Netherlands, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_3_0_US -- ^ @CC-BY-3.0-US@, Creative Commons Attribution 3.0 United States, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_3_0_AT -- ^ @CC-BY-3.0-AT@, Creative Commons Attribution 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_3_0_AU -- ^ @CC-BY-3.0-AU@, Creative Commons Attribution 3.0 Australia, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_3_0_DE -- ^ @CC-BY-3.0-DE@, Creative Commons Attribution 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_3_0_IGO -- ^ @CC-BY-3.0-IGO@, Creative Commons Attribution 3.0 IGO, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_3_0_NL -- ^ @CC-BY-3.0-NL@, Creative Commons Attribution 3.0 Netherlands, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_3_0_US -- ^ @CC-BY-3.0-US@, Creative Commons Attribution 3.0 United States, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_3_0 -- ^ @CC-BY-3.0@, Creative Commons Attribution 3.0 Unported | CC_BY_4_0 -- ^ @CC-BY-4.0@, Creative Commons Attribution 4.0 International | CC_BY_NC_1_0 -- ^ @CC-BY-NC-1.0@, Creative Commons Attribution Non Commercial 1.0 Generic | CC_BY_NC_2_0 -- ^ @CC-BY-NC-2.0@, Creative Commons Attribution Non Commercial 2.0 Generic | CC_BY_NC_2_5 -- ^ @CC-BY-NC-2.5@, Creative Commons Attribution Non Commercial 2.5 Generic - | CC_BY_NC_3_0_DE -- ^ @CC-BY-NC-3.0-DE@, Creative Commons Attribution Non Commercial 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_NC_3_0_DE -- ^ @CC-BY-NC-3.0-DE@, Creative Commons Attribution Non Commercial 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_NC_3_0 -- ^ @CC-BY-NC-3.0@, Creative Commons Attribution Non Commercial 3.0 Unported | CC_BY_NC_4_0 -- ^ @CC-BY-NC-4.0@, Creative Commons Attribution Non Commercial 4.0 International | CC_BY_NC_ND_1_0 -- ^ @CC-BY-NC-ND-1.0@, Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic | CC_BY_NC_ND_2_0 -- ^ @CC-BY-NC-ND-2.0@, Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic | CC_BY_NC_ND_2_5 -- ^ @CC-BY-NC-ND-2.5@, Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic - | CC_BY_NC_ND_3_0_DE -- ^ @CC-BY-NC-ND-3.0-DE@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_NC_ND_3_0_IGO -- ^ @CC-BY-NC-ND-3.0-IGO@, Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_NC_ND_3_0_DE -- ^ @CC-BY-NC-ND-3.0-DE@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_NC_ND_3_0_IGO -- ^ @CC-BY-NC-ND-3.0-IGO@, Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_NC_ND_3_0 -- ^ @CC-BY-NC-ND-3.0@, Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported | CC_BY_NC_ND_4_0 -- ^ @CC-BY-NC-ND-4.0@, Creative Commons Attribution Non Commercial No Derivatives 4.0 International | CC_BY_NC_SA_1_0 -- ^ @CC-BY-NC-SA-1.0@, Creative Commons Attribution Non Commercial Share Alike 1.0 Generic - | CC_BY_NC_SA_2_0_DE -- ^ @CC-BY-NC-SA-2.0-DE@, Creative Commons Attribution Non Commercial Share Alike 2.0 Germany, SPDX License List 3.23 - | CC_BY_NC_SA_2_0_FR -- ^ @CC-BY-NC-SA-2.0-FR@, Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_NC_SA_2_0_UK -- ^ @CC-BY-NC-SA-2.0-UK@, Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_NC_SA_2_0_DE -- ^ @CC-BY-NC-SA-2.0-DE@, Creative Commons Attribution Non Commercial Share Alike 2.0 Germany, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_NC_SA_2_0_FR -- ^ @CC-BY-NC-SA-2.0-FR@, Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_NC_SA_2_0_UK -- ^ @CC-BY-NC-SA-2.0-UK@, Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_NC_SA_2_0 -- ^ @CC-BY-NC-SA-2.0@, Creative Commons Attribution Non Commercial Share Alike 2.0 Generic | CC_BY_NC_SA_2_5 -- ^ @CC-BY-NC-SA-2.5@, Creative Commons Attribution Non Commercial Share Alike 2.5 Generic - | CC_BY_NC_SA_3_0_DE -- ^ @CC-BY-NC-SA-3.0-DE@, Creative Commons Attribution Non Commercial Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_NC_SA_3_0_IGO -- ^ @CC-BY-NC-SA-3.0-IGO@, Creative Commons Attribution Non Commercial Share Alike 3.0 IGO, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_NC_SA_3_0_DE -- ^ @CC-BY-NC-SA-3.0-DE@, Creative Commons Attribution Non Commercial Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_NC_SA_3_0_IGO -- ^ @CC-BY-NC-SA-3.0-IGO@, Creative Commons Attribution Non Commercial Share Alike 3.0 IGO, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_NC_SA_3_0 -- ^ @CC-BY-NC-SA-3.0@, Creative Commons Attribution Non Commercial Share Alike 3.0 Unported | CC_BY_NC_SA_4_0 -- ^ @CC-BY-NC-SA-4.0@, Creative Commons Attribution Non Commercial Share Alike 4.0 International | CC_BY_ND_1_0 -- ^ @CC-BY-ND-1.0@, Creative Commons Attribution No Derivatives 1.0 Generic | CC_BY_ND_2_0 -- ^ @CC-BY-ND-2.0@, Creative Commons Attribution No Derivatives 2.0 Generic | CC_BY_ND_2_5 -- ^ @CC-BY-ND-2.5@, Creative Commons Attribution No Derivatives 2.5 Generic - | CC_BY_ND_3_0_DE -- ^ @CC-BY-ND-3.0-DE@, Creative Commons Attribution No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_ND_3_0_DE -- ^ @CC-BY-ND-3.0-DE@, Creative Commons Attribution No Derivatives 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_ND_3_0 -- ^ @CC-BY-ND-3.0@, Creative Commons Attribution No Derivatives 3.0 Unported | CC_BY_ND_4_0 -- ^ @CC-BY-ND-4.0@, Creative Commons Attribution No Derivatives 4.0 International | CC_BY_SA_1_0 -- ^ @CC-BY-SA-1.0@, Creative Commons Attribution Share Alike 1.0 Generic - | CC_BY_SA_2_0_UK -- ^ @CC-BY-SA-2.0-UK@, Creative Commons Attribution Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_SA_2_0_UK -- ^ @CC-BY-SA-2.0-UK@, Creative Commons Attribution Share Alike 2.0 England and Wales, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_SA_2_0 -- ^ @CC-BY-SA-2.0@, Creative Commons Attribution Share Alike 2.0 Generic - | CC_BY_SA_2_1_JP -- ^ @CC-BY-SA-2.1-JP@, Creative Commons Attribution Share Alike 2.1 Japan, SPDX License List 3.16, SPDX License List 3.23 + | CC_BY_SA_2_1_JP -- ^ @CC-BY-SA-2.1-JP@, Creative Commons Attribution Share Alike 2.1 Japan, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_SA_2_5 -- ^ @CC-BY-SA-2.5@, Creative Commons Attribution Share Alike 2.5 Generic - | CC_BY_SA_3_0_AT -- ^ @CC-BY-SA-3.0-AT@, Creative Commons Attribution Share Alike 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_SA_3_0_DE -- ^ @CC-BY-SA-3.0-DE@, Creative Commons Attribution Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23 - | CC_BY_SA_3_0_IGO -- ^ @CC-BY-SA-3.0-IGO@, Creative Commons Attribution-ShareAlike 3.0 IGO, SPDX License List 3.23 + | CC_BY_SA_3_0_AT -- ^ @CC-BY-SA-3.0-AT@, Creative Commons Attribution Share Alike 3.0 Austria, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_SA_3_0_DE -- ^ @CC-BY-SA-3.0-DE@, Creative Commons Attribution Share Alike 3.0 Germany, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CC_BY_SA_3_0_IGO -- ^ @CC-BY-SA-3.0-IGO@, Creative Commons Attribution-ShareAlike 3.0 IGO, SPDX License List 3.23, SPDX License List 3.25 | CC_BY_SA_3_0 -- ^ @CC-BY-SA-3.0@, Creative Commons Attribution Share Alike 3.0 Unported | CC_BY_SA_4_0 -- ^ @CC-BY-SA-4.0@, Creative Commons Attribution Share Alike 4.0 International - | CC_PDDC -- ^ @CC-PDDC@, Creative Commons Public Domain Dedication and Certification, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | CC_PDDC -- ^ @CC-PDDC@, Creative Commons Public Domain Dedication and Certification, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CC0_1_0 -- ^ @CC0-1.0@, Creative Commons Zero v1.0 Universal | CDDL_1_0 -- ^ @CDDL-1.0@, Common Development and Distribution License 1.0 | CDDL_1_1 -- ^ @CDDL-1.1@, Common Development and Distribution License 1.1 - | CDL_1_0 -- ^ @CDL-1.0@, Common Documentation License 1.0, SPDX License List 3.16, SPDX License List 3.23 + | CDL_1_0 -- ^ @CDL-1.0@, Common Documentation License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CDLA_Permissive_1_0 -- ^ @CDLA-Permissive-1.0@, Community Data License Agreement Permissive 1.0 - | CDLA_Permissive_2_0 -- ^ @CDLA-Permissive-2.0@, Community Data License Agreement Permissive 2.0, SPDX License List 3.16, SPDX License List 3.23 + | CDLA_Permissive_2_0 -- ^ @CDLA-Permissive-2.0@, Community Data License Agreement Permissive 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | CDLA_Sharing_1_0 -- ^ @CDLA-Sharing-1.0@, Community Data License Agreement Sharing 1.0 | CECILL_1_0 -- ^ @CECILL-1.0@, CeCILL Free Software License Agreement v1.0 | CECILL_1_1 -- ^ @CECILL-1.1@, CeCILL Free Software License Agreement v1.1 @@ -203,105 +208,108 @@ data LicenseId | CECILL_2_1 -- ^ @CECILL-2.1@, CeCILL Free Software License Agreement v2.1 | CECILL_B -- ^ @CECILL-B@, CeCILL-B Free Software License Agreement | CECILL_C -- ^ @CECILL-C@, CeCILL-C Free Software License Agreement - | CERN_OHL_1_1 -- ^ @CERN-OHL-1.1@, CERN Open Hardware Licence v1.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CERN_OHL_1_2 -- ^ @CERN-OHL-1.2@, CERN Open Hardware Licence v1.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CERN_OHL_P_2_0 -- ^ @CERN-OHL-P-2.0@, CERN Open Hardware Licence Version 2 - Permissive, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CERN_OHL_S_2_0 -- ^ @CERN-OHL-S-2.0@, CERN Open Hardware Licence Version 2 - Strongly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CERN_OHL_W_2_0 -- ^ @CERN-OHL-W-2.0@, CERN Open Hardware Licence Version 2 - Weakly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | CFITSIO -- ^ @CFITSIO@, CFITSIO License, SPDX License List 3.23 - | Check_cvs -- ^ @check-cvs@, check-cvs License, SPDX License List 3.23 - | Checkmk -- ^ @checkmk@, Checkmk License, SPDX License List 3.23 + | CERN_OHL_1_1 -- ^ @CERN-OHL-1.1@, CERN Open Hardware Licence v1.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CERN_OHL_1_2 -- ^ @CERN-OHL-1.2@, CERN Open Hardware Licence v1.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CERN_OHL_P_2_0 -- ^ @CERN-OHL-P-2.0@, CERN Open Hardware Licence Version 2 - Permissive, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CERN_OHL_S_2_0 -- ^ @CERN-OHL-S-2.0@, CERN Open Hardware Licence Version 2 - Strongly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CERN_OHL_W_2_0 -- ^ @CERN-OHL-W-2.0@, CERN Open Hardware Licence Version 2 - Weakly Reciprocal, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | CFITSIO -- ^ @CFITSIO@, CFITSIO License, SPDX License List 3.23, SPDX License List 3.25 + | Check_cvs -- ^ @check-cvs@, check-cvs License, SPDX License List 3.23, SPDX License List 3.25 + | Checkmk -- ^ @checkmk@, Checkmk License, SPDX License List 3.23, SPDX License List 3.25 | ClArtistic -- ^ @ClArtistic@, Clarified Artistic License - | Clips -- ^ @Clips@, Clips License, SPDX License List 3.23 - | CMU_Mach_nodoc -- ^ @CMU-Mach-nodoc@, CMU Mach - no notices-in-documentation variant, SPDX License List 3.23 - | CMU_Mach -- ^ @CMU-Mach@, CMU Mach License, SPDX License List 3.23 + | Clips -- ^ @Clips@, Clips License, SPDX License List 3.23, SPDX License List 3.25 + | CMU_Mach_nodoc -- ^ @CMU-Mach-nodoc@, CMU Mach - no notices-in-documentation variant, SPDX License List 3.23, SPDX License List 3.25 + | CMU_Mach -- ^ @CMU-Mach@, CMU Mach License, SPDX License List 3.23, SPDX License List 3.25 | CNRI_Jython -- ^ @CNRI-Jython@, CNRI Jython License | CNRI_Python_GPL_Compatible -- ^ @CNRI-Python-GPL-Compatible@, CNRI Python Open Source GPL Compatible License Agreement | CNRI_Python -- ^ @CNRI-Python@, CNRI Python License - | COIL_1_0 -- ^ @COIL-1.0@, Copyfree Open Innovation License, SPDX License List 3.16, SPDX License List 3.23 - | Community_Spec_1_0 -- ^ @Community-Spec-1.0@, Community Specification License 1.0, SPDX License List 3.16, SPDX License List 3.23 + | COIL_1_0 -- ^ @COIL-1.0@, Copyfree Open Innovation License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Community_Spec_1_0 -- ^ @Community-Spec-1.0@, Community Specification License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Condor_1_1 -- ^ @Condor-1.1@, Condor Public License v1.1 - | Copyleft_next_0_3_0 -- ^ @copyleft-next-0.3.0@, copyleft-next 0.3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Copyleft_next_0_3_1 -- ^ @copyleft-next-0.3.1@, copyleft-next 0.3.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Cornell_Lossless_JPEG -- ^ @Cornell-Lossless-JPEG@, Cornell Lossless JPEG License, SPDX License List 3.23 + | Copyleft_next_0_3_0 -- ^ @copyleft-next-0.3.0@, copyleft-next 0.3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Copyleft_next_0_3_1 -- ^ @copyleft-next-0.3.1@, copyleft-next 0.3.1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Cornell_Lossless_JPEG -- ^ @Cornell-Lossless-JPEG@, Cornell Lossless JPEG License, SPDX License List 3.23, SPDX License List 3.25 | CPAL_1_0 -- ^ @CPAL-1.0@, Common Public Attribution License 1.0 | CPL_1_0 -- ^ @CPL-1.0@, Common Public License 1.0 | CPOL_1_02 -- ^ @CPOL-1.02@, Code Project Open License 1.02 - | Cronyx -- ^ @Cronyx@, Cronyx License, SPDX License List 3.23 + | Cronyx -- ^ @Cronyx@, Cronyx License, SPDX License List 3.23, SPDX License List 3.25 | Crossword -- ^ @Crossword@, Crossword License | CrystalStacker -- ^ @CrystalStacker@, CrystalStacker License | CUA_OPL_1_0 -- ^ @CUA-OPL-1.0@, CUA Office Public License v1.0 | Cube -- ^ @Cube@, Cube License | Curl -- ^ @curl@, curl License + | Cve_tou -- ^ @cve-tou@, Common Vulnerability Enumeration ToU License, SPDX License List 3.25 | D_FSL_1_0 -- ^ @D-FSL-1.0@, Deutsche Freie Software Lizenz - | DEC_3_Clause -- ^ @DEC-3-Clause@, DEC 3-Clause License, SPDX License List 3.23 + | DEC_3_Clause -- ^ @DEC-3-Clause@, DEC 3-Clause License, SPDX License List 3.23, SPDX License List 3.25 | Diffmark -- ^ @diffmark@, diffmark license - | DL_DE_BY_2_0 -- ^ @DL-DE-BY-2.0@, Data licence Germany – attribution – version 2.0, SPDX License List 3.16, SPDX License List 3.23 - | DL_DE_ZERO_2_0 -- ^ @DL-DE-ZERO-2.0@, Data licence Germany – zero – version 2.0, SPDX License List 3.23 + | DL_DE_BY_2_0 -- ^ @DL-DE-BY-2.0@, Data licence Germany – attribution – version 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | DL_DE_ZERO_2_0 -- ^ @DL-DE-ZERO-2.0@, Data licence Germany – zero – version 2.0, SPDX License List 3.23, SPDX License List 3.25 + | DocBook_Schema -- ^ @DocBook-Schema@, DocBook Schema License, SPDX License List 3.25 + | DocBook_XML -- ^ @DocBook-XML@, DocBook XML License, SPDX License List 3.25 | DOC -- ^ @DOC@, DOC License | Dotseqn -- ^ @Dotseqn@, Dotseqn License - | DRL_1_0 -- ^ @DRL-1.0@, Detection Rule License 1.0, SPDX License List 3.16, SPDX License List 3.23 - | DRL_1_1 -- ^ @DRL-1.1@, Detection Rule License 1.1, SPDX License List 3.23 + | DRL_1_0 -- ^ @DRL-1.0@, Detection Rule License 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | DRL_1_1 -- ^ @DRL-1.1@, Detection Rule License 1.1, SPDX License List 3.23, SPDX License List 3.25 | DSDP -- ^ @DSDP@, DSDP License - | Dtoa -- ^ @dtoa@, David M. Gay dtoa License, SPDX License List 3.23 + | Dtoa -- ^ @dtoa@, David M. Gay dtoa License, SPDX License List 3.23, SPDX License List 3.25 | Dvipdfm -- ^ @dvipdfm@, dvipdfm License | ECL_1_0 -- ^ @ECL-1.0@, Educational Community License v1.0 | ECL_2_0 -- ^ @ECL-2.0@, Educational Community License v2.0 | EFL_1_0 -- ^ @EFL-1.0@, Eiffel Forum License v1.0 | EFL_2_0 -- ^ @EFL-2.0@, Eiffel Forum License v2.0 | EGenix -- ^ @eGenix@, eGenix.com Public License 1.1.0 - | Elastic_2_0 -- ^ @Elastic-2.0@, Elastic License 2.0, SPDX License List 3.16, SPDX License List 3.23 + | Elastic_2_0 -- ^ @Elastic-2.0@, Elastic License 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Entessa -- ^ @Entessa@, Entessa Public License v1.0 - | EPICS -- ^ @EPICS@, EPICS Open License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | EPICS -- ^ @EPICS@, EPICS Open License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | EPL_1_0 -- ^ @EPL-1.0@, Eclipse Public License 1.0 | EPL_2_0 -- ^ @EPL-2.0@, Eclipse Public License 2.0 | ErlPL_1_1 -- ^ @ErlPL-1.1@, Erlang Public License v1.1 - | Etalab_2_0 -- ^ @etalab-2.0@, Etalab Open License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Etalab_2_0 -- ^ @etalab-2.0@, Etalab Open License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | EUDatagrid -- ^ @EUDatagrid@, EU DataGrid Software License | EUPL_1_0 -- ^ @EUPL-1.0@, European Union Public License 1.0 | EUPL_1_1 -- ^ @EUPL-1.1@, European Union Public License 1.1 | EUPL_1_2 -- ^ @EUPL-1.2@, European Union Public License 1.2 | Eurosym -- ^ @Eurosym@, Eurosym License | Fair -- ^ @Fair@, Fair License - | FBM -- ^ @FBM@, Fuzzy Bitmap License, SPDX License List 3.23 - | FDK_AAC -- ^ @FDK-AAC@, Fraunhofer FDK AAC Codec Library, SPDX License List 3.16, SPDX License List 3.23 - | Ferguson_Twofish -- ^ @Ferguson-Twofish@, Ferguson Twofish License, SPDX License List 3.23 + | FBM -- ^ @FBM@, Fuzzy Bitmap License, SPDX License List 3.23, SPDX License List 3.25 + | FDK_AAC -- ^ @FDK-AAC@, Fraunhofer FDK AAC Codec Library, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Ferguson_Twofish -- ^ @Ferguson-Twofish@, Ferguson Twofish License, SPDX License List 3.23, SPDX License List 3.25 | Frameworx_1_0 -- ^ @Frameworx-1.0@, Frameworx Open License 1.0 - | FreeBSD_DOC -- ^ @FreeBSD-DOC@, FreeBSD Documentation License, SPDX License List 3.16, SPDX License List 3.23 + | FreeBSD_DOC -- ^ @FreeBSD-DOC@, FreeBSD Documentation License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | FreeImage -- ^ @FreeImage@, FreeImage Public License v1.0 - | FSFAP_no_warranty_disclaimer -- ^ @FSFAP-no-warranty-disclaimer@, FSF All Permissive License (without Warranty), SPDX License List 3.23 + | FSFAP_no_warranty_disclaimer -- ^ @FSFAP-no-warranty-disclaimer@, FSF All Permissive License (without Warranty), SPDX License List 3.23, SPDX License List 3.25 | FSFAP -- ^ @FSFAP@, FSF All Permissive License - | FSFULLRWD -- ^ @FSFULLRWD@, FSF Unlimited License (With License Retention and Warranty Disclaimer), SPDX License List 3.23 + | FSFULLRWD -- ^ @FSFULLRWD@, FSF Unlimited License (With License Retention and Warranty Disclaimer), SPDX License List 3.23, SPDX License List 3.25 | FSFULLR -- ^ @FSFULLR@, FSF Unlimited License (with License Retention) | FSFUL -- ^ @FSFUL@, FSF Unlimited License | FTL -- ^ @FTL@, Freetype Project License - | Furuseth -- ^ @Furuseth@, Furuseth License, SPDX License List 3.23 - | Fwlw -- ^ @fwlw@, fwlw License, SPDX License List 3.23 - | GCR_docs -- ^ @GCR-docs@, Gnome GCR Documentation License, SPDX License List 3.23 - | GD -- ^ @GD@, GD License, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_1_invariants_only -- ^ @GFDL-1.1-invariants-only@, GNU Free Documentation License v1.1 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_1_invariants_or_later -- ^ @GFDL-1.1-invariants-or-later@, GNU Free Documentation License v1.1 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_1_no_invariants_only -- ^ @GFDL-1.1-no-invariants-only@, GNU Free Documentation License v1.1 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_1_no_invariants_or_later -- ^ @GFDL-1.1-no-invariants-or-later@, GNU Free Documentation License v1.1 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Furuseth -- ^ @Furuseth@, Furuseth License, SPDX License List 3.23, SPDX License List 3.25 + | Fwlw -- ^ @fwlw@, fwlw License, SPDX License List 3.23, SPDX License List 3.25 + | GCR_docs -- ^ @GCR-docs@, Gnome GCR Documentation License, SPDX License List 3.23, SPDX License List 3.25 + | GD -- ^ @GD@, GD License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_1_invariants_only -- ^ @GFDL-1.1-invariants-only@, GNU Free Documentation License v1.1 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_1_invariants_or_later -- ^ @GFDL-1.1-invariants-or-later@, GNU Free Documentation License v1.1 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_1_no_invariants_only -- ^ @GFDL-1.1-no-invariants-only@, GNU Free Documentation License v1.1 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_1_no_invariants_or_later -- ^ @GFDL-1.1-no-invariants-or-later@, GNU Free Documentation License v1.1 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | GFDL_1_1_only -- ^ @GFDL-1.1-only@, GNU Free Documentation License v1.1 only | GFDL_1_1_or_later -- ^ @GFDL-1.1-or-later@, GNU Free Documentation License v1.1 or later - | GFDL_1_2_invariants_only -- ^ @GFDL-1.2-invariants-only@, GNU Free Documentation License v1.2 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_2_invariants_or_later -- ^ @GFDL-1.2-invariants-or-later@, GNU Free Documentation License v1.2 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_2_no_invariants_only -- ^ @GFDL-1.2-no-invariants-only@, GNU Free Documentation License v1.2 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_2_no_invariants_or_later -- ^ @GFDL-1.2-no-invariants-or-later@, GNU Free Documentation License v1.2 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | GFDL_1_2_invariants_only -- ^ @GFDL-1.2-invariants-only@, GNU Free Documentation License v1.2 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_2_invariants_or_later -- ^ @GFDL-1.2-invariants-or-later@, GNU Free Documentation License v1.2 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_2_no_invariants_only -- ^ @GFDL-1.2-no-invariants-only@, GNU Free Documentation License v1.2 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_2_no_invariants_or_later -- ^ @GFDL-1.2-no-invariants-or-later@, GNU Free Documentation License v1.2 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | GFDL_1_2_only -- ^ @GFDL-1.2-only@, GNU Free Documentation License v1.2 only | GFDL_1_2_or_later -- ^ @GFDL-1.2-or-later@, GNU Free Documentation License v1.2 or later - | GFDL_1_3_invariants_only -- ^ @GFDL-1.3-invariants-only@, GNU Free Documentation License v1.3 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_3_invariants_or_later -- ^ @GFDL-1.3-invariants-or-later@, GNU Free Documentation License v1.3 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_3_no_invariants_only -- ^ @GFDL-1.3-no-invariants-only@, GNU Free Documentation License v1.3 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | GFDL_1_3_no_invariants_or_later -- ^ @GFDL-1.3-no-invariants-or-later@, GNU Free Documentation License v1.3 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | GFDL_1_3_invariants_only -- ^ @GFDL-1.3-invariants-only@, GNU Free Documentation License v1.3 only - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_3_invariants_or_later -- ^ @GFDL-1.3-invariants-or-later@, GNU Free Documentation License v1.3 or later - invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_3_no_invariants_only -- ^ @GFDL-1.3-no-invariants-only@, GNU Free Documentation License v1.3 only - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | GFDL_1_3_no_invariants_or_later -- ^ @GFDL-1.3-no-invariants-or-later@, GNU Free Documentation License v1.3 or later - no invariants, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | GFDL_1_3_only -- ^ @GFDL-1.3-only@, GNU Free Documentation License v1.3 only | GFDL_1_3_or_later -- ^ @GFDL-1.3-or-later@, GNU Free Documentation License v1.3 or later | Giftware -- ^ @Giftware@, Giftware License | GL2PS -- ^ @GL2PS@, GL2PS License | Glide -- ^ @Glide@, 3dfx Glide License | Glulxe -- ^ @Glulxe@, Glulxe License - | GLWTPL -- ^ @GLWTPL@, Good Luck With That Public License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | GLWTPL -- ^ @GLWTPL@, Good Luck With That Public License, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Gnuplot -- ^ @gnuplot@, gnuplot License | GPL_1_0_only -- ^ @GPL-1.0-only@, GNU General Public License v1.0 only | GPL_1_0_or_later -- ^ @GPL-1.0-or-later@, GNU General Public License v1.0 or later @@ -309,60 +317,69 @@ data LicenseId | GPL_2_0_or_later -- ^ @GPL-2.0-or-later@, GNU General Public License v2.0 or later | GPL_3_0_only -- ^ @GPL-3.0-only@, GNU General Public License v3.0 only | GPL_3_0_or_later -- ^ @GPL-3.0-or-later@, GNU General Public License v3.0 or later - | Graphics_Gems -- ^ @Graphics-Gems@, Graphics Gems License, SPDX License List 3.23 + | Graphics_Gems -- ^ @Graphics-Gems@, Graphics Gems License, SPDX License List 3.23, SPDX License List 3.25 | GSOAP_1_3b -- ^ @gSOAP-1.3b@, gSOAP Public License v1.3b - | Gtkbook -- ^ @gtkbook@, gtkbook License, SPDX License List 3.23 + | Gtkbook -- ^ @gtkbook@, gtkbook License, SPDX License List 3.23, SPDX License List 3.25 + | Gutmann -- ^ @Gutmann@, Gutmann License, SPDX License List 3.25 | HaskellReport -- ^ @HaskellReport@, Haskell Language Report License - | Hdparm -- ^ @hdparm@, hdparm License, SPDX License List 3.23 - | Hippocratic_2_1 -- ^ @Hippocratic-2.1@, Hippocratic License 2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | HP_1986 -- ^ @HP-1986@, Hewlett-Packard 1986 License, SPDX License List 3.23 - | HP_1989 -- ^ @HP-1989@, Hewlett-Packard 1989 License, SPDX License List 3.23 - | HPND_DEC -- ^ @HPND-DEC@, Historical Permission Notice and Disclaimer - DEC variant, SPDX License List 3.23 - | HPND_doc_sell -- ^ @HPND-doc-sell@, Historical Permission Notice and Disclaimer - documentation sell variant, SPDX License List 3.23 - | HPND_doc -- ^ @HPND-doc@, Historical Permission Notice and Disclaimer - documentation variant, SPDX License List 3.23 - | HPND_export_US_modify -- ^ @HPND-export-US-modify@, HPND with US Government export control warning and modification rqmt, SPDX License List 3.23 - | HPND_export_US -- ^ @HPND-export-US@, HPND with US Government export control warning, SPDX License List 3.23 - | HPND_Fenneberg_Livingston -- ^ @HPND-Fenneberg-Livingston@, Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant, SPDX License List 3.23 - | HPND_INRIA_IMAG -- ^ @HPND-INRIA-IMAG@, Historical Permission Notice and Disclaimer - INRIA-IMAG variant, SPDX License List 3.23 - | HPND_Kevlin_Henney -- ^ @HPND-Kevlin-Henney@, Historical Permission Notice and Disclaimer - Kevlin Henney variant, SPDX License List 3.23 - | HPND_Markus_Kuhn -- ^ @HPND-Markus-Kuhn@, Historical Permission Notice and Disclaimer - Markus Kuhn variant, SPDX License List 3.23 - | HPND_MIT_disclaimer -- ^ @HPND-MIT-disclaimer@, Historical Permission Notice and Disclaimer with MIT disclaimer, SPDX License List 3.23 - | HPND_Pbmplus -- ^ @HPND-Pbmplus@, Historical Permission Notice and Disclaimer - Pbmplus variant, SPDX License List 3.23 - | HPND_sell_MIT_disclaimer_xserver -- ^ @HPND-sell-MIT-disclaimer-xserver@, Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer, SPDX License List 3.23 - | HPND_sell_regexpr -- ^ @HPND-sell-regexpr@, Historical Permission Notice and Disclaimer - sell regexpr variant, SPDX License List 3.23 - | HPND_sell_variant_MIT_disclaimer -- ^ @HPND-sell-variant-MIT-disclaimer@, HPND sell variant with MIT disclaimer, SPDX License List 3.23 - | HPND_sell_variant -- ^ @HPND-sell-variant@, Historical Permission Notice and Disclaimer - sell variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | HPND_UC -- ^ @HPND-UC@, Historical Permission Notice and Disclaimer - University of California variant, SPDX License List 3.23 + | Hdparm -- ^ @hdparm@, hdparm License, SPDX License List 3.23, SPDX License List 3.25 + | HIDAPI -- ^ @HIDAPI@, HIDAPI License, SPDX License List 3.25 + | Hippocratic_2_1 -- ^ @Hippocratic-2.1@, Hippocratic License 2.1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | HP_1986 -- ^ @HP-1986@, Hewlett-Packard 1986 License, SPDX License List 3.23, SPDX License List 3.25 + | HP_1989 -- ^ @HP-1989@, Hewlett-Packard 1989 License, SPDX License List 3.23, SPDX License List 3.25 + | HPND_DEC -- ^ @HPND-DEC@, Historical Permission Notice and Disclaimer - DEC variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_doc_sell -- ^ @HPND-doc-sell@, Historical Permission Notice and Disclaimer - documentation sell variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_doc -- ^ @HPND-doc@, Historical Permission Notice and Disclaimer - documentation variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_export_US_acknowledgement -- ^ @HPND-export-US-acknowledgement@, HPND with US Government export control warning and acknowledgment, SPDX License List 3.25 + | HPND_export_US_modify -- ^ @HPND-export-US-modify@, HPND with US Government export control warning and modification rqmt, SPDX License List 3.23, SPDX License List 3.25 + | HPND_export_US -- ^ @HPND-export-US@, HPND with US Government export control warning, SPDX License List 3.23, SPDX License List 3.25 + | HPND_export2_US -- ^ @HPND-export2-US@, HPND with US Government export control and 2 disclaimers, SPDX License List 3.25 + | HPND_Fenneberg_Livingston -- ^ @HPND-Fenneberg-Livingston@, Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_INRIA_IMAG -- ^ @HPND-INRIA-IMAG@, Historical Permission Notice and Disclaimer - INRIA-IMAG variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_Intel -- ^ @HPND-Intel@, Historical Permission Notice and Disclaimer - Intel variant, SPDX License List 3.25 + | HPND_Kevlin_Henney -- ^ @HPND-Kevlin-Henney@, Historical Permission Notice and Disclaimer - Kevlin Henney variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_Markus_Kuhn -- ^ @HPND-Markus-Kuhn@, Historical Permission Notice and Disclaimer - Markus Kuhn variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_merchantability_variant -- ^ @HPND-merchantability-variant@, Historical Permission Notice and Disclaimer - merchantability variant, SPDX License List 3.25 + | HPND_MIT_disclaimer -- ^ @HPND-MIT-disclaimer@, Historical Permission Notice and Disclaimer with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25 + | HPND_Netrek -- ^ @HPND-Netrek@, Historical Permission Notice and Disclaimer - Netrek variant, SPDX License List 3.25 + | HPND_Pbmplus -- ^ @HPND-Pbmplus@, Historical Permission Notice and Disclaimer - Pbmplus variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_sell_MIT_disclaimer_xserver -- ^ @HPND-sell-MIT-disclaimer-xserver@, Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25 + | HPND_sell_regexpr -- ^ @HPND-sell-regexpr@, Historical Permission Notice and Disclaimer - sell regexpr variant, SPDX License List 3.23, SPDX License List 3.25 + | HPND_sell_variant_MIT_disclaimer_rev -- ^ @HPND-sell-variant-MIT-disclaimer-rev@, HPND sell variant with MIT disclaimer - reverse, SPDX License List 3.25 + | HPND_sell_variant_MIT_disclaimer -- ^ @HPND-sell-variant-MIT-disclaimer@, HPND sell variant with MIT disclaimer, SPDX License List 3.23, SPDX License List 3.25 + | HPND_sell_variant -- ^ @HPND-sell-variant@, Historical Permission Notice and Disclaimer - sell variant, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | HPND_UC_export_US -- ^ @HPND-UC-export-US@, Historical Permission Notice and Disclaimer - University of California, US export warning, SPDX License List 3.25 + | HPND_UC -- ^ @HPND-UC@, Historical Permission Notice and Disclaimer - University of California variant, SPDX License List 3.23, SPDX License List 3.25 | HPND -- ^ @HPND@, Historical Permission Notice and Disclaimer - | HTMLTIDY -- ^ @HTMLTIDY@, HTML Tidy License, SPDX License List 3.16, SPDX License List 3.23 + | HTMLTIDY -- ^ @HTMLTIDY@, HTML Tidy License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | IBM_pibs -- ^ @IBM-pibs@, IBM PowerPC Initialization and Boot Software | ICU -- ^ @ICU@, ICU License - | IEC_Code_Components_EULA -- ^ @IEC-Code-Components-EULA@, IEC Code Components End-user licence agreement, SPDX License List 3.23 - | IJG_short -- ^ @IJG-short@, Independent JPEG Group License - short, SPDX License List 3.23 + | IEC_Code_Components_EULA -- ^ @IEC-Code-Components-EULA@, IEC Code Components End-user licence agreement, SPDX License List 3.23, SPDX License List 3.25 + | IJG_short -- ^ @IJG-short@, Independent JPEG Group License - short, SPDX License List 3.23, SPDX License List 3.25 | IJG -- ^ @IJG@, Independent JPEG Group License | ImageMagick -- ^ @ImageMagick@, ImageMagick License | IMatix -- ^ @iMatix@, iMatix Standard Function Library Agreement | Imlib2 -- ^ @Imlib2@, Imlib2 License | Info_ZIP -- ^ @Info-ZIP@, Info-ZIP License - | Inner_Net_2_0 -- ^ @Inner-Net-2.0@, Inner Net License v2.0, SPDX License List 3.23 + | Inner_Net_2_0 -- ^ @Inner-Net-2.0@, Inner Net License v2.0, SPDX License List 3.23, SPDX License List 3.25 | Intel_ACPI -- ^ @Intel-ACPI@, Intel ACPI Software License Agreement | Intel -- ^ @Intel@, Intel Open Source License | Interbase_1_0 -- ^ @Interbase-1.0@, Interbase Public License v1.0 | IPA -- ^ @IPA@, IPA Font License | IPL_1_0 -- ^ @IPL-1.0@, IBM Public License v1.0 - | ISC_Veillard -- ^ @ISC-Veillard@, ISC Veillard variant, SPDX License List 3.23 + | ISC_Veillard -- ^ @ISC-Veillard@, ISC Veillard variant, SPDX License List 3.23, SPDX License List 3.25 | ISC -- ^ @ISC@, ISC License - | Jam -- ^ @Jam@, Jam License, SPDX License List 3.16, SPDX License List 3.23 + | Jam -- ^ @Jam@, Jam License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | JasPer_2_0 -- ^ @JasPer-2.0@, JasPer License - | JPL_image -- ^ @JPL-image@, JPL Image Use Policy, SPDX License List 3.23 - | JPNIC -- ^ @JPNIC@, Japan Network Information Center License, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | JPL_image -- ^ @JPL-image@, JPL Image Use Policy, SPDX License List 3.23, SPDX License List 3.25 + | JPNIC -- ^ @JPNIC@, Japan Network Information Center License, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | JSON -- ^ @JSON@, JSON License - | Kastrup -- ^ @Kastrup@, Kastrup License, SPDX License List 3.23 - | Kazlib -- ^ @Kazlib@, Kazlib License, SPDX License List 3.23 - | Knuth_CTAN -- ^ @Knuth-CTAN@, Knuth CTAN License, SPDX License List 3.23 + | Kastrup -- ^ @Kastrup@, Kastrup License, SPDX License List 3.23, SPDX License List 3.25 + | Kazlib -- ^ @Kazlib@, Kazlib License, SPDX License List 3.23, SPDX License List 3.25 + | Knuth_CTAN -- ^ @Knuth-CTAN@, Knuth CTAN License, SPDX License List 3.23, SPDX License List 3.25 | LAL_1_2 -- ^ @LAL-1.2@, Licence Art Libre 1.2 | LAL_1_3 -- ^ @LAL-1.3@, Licence Art Libre 1.3 - | Latex2e_translated_notice -- ^ @Latex2e-translated-notice@, Latex2e with translated notice permission, SPDX License List 3.23 + | Latex2e_translated_notice -- ^ @Latex2e-translated-notice@, Latex2e with translated notice permission, SPDX License List 3.23, SPDX License List 3.25 | Latex2e -- ^ @Latex2e@, Latex2e License | Leptonica -- ^ @Leptonica@, Leptonica License | LGPL_2_0_only -- ^ @LGPL-2.0-only@, GNU Library General Public License v2 only @@ -372,21 +389,21 @@ data LicenseId | LGPL_3_0_only -- ^ @LGPL-3.0-only@, GNU Lesser General Public License v3.0 only | LGPL_3_0_or_later -- ^ @LGPL-3.0-or-later@, GNU Lesser General Public License v3.0 or later | LGPLLR -- ^ @LGPLLR@, Lesser General Public License For Linguistic Resources - | Libpng_2_0 -- ^ @libpng-2.0@, PNG Reference Library version 2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Libpng_2_0 -- ^ @libpng-2.0@, PNG Reference Library version 2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Libpng -- ^ @Libpng@, libpng License - | Libselinux_1_0 -- ^ @libselinux-1.0@, libselinux public domain notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Libselinux_1_0 -- ^ @libselinux-1.0@, libselinux public domain notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Libtiff -- ^ @libtiff@, libtiff License - | Libutil_David_Nugent -- ^ @libutil-David-Nugent@, libutil David Nugent License, SPDX License List 3.23 + | Libutil_David_Nugent -- ^ @libutil-David-Nugent@, libutil David Nugent License, SPDX License List 3.23, SPDX License List 3.25 | LiLiQ_P_1_1 -- ^ @LiLiQ-P-1.1@, Licence Libre du Québec – Permissive version 1.1 | LiLiQ_R_1_1 -- ^ @LiLiQ-R-1.1@, Licence Libre du Québec – Réciprocité version 1.1 | LiLiQ_Rplus_1_1 -- ^ @LiLiQ-Rplus-1.1@, Licence Libre du Québec – Réciprocité forte version 1.1 - | Linux_man_pages_1_para -- ^ @Linux-man-pages-1-para@, Linux man-pages - 1 paragraph, SPDX License List 3.23 - | Linux_man_pages_copyleft_2_para -- ^ @Linux-man-pages-copyleft-2-para@, Linux man-pages Copyleft - 2 paragraphs, SPDX License List 3.23 - | Linux_man_pages_copyleft_var -- ^ @Linux-man-pages-copyleft-var@, Linux man-pages Copyleft Variant, SPDX License List 3.23 - | Linux_man_pages_copyleft -- ^ @Linux-man-pages-copyleft@, Linux man-pages Copyleft, SPDX License List 3.16, SPDX License List 3.23 - | Linux_OpenIB -- ^ @Linux-OpenIB@, Linux Kernel Variant of OpenIB.org license, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | LOOP -- ^ @LOOP@, Common Lisp LOOP License, SPDX License List 3.23 - | LPD_document -- ^ @LPD-document@, LPD Documentation License, SPDX License List 3.23 + | Linux_man_pages_1_para -- ^ @Linux-man-pages-1-para@, Linux man-pages - 1 paragraph, SPDX License List 3.23, SPDX License List 3.25 + | Linux_man_pages_copyleft_2_para -- ^ @Linux-man-pages-copyleft-2-para@, Linux man-pages Copyleft - 2 paragraphs, SPDX License List 3.23, SPDX License List 3.25 + | Linux_man_pages_copyleft_var -- ^ @Linux-man-pages-copyleft-var@, Linux man-pages Copyleft Variant, SPDX License List 3.23, SPDX License List 3.25 + | Linux_man_pages_copyleft -- ^ @Linux-man-pages-copyleft@, Linux man-pages Copyleft, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Linux_OpenIB -- ^ @Linux-OpenIB@, Linux Kernel Variant of OpenIB.org license, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | LOOP -- ^ @LOOP@, Common Lisp LOOP License, SPDX License List 3.23, SPDX License List 3.25 + | LPD_document -- ^ @LPD-document@, LPD Documentation License, SPDX License List 3.23, SPDX License List 3.25 | LPL_1_02 -- ^ @LPL-1.02@, Lucent Public License v1.02 | LPL_1_0 -- ^ @LPL-1.0@, Lucent Public License Version 1.0 | LPPL_1_0 -- ^ @LPPL-1.0@, LaTeX Project Public License v1.0 @@ -394,66 +411,69 @@ data LicenseId | LPPL_1_2 -- ^ @LPPL-1.2@, LaTeX Project Public License v1.2 | LPPL_1_3a -- ^ @LPPL-1.3a@, LaTeX Project Public License v1.3a | LPPL_1_3c -- ^ @LPPL-1.3c@, LaTeX Project Public License v1.3c - | Lsof -- ^ @lsof@, lsof License, SPDX License List 3.23 - | Lucida_Bitmap_Fonts -- ^ @Lucida-Bitmap-Fonts@, Lucida Bitmap Fonts License, SPDX License List 3.23 - | LZMA_SDK_9_11_to_9_20 -- ^ @LZMA-SDK-9.11-to-9.20@, LZMA SDK License (versions 9.11 to 9.20), SPDX License List 3.23 - | LZMA_SDK_9_22 -- ^ @LZMA-SDK-9.22@, LZMA SDK License (versions 9.22 and beyond), SPDX License List 3.23 - | Mackerras_3_Clause_acknowledgment -- ^ @Mackerras-3-Clause-acknowledgment@, Mackerras 3-Clause - acknowledgment variant, SPDX License List 3.23 - | Mackerras_3_Clause -- ^ @Mackerras-3-Clause@, Mackerras 3-Clause License, SPDX License List 3.23 - | Magaz -- ^ @magaz@, magaz License, SPDX License List 3.23 - | Mailprio -- ^ @mailprio@, mailprio License, SPDX License List 3.23 + | Lsof -- ^ @lsof@, lsof License, SPDX License List 3.23, SPDX License List 3.25 + | Lucida_Bitmap_Fonts -- ^ @Lucida-Bitmap-Fonts@, Lucida Bitmap Fonts License, SPDX License List 3.23, SPDX License List 3.25 + | LZMA_SDK_9_11_to_9_20 -- ^ @LZMA-SDK-9.11-to-9.20@, LZMA SDK License (versions 9.11 to 9.20), SPDX License List 3.23, SPDX License List 3.25 + | LZMA_SDK_9_22 -- ^ @LZMA-SDK-9.22@, LZMA SDK License (versions 9.22 and beyond), SPDX License List 3.23, SPDX License List 3.25 + | Mackerras_3_Clause_acknowledgment -- ^ @Mackerras-3-Clause-acknowledgment@, Mackerras 3-Clause - acknowledgment variant, SPDX License List 3.23, SPDX License List 3.25 + | Mackerras_3_Clause -- ^ @Mackerras-3-Clause@, Mackerras 3-Clause License, SPDX License List 3.23, SPDX License List 3.25 + | Magaz -- ^ @magaz@, magaz License, SPDX License List 3.23, SPDX License List 3.25 + | Mailprio -- ^ @mailprio@, mailprio License, SPDX License List 3.23, SPDX License List 3.25 | MakeIndex -- ^ @MakeIndex@, MakeIndex License - | Martin_Birgmeier -- ^ @Martin-Birgmeier@, Martin Birgmeier License, SPDX License List 3.23 - | McPhee_slideshow -- ^ @McPhee-slideshow@, McPhee Slideshow License, SPDX License List 3.23 - | Metamail -- ^ @metamail@, metamail License, SPDX License List 3.23 - | Minpack -- ^ @Minpack@, Minpack License, SPDX License List 3.23 + | Martin_Birgmeier -- ^ @Martin-Birgmeier@, Martin Birgmeier License, SPDX License List 3.23, SPDX License List 3.25 + | McPhee_slideshow -- ^ @McPhee-slideshow@, McPhee Slideshow License, SPDX License List 3.23, SPDX License List 3.25 + | Metamail -- ^ @metamail@, metamail License, SPDX License List 3.23, SPDX License List 3.25 + | Minpack -- ^ @Minpack@, Minpack License, SPDX License List 3.23, SPDX License List 3.25 | MirOS -- ^ @MirOS@, The MirOS Licence - | MIT_0 -- ^ @MIT-0@, MIT No Attribution, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | MIT_0 -- ^ @MIT-0@, MIT No Attribution, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | MIT_advertising -- ^ @MIT-advertising@, Enlightenment License (e16) | MIT_CMU -- ^ @MIT-CMU@, CMU License | MIT_enna -- ^ @MIT-enna@, enna License | MIT_feh -- ^ @MIT-feh@, feh License - | MIT_Festival -- ^ @MIT-Festival@, MIT Festival Variant, SPDX License List 3.23 - | MIT_Modern_Variant -- ^ @MIT-Modern-Variant@, MIT License Modern Variant, SPDX License List 3.16, SPDX License List 3.23 - | MIT_open_group -- ^ @MIT-open-group@, MIT Open Group variant, SPDX License List 3.16, SPDX License List 3.23 - | MIT_testregex -- ^ @MIT-testregex@, MIT testregex Variant, SPDX License List 3.23 - | MIT_Wu -- ^ @MIT-Wu@, MIT Tom Wu Variant, SPDX License List 3.23 + | MIT_Festival -- ^ @MIT-Festival@, MIT Festival Variant, SPDX License List 3.23, SPDX License List 3.25 + | MIT_Khronos_old -- ^ @MIT-Khronos-old@, MIT Khronos - old variant, SPDX License List 3.25 + | MIT_Modern_Variant -- ^ @MIT-Modern-Variant@, MIT License Modern Variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | MIT_open_group -- ^ @MIT-open-group@, MIT Open Group variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | MIT_testregex -- ^ @MIT-testregex@, MIT testregex Variant, SPDX License List 3.23, SPDX License List 3.25 + | MIT_Wu -- ^ @MIT-Wu@, MIT Tom Wu Variant, SPDX License List 3.23, SPDX License List 3.25 | MITNFA -- ^ @MITNFA@, MIT +no-false-attribs license | MIT -- ^ @MIT@, MIT License - | MMIXware -- ^ @MMIXware@, MMIXware License, SPDX License List 3.23 + | MMIXware -- ^ @MMIXware@, MMIXware License, SPDX License List 3.23, SPDX License List 3.25 | Motosoto -- ^ @Motosoto@, Motosoto License - | MPEG_SSG -- ^ @MPEG-SSG@, MPEG Software Simulation, SPDX License List 3.23 - | Mpi_permissive -- ^ @mpi-permissive@, mpi Permissive License, SPDX License List 3.23 + | MPEG_SSG -- ^ @MPEG-SSG@, MPEG Software Simulation, SPDX License List 3.23, SPDX License List 3.25 + | Mpi_permissive -- ^ @mpi-permissive@, mpi Permissive License, SPDX License List 3.23, SPDX License List 3.25 | Mpich2 -- ^ @mpich2@, mpich2 License | MPL_1_0 -- ^ @MPL-1.0@, Mozilla Public License 1.0 | MPL_1_1 -- ^ @MPL-1.1@, Mozilla Public License 1.1 | MPL_2_0_no_copyleft_exception -- ^ @MPL-2.0-no-copyleft-exception@, Mozilla Public License 2.0 (no copyleft exception) | MPL_2_0 -- ^ @MPL-2.0@, Mozilla Public License 2.0 - | Mplus -- ^ @mplus@, mplus Font License, SPDX License List 3.23 - | MS_LPL -- ^ @MS-LPL@, Microsoft Limited Public License, SPDX License List 3.23 + | Mplus -- ^ @mplus@, mplus Font License, SPDX License List 3.23, SPDX License List 3.25 + | MS_LPL -- ^ @MS-LPL@, Microsoft Limited Public License, SPDX License List 3.23, SPDX License List 3.25 | MS_PL -- ^ @MS-PL@, Microsoft Public License | MS_RL -- ^ @MS-RL@, Microsoft Reciprocal License | MTLL -- ^ @MTLL@, Matrix Template Library License - | MulanPSL_1_0 -- ^ @MulanPSL-1.0@, Mulan Permissive Software License, Version 1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | MulanPSL_2_0 -- ^ @MulanPSL-2.0@, Mulan Permissive Software License, Version 2, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | MulanPSL_1_0 -- ^ @MulanPSL-1.0@, Mulan Permissive Software License, Version 1, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | MulanPSL_2_0 -- ^ @MulanPSL-2.0@, Mulan Permissive Software License, Version 2, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Multics -- ^ @Multics@, Multics License | Mup -- ^ @Mup@, Mup License - | NAIST_2003 -- ^ @NAIST-2003@, Nara Institute of Science and Technology License (2003), SPDX License List 3.16, SPDX License List 3.23 + | NAIST_2003 -- ^ @NAIST-2003@, Nara Institute of Science and Technology License (2003), SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | NASA_1_3 -- ^ @NASA-1.3@, NASA Open Source Agreement 1.3 | Naumen -- ^ @Naumen@, Naumen Public License | NBPL_1_0 -- ^ @NBPL-1.0@, Net Boolean Public License v1 - | NCGL_UK_2_0 -- ^ @NCGL-UK-2.0@, Non-Commercial Government Licence, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | NCBI_PD -- ^ @NCBI-PD@, NCBI Public Domain Notice, SPDX License List 3.25 + | NCGL_UK_2_0 -- ^ @NCGL-UK-2.0@, Non-Commercial Government Licence, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | NCL -- ^ @NCL@, NCL Source Code License, SPDX License List 3.25 | NCSA -- ^ @NCSA@, University of Illinois/NCSA Open Source License - | Net_SNMP -- ^ @Net-SNMP@, Net-SNMP License + | Net_SNMP -- ^ @Net-SNMP@, Net-SNMP License, SPDX License List 3.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 | NetCDF -- ^ @NetCDF@, NetCDF license | Newsletr -- ^ @Newsletr@, Newsletr License | NGPL -- ^ @NGPL@, Nethack General Public License - | NICTA_1_0 -- ^ @NICTA-1.0@, NICTA Public Software License, Version 1.0, SPDX License List 3.23 - | NIST_PD_fallback -- ^ @NIST-PD-fallback@, NIST Public Domain Notice with license fallback, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | NIST_PD -- ^ @NIST-PD@, NIST Public Domain Notice, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | NIST_Software -- ^ @NIST-Software@, NIST Software License, SPDX License List 3.23 + | NICTA_1_0 -- ^ @NICTA-1.0@, NICTA Public Software License, Version 1.0, SPDX License List 3.23, SPDX License List 3.25 + | NIST_PD_fallback -- ^ @NIST-PD-fallback@, NIST Public Domain Notice with license fallback, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | NIST_PD -- ^ @NIST-PD@, NIST Public Domain Notice, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | NIST_Software -- ^ @NIST-Software@, NIST Software License, SPDX License List 3.23, SPDX License List 3.25 | NLOD_1_0 -- ^ @NLOD-1.0@, Norwegian Licence for Open Government Data (NLOD) 1.0 - | NLOD_2_0 -- ^ @NLOD-2.0@, Norwegian Licence for Open Government Data (NLOD) 2.0, SPDX License List 3.16, SPDX License List 3.23 + | NLOD_2_0 -- ^ @NLOD-2.0@, Norwegian Licence for Open Government Data (NLOD) 2.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | NLPL -- ^ @NLPL@, No Limit Public License | Nokia -- ^ @Nokia@, Nokia Open Source License | NOSL -- ^ @NOSL@, Netizen Open Source License @@ -462,26 +482,27 @@ data LicenseId | NPL_1_1 -- ^ @NPL-1.1@, Netscape Public License v1.1 | NPOSL_3_0 -- ^ @NPOSL-3.0@, Non-Profit Open Software License 3.0 | NRL -- ^ @NRL@, NRL License - | NTP_0 -- ^ @NTP-0@, NTP No Attribution, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | NTP_0 -- ^ @NTP-0@, NTP No Attribution, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | NTP -- ^ @NTP@, NTP License - | O_UDA_1_0 -- ^ @O-UDA-1.0@, Open Use of Data Agreement v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | O_UDA_1_0 -- ^ @O-UDA-1.0@, Open Use of Data Agreement v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OAR -- ^ @OAR@, OAR License, SPDX License List 3.25 | OCCT_PL -- ^ @OCCT-PL@, Open CASCADE Technology Public License | OCLC_2_0 -- ^ @OCLC-2.0@, OCLC Research Public License 2.0 | ODbL_1_0 -- ^ @ODbL-1.0@, Open Data Commons Open Database License v1.0 - | ODC_By_1_0 -- ^ @ODC-By-1.0@, Open Data Commons Attribution License v1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OFFIS -- ^ @OFFIS@, OFFIS License, SPDX License List 3.23 - | OFL_1_0_no_RFN -- ^ @OFL-1.0-no-RFN@, SIL Open Font License 1.0 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OFL_1_0_RFN -- ^ @OFL-1.0-RFN@, SIL Open Font License 1.0 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | ODC_By_1_0 -- ^ @ODC-By-1.0@, Open Data Commons Attribution License v1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OFFIS -- ^ @OFFIS@, OFFIS License, SPDX License List 3.23, SPDX License List 3.25 + | OFL_1_0_no_RFN -- ^ @OFL-1.0-no-RFN@, SIL Open Font License 1.0 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OFL_1_0_RFN -- ^ @OFL-1.0-RFN@, SIL Open Font License 1.0 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | OFL_1_0 -- ^ @OFL-1.0@, SIL Open Font License 1.0 - | OFL_1_1_no_RFN -- ^ @OFL-1.1-no-RFN@, SIL Open Font License 1.1 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OFL_1_1_RFN -- ^ @OFL-1.1-RFN@, SIL Open Font License 1.1 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | OFL_1_1_no_RFN -- ^ @OFL-1.1-no-RFN@, SIL Open Font License 1.1 with no Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OFL_1_1_RFN -- ^ @OFL-1.1-RFN@, SIL Open Font License 1.1 with Reserved Font Name, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | OFL_1_1 -- ^ @OFL-1.1@, SIL Open Font License 1.1 - | OGC_1_0 -- ^ @OGC-1.0@, OGC Software License, Version 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OGDL_Taiwan_1_0 -- ^ @OGDL-Taiwan-1.0@, Taiwan Open Government Data License, version 1.0, SPDX License List 3.16, SPDX License List 3.23 - | OGL_Canada_2_0 -- ^ @OGL-Canada-2.0@, Open Government Licence - Canada, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OGL_UK_1_0 -- ^ @OGL-UK-1.0@, Open Government Licence v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OGL_UK_2_0 -- ^ @OGL-UK-2.0@, Open Government Licence v2.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | OGL_UK_3_0 -- ^ @OGL-UK-3.0@, Open Government Licence v3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | OGC_1_0 -- ^ @OGC-1.0@, OGC Software License, Version 1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OGDL_Taiwan_1_0 -- ^ @OGDL-Taiwan-1.0@, Taiwan Open Government Data License, version 1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OGL_Canada_2_0 -- ^ @OGL-Canada-2.0@, Open Government Licence - Canada, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OGL_UK_1_0 -- ^ @OGL-UK-1.0@, Open Government Licence v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OGL_UK_2_0 -- ^ @OGL-UK-2.0@, Open Government Licence v2.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | OGL_UK_3_0 -- ^ @OGL-UK-3.0@, Open Government Licence v3.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | OGTSL -- ^ @OGTSL@, Open Group Test Suite License | OLDAP_1_1 -- ^ @OLDAP-1.1@, Open LDAP Public License v1.1 | OLDAP_1_2 -- ^ @OLDAP-1.2@, Open LDAP Public License v1.2 @@ -499,43 +520,45 @@ data LicenseId | OLDAP_2_6 -- ^ @OLDAP-2.6@, Open LDAP Public License v2.6 | OLDAP_2_7 -- ^ @OLDAP-2.7@, Open LDAP Public License v2.7 | OLDAP_2_8 -- ^ @OLDAP-2.8@, Open LDAP Public License v2.8 - | OLFL_1_3 -- ^ @OLFL-1.3@, Open Logistics Foundation License Version 1.3, SPDX License List 3.23 + | OLFL_1_3 -- ^ @OLFL-1.3@, Open Logistics Foundation License Version 1.3, SPDX License List 3.23, SPDX License List 3.25 | OML -- ^ @OML@, Open Market License - | OpenPBS_2_3 -- ^ @OpenPBS-2.3@, OpenPBS v2.3 Software License, SPDX License List 3.23 - | OpenSSL_standalone -- ^ @OpenSSL-standalone@, OpenSSL License - standalone, SPDX License List 3.23 + | OpenPBS_2_3 -- ^ @OpenPBS-2.3@, OpenPBS v2.3 Software License, SPDX License List 3.23, SPDX License List 3.25 + | OpenSSL_standalone -- ^ @OpenSSL-standalone@, OpenSSL License - standalone, SPDX License List 3.23, SPDX License List 3.25 | OpenSSL -- ^ @OpenSSL@, OpenSSL License - | OpenVision -- ^ @OpenVision@, OpenVision License, SPDX License List 3.23 + | OpenVision -- ^ @OpenVision@, OpenVision License, SPDX License List 3.23, SPDX License List 3.25 | OPL_1_0 -- ^ @OPL-1.0@, Open Public License v1.0 - | OPL_UK_3_0 -- ^ @OPL-UK-3.0@, United Kingdom Open Parliament Licence v3.0, SPDX License List 3.23 - | OPUBL_1_0 -- ^ @OPUBL-1.0@, Open Publication License v1.0, SPDX License List 3.16, SPDX License List 3.23 + | OPL_UK_3_0 -- ^ @OPL-UK-3.0@, United Kingdom Open Parliament Licence v3.0, SPDX License List 3.23, SPDX License List 3.25 + | OPUBL_1_0 -- ^ @OPUBL-1.0@, Open Publication License v1.0, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | OSET_PL_2_1 -- ^ @OSET-PL-2.1@, OSET Public License version 2.1 | OSL_1_0 -- ^ @OSL-1.0@, Open Software License 1.0 | OSL_1_1 -- ^ @OSL-1.1@, Open Software License 1.1 | OSL_2_0 -- ^ @OSL-2.0@, Open Software License 2.0 | OSL_2_1 -- ^ @OSL-2.1@, Open Software License 2.1 | OSL_3_0 -- ^ @OSL-3.0@, Open Software License 3.0 - | PADL -- ^ @PADL@, PADL License, SPDX License List 3.23 - | Parity_6_0_0 -- ^ @Parity-6.0.0@, The Parity Public License 6.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Parity_7_0_0 -- ^ @Parity-7.0.0@, The Parity Public License 7.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | PADL -- ^ @PADL@, PADL License, SPDX License List 3.23, SPDX License List 3.25 + | Parity_6_0_0 -- ^ @Parity-6.0.0@, The Parity Public License 6.0.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Parity_7_0_0 -- ^ @Parity-7.0.0@, The Parity Public License 7.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | PDDL_1_0 -- ^ @PDDL-1.0@, Open Data Commons Public Domain Dedication & License 1.0 | PHP_3_01 -- ^ @PHP-3.01@, PHP License v3.01 | PHP_3_0 -- ^ @PHP-3.0@, PHP License v3.0 - | Pixar -- ^ @Pixar@, Pixar License, SPDX License List 3.23 + | Pixar -- ^ @Pixar@, Pixar License, SPDX License List 3.23, SPDX License List 3.25 + | Pkgconf -- ^ @pkgconf@, pkgconf License, SPDX License List 3.25 | Plexus -- ^ @Plexus@, Plexus Classworlds License - | Pnmstitch -- ^ @pnmstitch@, pnmstitch License, SPDX License List 3.23 - | PolyForm_Noncommercial_1_0_0 -- ^ @PolyForm-Noncommercial-1.0.0@, PolyForm Noncommercial License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | PolyForm_Small_Business_1_0_0 -- ^ @PolyForm-Small-Business-1.0.0@, PolyForm Small Business License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Pnmstitch -- ^ @pnmstitch@, pnmstitch License, SPDX License List 3.23, SPDX License List 3.25 + | PolyForm_Noncommercial_1_0_0 -- ^ @PolyForm-Noncommercial-1.0.0@, PolyForm Noncommercial License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | PolyForm_Small_Business_1_0_0 -- ^ @PolyForm-Small-Business-1.0.0@, PolyForm Small Business License 1.0.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | PostgreSQL -- ^ @PostgreSQL@, PostgreSQL License - | PSF_2_0 -- ^ @PSF-2.0@, Python Software Foundation License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | PPL -- ^ @PPL@, Peer Production License, SPDX License List 3.25 + | PSF_2_0 -- ^ @PSF-2.0@, Python Software Foundation License 2.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Psfrag -- ^ @psfrag@, psfrag License | Psutils -- ^ @psutils@, psutils License - | Python_2_0_1 -- ^ @Python-2.0.1@, Python License 2.0.1, SPDX License List 3.23 + | Python_2_0_1 -- ^ @Python-2.0.1@, Python License 2.0.1, SPDX License List 3.23, SPDX License List 3.25 | Python_2_0 -- ^ @Python-2.0@, Python License 2.0 - | Python_ldap -- ^ @python-ldap@, Python ldap License, SPDX License List 3.23 + | Python_ldap -- ^ @python-ldap@, Python ldap License, SPDX License List 3.23, SPDX License List 3.25 | Qhull -- ^ @Qhull@, Qhull License - | QPL_1_0_INRIA_2004 -- ^ @QPL-1.0-INRIA-2004@, Q Public License 1.0 - INRIA 2004 variant, SPDX License List 3.23 + | QPL_1_0_INRIA_2004 -- ^ @QPL-1.0-INRIA-2004@, Q Public License 1.0 - INRIA 2004 variant, SPDX License List 3.23, SPDX License List 3.25 | QPL_1_0 -- ^ @QPL-1.0@, Q Public License 1.0 - | Radvd -- ^ @radvd@, radvd License, SPDX License List 3.23 + | Radvd -- ^ @radvd@, radvd License, SPDX License List 3.23, SPDX License List 3.25 | Rdisc -- ^ @Rdisc@, Rdisc License | RHeCos_1_1 -- ^ @RHeCos-1.1@, Red Hat eCos Public License v1.1 | RPL_1_1 -- ^ @RPL-1.1@, Reciprocal Public License 1.1 @@ -543,100 +566,106 @@ data LicenseId | RPSL_1_0 -- ^ @RPSL-1.0@, RealNetworks Public Source License v1.0 | RSA_MD -- ^ @RSA-MD@, RSA Message-Digest License | RSCPL -- ^ @RSCPL@, Ricoh Source Code Public License + | Ruby_pty -- ^ @Ruby-pty@, Ruby pty extension license, SPDX License List 3.25 | Ruby -- ^ @Ruby@, Ruby License - | SAX_PD_2_0 -- ^ @SAX-PD-2.0@, Sax Public Domain Notice 2.0, SPDX License List 3.23 + | SAX_PD_2_0 -- ^ @SAX-PD-2.0@, Sax Public Domain Notice 2.0, SPDX License List 3.23, SPDX License List 3.25 | SAX_PD -- ^ @SAX-PD@, Sax Public Domain Notice | Saxpath -- ^ @Saxpath@, Saxpath License | SCEA -- ^ @SCEA@, SCEA Shared Source License - | SchemeReport -- ^ @SchemeReport@, Scheme Language Report License, SPDX License List 3.16, SPDX License List 3.23 - | Sendmail_8_23 -- ^ @Sendmail-8.23@, Sendmail License 8.23, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | SchemeReport -- ^ @SchemeReport@, Scheme Language Report License, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Sendmail_8_23 -- ^ @Sendmail-8.23@, Sendmail License 8.23, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | Sendmail -- ^ @Sendmail@, Sendmail License | SGI_B_1_0 -- ^ @SGI-B-1.0@, SGI Free Software License B v1.0 | SGI_B_1_1 -- ^ @SGI-B-1.1@, SGI Free Software License B v1.1 | SGI_B_2_0 -- ^ @SGI-B-2.0@, SGI Free Software License B v2.0 - | SGI_OpenGL -- ^ @SGI-OpenGL@, SGI OpenGL License, SPDX License List 3.23 - | SGP4 -- ^ @SGP4@, SGP4 Permission Notice, SPDX License List 3.23 - | SHL_0_51 -- ^ @SHL-0.51@, Solderpad Hardware License, Version 0.51, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | SHL_0_5 -- ^ @SHL-0.5@, Solderpad Hardware License v0.5, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | SGI_OpenGL -- ^ @SGI-OpenGL@, SGI OpenGL License, SPDX License List 3.23, SPDX License List 3.25 + | SGP4 -- ^ @SGP4@, SGP4 Permission Notice, SPDX License List 3.23, SPDX License List 3.25 + | SHL_0_51 -- ^ @SHL-0.51@, Solderpad Hardware License, Version 0.51, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | SHL_0_5 -- ^ @SHL-0.5@, Solderpad Hardware License v0.5, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | SimPL_2_0 -- ^ @SimPL-2.0@, Simple Public License 2.0 | SISSL_1_2 -- ^ @SISSL-1.2@, Sun Industry Standards Source License v1.2 | SISSL -- ^ @SISSL@, Sun Industry Standards Source License v1.1 | Sleepycat -- ^ @Sleepycat@, Sleepycat License - | SL -- ^ @SL@, SL License, SPDX License List 3.23 + | SL -- ^ @SL@, SL License, SPDX License List 3.23, SPDX License List 3.25 | SMLNJ -- ^ @SMLNJ@, Standard ML of New Jersey License | SMPPL -- ^ @SMPPL@, Secure Messaging Protocol Public License | SNIA -- ^ @SNIA@, SNIA Public License 1.1 - | Snprintf -- ^ @snprintf@, snprintf License, SPDX License List 3.23 - | SoftSurfer -- ^ @softSurfer@, softSurfer License, SPDX License List 3.23 - | Soundex -- ^ @Soundex@, Soundex License, SPDX License List 3.23 + | Snprintf -- ^ @snprintf@, snprintf License, SPDX License List 3.23, SPDX License List 3.25 + | SoftSurfer -- ^ @softSurfer@, softSurfer License, SPDX License List 3.23, SPDX License List 3.25 + | Soundex -- ^ @Soundex@, Soundex License, SPDX License List 3.23, SPDX License List 3.25 | Spencer_86 -- ^ @Spencer-86@, Spencer License 86 | Spencer_94 -- ^ @Spencer-94@, Spencer License 94 | Spencer_99 -- ^ @Spencer-99@, Spencer License 99 | SPL_1_0 -- ^ @SPL-1.0@, Sun Public License v1.0 - | Ssh_keyscan -- ^ @ssh-keyscan@, ssh-keyscan License, SPDX License List 3.23 - | SSH_OpenSSH -- ^ @SSH-OpenSSH@, SSH OpenSSH license, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | SSH_short -- ^ @SSH-short@, SSH short notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | SSLeay_standalone -- ^ @SSLeay-standalone@, SSLeay License - standalone, SPDX License List 3.23 - | SSPL_1_0 -- ^ @SSPL-1.0@, Server Side Public License, v 1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Ssh_keyscan -- ^ @ssh-keyscan@, ssh-keyscan License, SPDX License List 3.23, SPDX License List 3.25 + | SSH_OpenSSH -- ^ @SSH-OpenSSH@, SSH OpenSSH license, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | SSH_short -- ^ @SSH-short@, SSH short notice, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | SSLeay_standalone -- ^ @SSLeay-standalone@, SSLeay License - standalone, SPDX License List 3.23, SPDX License List 3.25 + | SSPL_1_0 -- ^ @SSPL-1.0@, Server Side Public License, v 1, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | SugarCRM_1_1_3 -- ^ @SugarCRM-1.1.3@, SugarCRM Public License v1.1.3 - | Sun_PPP -- ^ @Sun-PPP@, Sun PPP License, SPDX License List 3.23 - | SunPro -- ^ @SunPro@, SunPro License, SPDX License List 3.23 + | Sun_PPP_2000 -- ^ @Sun-PPP-2000@, Sun PPP License (2000), SPDX License List 3.25 + | Sun_PPP -- ^ @Sun-PPP@, Sun PPP License, SPDX License List 3.23, SPDX License List 3.25 + | SunPro -- ^ @SunPro@, SunPro License, SPDX License List 3.23, SPDX License List 3.25 | SWL -- ^ @SWL@, Scheme Widget Library (SWL) Software License Agreement - | Swrule -- ^ @swrule@, swrule License, SPDX License List 3.23 - | Symlinks -- ^ @Symlinks@, Symlinks License, SPDX License List 3.23 - | TAPR_OHL_1_0 -- ^ @TAPR-OHL-1.0@, TAPR Open Hardware License v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 + | Swrule -- ^ @swrule@, swrule License, SPDX License List 3.23, SPDX License List 3.25 + | Symlinks -- ^ @Symlinks@, Symlinks License, SPDX License List 3.23, SPDX License List 3.25 + | TAPR_OHL_1_0 -- ^ @TAPR-OHL-1.0@, TAPR Open Hardware License v1.0, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 | TCL -- ^ @TCL@, TCL/TK License | TCP_wrappers -- ^ @TCP-wrappers@, TCP Wrappers License - | TermReadKey -- ^ @TermReadKey@, TermReadKey License, SPDX License List 3.23 - | TGPPL_1_0 -- ^ @TGPPL-1.0@, Transitive Grace Period Public Licence 1.0, SPDX License List 3.23 + | TermReadKey -- ^ @TermReadKey@, TermReadKey License, SPDX License List 3.23, SPDX License List 3.25 + | TGPPL_1_0 -- ^ @TGPPL-1.0@, Transitive Grace Period Public Licence 1.0, SPDX License List 3.23, SPDX License List 3.25 + | Threeparttable -- ^ @threeparttable@, threeparttable License, SPDX License List 3.25 | TMate -- ^ @TMate@, TMate Open Source License | TORQUE_1_1 -- ^ @TORQUE-1.1@, TORQUE v2.5+ Software License v1.1 | TOSL -- ^ @TOSL@, Trusster Open Source License - | TPDL -- ^ @TPDL@, Time::ParseDate License, SPDX License List 3.23 - | TPL_1_0 -- ^ @TPL-1.0@, THOR Public License 1.0, SPDX License List 3.23 - | TTWL -- ^ @TTWL@, Text-Tabs+Wrap License, SPDX License List 3.23 - | TTYP0 -- ^ @TTYP0@, TTYP0 License, SPDX License List 3.23 - | TU_Berlin_1_0 -- ^ @TU-Berlin-1.0@, Technische Universitaet Berlin License 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | TU_Berlin_2_0 -- ^ @TU-Berlin-2.0@, Technische Universitaet Berlin License 2.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | UCAR -- ^ @UCAR@, UCAR License, SPDX License List 3.23 - | UCL_1_0 -- ^ @UCL-1.0@, Upstream Compatibility License v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23 - | Ulem -- ^ @ulem@, ulem License, SPDX License List 3.23 - | UMich_Merit -- ^ @UMich-Merit@, Michigan/Merit Networks License, SPDX License List 3.23 - | Unicode_3_0 -- ^ @Unicode-3.0@, Unicode License v3, SPDX License List 3.23 + | TPDL -- ^ @TPDL@, Time::ParseDate License, SPDX License List 3.23, SPDX License List 3.25 + | TPL_1_0 -- ^ @TPL-1.0@, THOR Public License 1.0, SPDX License List 3.23, SPDX License List 3.25 + | TTWL -- ^ @TTWL@, Text-Tabs+Wrap License, SPDX License List 3.23, SPDX License List 3.25 + | TTYP0 -- ^ @TTYP0@, TTYP0 License, SPDX License List 3.23, SPDX License List 3.25 + | TU_Berlin_1_0 -- ^ @TU-Berlin-1.0@, Technische Universitaet Berlin License 1.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | TU_Berlin_2_0 -- ^ @TU-Berlin-2.0@, Technische Universitaet Berlin License 2.0, SPDX License List 3.2, SPDX License List 3.6, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Ubuntu_font_1_0 -- ^ @Ubuntu-font-1.0@, Ubuntu Font Licence v1.0, SPDX License List 3.25 + | UCAR -- ^ @UCAR@, UCAR License, SPDX License List 3.23, SPDX License List 3.25 + | UCL_1_0 -- ^ @UCL-1.0@, Upstream Compatibility License v1.0, SPDX License List 3.9, SPDX License List 3.10, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | Ulem -- ^ @ulem@, ulem License, SPDX License List 3.23, SPDX License List 3.25 + | UMich_Merit -- ^ @UMich-Merit@, Michigan/Merit Networks License, SPDX License List 3.23, SPDX License List 3.25 + | Unicode_3_0 -- ^ @Unicode-3.0@, Unicode License v3, SPDX License List 3.23, SPDX License List 3.25 | Unicode_DFS_2015 -- ^ @Unicode-DFS-2015@, Unicode License Agreement - Data Files and Software (2015) | Unicode_DFS_2016 -- ^ @Unicode-DFS-2016@, Unicode License Agreement - Data Files and Software (2016) | Unicode_TOU -- ^ @Unicode-TOU@, Unicode Terms of Use - | UnixCrypt -- ^ @UnixCrypt@, UnixCrypt License, SPDX License List 3.23 + | UnixCrypt -- ^ @UnixCrypt@, UnixCrypt License, SPDX License List 3.23, SPDX License List 3.25 | Unlicense -- ^ @Unlicense@, The Unlicense | UPL_1_0 -- ^ @UPL-1.0@, Universal Permissive License v1.0 - | URT_RLE -- ^ @URT-RLE@, Utah Raster Toolkit Run Length Encoded License, SPDX License List 3.23 + | URT_RLE -- ^ @URT-RLE@, Utah Raster Toolkit Run Length Encoded License, SPDX License List 3.23, SPDX License List 3.25 | Vim -- ^ @Vim@, Vim License | VOSTROM -- ^ @VOSTROM@, VOSTROM Public License for Open Source | VSL_1_0 -- ^ @VSL-1.0@, Vovida Software License v1.0 | W3C_19980720 -- ^ @W3C-19980720@, W3C Software Notice and License (1998-07-20) | W3C_20150513 -- ^ @W3C-20150513@, W3C Software Notice and Document License (2015-05-13) | W3C -- ^ @W3C@, W3C Software Notice and License (2002-12-31) - | W3m -- ^ @w3m@, w3m License, SPDX License List 3.23 + | W3m -- ^ @w3m@, w3m License, SPDX License List 3.23, SPDX License List 3.25 | Watcom_1_0 -- ^ @Watcom-1.0@, Sybase Open Watcom Public License 1.0 - | Widget_Workshop -- ^ @Widget-Workshop@, Widget Workshop License, SPDX License List 3.23 + | Widget_Workshop -- ^ @Widget-Workshop@, Widget Workshop License, SPDX License List 3.23, SPDX License List 3.25 | Wsuipa -- ^ @Wsuipa@, Wsuipa License | WTFPL -- ^ @WTFPL@, Do What The F*ck You Want To Public License - | X11_distribute_modifications_variant -- ^ @X11-distribute-modifications-variant@, X11 License Distribution Modification Variant, SPDX License List 3.16, SPDX License List 3.23 + | X11_distribute_modifications_variant -- ^ @X11-distribute-modifications-variant@, X11 License Distribution Modification Variant, SPDX License List 3.16, SPDX License List 3.23, SPDX License List 3.25 + | X11_swapped -- ^ @X11-swapped@, X11 swapped final paragraphs, SPDX License List 3.25 | X11 -- ^ @X11@, X11 License - | Xdebug_1_03 -- ^ @Xdebug-1.03@, Xdebug License v 1.03, SPDX License List 3.23 + | Xdebug_1_03 -- ^ @Xdebug-1.03@, Xdebug License v 1.03, SPDX License List 3.23, SPDX License List 3.25 | Xerox -- ^ @Xerox@, Xerox License - | Xfig -- ^ @Xfig@, Xfig License, SPDX License List 3.23 + | Xfig -- ^ @Xfig@, Xfig License, SPDX License List 3.23, SPDX License List 3.25 | XFree86_1_1 -- ^ @XFree86-1.1@, XFree86 License 1.1 | Xinetd -- ^ @xinetd@, xinetd License - | Xkeyboard_config_Zinoviev -- ^ @xkeyboard-config-Zinoviev@, xkeyboard-config Zinoviev License, SPDX License List 3.23 - | Xlock -- ^ @xlock@, xlock License, SPDX License List 3.23 + | Xkeyboard_config_Zinoviev -- ^ @xkeyboard-config-Zinoviev@, xkeyboard-config Zinoviev License, SPDX License List 3.23, SPDX License List 3.25 + | Xlock -- ^ @xlock@, xlock License, SPDX License List 3.23, SPDX License List 3.25 | Xnet -- ^ @Xnet@, X.Net License | Xpp -- ^ @xpp@, XPP License | XSkat -- ^ @XSkat@, XSkat License + | Xzoom -- ^ @xzoom@, xzoom License, SPDX License List 3.25 | YPL_1_0 -- ^ @YPL-1.0@, Yahoo! Public License v1.0 | YPL_1_1 -- ^ @YPL-1.1@, Yahoo! Public License v1.1 | Zed -- ^ @Zed@, Zed License - | Zeeff -- ^ @Zeeff@, Zeeff License, SPDX License List 3.23 + | Zeeff -- ^ @Zeeff@, Zeeff License, SPDX License List 3.23, SPDX License List 3.25 | Zend_2_0 -- ^ @Zend-2.0@, Zend License v2.0 | Zimbra_1_3 -- ^ @Zimbra-1.3@, Zimbra Public License v1.3 | Zimbra_1_4 -- ^ @Zimbra-1.4@, Zimbra Public License v1.4 @@ -645,7 +674,7 @@ data LicenseId | ZPL_1_1 -- ^ @ZPL-1.1@, Zope Public License 1.1 | ZPL_2_0 -- ^ @ZPL-2.0@, Zope Public License 2.0 | ZPL_2_1 -- ^ @ZPL-2.1@, Zope Public License 2.1 - deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable, Data) + deriving (Eq, Ord, Enum, Bounded, Show, Read, Data) instance Binary LicenseId where -- Word16 is encoded in big endianess @@ -728,6 +757,7 @@ licenseIdMigrationMessage = go where -- | License SPDX identifier, e.g. @"BSD-3-Clause"@. licenseId :: LicenseId -> String licenseId NullBSD = "0BSD" +licenseId X3D_Slicer_1_0 = "3D-Slicer-1.0" licenseId AAL = "AAL" licenseId Abstyles = "Abstyles" licenseId AdaCore_doc = "AdaCore-doc" @@ -748,12 +778,14 @@ licenseId AGPL_1_0_or_later = "AGPL-1.0-or-later" licenseId AGPL_3_0_only = "AGPL-3.0-only" licenseId AGPL_3_0_or_later = "AGPL-3.0-or-later" licenseId Aladdin = "Aladdin" +licenseId AMD_newlib = "AMD-newlib" licenseId AMDPLPA = "AMDPLPA" licenseId AML_glslang = "AML-glslang" licenseId AML = "AML" licenseId AMPAS = "AMPAS" licenseId ANTLR_PD_fallback = "ANTLR-PD-fallback" licenseId ANTLR_PD = "ANTLR-PD" +licenseId Any_OSI = "any-OSI" licenseId Apache_1_0 = "Apache-1.0" licenseId Apache_1_1 = "Apache-1.1" licenseId Apache_2_0 = "Apache-2.0" @@ -790,6 +822,7 @@ licenseId BSD_1_Clause = "BSD-1-Clause" licenseId BSD_2_Clause_FreeBSD = "BSD-2-Clause-FreeBSD" licenseId BSD_2_Clause_NetBSD = "BSD-2-Clause-NetBSD" licenseId BSD_2_Clause_Darwin = "BSD-2-Clause-Darwin" +licenseId BSD_2_Clause_first_lines = "BSD-2-Clause-first-lines" licenseId BSD_2_Clause_Patent = "BSD-2-Clause-Patent" licenseId BSD_2_Clause_Views = "BSD-2-Clause-Views" licenseId BSD_2_Clause = "BSD-2-Clause" @@ -829,6 +862,7 @@ licenseId CAL_1_0_Combined_Work_Exception = "CAL-1.0-Combined-Work-Exception" licenseId CAL_1_0 = "CAL-1.0" licenseId Caldera_no_preamble = "Caldera-no-preamble" licenseId Caldera = "Caldera" +licenseId Catharon = "Catharon" licenseId CATOSL_1_1 = "CATOSL-1.1" licenseId CC_BY_1_0 = "CC-BY-1.0" licenseId CC_BY_2_0 = "CC-BY-2.0" @@ -925,11 +959,14 @@ licenseId CrystalStacker = "CrystalStacker" licenseId CUA_OPL_1_0 = "CUA-OPL-1.0" licenseId Cube = "Cube" licenseId Curl = "curl" +licenseId Cve_tou = "cve-tou" licenseId D_FSL_1_0 = "D-FSL-1.0" licenseId DEC_3_Clause = "DEC-3-Clause" licenseId Diffmark = "diffmark" licenseId DL_DE_BY_2_0 = "DL-DE-BY-2.0" licenseId DL_DE_ZERO_2_0 = "DL-DE-ZERO-2.0" +licenseId DocBook_Schema = "DocBook-Schema" +licenseId DocBook_XML = "DocBook-XML" licenseId DOC = "DOC" licenseId Dotseqn = "Dotseqn" licenseId DRL_1_0 = "DRL-1.0" @@ -1004,26 +1041,35 @@ licenseId GPL_3_0_or_later = "GPL-3.0-or-later" licenseId Graphics_Gems = "Graphics-Gems" licenseId GSOAP_1_3b = "gSOAP-1.3b" licenseId Gtkbook = "gtkbook" +licenseId Gutmann = "Gutmann" licenseId HaskellReport = "HaskellReport" licenseId Hdparm = "hdparm" +licenseId HIDAPI = "HIDAPI" licenseId Hippocratic_2_1 = "Hippocratic-2.1" licenseId HP_1986 = "HP-1986" licenseId HP_1989 = "HP-1989" licenseId HPND_DEC = "HPND-DEC" licenseId HPND_doc_sell = "HPND-doc-sell" licenseId HPND_doc = "HPND-doc" +licenseId HPND_export_US_acknowledgement = "HPND-export-US-acknowledgement" licenseId HPND_export_US_modify = "HPND-export-US-modify" licenseId HPND_export_US = "HPND-export-US" +licenseId HPND_export2_US = "HPND-export2-US" licenseId HPND_Fenneberg_Livingston = "HPND-Fenneberg-Livingston" licenseId HPND_INRIA_IMAG = "HPND-INRIA-IMAG" +licenseId HPND_Intel = "HPND-Intel" licenseId HPND_Kevlin_Henney = "HPND-Kevlin-Henney" licenseId HPND_Markus_Kuhn = "HPND-Markus-Kuhn" +licenseId HPND_merchantability_variant = "HPND-merchantability-variant" licenseId HPND_MIT_disclaimer = "HPND-MIT-disclaimer" +licenseId HPND_Netrek = "HPND-Netrek" licenseId HPND_Pbmplus = "HPND-Pbmplus" licenseId HPND_sell_MIT_disclaimer_xserver = "HPND-sell-MIT-disclaimer-xserver" licenseId HPND_sell_regexpr = "HPND-sell-regexpr" +licenseId HPND_sell_variant_MIT_disclaimer_rev = "HPND-sell-variant-MIT-disclaimer-rev" licenseId HPND_sell_variant_MIT_disclaimer = "HPND-sell-variant-MIT-disclaimer" licenseId HPND_sell_variant = "HPND-sell-variant" +licenseId HPND_UC_export_US = "HPND-UC-export-US" licenseId HPND_UC = "HPND-UC" licenseId HPND = "HPND" licenseId HTMLTIDY = "HTMLTIDY" @@ -1106,6 +1152,7 @@ licenseId MIT_CMU = "MIT-CMU" licenseId MIT_enna = "MIT-enna" licenseId MIT_feh = "MIT-feh" licenseId MIT_Festival = "MIT-Festival" +licenseId MIT_Khronos_old = "MIT-Khronos-old" licenseId MIT_Modern_Variant = "MIT-Modern-Variant" licenseId MIT_open_group = "MIT-open-group" licenseId MIT_testregex = "MIT-testregex" @@ -1134,7 +1181,9 @@ licenseId NAIST_2003 = "NAIST-2003" licenseId NASA_1_3 = "NASA-1.3" licenseId Naumen = "Naumen" licenseId NBPL_1_0 = "NBPL-1.0" +licenseId NCBI_PD = "NCBI-PD" licenseId NCGL_UK_2_0 = "NCGL-UK-2.0" +licenseId NCL = "NCL" licenseId NCSA = "NCSA" licenseId Net_SNMP = "Net-SNMP" licenseId NetCDF = "NetCDF" @@ -1157,6 +1206,7 @@ licenseId NRL = "NRL" licenseId NTP_0 = "NTP-0" licenseId NTP = "NTP" licenseId O_UDA_1_0 = "O-UDA-1.0" +licenseId OAR = "OAR" licenseId OCCT_PL = "OCCT-PL" licenseId OCLC_2_0 = "OCLC-2.0" licenseId ODbL_1_0 = "ODbL-1.0" @@ -1213,11 +1263,13 @@ licenseId PDDL_1_0 = "PDDL-1.0" licenseId PHP_3_01 = "PHP-3.01" licenseId PHP_3_0 = "PHP-3.0" licenseId Pixar = "Pixar" +licenseId Pkgconf = "pkgconf" licenseId Plexus = "Plexus" licenseId Pnmstitch = "pnmstitch" licenseId PolyForm_Noncommercial_1_0_0 = "PolyForm-Noncommercial-1.0.0" licenseId PolyForm_Small_Business_1_0_0 = "PolyForm-Small-Business-1.0.0" licenseId PostgreSQL = "PostgreSQL" +licenseId PPL = "PPL" licenseId PSF_2_0 = "PSF-2.0" licenseId Psfrag = "psfrag" licenseId Psutils = "psutils" @@ -1235,6 +1287,7 @@ licenseId RPL_1_5 = "RPL-1.5" licenseId RPSL_1_0 = "RPSL-1.0" licenseId RSA_MD = "RSA-MD" licenseId RSCPL = "RSCPL" +licenseId Ruby_pty = "Ruby-pty" licenseId Ruby = "Ruby" licenseId SAX_PD_2_0 = "SAX-PD-2.0" licenseId SAX_PD = "SAX-PD" @@ -1271,6 +1324,7 @@ licenseId SSH_short = "SSH-short" licenseId SSLeay_standalone = "SSLeay-standalone" licenseId SSPL_1_0 = "SSPL-1.0" licenseId SugarCRM_1_1_3 = "SugarCRM-1.1.3" +licenseId Sun_PPP_2000 = "Sun-PPP-2000" licenseId Sun_PPP = "Sun-PPP" licenseId SunPro = "SunPro" licenseId SWL = "SWL" @@ -1281,6 +1335,7 @@ licenseId TCL = "TCL" licenseId TCP_wrappers = "TCP-wrappers" licenseId TermReadKey = "TermReadKey" licenseId TGPPL_1_0 = "TGPPL-1.0" +licenseId Threeparttable = "threeparttable" licenseId TMate = "TMate" licenseId TORQUE_1_1 = "TORQUE-1.1" licenseId TOSL = "TOSL" @@ -1290,6 +1345,7 @@ licenseId TTWL = "TTWL" licenseId TTYP0 = "TTYP0" licenseId TU_Berlin_1_0 = "TU-Berlin-1.0" licenseId TU_Berlin_2_0 = "TU-Berlin-2.0" +licenseId Ubuntu_font_1_0 = "Ubuntu-font-1.0" licenseId UCAR = "UCAR" licenseId UCL_1_0 = "UCL-1.0" licenseId Ulem = "ulem" @@ -1314,6 +1370,7 @@ licenseId Widget_Workshop = "Widget-Workshop" licenseId Wsuipa = "Wsuipa" licenseId WTFPL = "WTFPL" licenseId X11_distribute_modifications_variant = "X11-distribute-modifications-variant" +licenseId X11_swapped = "X11-swapped" licenseId X11 = "X11" licenseId Xdebug_1_03 = "Xdebug-1.03" licenseId Xerox = "Xerox" @@ -1325,6 +1382,7 @@ licenseId Xlock = "xlock" licenseId Xnet = "Xnet" licenseId Xpp = "xpp" licenseId XSkat = "XSkat" +licenseId Xzoom = "xzoom" licenseId YPL_1_0 = "YPL-1.0" licenseId YPL_1_1 = "YPL-1.1" licenseId Zed = "Zed" @@ -1341,6 +1399,7 @@ licenseId ZPL_2_1 = "ZPL-2.1" -- | License name, e.g. @"GNU General Public License v2.0 only"@ licenseName :: LicenseId -> String licenseName NullBSD = "BSD Zero Clause License" +licenseName X3D_Slicer_1_0 = "3D Slicer License v1.0" licenseName AAL = "Attribution Assurance License" licenseName Abstyles = "Abstyles License" licenseName AdaCore_doc = "AdaCore Doc License" @@ -1361,12 +1420,14 @@ licenseName AGPL_1_0_or_later = "Affero General Public License v1.0 or later" licenseName AGPL_3_0_only = "GNU Affero General Public License v3.0 only" licenseName AGPL_3_0_or_later = "GNU Affero General Public License v3.0 or later" licenseName Aladdin = "Aladdin Free Public License" +licenseName AMD_newlib = "AMD newlib License" licenseName AMDPLPA = "AMD's plpa_map.c License" licenseName AML_glslang = "AML glslang variant License" licenseName AML = "Apple MIT License" licenseName AMPAS = "Academy of Motion Picture Arts and Sciences BSD" licenseName ANTLR_PD_fallback = "ANTLR Software Rights Notice with license fallback" licenseName ANTLR_PD = "ANTLR Software Rights Notice" +licenseName Any_OSI = "Any OSI License" licenseName Apache_1_0 = "Apache License 1.0" licenseName Apache_1_1 = "Apache License 1.1" licenseName Apache_2_0 = "Apache License 2.0" @@ -1403,6 +1464,7 @@ licenseName BSD_1_Clause = "BSD 1-Clause License" licenseName BSD_2_Clause_FreeBSD = "BSD 2-Clause FreeBSD License" licenseName BSD_2_Clause_NetBSD = "BSD 2-Clause NetBSD License" licenseName BSD_2_Clause_Darwin = "BSD 2-Clause - Ian Darwin variant" +licenseName BSD_2_Clause_first_lines = "BSD 2-Clause - first lines requirement" licenseName BSD_2_Clause_Patent = "BSD-2-Clause Plus Patent License" licenseName BSD_2_Clause_Views = "BSD 2-Clause with views sentence" licenseName BSD_2_Clause = "BSD 2-Clause \"Simplified\" License" @@ -1442,6 +1504,7 @@ licenseName CAL_1_0_Combined_Work_Exception = "Cryptographic Autonomy License 1. licenseName CAL_1_0 = "Cryptographic Autonomy License 1.0" licenseName Caldera_no_preamble = "Caldera License (without preamble)" licenseName Caldera = "Caldera License" +licenseName Catharon = "Catharon License" licenseName CATOSL_1_1 = "Computer Associates Trusted Open Source License 1.1" licenseName CC_BY_1_0 = "Creative Commons Attribution 1.0 Generic" licenseName CC_BY_2_0 = "Creative Commons Attribution 2.0 Generic" @@ -1538,11 +1601,14 @@ licenseName CrystalStacker = "CrystalStacker License" licenseName CUA_OPL_1_0 = "CUA Office Public License v1.0" licenseName Cube = "Cube License" licenseName Curl = "curl License" +licenseName Cve_tou = "Common Vulnerability Enumeration ToU License" licenseName D_FSL_1_0 = "Deutsche Freie Software Lizenz" licenseName DEC_3_Clause = "DEC 3-Clause License" licenseName Diffmark = "diffmark license" licenseName DL_DE_BY_2_0 = "Data licence Germany \8211 attribution \8211 version 2.0" licenseName DL_DE_ZERO_2_0 = "Data licence Germany \8211 zero \8211 version 2.0" +licenseName DocBook_Schema = "DocBook Schema License" +licenseName DocBook_XML = "DocBook XML License" licenseName DOC = "DOC License" licenseName Dotseqn = "Dotseqn License" licenseName DRL_1_0 = "Detection Rule License 1.0" @@ -1617,26 +1683,35 @@ licenseName GPL_3_0_or_later = "GNU General Public License v3.0 or later" licenseName Graphics_Gems = "Graphics Gems License" licenseName GSOAP_1_3b = "gSOAP Public License v1.3b" licenseName Gtkbook = "gtkbook License" +licenseName Gutmann = "Gutmann License" licenseName HaskellReport = "Haskell Language Report License" licenseName Hdparm = "hdparm License" +licenseName HIDAPI = "HIDAPI License" licenseName Hippocratic_2_1 = "Hippocratic License 2.1" licenseName HP_1986 = "Hewlett-Packard 1986 License" licenseName HP_1989 = "Hewlett-Packard 1989 License" licenseName HPND_DEC = "Historical Permission Notice and Disclaimer - DEC variant" licenseName HPND_doc_sell = "Historical Permission Notice and Disclaimer - documentation sell variant" licenseName HPND_doc = "Historical Permission Notice and Disclaimer - documentation variant" +licenseName HPND_export_US_acknowledgement = "HPND with US Government export control warning and acknowledgment" licenseName HPND_export_US_modify = "HPND with US Government export control warning and modification rqmt" licenseName HPND_export_US = "HPND with US Government export control warning" +licenseName HPND_export2_US = "HPND with US Government export control and 2 disclaimers" licenseName HPND_Fenneberg_Livingston = "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant" licenseName HPND_INRIA_IMAG = "Historical Permission Notice and Disclaimer - INRIA-IMAG variant" +licenseName HPND_Intel = "Historical Permission Notice and Disclaimer - Intel variant" licenseName HPND_Kevlin_Henney = "Historical Permission Notice and Disclaimer - Kevlin Henney variant" licenseName HPND_Markus_Kuhn = "Historical Permission Notice and Disclaimer - Markus Kuhn variant" +licenseName HPND_merchantability_variant = "Historical Permission Notice and Disclaimer - merchantability variant" licenseName HPND_MIT_disclaimer = "Historical Permission Notice and Disclaimer with MIT disclaimer" +licenseName HPND_Netrek = "Historical Permission Notice and Disclaimer - Netrek variant" licenseName HPND_Pbmplus = "Historical Permission Notice and Disclaimer - Pbmplus variant" licenseName HPND_sell_MIT_disclaimer_xserver = "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer" licenseName HPND_sell_regexpr = "Historical Permission Notice and Disclaimer - sell regexpr variant" +licenseName HPND_sell_variant_MIT_disclaimer_rev = "HPND sell variant with MIT disclaimer - reverse" licenseName HPND_sell_variant_MIT_disclaimer = "HPND sell variant with MIT disclaimer" licenseName HPND_sell_variant = "Historical Permission Notice and Disclaimer - sell variant" +licenseName HPND_UC_export_US = "Historical Permission Notice and Disclaimer - University of California, US export warning" licenseName HPND_UC = "Historical Permission Notice and Disclaimer - University of California variant" licenseName HPND = "Historical Permission Notice and Disclaimer" licenseName HTMLTIDY = "HTML Tidy License" @@ -1719,6 +1794,7 @@ licenseName MIT_CMU = "CMU License" licenseName MIT_enna = "enna License" licenseName MIT_feh = "feh License" licenseName MIT_Festival = "MIT Festival Variant" +licenseName MIT_Khronos_old = "MIT Khronos - old variant" licenseName MIT_Modern_Variant = "MIT License Modern Variant" licenseName MIT_open_group = "MIT Open Group variant" licenseName MIT_testregex = "MIT testregex Variant" @@ -1747,7 +1823,9 @@ licenseName NAIST_2003 = "Nara Institute of Science and Technology License (2003 licenseName NASA_1_3 = "NASA Open Source Agreement 1.3" licenseName Naumen = "Naumen Public License" licenseName NBPL_1_0 = "Net Boolean Public License v1" +licenseName NCBI_PD = "NCBI Public Domain Notice" licenseName NCGL_UK_2_0 = "Non-Commercial Government Licence" +licenseName NCL = "NCL Source Code License" licenseName NCSA = "University of Illinois/NCSA Open Source License" licenseName Net_SNMP = "Net-SNMP License" licenseName NetCDF = "NetCDF license" @@ -1770,6 +1848,7 @@ licenseName NRL = "NRL License" licenseName NTP_0 = "NTP No Attribution" licenseName NTP = "NTP License" licenseName O_UDA_1_0 = "Open Use of Data Agreement v1.0" +licenseName OAR = "OAR License" licenseName OCCT_PL = "Open CASCADE Technology Public License" licenseName OCLC_2_0 = "OCLC Research Public License 2.0" licenseName ODbL_1_0 = "Open Data Commons Open Database License v1.0" @@ -1826,11 +1905,13 @@ licenseName PDDL_1_0 = "Open Data Commons Public Domain Dedication & License 1.0 licenseName PHP_3_01 = "PHP License v3.01" licenseName PHP_3_0 = "PHP License v3.0" licenseName Pixar = "Pixar License" +licenseName Pkgconf = "pkgconf License" licenseName Plexus = "Plexus Classworlds License" licenseName Pnmstitch = "pnmstitch License" licenseName PolyForm_Noncommercial_1_0_0 = "PolyForm Noncommercial License 1.0.0" licenseName PolyForm_Small_Business_1_0_0 = "PolyForm Small Business License 1.0.0" licenseName PostgreSQL = "PostgreSQL License" +licenseName PPL = "Peer Production License" licenseName PSF_2_0 = "Python Software Foundation License 2.0" licenseName Psfrag = "psfrag License" licenseName Psutils = "psutils License" @@ -1848,6 +1929,7 @@ licenseName RPL_1_5 = "Reciprocal Public License 1.5" licenseName RPSL_1_0 = "RealNetworks Public Source License v1.0" licenseName RSA_MD = "RSA Message-Digest License" licenseName RSCPL = "Ricoh Source Code Public License" +licenseName Ruby_pty = "Ruby pty extension license" licenseName Ruby = "Ruby License" licenseName SAX_PD_2_0 = "Sax Public Domain Notice 2.0" licenseName SAX_PD = "Sax Public Domain Notice" @@ -1884,6 +1966,7 @@ licenseName SSH_short = "SSH short notice" licenseName SSLeay_standalone = "SSLeay License - standalone" licenseName SSPL_1_0 = "Server Side Public License, v 1" licenseName SugarCRM_1_1_3 = "SugarCRM Public License v1.1.3" +licenseName Sun_PPP_2000 = "Sun PPP License (2000)" licenseName Sun_PPP = "Sun PPP License" licenseName SunPro = "SunPro License" licenseName SWL = "Scheme Widget Library (SWL) Software License Agreement" @@ -1894,6 +1977,7 @@ licenseName TCL = "TCL/TK License" licenseName TCP_wrappers = "TCP Wrappers License" licenseName TermReadKey = "TermReadKey License" licenseName TGPPL_1_0 = "Transitive Grace Period Public Licence 1.0" +licenseName Threeparttable = "threeparttable License" licenseName TMate = "TMate Open Source License" licenseName TORQUE_1_1 = "TORQUE v2.5+ Software License v1.1" licenseName TOSL = "Trusster Open Source License" @@ -1903,6 +1987,7 @@ licenseName TTWL = "Text-Tabs+Wrap License" licenseName TTYP0 = "TTYP0 License" licenseName TU_Berlin_1_0 = "Technische Universitaet Berlin License 1.0" licenseName TU_Berlin_2_0 = "Technische Universitaet Berlin License 2.0" +licenseName Ubuntu_font_1_0 = "Ubuntu Font Licence v1.0" licenseName UCAR = "UCAR License" licenseName UCL_1_0 = "Upstream Compatibility License v1.0" licenseName Ulem = "ulem License" @@ -1927,6 +2012,7 @@ licenseName Widget_Workshop = "Widget Workshop License" licenseName Wsuipa = "Wsuipa License" licenseName WTFPL = "Do What The F*ck You Want To Public License" licenseName X11_distribute_modifications_variant = "X11 License Distribution Modification Variant" +licenseName X11_swapped = "X11 swapped final paragraphs" licenseName X11 = "X11 License" licenseName Xdebug_1_03 = "Xdebug License v 1.03" licenseName Xerox = "Xerox License" @@ -1938,6 +2024,7 @@ licenseName Xlock = "xlock License" licenseName Xnet = "X.Net License" licenseName Xpp = "XPP License" licenseName XSkat = "XSkat License" +licenseName Xzoom = "xzoom License" licenseName YPL_1_0 = "Yahoo! Public License v1.0" licenseName YPL_1_1 = "Yahoo! Public License v1.1" licenseName Zed = "Zed License" @@ -2080,6 +2167,7 @@ licenseIsOsiApproved Unicode_DFS_2016 = True licenseIsOsiApproved Unlicense = True licenseIsOsiApproved UPL_1_0 = True licenseIsOsiApproved VSL_1_0 = True +licenseIsOsiApproved W3C_20150513 = True licenseIsOsiApproved W3C = True licenseIsOsiApproved Watcom_1_0 = True licenseIsOsiApproved Xnet = True @@ -2218,6 +2306,7 @@ licenseIdList LicenseListVersion_3_0 = , BSD_2_Clause_FreeBSD , BSD_2_Clause_NetBSD , Bzip2_1_0_5 + , Net_SNMP ] ++ bulkOfLicenses licenseIdList LicenseListVersion_3_2 = @@ -2228,6 +2317,7 @@ licenseIdList LicenseListVersion_3_2 = , Bzip2_1_0_5 , Linux_OpenIB , MIT_0 + , Net_SNMP , ODC_By_1_0 , TU_Berlin_1_0 , TU_Berlin_2_0 @@ -2252,6 +2342,7 @@ licenseIdList LicenseListVersion_3_6 = , Libpng_2_0 , Linux_OpenIB , MIT_0 + , Net_SNMP , ODC_By_1_0 , OGL_UK_1_0 , OGL_UK_2_0 @@ -2295,6 +2386,7 @@ licenseIdList LicenseListVersion_3_9 = , MulanPSL_1_0 , MulanPSL_2_0 , NCGL_UK_2_0 + , Net_SNMP , NTP_0 , O_UDA_1_0 , ODC_By_1_0 @@ -2370,6 +2462,7 @@ licenseIdList LicenseListVersion_3_10 = , MulanPSL_1_0 , MulanPSL_2_0 , NCGL_UK_2_0 + , Net_SNMP , NIST_PD_fallback , NIST_PD , NTP_0 @@ -2483,6 +2576,7 @@ licenseIdList LicenseListVersion_3_16 = , MulanPSL_2_0 , NAIST_2003 , NCGL_UK_2_0 + , Net_SNMP , NIST_PD_fallback , NIST_PD , NLOD_2_0 @@ -2707,6 +2801,298 @@ licenseIdList LicenseListVersion_3_23 = , MulanPSL_2_0 , NAIST_2003 , NCGL_UK_2_0 + , Net_SNMP + , NICTA_1_0 + , NIST_PD_fallback + , NIST_PD + , NIST_Software + , NLOD_2_0 + , NTP_0 + , O_UDA_1_0 + , ODC_By_1_0 + , OFFIS + , OFL_1_0_no_RFN + , OFL_1_0_RFN + , OFL_1_1_no_RFN + , OFL_1_1_RFN + , OGC_1_0 + , OGDL_Taiwan_1_0 + , OGL_Canada_2_0 + , OGL_UK_1_0 + , OGL_UK_2_0 + , OGL_UK_3_0 + , OLFL_1_3 + , OpenPBS_2_3 + , OpenSSL_standalone + , OpenVision + , OPL_UK_3_0 + , OPUBL_1_0 + , PADL + , Parity_6_0_0 + , Parity_7_0_0 + , Pixar + , Pnmstitch + , PolyForm_Noncommercial_1_0_0 + , PolyForm_Small_Business_1_0_0 + , PSF_2_0 + , Python_2_0_1 + , Python_ldap + , QPL_1_0_INRIA_2004 + , Radvd + , SAX_PD_2_0 + , SchemeReport + , Sendmail_8_23 + , SGI_OpenGL + , SGP4 + , SHL_0_51 + , SHL_0_5 + , SL + , Snprintf + , SoftSurfer + , Soundex + , Ssh_keyscan + , SSH_OpenSSH + , SSH_short + , SSLeay_standalone + , SSPL_1_0 + , Sun_PPP + , SunPro + , Swrule + , Symlinks + , TAPR_OHL_1_0 + , TermReadKey + , TGPPL_1_0 + , TPDL + , TPL_1_0 + , TTWL + , TTYP0 + , TU_Berlin_1_0 + , TU_Berlin_2_0 + , UCAR + , UCL_1_0 + , Ulem + , UMich_Merit + , Unicode_3_0 + , UnixCrypt + , URT_RLE + , W3m + , Widget_Workshop + , X11_distribute_modifications_variant + , Xdebug_1_03 + , Xfig + , Xkeyboard_config_Zinoviev + , Xlock + , Zeeff + ] + ++ bulkOfLicenses +licenseIdList LicenseListVersion_3_25 = + [ X3D_Slicer_1_0 + , AdaCore_doc + , Adobe_Display_PostScript + , Adobe_Utopia + , AGPL_1_0_only + , AGPL_1_0_or_later + , AMD_newlib + , AML_glslang + , ANTLR_PD_fallback + , Any_OSI + , App_s2p + , Arphic_1999 + , ASWF_Digital_Assets_1_0 + , ASWF_Digital_Assets_1_1 + , Baekmuk + , Bcrypt_Solar_Designer + , Bitstream_Charter + , Bitstream_Vera + , Blessing + , BlueOak_1_0_0 + , Boehm_GC + , Brian_Gladman_2_Clause + , Brian_Gladman_3_Clause + , BSD_2_Clause_Darwin + , BSD_2_Clause_first_lines + , BSD_2_Clause_Views + , BSD_3_Clause_acpica + , BSD_3_Clause_flex + , BSD_3_Clause_HP + , BSD_3_Clause_Modification + , BSD_3_Clause_No_Military_License + , BSD_3_Clause_Open_MPI + , BSD_3_Clause_Sun + , BSD_4_Clause_Shortened + , BSD_4_3RENO + , BSD_4_3TAHOE + , BSD_Advertising_Acknowledgement + , BSD_Attribution_HPND_disclaimer + , BSD_Inferno_Nettverk + , BSD_Source_beginning_file + , BSD_Systemics_W3Works + , BSD_Systemics + , BUSL_1_1 + , C_UDA_1_0 + , CAL_1_0_Combined_Work_Exception + , CAL_1_0 + , Caldera_no_preamble + , Catharon + , CC_BY_2_5_AU + , CC_BY_3_0_AT + , CC_BY_3_0_AU + , CC_BY_3_0_DE + , CC_BY_3_0_IGO + , CC_BY_3_0_NL + , CC_BY_3_0_US + , CC_BY_NC_3_0_DE + , CC_BY_NC_ND_3_0_DE + , CC_BY_NC_ND_3_0_IGO + , CC_BY_NC_SA_2_0_DE + , CC_BY_NC_SA_2_0_FR + , CC_BY_NC_SA_2_0_UK + , CC_BY_NC_SA_3_0_DE + , CC_BY_NC_SA_3_0_IGO + , CC_BY_ND_3_0_DE + , CC_BY_SA_2_0_UK + , CC_BY_SA_2_1_JP + , CC_BY_SA_3_0_AT + , CC_BY_SA_3_0_DE + , CC_BY_SA_3_0_IGO + , CC_PDDC + , CDL_1_0 + , CDLA_Permissive_2_0 + , CERN_OHL_1_1 + , CERN_OHL_1_2 + , CERN_OHL_P_2_0 + , CERN_OHL_S_2_0 + , CERN_OHL_W_2_0 + , CFITSIO + , Check_cvs + , Checkmk + , Clips + , CMU_Mach_nodoc + , CMU_Mach + , COIL_1_0 + , Community_Spec_1_0 + , Copyleft_next_0_3_0 + , Copyleft_next_0_3_1 + , Cornell_Lossless_JPEG + , Cronyx + , Cve_tou + , DEC_3_Clause + , DL_DE_BY_2_0 + , DL_DE_ZERO_2_0 + , DocBook_Schema + , DocBook_XML + , DRL_1_0 + , DRL_1_1 + , Dtoa + , Elastic_2_0 + , EPICS + , Etalab_2_0 + , FBM + , FDK_AAC + , Ferguson_Twofish + , FreeBSD_DOC + , FSFAP_no_warranty_disclaimer + , FSFULLRWD + , Furuseth + , Fwlw + , GCR_docs + , GD + , GFDL_1_1_invariants_only + , GFDL_1_1_invariants_or_later + , GFDL_1_1_no_invariants_only + , GFDL_1_1_no_invariants_or_later + , GFDL_1_2_invariants_only + , GFDL_1_2_invariants_or_later + , GFDL_1_2_no_invariants_only + , GFDL_1_2_no_invariants_or_later + , GFDL_1_3_invariants_only + , GFDL_1_3_invariants_or_later + , GFDL_1_3_no_invariants_only + , GFDL_1_3_no_invariants_or_later + , GLWTPL + , Graphics_Gems + , Gtkbook + , Gutmann + , Hdparm + , HIDAPI + , Hippocratic_2_1 + , HP_1986 + , HP_1989 + , HPND_DEC + , HPND_doc_sell + , HPND_doc + , HPND_export_US_acknowledgement + , HPND_export_US_modify + , HPND_export_US + , HPND_export2_US + , HPND_Fenneberg_Livingston + , HPND_INRIA_IMAG + , HPND_Intel + , HPND_Kevlin_Henney + , HPND_Markus_Kuhn + , HPND_merchantability_variant + , HPND_MIT_disclaimer + , HPND_Netrek + , HPND_Pbmplus + , HPND_sell_MIT_disclaimer_xserver + , HPND_sell_regexpr + , HPND_sell_variant_MIT_disclaimer_rev + , HPND_sell_variant_MIT_disclaimer + , HPND_sell_variant + , HPND_UC_export_US + , HPND_UC + , HTMLTIDY + , IEC_Code_Components_EULA + , IJG_short + , Inner_Net_2_0 + , ISC_Veillard + , Jam + , JPL_image + , JPNIC + , Kastrup + , Kazlib + , Knuth_CTAN + , Latex2e_translated_notice + , Libpng_2_0 + , Libselinux_1_0 + , Libutil_David_Nugent + , Linux_man_pages_1_para + , Linux_man_pages_copyleft_2_para + , Linux_man_pages_copyleft_var + , Linux_man_pages_copyleft + , Linux_OpenIB + , LOOP + , LPD_document + , Lsof + , Lucida_Bitmap_Fonts + , LZMA_SDK_9_11_to_9_20 + , LZMA_SDK_9_22 + , Mackerras_3_Clause_acknowledgment + , Mackerras_3_Clause + , Magaz + , Mailprio + , Martin_Birgmeier + , McPhee_slideshow + , Metamail + , Minpack + , MIT_0 + , MIT_Festival + , MIT_Khronos_old + , MIT_Modern_Variant + , MIT_open_group + , MIT_testregex + , MIT_Wu + , MMIXware + , MPEG_SSG + , Mpi_permissive + , Mplus + , MS_LPL + , MulanPSL_1_0 + , MulanPSL_2_0 + , NAIST_2003 + , NCBI_PD + , NCGL_UK_2_0 + , NCL , NICTA_1_0 , NIST_PD_fallback , NIST_PD @@ -2714,6 +3100,7 @@ licenseIdList LicenseListVersion_3_23 = , NLOD_2_0 , NTP_0 , O_UDA_1_0 + , OAR , ODC_By_1_0 , OFFIS , OFL_1_0_no_RFN @@ -2736,14 +3123,17 @@ licenseIdList LicenseListVersion_3_23 = , Parity_6_0_0 , Parity_7_0_0 , Pixar + , Pkgconf , Pnmstitch , PolyForm_Noncommercial_1_0_0 , PolyForm_Small_Business_1_0_0 + , PPL , PSF_2_0 , Python_2_0_1 , Python_ldap , QPL_1_0_INRIA_2004 , Radvd + , Ruby_pty , SAX_PD_2_0 , SchemeReport , Sendmail_8_23 @@ -2760,6 +3150,7 @@ licenseIdList LicenseListVersion_3_23 = , SSH_short , SSLeay_standalone , SSPL_1_0 + , Sun_PPP_2000 , Sun_PPP , SunPro , Swrule @@ -2767,12 +3158,14 @@ licenseIdList LicenseListVersion_3_23 = , TAPR_OHL_1_0 , TermReadKey , TGPPL_1_0 + , Threeparttable , TPDL , TPL_1_0 , TTWL , TTYP0 , TU_Berlin_1_0 , TU_Berlin_2_0 + , Ubuntu_font_1_0 , UCAR , UCL_1_0 , Ulem @@ -2783,10 +3176,12 @@ licenseIdList LicenseListVersion_3_23 = , W3m , Widget_Workshop , X11_distribute_modifications_variant + , X11_swapped , Xdebug_1_03 , Xfig , Xkeyboard_config_Zinoviev , Xlock + , Xzoom , Zeeff ] ++ bulkOfLicenses @@ -2800,6 +3195,7 @@ mkLicenseId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9 mkLicenseId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10 mkLicenseId LicenseListVersion_3_16 s = Map.lookup s stringLookup_3_16 mkLicenseId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23 +mkLicenseId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25 stringLookup_3_0 :: Map String LicenseId stringLookup_3_0 = Map.fromList $ map (\i -> (licenseId i, i)) $ @@ -2829,6 +3225,10 @@ stringLookup_3_23 :: Map String LicenseId stringLookup_3_23 = Map.fromList $ map (\i -> (licenseId i, i)) $ licenseIdList LicenseListVersion_3_23 +stringLookup_3_25 :: Map String LicenseId +stringLookup_3_25 = Map.fromList $ map (\i -> (licenseId i, i)) $ + licenseIdList LicenseListVersion_3_25 + -- | Licenses in all SPDX License lists bulkOfLicenses :: [LicenseId] bulkOfLicenses = @@ -3050,7 +3450,6 @@ bulkOfLicenses = , Naumen , NBPL_1_0 , NCSA - , Net_SNMP , NetCDF , Newsletr , NGPL diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseListVersion.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseListVersion.hs index 88280ca56f9..cf12323d275 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseListVersion.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseListVersion.hs @@ -14,10 +14,11 @@ data LicenseListVersion | LicenseListVersion_3_10 | LicenseListVersion_3_16 | LicenseListVersion_3_23 + | LicenseListVersion_3_25 deriving (Eq, Ord, Show, Enum, Bounded) cabalSpecVersionToSPDXListVersion :: CabalSpecVersion -> LicenseListVersion -cabalSpecVersionToSPDXListVersion CabalSpecV3_14 = LicenseListVersion_3_23 +cabalSpecVersionToSPDXListVersion CabalSpecV3_14 = LicenseListVersion_3_25 cabalSpecVersionToSPDXListVersion CabalSpecV3_12 = LicenseListVersion_3_23 cabalSpecVersionToSPDXListVersion CabalSpecV3_8 = LicenseListVersion_3_16 cabalSpecVersionToSPDXListVersion CabalSpecV3_6 = LicenseListVersion_3_10 diff --git a/Cabal-syntax/src/Distribution/SPDX/LicenseReference.hs b/Cabal-syntax/src/Distribution/SPDX/LicenseReference.hs index 949d6c4d15d..38f83432692 100644 --- a/Cabal-syntax/src/Distribution/SPDX/LicenseReference.hs +++ b/Cabal-syntax/src/Distribution/SPDX/LicenseReference.hs @@ -24,7 +24,7 @@ data LicenseRef = LicenseRef { _lrDocument :: !(Maybe String) , _lrLicense :: !String } - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) -- | License reference. licenseRef :: LicenseRef -> String diff --git a/Cabal-syntax/src/Distribution/System.hs b/Cabal-syntax/src/Distribution/System.hs index 1bf6d598d03..78a9b3819c9 100644 --- a/Cabal-syntax/src/Distribution/System.hs +++ b/Cabal-syntax/src/Distribution/System.hs @@ -1,10 +1,7 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.System -- Copyright : Duncan Coutts 2007-2008 @@ -110,7 +107,7 @@ data OS | Wasi | Haiku | OtherOS String - deriving (Eq, Generic, Ord, Show, Read, Typeable, Data) + deriving (Eq, Generic, Ord, Show, Read, Data) instance Binary OS instance Structured OS @@ -213,7 +210,7 @@ data Arch | JavaScript | Wasm32 | OtherArch String - deriving (Eq, Generic, Ord, Show, Read, Typeable, Data) + deriving (Eq, Generic, Ord, Show, Read, Data) instance Binary Arch instance Structured Arch @@ -284,7 +281,7 @@ buildArch = classifyArch Permissive System.Info.arch -- ------------------------------------------------------------ data Platform = Platform Arch OS - deriving (Eq, Generic, Ord, Show, Read, Typeable, Data) + deriving (Eq, Generic, Ord, Show, Read, Data) instance Binary Platform instance Structured Platform diff --git a/Cabal-syntax/src/Distribution/Types/AbiDependency.hs b/Cabal-syntax/src/Distribution/Types/AbiDependency.hs index 2f380d15af2..54871978605 100644 --- a/Cabal-syntax/src/Distribution/Types/AbiDependency.hs +++ b/Cabal-syntax/src/Distribution/Types/AbiDependency.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Types.AbiDependency where @@ -27,7 +26,7 @@ data AbiDependency = AbiDependency { depUnitId :: Package.UnitId , depAbiHash :: Package.AbiHash } - deriving (Eq, Generic, Read, Show, Typeable) + deriving (Eq, Generic, Read, Show) instance Pretty AbiDependency where pretty (AbiDependency uid abi) = diff --git a/Cabal-syntax/src/Distribution/Types/AbiHash.hs b/Cabal-syntax/src/Distribution/Types/AbiHash.hs index a1be416c4ba..4c018f44c7b 100644 --- a/Cabal-syntax/src/Distribution/Types/AbiHash.hs +++ b/Cabal-syntax/src/Distribution/Types/AbiHash.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -27,7 +26,7 @@ import Text.PrettyPrint (text) -- -- @since 2.0.0.2 newtype AbiHash = AbiHash ShortText - deriving (Eq, Show, Read, Generic, Typeable) + deriving (Eq, Show, Read, Generic) -- | Convert 'AbiHash' to 'String' -- diff --git a/Cabal-syntax/src/Distribution/Types/Benchmark.hs b/Cabal-syntax/src/Distribution/Types/Benchmark.hs index 13e5fe104e5..6da7ef9dcae 100644 --- a/Cabal-syntax/src/Distribution/Types/Benchmark.hs +++ b/Cabal-syntax/src/Distribution/Types/Benchmark.hs @@ -27,7 +27,7 @@ data Benchmark = Benchmark , benchmarkInterface :: BenchmarkInterface , benchmarkBuildInfo :: BuildInfo } - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary Benchmark instance Structured Benchmark diff --git a/Cabal-syntax/src/Distribution/Types/BenchmarkInterface.hs b/Cabal-syntax/src/Distribution/Types/BenchmarkInterface.hs index 02b20864479..d963404a91e 100644 --- a/Cabal-syntax/src/Distribution/Types/BenchmarkInterface.hs +++ b/Cabal-syntax/src/Distribution/Types/BenchmarkInterface.hs @@ -27,7 +27,7 @@ data BenchmarkInterface | -- | A benchmark that does not conform to one of the above -- interfaces for the given reason (e.g. unknown benchmark type). BenchmarkUnsupported BenchmarkType - deriving (Eq, Ord, Generic, Read, Show, Typeable, Data) + deriving (Eq, Ord, Generic, Read, Show, Data) instance Binary BenchmarkInterface instance Structured BenchmarkInterface diff --git a/Cabal-syntax/src/Distribution/Types/BenchmarkType.hs b/Cabal-syntax/src/Distribution/Types/BenchmarkType.hs index 9dd3fad3ff9..56fc49e1b63 100644 --- a/Cabal-syntax/src/Distribution/Types/BenchmarkType.hs +++ b/Cabal-syntax/src/Distribution/Types/BenchmarkType.hs @@ -22,7 +22,7 @@ data BenchmarkType BenchmarkTypeExe Version | -- | Some unknown benchmark type e.g. \"type: foo\" BenchmarkTypeUnknown String Version - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary BenchmarkType instance Structured BenchmarkType diff --git a/Cabal-syntax/src/Distribution/Types/BuildInfo.hs b/Cabal-syntax/src/Distribution/Types/BuildInfo.hs index 680b9bf49db..2d7a5edeae1 100644 --- a/Cabal-syntax/src/Distribution/Types/BuildInfo.hs +++ b/Cabal-syntax/src/Distribution/Types/BuildInfo.hs @@ -144,7 +144,7 @@ data BuildInfo = BuildInfo -- ^ Dependencies specific to a library or executable target , mixins :: [Mixin] } - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary BuildInfo instance Structured BuildInfo diff --git a/Cabal-syntax/src/Distribution/Types/BuildType.hs b/Cabal-syntax/src/Distribution/Types/BuildType.hs index b94279eaf2e..eba66ec5d1d 100644 --- a/Cabal-syntax/src/Distribution/Types/BuildType.hs +++ b/Cabal-syntax/src/Distribution/Types/BuildType.hs @@ -30,7 +30,7 @@ data BuildType | -- | uses user-supplied @Setup.hs@ or @Setup.lhs@ (default) Custom | Hooks - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary BuildType instance Structured BuildType diff --git a/Cabal-syntax/src/Distribution/Types/ComponentId.hs b/Cabal-syntax/src/Distribution/Types/ComponentId.hs index 47cf1d97ee3..cb13b92bfe0 100644 --- a/Cabal-syntax/src/Distribution/Types/ComponentId.hs +++ b/Cabal-syntax/src/Distribution/Types/ComponentId.hs @@ -32,7 +32,7 @@ import Text.PrettyPrint (text) -- -- @since 2.0.0.2 newtype ComponentId = ComponentId ShortText - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) -- | Construct a 'ComponentId' from a 'String' -- diff --git a/Cabal-syntax/src/Distribution/Types/ComponentName.hs b/Cabal-syntax/src/Distribution/Types/ComponentName.hs index 01ed6f7655f..b66a5a03867 100644 --- a/Cabal-syntax/src/Distribution/Types/ComponentName.hs +++ b/Cabal-syntax/src/Distribution/Types/ComponentName.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE PatternSynonyms #-} @@ -25,14 +24,14 @@ import qualified Text.PrettyPrint as Disp data ComponentName = CLibName LibraryName | CNotLibName NotLibComponentName - deriving (Eq, Generic, Ord, Read, Show, Typeable) + deriving (Eq, Generic, Ord, Read, Show) data NotLibComponentName = CNLFLibName {toCompName :: UnqualComponentName} | CNLExeName {toCompName :: UnqualComponentName} | CNLTestName {toCompName :: UnqualComponentName} | CNLBenchName {toCompName :: UnqualComponentName} - deriving (Eq, Generic, Ord, Read, Show, Typeable) + deriving (Eq, Generic, Ord, Read, Show) pattern CFLibName :: UnqualComponentName -> ComponentName pattern CFLibName n = CNotLibName (CNLFLibName n) diff --git a/Cabal-syntax/src/Distribution/Types/ComponentRequestedSpec.hs b/Cabal-syntax/src/Distribution/Types/ComponentRequestedSpec.hs index 224b38c839d..3adcb7ea1da 100644 --- a/Cabal-syntax/src/Distribution/Types/ComponentRequestedSpec.hs +++ b/Cabal-syntax/src/Distribution/Types/ComponentRequestedSpec.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Types.ComponentRequestedSpec @@ -67,7 +66,7 @@ data ComponentRequestedSpec , benchmarksRequested :: Bool } | OneComponentRequestedSpec ComponentName - deriving (Generic, Read, Show, Eq, Typeable) + deriving (Generic, Read, Show, Eq) instance Binary ComponentRequestedSpec instance Structured ComponentRequestedSpec diff --git a/Cabal-syntax/src/Distribution/Types/CondTree.hs b/Cabal-syntax/src/Distribution/Types/CondTree.hs index 08a4d691faf..51959dbc948 100644 --- a/Cabal-syntax/src/Distribution/Types/CondTree.hs +++ b/Cabal-syntax/src/Distribution/Types/CondTree.hs @@ -61,7 +61,7 @@ data CondTree v c a = CondNode , condTreeConstraints :: c , condTreeComponents :: [CondBranch v c a] } - deriving (Show, Eq, Typeable, Data, Generic, Functor, Foldable, Traversable) + deriving (Show, Eq, Data, Generic, Functor, Foldable, Traversable) instance (Binary v, Binary c, Binary a) => Binary (CondTree v c a) instance (Structured v, Structured c, Structured a) => Structured (CondTree v c a) @@ -82,7 +82,7 @@ data CondBranch v c a = CondBranch , condBranchIfTrue :: CondTree v c a , condBranchIfFalse :: Maybe (CondTree v c a) } - deriving (Show, Eq, Typeable, Data, Generic, Functor, Traversable) + deriving (Show, Eq, Data, Generic, Functor, Traversable) -- This instance is written by hand because GHC 8.0.1/8.0.2 infinite -- loops when trying to derive it with optimizations. See diff --git a/Cabal-syntax/src/Distribution/Types/Condition.hs b/Cabal-syntax/src/Distribution/Types/Condition.hs index 114c25afa66..b7bcead95ac 100644 --- a/Cabal-syntax/src/Distribution/Types/Condition.hs +++ b/Cabal-syntax/src/Distribution/Types/Condition.hs @@ -19,7 +19,7 @@ data Condition c | CNot (Condition c) | COr (Condition c) (Condition c) | CAnd (Condition c) (Condition c) - deriving (Show, Eq, Typeable, Data, Generic) + deriving (Show, Eq, Data, Generic) -- | Boolean negation of a 'Condition' value. cNot :: Condition a -> Condition a diff --git a/Cabal-syntax/src/Distribution/Types/ConfVar.hs b/Cabal-syntax/src/Distribution/Types/ConfVar.hs index 220a6556fbd..bea2d21db52 100644 --- a/Cabal-syntax/src/Distribution/Types/ConfVar.hs +++ b/Cabal-syntax/src/Distribution/Types/ConfVar.hs @@ -19,7 +19,7 @@ data ConfVar | Arch Arch | PackageFlag FlagName | Impl CompilerFlavor VersionRange - deriving (Eq, Show, Typeable, Data, Generic) + deriving (Eq, Show, Data, Generic) instance Binary ConfVar instance Structured ConfVar diff --git a/Cabal-syntax/src/Distribution/Types/Dependency.hs b/Cabal-syntax/src/Distribution/Types/Dependency.hs index 222a699a3f9..768d3a60fc0 100644 --- a/Cabal-syntax/src/Distribution/Types/Dependency.hs +++ b/Cabal-syntax/src/Distribution/Types/Dependency.hs @@ -41,7 +41,7 @@ data Dependency PackageName VersionRange (NonEmptySet LibraryName) - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) depPkgName :: Dependency -> PackageName depPkgName (Dependency pn _ _) = pn diff --git a/Cabal-syntax/src/Distribution/Types/ExeDependency.hs b/Cabal-syntax/src/Distribution/Types/ExeDependency.hs index 17a79703fcc..849debdbf90 100644 --- a/Cabal-syntax/src/Distribution/Types/ExeDependency.hs +++ b/Cabal-syntax/src/Distribution/Types/ExeDependency.hs @@ -25,7 +25,7 @@ data ExeDependency PackageName UnqualComponentName -- name of executable component of package VersionRange - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary ExeDependency instance Structured ExeDependency diff --git a/Cabal-syntax/src/Distribution/Types/Executable.hs b/Cabal-syntax/src/Distribution/Types/Executable.hs index a2140e074a7..2017a9ba8d2 100644 --- a/Cabal-syntax/src/Distribution/Types/Executable.hs +++ b/Cabal-syntax/src/Distribution/Types/Executable.hs @@ -26,7 +26,7 @@ data Executable = Executable , exeScope :: ExecutableScope , buildInfo :: BuildInfo } - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance L.HasBuildInfo Executable where buildInfo f l = (\x -> l{buildInfo = x}) <$> f (buildInfo l) diff --git a/Cabal-syntax/src/Distribution/Types/ExecutableScope.hs b/Cabal-syntax/src/Distribution/Types/ExecutableScope.hs index 1221fae1c1a..5857fb436c2 100644 --- a/Cabal-syntax/src/Distribution/Types/ExecutableScope.hs +++ b/Cabal-syntax/src/Distribution/Types/ExecutableScope.hs @@ -18,7 +18,7 @@ import qualified Text.PrettyPrint as Disp data ExecutableScope = ExecutablePublic | ExecutablePrivate - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Pretty ExecutableScope where pretty ExecutablePublic = Disp.text "public" diff --git a/Cabal-syntax/src/Distribution/Types/ExposedModule.hs b/Cabal-syntax/src/Distribution/Types/ExposedModule.hs index 4afd03a3263..66eede651a4 100644 --- a/Cabal-syntax/src/Distribution/Types/ExposedModule.hs +++ b/Cabal-syntax/src/Distribution/Types/ExposedModule.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Types.ExposedModule where @@ -18,7 +17,7 @@ data ExposedModule = ExposedModule { exposedName :: ModuleName , exposedReexport :: Maybe OpenModule } - deriving (Eq, Generic, Read, Show, Typeable) + deriving (Eq, Generic, Read, Show) instance Pretty ExposedModule where pretty (ExposedModule m reexport) = diff --git a/Cabal-syntax/src/Distribution/Types/Flag.hs b/Cabal-syntax/src/Distribution/Types/Flag.hs index eff71748d9f..9ba76ecd4c4 100644 --- a/Cabal-syntax/src/Distribution/Types/Flag.hs +++ b/Cabal-syntax/src/Distribution/Types/Flag.hs @@ -56,7 +56,7 @@ data PackageFlag = MkPackageFlag , flagDefault :: Bool , flagManual :: Bool } - deriving (Show, Eq, Typeable, Data, Generic) + deriving (Show, Eq, Data, Generic) instance Binary PackageFlag instance Structured PackageFlag @@ -80,7 +80,7 @@ emptyFlag name = -- -- @since 2.0.0.2 newtype FlagName = FlagName ShortText - deriving (Eq, Generic, Ord, Show, Read, Typeable, Data, NFData) + deriving (Eq, Generic, Ord, Show, Read, Data, NFData) -- | Construct a 'FlagName' from a 'String' -- @@ -127,7 +127,7 @@ instance Parsec FlagName where -- -- TODO: Why we record the multiplicity of the flag? newtype FlagAssignment = FlagAssignment {getFlagAssignment :: Map.Map FlagName (Int, Bool)} - deriving (Binary, Generic, NFData, Typeable) + deriving (Binary, Generic, NFData) instance Structured FlagAssignment diff --git a/Cabal-syntax/src/Distribution/Types/ForeignLib.hs b/Cabal-syntax/src/Distribution/Types/ForeignLib.hs index 0da75b06cc6..c8a1472ca56 100644 --- a/Cabal-syntax/src/Distribution/Types/ForeignLib.hs +++ b/Cabal-syntax/src/Distribution/Types/ForeignLib.hs @@ -61,9 +61,9 @@ data ForeignLib = ForeignLib -- This is a list rather than a maybe field so that we can flatten -- the condition trees (for instance, when creating an sdist) } - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) -data LibVersionInfo = LibVersionInfo Int Int Int deriving (Data, Eq, Generic, Typeable) +data LibVersionInfo = LibVersionInfo Int Int Int deriving (Data, Eq, Generic) instance Ord LibVersionInfo where LibVersionInfo c r _ `compare` LibVersionInfo c' r' _ = diff --git a/Cabal-syntax/src/Distribution/Types/ForeignLibOption.hs b/Cabal-syntax/src/Distribution/Types/ForeignLibOption.hs index 5ed65410e70..e56afb7a45b 100644 --- a/Cabal-syntax/src/Distribution/Types/ForeignLibOption.hs +++ b/Cabal-syntax/src/Distribution/Types/ForeignLibOption.hs @@ -22,7 +22,7 @@ data ForeignLibOption -- This option is compulsory on Windows and unsupported -- on other platforms. ForeignLibStandalone - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Pretty ForeignLibOption where pretty ForeignLibStandalone = Disp.text "standalone" diff --git a/Cabal-syntax/src/Distribution/Types/ForeignLibType.hs b/Cabal-syntax/src/Distribution/Types/ForeignLibType.hs index 23617b80c48..6ab73d9e2fb 100644 --- a/Cabal-syntax/src/Distribution/Types/ForeignLibType.hs +++ b/Cabal-syntax/src/Distribution/Types/ForeignLibType.hs @@ -27,7 +27,7 @@ data ForeignLibType ForeignLibNativeStatic | -- TODO: Maybe this should record a string? ForeignLibTypeUnknown - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Pretty ForeignLibType where pretty ForeignLibNativeShared = Disp.text "native-shared" diff --git a/Cabal-syntax/src/Distribution/Types/GenericPackageDescription.hs b/Cabal-syntax/src/Distribution/Types/GenericPackageDescription.hs index 55ec8652304..97f4ed8cccb 100644 --- a/Cabal-syntax/src/Distribution/Types/GenericPackageDescription.hs +++ b/Cabal-syntax/src/Distribution/Types/GenericPackageDescription.hs @@ -71,7 +71,7 @@ data GenericPackageDescription = GenericPackageDescription ) ] } - deriving (Show, Eq, Typeable, Data, Generic) + deriving (Show, Eq, Data, Generic) instance Package GenericPackageDescription where packageId = packageId . packageDescription diff --git a/Cabal-syntax/src/Distribution/Types/IncludeRenaming.hs b/Cabal-syntax/src/Distribution/Types/IncludeRenaming.hs index c8cb70d91f1..411b46d6ce4 100644 --- a/Cabal-syntax/src/Distribution/Types/IncludeRenaming.hs +++ b/Cabal-syntax/src/Distribution/Types/IncludeRenaming.hs @@ -26,7 +26,7 @@ data IncludeRenaming = IncludeRenaming { includeProvidesRn :: ModuleRenaming , includeRequiresRn :: ModuleRenaming } - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) instance Binary IncludeRenaming instance Structured IncludeRenaming diff --git a/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo.hs b/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo.hs index b3e353876eb..f57457d2e5b 100644 --- a/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo.hs +++ b/Cabal-syntax/src/Distribution/Types/InstalledPackageInfo.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeFamilies #-} @@ -95,7 +94,7 @@ data InstalledPackageInfo = InstalledPackageInfo , haddockHTMLs :: [FilePath] , pkgRoot :: Maybe FilePath } - deriving (Eq, Generic, Typeable, Read, Show) + deriving (Eq, Generic, Read, Show) instance Binary InstalledPackageInfo instance Structured InstalledPackageInfo diff --git a/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs b/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs index 7acf028d0b3..f5c08ac2747 100644 --- a/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs +++ b/Cabal-syntax/src/Distribution/Types/LegacyExeDependency.hs @@ -26,7 +26,7 @@ data LegacyExeDependency = LegacyExeDependency String VersionRange - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary LegacyExeDependency instance Structured LegacyExeDependency diff --git a/Cabal-syntax/src/Distribution/Types/Library.hs b/Cabal-syntax/src/Distribution/Types/Library.hs index 738965ea167..fd4b89b6a6a 100644 --- a/Cabal-syntax/src/Distribution/Types/Library.hs +++ b/Cabal-syntax/src/Distribution/Types/Library.hs @@ -31,7 +31,7 @@ data Library = Library -- ^ Whether this multilib can be used as a dependency for other packages. , libBuildInfo :: BuildInfo } - deriving (Generic, Show, Eq, Ord, Read, Typeable, Data) + deriving (Generic, Show, Eq, Ord, Read, Data) instance L.HasBuildInfo Library where buildInfo f l = (\x -> l{libBuildInfo = x}) <$> f (libBuildInfo l) diff --git a/Cabal-syntax/src/Distribution/Types/LibraryName.hs b/Cabal-syntax/src/Distribution/Types/LibraryName.hs index 2b8f53f4f89..1ceefda2e65 100644 --- a/Cabal-syntax/src/Distribution/Types/LibraryName.hs +++ b/Cabal-syntax/src/Distribution/Types/LibraryName.hs @@ -27,7 +27,7 @@ import qualified Text.PrettyPrint as Disp data LibraryName = LMainLibName | LSubLibName UnqualComponentName - deriving (Eq, Generic, Ord, Read, Show, Typeable, Data) + deriving (Eq, Generic, Ord, Read, Show, Data) instance Binary LibraryName instance Structured LibraryName diff --git a/Cabal-syntax/src/Distribution/Types/LibraryVisibility.hs b/Cabal-syntax/src/Distribution/Types/LibraryVisibility.hs index bf113488a5c..8ebd7d2a19d 100644 --- a/Cabal-syntax/src/Distribution/Types/LibraryVisibility.hs +++ b/Cabal-syntax/src/Distribution/Types/LibraryVisibility.hs @@ -23,7 +23,7 @@ data LibraryVisibility LibraryVisibilityPublic | -- | Internal library, default LibraryVisibilityPrivate - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Pretty LibraryVisibility where pretty LibraryVisibilityPublic = Disp.text "public" diff --git a/Cabal-syntax/src/Distribution/Types/Mixin.hs b/Cabal-syntax/src/Distribution/Types/Mixin.hs index 63fa6e30fd5..726651d3292 100644 --- a/Cabal-syntax/src/Distribution/Types/Mixin.hs +++ b/Cabal-syntax/src/Distribution/Types/Mixin.hs @@ -31,7 +31,7 @@ data Mixin = Mixin , mixinLibraryName :: LibraryName , mixinIncludeRenaming :: IncludeRenaming } - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) instance Binary Mixin instance Structured Mixin diff --git a/Cabal-syntax/src/Distribution/Types/Module.hs b/Cabal-syntax/src/Distribution/Types/Module.hs index e9febeff070..c275874ebe7 100644 --- a/Cabal-syntax/src/Distribution/Types/Module.hs +++ b/Cabal-syntax/src/Distribution/Types/Module.hs @@ -26,7 +26,7 @@ import qualified Text.PrettyPrint as Disp -- the 'InstalledPackageInfo'. data Module = Module DefUnitId ModuleName - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary Module instance Structured Module diff --git a/Cabal-syntax/src/Distribution/Types/ModuleReexport.hs b/Cabal-syntax/src/Distribution/Types/ModuleReexport.hs index 0dae6002c3c..f7aa1e0a2fe 100644 --- a/Cabal-syntax/src/Distribution/Types/ModuleReexport.hs +++ b/Cabal-syntax/src/Distribution/Types/ModuleReexport.hs @@ -24,7 +24,7 @@ data ModuleReexport = ModuleReexport , moduleReexportOriginalName :: ModuleName , moduleReexportName :: ModuleName } - deriving (Eq, Ord, Generic, Read, Show, Typeable, Data) + deriving (Eq, Ord, Generic, Read, Show, Data) instance Binary ModuleReexport instance Structured ModuleReexport diff --git a/Cabal-syntax/src/Distribution/Types/ModuleRenaming.hs b/Cabal-syntax/src/Distribution/Types/ModuleRenaming.hs index 022a321a055..d0317205f6a 100644 --- a/Cabal-syntax/src/Distribution/Types/ModuleRenaming.hs +++ b/Cabal-syntax/src/Distribution/Types/ModuleRenaming.hs @@ -40,7 +40,7 @@ data ModuleRenaming | -- | Hiding renaming, e.g., @hiding (A, B)@, bringing all -- exported modules into scope except the hidden ones. HidingRenaming [ModuleName] - deriving (Show, Read, Eq, Ord, Typeable, Data, Generic) + deriving (Show, Read, Eq, Ord, Data, Generic) -- | Interpret a 'ModuleRenaming' as a partial map from 'ModuleName' -- to 'ModuleName'. For efficiency, you should partially apply it diff --git a/Cabal-syntax/src/Distribution/Types/MungedPackageId.hs b/Cabal-syntax/src/Distribution/Types/MungedPackageId.hs index f1e0904586d..8e879620478 100644 --- a/Cabal-syntax/src/Distribution/Types/MungedPackageId.hs +++ b/Cabal-syntax/src/Distribution/Types/MungedPackageId.hs @@ -28,7 +28,7 @@ data MungedPackageId = MungedPackageId , mungedVersion :: Version -- ^ The version of this package / component, eg 1.2 } - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary MungedPackageId instance Structured MungedPackageId diff --git a/Cabal-syntax/src/Distribution/Types/MungedPackageName.hs b/Cabal-syntax/src/Distribution/Types/MungedPackageName.hs index 78b648993d4..25a0f055362 100644 --- a/Cabal-syntax/src/Distribution/Types/MungedPackageName.hs +++ b/Cabal-syntax/src/Distribution/Types/MungedPackageName.hs @@ -31,7 +31,7 @@ import qualified Text.PrettyPrint as Disp -- -- @since 2.0.0.2 data MungedPackageName = MungedPackageName !PackageName !LibraryName - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary MungedPackageName instance Structured MungedPackageName diff --git a/Cabal-syntax/src/Distribution/Types/PackageDescription.hs b/Cabal-syntax/src/Distribution/Types/PackageDescription.hs index 5e64694ac1f..4b00a8ef526 100644 --- a/Cabal-syntax/src/Distribution/Types/PackageDescription.hs +++ b/Cabal-syntax/src/Distribution/Types/PackageDescription.hs @@ -151,7 +151,7 @@ data PackageDescription = PackageDescription , extraDocFiles :: [RelativePath Pkg File] , extraFiles :: [RelativePath Pkg File] } - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary PackageDescription instance Structured PackageDescription diff --git a/Cabal-syntax/src/Distribution/Types/PackageId.hs b/Cabal-syntax/src/Distribution/Types/PackageId.hs index b5c4764ad22..9cd88a2f810 100644 --- a/Cabal-syntax/src/Distribution/Types/PackageId.hs +++ b/Cabal-syntax/src/Distribution/Types/PackageId.hs @@ -28,7 +28,7 @@ data PackageIdentifier = PackageIdentifier , pkgVersion :: Version -- ^ the version of this package, eg 1.2 } - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary PackageIdentifier instance Structured PackageIdentifier diff --git a/Cabal-syntax/src/Distribution/Types/PackageName.hs b/Cabal-syntax/src/Distribution/Types/PackageName.hs index 4cf9d1aeb59..cf7f92b76a0 100644 --- a/Cabal-syntax/src/Distribution/Types/PackageName.hs +++ b/Cabal-syntax/src/Distribution/Types/PackageName.hs @@ -27,7 +27,7 @@ import qualified Text.PrettyPrint as Disp -- -- @since 2.0.0.2 newtype PackageName = PackageName ShortText - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) -- | Convert 'PackageName' to 'String' unPackageName :: PackageName -> String diff --git a/Cabal-syntax/src/Distribution/Types/PackageVersionConstraint.hs b/Cabal-syntax/src/Distribution/Types/PackageVersionConstraint.hs index 9c328378d07..013226ca2d5 100644 --- a/Cabal-syntax/src/Distribution/Types/PackageVersionConstraint.hs +++ b/Cabal-syntax/src/Distribution/Types/PackageVersionConstraint.hs @@ -26,7 +26,7 @@ import qualified Distribution.Compat.CharParsing as P -- There are a few places in the codebase where 'Dependency' was used where -- 'PackageVersionConstraint' is not used instead (#5570). data PackageVersionConstraint = PackageVersionConstraint PackageName VersionRange - deriving (Generic, Read, Show, Eq, Typeable, Data) + deriving (Generic, Read, Show, Eq, Data) instance Binary PackageVersionConstraint instance Structured PackageVersionConstraint diff --git a/Cabal-syntax/src/Distribution/Types/PkgconfigDependency.hs b/Cabal-syntax/src/Distribution/Types/PkgconfigDependency.hs index 695d3a3a184..54c8da7f66d 100644 --- a/Cabal-syntax/src/Distribution/Types/PkgconfigDependency.hs +++ b/Cabal-syntax/src/Distribution/Types/PkgconfigDependency.hs @@ -23,7 +23,7 @@ data PkgconfigDependency = PkgconfigDependency PkgconfigName PkgconfigVersionRange - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary PkgconfigDependency instance Structured PkgconfigDependency diff --git a/Cabal-syntax/src/Distribution/Types/PkgconfigName.hs b/Cabal-syntax/src/Distribution/Types/PkgconfigName.hs index c3a93dd27c1..595405780ff 100644 --- a/Cabal-syntax/src/Distribution/Types/PkgconfigName.hs +++ b/Cabal-syntax/src/Distribution/Types/PkgconfigName.hs @@ -24,7 +24,7 @@ import qualified Text.PrettyPrint as Disp -- -- @since 2.0.0.2 newtype PkgconfigName = PkgconfigName ShortText - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) -- | Convert 'PkgconfigName' to 'String' -- diff --git a/Cabal-syntax/src/Distribution/Types/PkgconfigVersion.hs b/Cabal-syntax/src/Distribution/Types/PkgconfigVersion.hs index dc328c44dda..d8db5b39bad 100644 --- a/Cabal-syntax/src/Distribution/Types/PkgconfigVersion.hs +++ b/Cabal-syntax/src/Distribution/Types/PkgconfigVersion.hs @@ -26,7 +26,7 @@ import qualified Text.PrettyPrint as PP -- -- @since 3.0 newtype PkgconfigVersion = PkgconfigVersion BS.ByteString - deriving (Generic, Read, Show, Typeable, Data) + deriving (Generic, Read, Show, Data) instance Eq PkgconfigVersion where PkgconfigVersion a == PkgconfigVersion b = rpmvercmp a b == EQ diff --git a/Cabal-syntax/src/Distribution/Types/PkgconfigVersionRange.hs b/Cabal-syntax/src/Distribution/Types/PkgconfigVersionRange.hs index fe74f70c7be..0699768409e 100644 --- a/Cabal-syntax/src/Distribution/Types/PkgconfigVersionRange.hs +++ b/Cabal-syntax/src/Distribution/Types/PkgconfigVersionRange.hs @@ -37,7 +37,7 @@ data PkgconfigVersionRange | PcOrEarlierVersion PkgconfigVersion -- =< version | PcUnionVersionRanges PkgconfigVersionRange PkgconfigVersionRange | PcIntersectVersionRanges PkgconfigVersionRange PkgconfigVersionRange - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data) + deriving (Generic, Read, Show, Eq, Ord, Data) instance Binary PkgconfigVersionRange instance Structured PkgconfigVersionRange diff --git a/Cabal-syntax/src/Distribution/Types/SetupBuildInfo.hs b/Cabal-syntax/src/Distribution/Types/SetupBuildInfo.hs index 18a01523a9e..9feffbf71e6 100644 --- a/Cabal-syntax/src/Distribution/Types/SetupBuildInfo.hs +++ b/Cabal-syntax/src/Distribution/Types/SetupBuildInfo.hs @@ -25,7 +25,7 @@ data SetupBuildInfo = SetupBuildInfo -- internally, and doesn't correspond to anything in the .cabal -- file. See #3199. } - deriving (Generic, Show, Eq, Ord, Read, Typeable, Data) + deriving (Generic, Show, Eq, Ord, Read, Data) instance Binary SetupBuildInfo instance Structured SetupBuildInfo diff --git a/Cabal-syntax/src/Distribution/Types/SourceRepo.hs b/Cabal-syntax/src/Distribution/Types/SourceRepo.hs index 16a0fc60e0e..10ab9c16e63 100644 --- a/Cabal-syntax/src/Distribution/Types/SourceRepo.hs +++ b/Cabal-syntax/src/Distribution/Types/SourceRepo.hs @@ -77,7 +77,7 @@ data SourceRepo = SourceRepo -- relative to the root of the repository. This field is optional. If not -- given the default is \".\" ie no subdirectory. } - deriving (Eq, Ord, Generic, Read, Show, Typeable, Data) + deriving (Eq, Ord, Generic, Read, Show, Data) emptySourceRepo :: RepoKind -> SourceRepo emptySourceRepo kind = @@ -106,7 +106,7 @@ data RepoKind -- information to re-create the exact sources. RepoThis | RepoKindUnknown String - deriving (Eq, Generic, Ord, Read, Show, Typeable, Data) + deriving (Eq, Generic, Ord, Read, Show, Data) instance Binary RepoKind instance Structured RepoKind @@ -126,7 +126,7 @@ data KnownRepoType | Monotone | -- | @since 3.4.0.0 Pijul - deriving (Eq, Generic, Ord, Read, Show, Typeable, Data, Enum, Bounded) + deriving (Eq, Generic, Ord, Read, Show, Data, Enum, Bounded) instance Binary KnownRepoType instance Structured KnownRepoType @@ -146,7 +146,7 @@ instance Pretty KnownRepoType where data RepoType = KnownRepoType KnownRepoType | OtherRepoType String - deriving (Eq, Generic, Ord, Read, Show, Typeable, Data) + deriving (Eq, Generic, Ord, Read, Show, Data) instance Binary RepoType instance Structured RepoType diff --git a/Cabal-syntax/src/Distribution/Types/TestSuite.hs b/Cabal-syntax/src/Distribution/Types/TestSuite.hs index 6b3107cae71..129e17dabfb 100644 --- a/Cabal-syntax/src/Distribution/Types/TestSuite.hs +++ b/Cabal-syntax/src/Distribution/Types/TestSuite.hs @@ -28,7 +28,7 @@ data TestSuite = TestSuite , testBuildInfo :: BuildInfo , testCodeGenerators :: [String] } - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance L.HasBuildInfo TestSuite where buildInfo f l = (\x -> l{testBuildInfo = x}) <$> f (testBuildInfo l) diff --git a/Cabal-syntax/src/Distribution/Types/TestSuiteInterface.hs b/Cabal-syntax/src/Distribution/Types/TestSuiteInterface.hs index 37e87155e48..a64d2f61f62 100644 --- a/Cabal-syntax/src/Distribution/Types/TestSuiteInterface.hs +++ b/Cabal-syntax/src/Distribution/Types/TestSuiteInterface.hs @@ -30,7 +30,7 @@ data TestSuiteInterface | -- | A test suite that does not conform to one of the above interfaces for -- the given reason (e.g. unknown test type). TestSuiteUnsupported TestType - deriving (Eq, Ord, Generic, Read, Show, Typeable, Data) + deriving (Eq, Ord, Generic, Read, Show, Data) instance Binary TestSuiteInterface instance Structured TestSuiteInterface diff --git a/Cabal-syntax/src/Distribution/Types/TestType.hs b/Cabal-syntax/src/Distribution/Types/TestType.hs index 6ac0866d6f1..88d3b3892f8 100644 --- a/Cabal-syntax/src/Distribution/Types/TestType.hs +++ b/Cabal-syntax/src/Distribution/Types/TestType.hs @@ -25,7 +25,7 @@ data TestType TestTypeLib Version | -- | Some unknown test type e.g. \"type: foo\" TestTypeUnknown String Version - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary TestType instance Structured TestType diff --git a/Cabal-syntax/src/Distribution/Types/UnitId.hs b/Cabal-syntax/src/Distribution/Types/UnitId.hs index 36a1d003b2e..0b5ca4bdf7b 100644 --- a/Cabal-syntax/src/Distribution/Types/UnitId.hs +++ b/Cabal-syntax/src/Distribution/Types/UnitId.hs @@ -64,7 +64,7 @@ import Text.PrettyPrint (text) -- flag, use the 'display' function, which will work on all -- versions of Cabal. newtype UnitId = UnitId ShortText - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data, NFData) + deriving (Generic, Read, Show, Eq, Ord, Data, NFData) instance Binary UnitId instance Structured UnitId @@ -118,7 +118,7 @@ getHSLibraryName uid = "HS" ++ prettyShow uid -- that a 'UnitId' identified this way is definite; i.e., it has no -- unfilled holes. newtype DefUnitId = DefUnitId {unDefUnitId :: UnitId} - deriving (Generic, Read, Show, Eq, Ord, Typeable, Data, Binary, NFData, Pretty) + deriving (Generic, Read, Show, Eq, Ord, Data, Binary, NFData, Pretty) instance Structured DefUnitId diff --git a/Cabal-syntax/src/Distribution/Types/UnqualComponentName.hs b/Cabal-syntax/src/Distribution/Types/UnqualComponentName.hs index 3879cdd2169..f671759b42f 100644 --- a/Cabal-syntax/src/Distribution/Types/UnqualComponentName.hs +++ b/Cabal-syntax/src/Distribution/Types/UnqualComponentName.hs @@ -33,7 +33,6 @@ newtype UnqualComponentName = UnqualComponentName ShortText , Show , Eq , Ord - , Typeable , Data , Semigroup , Monoid -- TODO: bad enabler of bad monoids diff --git a/Cabal-syntax/src/Distribution/Types/Version.hs b/Cabal-syntax/src/Distribution/Types/Version.hs index 90ad33b1048..efb2d497b49 100644 --- a/Cabal-syntax/src/Distribution/Types/Version.hs +++ b/Cabal-syntax/src/Distribution/Types/Version.hs @@ -47,7 +47,7 @@ data Version -- which all fall into the [0..0xfffe] range), then PV0 -- MUST be used. This is essential for the 'Eq' instance -- to work. - deriving (Data, Eq, Generic, Typeable) + deriving (Data, Eq, Generic) instance Ord Version where compare (PV0 x) (PV0 y) = compare x y diff --git a/Cabal-syntax/src/Distribution/Types/VersionInterval.hs b/Cabal-syntax/src/Distribution/Types/VersionInterval.hs index afd9d665631..6f64a1fea35 100644 --- a/Cabal-syntax/src/Distribution/Types/VersionInterval.hs +++ b/Cabal-syntax/src/Distribution/Types/VersionInterval.hs @@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveDataTypeable #-} -- | This module implements a view of a 'VersionRange' as a finite -- list of separated version intervals. @@ -65,7 +64,7 @@ import Distribution.Types.VersionRange.Internal -- predicates for translation into foreign packaging systems that do not -- support complex version range expressions. newtype VersionIntervals = VersionIntervals [VersionInterval] - deriving (Eq, Show, Typeable) + deriving (Eq, Show) -- | Inspect the list of version intervals. unVersionIntervals :: VersionIntervals -> [VersionInterval] diff --git a/Cabal-syntax/src/Distribution/Types/VersionInterval/Legacy.hs b/Cabal-syntax/src/Distribution/Types/VersionInterval/Legacy.hs index f5e86d4a429..57e725b66d5 100644 --- a/Cabal-syntax/src/Distribution/Types/VersionInterval/Legacy.hs +++ b/Cabal-syntax/src/Distribution/Types/VersionInterval/Legacy.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} - -- | This module implements a view of a 'VersionRange' as a finite -- list of separated version intervals and provides the Boolean -- algebra operations union, intersection, and complement. @@ -96,7 +94,7 @@ asVersionIntervals = versionIntervals . toVersionIntervals -- predicates for translation into foreign packaging systems that do not -- support complex version range expressions. newtype VersionIntervals = VersionIntervals [VersionInterval] - deriving (Eq, Show, Typeable) + deriving (Eq, Show) -- | Inspect the list of version intervals. versionIntervals :: VersionIntervals -> [VersionInterval] diff --git a/Cabal-syntax/src/Distribution/Types/VersionRange.hs b/Cabal-syntax/src/Distribution/Types/VersionRange.hs index c470b93c0d2..c1e72f728ac 100644 --- a/Cabal-syntax/src/Distribution/Types/VersionRange.hs +++ b/Cabal-syntax/src/Distribution/Types/VersionRange.hs @@ -1,7 +1,26 @@ +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE ViewPatterns #-} + module Distribution.Types.VersionRange - ( -- * Version ranges + ( -- * Version Range VersionRange + -- ** Predicates + -- $predicate-examples + + -- *** Lower Bound + , hasLowerBound + , hasGTLowerBound + + -- *** Upper Bound + , hasUpperBound + , hasLEUpperBound + , hasTrailingZeroUpperBound + + -- *** Any Version + , isAnyVersion + , isAnyVersionLight + -- ** Constructing , anyVersion , noVersion @@ -16,32 +35,31 @@ module Distribution.Types.VersionRange , withinVersion , majorBoundVersion - -- ** Inspection + -- ** Modification + , normaliseVersionRange + , stripParensVersionRange - -- - -- See "Distribution.Version" for more utilities. + -- ** Inspection , withinRange , foldVersionRange - , normaliseVersionRange - , stripParensVersionRange - , hasUpperBound - , hasLowerBound - -- ** Cata & ana + -- ** Parser + , versionRangeParser + + -- * Version F-Algebra , VersionRangeF (..) + , projectVersionRange + , embedVersionRange , cataVersionRange , anaVersionRange , hyloVersionRange - , projectVersionRange - , embedVersionRange - -- ** Utilities - , isAnyVersion - , isAnyVersionLight + -- * Version Utilities + + -- See "Distribution.Version" for more utilities. , wildcardUpperBound , majorUpperBound , isWildcardRange - , versionRangeParser ) where import Distribution.Compat.Prelude @@ -172,6 +190,9 @@ isWildcardRange ver1 ver2 = check (versionNumbers ver1) (versionNumbers ver2) -- | Does the version range have an upper bound? -- -- @since 1.24.0.0 +-- +-- >>> forM ["< 1", ">= 0 && < 1", ">= 0 || < 1", "^>= 4.20.0.0"] (fmap hasUpperBound . simpleParsec) +-- Just [True,True,False,True] hasUpperBound :: VersionRange -> Bool hasUpperBound = foldVersionRange @@ -188,6 +209,9 @@ hasUpperBound = -- the implicit >=0 lower bound. -- -- @since 1.24.0.0 +-- +-- >>> forM ["< 1", ">= 0 && < 1", ">= 0 || < 1", "^>= 4.20.0.0"] (fmap hasLowerBound . simpleParsec) +-- Just [False,True,False,True] hasLowerBound :: VersionRange -> Bool hasLowerBound = foldVersionRange @@ -197,3 +221,50 @@ hasLowerBound = (const False) (&&) (||) + +-- | Is the upper bound version range (less than or equal (LE, <=)? +-- +-- >>> forM ["< 1", "<= 1", ">= 0 && < 1", ">= 0 || < 1", ">= 0 && <= 1", ">= 0 || <= 1", "^>= 4.20.0.0"] (fmap hasLEUpperBound . simpleParsec) +-- Just [False,True,False,False,True,True,False] +hasLEUpperBound :: VersionRange -> Bool +hasLEUpperBound = queryVersionRange (\case LEUpperBound -> True; _ -> False) hasLEUpperBound + +-- | Is the lower bound version range greater than (GT, >)? +-- +-- >>> forM ["< 1", ">= 0 && < 1", ">= 0 || < 1", "> 0 && < 1", "> 0 || < 1", "^>= 4.20.0.0"] (fmap hasGTLowerBound . simpleParsec) +-- Just [False,False,False,True,True,False] +hasGTLowerBound :: VersionRange -> Bool +hasGTLowerBound = queryVersionRange (\case GTLowerBound -> True; _ -> False) hasGTLowerBound + +-- | Does the upper bound version range have a trailing zero? +-- +-- >>> forM ["< 1", "< 1.1", "< 1.0", "< 1.1.0", "^>= 4.20.0.0"] (fmap hasTrailingZeroUpperBound . simpleParsec) +-- Just [False,False,True,True,False] +hasTrailingZeroUpperBound :: VersionRange -> Bool +hasTrailingZeroUpperBound = queryVersionRange (\case TZUpperBound -> True; _ -> False) hasTrailingZeroUpperBound + +queryVersionRange :: (VersionRangeF VersionRange -> Bool) -> (VersionRange -> Bool) -> VersionRange -> Bool +queryVersionRange pf p (projectVersionRange -> v) = + let f = queryVersionRange pf p + in pf v || case v of + IntersectVersionRangesF x y -> f x || f y + UnionVersionRangesF x y -> f x || f y + _ -> False + +-- $setup +-- >>> import Distribution.Parsec +-- >>> import Data.Traversable + +-- $predicate-examples +-- +-- The parsed 'VersionRange' of each version constraint used in the examples for +-- 'hasUpperBound' and 'hasLowerBound' are: +-- +-- >>> simpleParsec "< 1" :: Maybe VersionRange +-- Just (EarlierVersion (mkVersion [1])) +-- >>> simpleParsec ">= 0 && < 1" :: Maybe VersionRange +-- Just (IntersectVersionRanges (OrLaterVersion (mkVersion [0])) (EarlierVersion (mkVersion [1]))) +-- >>> simpleParsec ">= 0 || < 1" :: Maybe VersionRange +-- Just (UnionVersionRanges (OrLaterVersion (mkVersion [0])) (EarlierVersion (mkVersion [1]))) +-- >>> simpleParsec "^>= 4.20.0.0" :: Maybe VersionRange +-- Just (MajorBoundVersion (mkVersion [4,20,0,0])) diff --git a/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs b/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs index 7d7101d8660..067cba7695f 100644 --- a/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs +++ b/Cabal-syntax/src/Distribution/Types/VersionRange/Internal.hs @@ -5,7 +5,9 @@ {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE ViewPatterns #-} -- | The only purpose of this module is to prevent the export of -- 'VersionRange' constructors from @@ -25,7 +27,7 @@ module Distribution.Types.VersionRange.Internal , intersectVersionRanges , withinVersion , majorBoundVersion - , VersionRangeF (..) + , VersionRangeF (.., LEUpperBound, GTLowerBound, TZUpperBound) , projectVersionRange , embedVersionRange , cataVersionRange @@ -58,7 +60,7 @@ data VersionRange | MajorBoundVersion Version -- @^>= ver@ (same as >= ver && < MAJ(ver)+1) | UnionVersionRanges VersionRange VersionRange | IntersectVersionRanges VersionRange VersionRange - deriving (Data, Eq, Ord, Generic, Read, Show, Typeable) + deriving (Data, Eq, Ord, Generic, Read, Show) instance Binary VersionRange instance Structured VersionRange @@ -181,12 +183,27 @@ data VersionRangeF a , Generic , Read , Show - , Typeable , Functor , Foldable , Traversable ) +pattern LEUpperBound, GTLowerBound, TZUpperBound :: VersionRangeF a +pattern LEUpperBound <- OrEarlierVersionF _ +pattern GTLowerBound <- LaterVersionF _ +pattern TZUpperBound <- (upperTrailingZero -> True) + +upperTrailingZero :: VersionRangeF a -> Bool +upperTrailingZero (OrEarlierVersionF x) = trailingZero x +upperTrailingZero (EarlierVersionF x) = trailingZero x +upperTrailingZero _ = False + +trailingZero :: Version -> Bool +trailingZero (versionNumbers -> vs) + | [0] <- vs = False + | 0 : _ <- reverse vs = True + | otherwise = False + -- | Generic destructor for 'VersionRange'. -- -- @since 2.2 diff --git a/Cabal-syntax/src/Distribution/Utils/Generic.hs b/Cabal-syntax/src/Distribution/Utils/Generic.hs index 997e0132f5a..f56d9db3630 100644 --- a/Cabal-syntax/src/Distribution/Utils/Generic.hs +++ b/Cabal-syntax/src/Distribution/Utils/Generic.hs @@ -1,12 +1,8 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Utils.Generic -- Copyright : Isaac Jones, Simon Marlow 2003-2004 diff --git a/Cabal-syntax/src/Distribution/Utils/Path.hs b/Cabal-syntax/src/Distribution/Utils/Path.hs index 0e1c7c191e4..a0f18a1dfdd 100644 --- a/Cabal-syntax/src/Distribution/Utils/Path.hs +++ b/Cabal-syntax/src/Distribution/Utils/Path.hs @@ -201,7 +201,7 @@ data AllowAbsolute -- until we interpret them (using e.g. 'interpretSymbolicPath'). newtype SymbolicPathX (allowAbsolute :: AllowAbsolute) (from :: Type) (to :: FileOrDir) = SymbolicPath FilePath - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) type role SymbolicPathX nominal nominal nominal diff --git a/Cabal-syntax/src/Distribution/Utils/ShortText.hs b/Cabal-syntax/src/Distribution/Utils/ShortText.hs index 0b128de9698..e1aa36ff236 100644 --- a/Cabal-syntax/src/Distribution/Utils/ShortText.hs +++ b/Cabal-syntax/src/Distribution/Utils/ShortText.hs @@ -93,7 +93,7 @@ null :: ShortText -> Bool -- @since 2.0.0.2 #if HAVE_SHORTBYTESTRING newtype ShortText = ST { unST :: BS.Short.ShortByteString } - deriving (Eq,Ord,Generic,Data,Typeable) + deriving (Eq,Ord,Generic,Data) # if MIN_VERSION_binary(0,8,1) instance Binary ShortText where @@ -115,7 +115,7 @@ unsafeFromUTF8BS = ST . BS.Short.toShort null = BS.Short.null . unST #else newtype ShortText = ST { unST :: String } - deriving (Eq,Ord,Generic,Data,Typeable) + deriving (Eq,Ord,Generic,Data) instance Binary ShortText where put = put . encodeStringUtf8 . unST diff --git a/Cabal-syntax/src/Distribution/Utils/Structured.hs b/Cabal-syntax/src/Distribution/Utils/Structured.hs index 83ae28995a8..ec8463bd6d3 100644 --- a/Cabal-syntax/src/Distribution/Utils/Structured.hs +++ b/Cabal-syntax/src/Distribution/Utils/Structured.hs @@ -277,7 +277,7 @@ structuredDecodeOrFailIO :: (Binary.Binary a, Structured a) => LBS.ByteString -> structuredDecodeOrFailIO bs = catch (evaluate (structuredDecode bs) >>= return . Right) handler where - handler (ErrorCallWithLocation str _) = return $ Left str + handler (ErrorCall str) = return $ Left str -- | Lazily reconstruct a value previously written to a file. structuredDecodeFileOrFail :: (Binary.Binary a, Structured a) => FilePath -> IO (Either String a) diff --git a/Cabal-syntax/src/Distribution/Version.hs b/Cabal-syntax/src/Distribution/Version.hs index 80383358037..76aed461228 100644 --- a/Cabal-syntax/src/Distribution/Version.hs +++ b/Cabal-syntax/src/Distribution/Version.hs @@ -50,6 +50,9 @@ module Distribution.Version , stripParensVersionRange , hasUpperBound , hasLowerBound + , hasLEUpperBound + , hasTrailingZeroUpperBound + , hasGTLowerBound -- ** Cata & ana , VersionRangeF (..) diff --git a/Cabal-syntax/src/Language/Haskell/Extension.hs b/Cabal-syntax/src/Language/Haskell/Extension.hs index 13796c80666..c2a83f77aca 100644 --- a/Cabal-syntax/src/Language/Haskell/Extension.hs +++ b/Cabal-syntax/src/Language/Haskell/Extension.hs @@ -59,7 +59,7 @@ data Language GHC2024 | -- | An unknown language, identified by its name. UnknownLanguage String - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary Language instance Structured Language @@ -115,7 +115,7 @@ data Extension | -- | An unknown extension, identified by the name of its @LANGUAGE@ -- pragma. UnknownExtension String - deriving (Generic, Show, Read, Eq, Ord, Typeable, Data) + deriving (Generic, Show, Read, Eq, Ord, Data) instance Binary Extension instance Structured Extension @@ -551,9 +551,12 @@ data KnownExtension | -- | Allow the use of built-in syntax for list, tuple and sum type constructors -- rather than being exclusive to data constructors. ListTuplePuns - | -- | Support multiline strings + | -- | Support multiline strings. MultilineStrings - deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Typeable, Data) + | -- | Allow use of or-pattern syntax, condensing multiple patterns + -- into a single one. + OrPatterns + deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Data) instance Binary KnownExtension instance Structured KnownExtension diff --git a/Cabal-tests/tests/ParserTests/regressions/issue-8646.cabal b/Cabal-tests/tests/ParserTests/regressions/issue-8646.cabal index d631357925f..c7576037132 100644 --- a/Cabal-tests/tests/ParserTests/regressions/issue-8646.cabal +++ b/Cabal-tests/tests/ParserTests/regressions/issue-8646.cabal @@ -11,6 +11,6 @@ license: BSD-3-Clause executable test main-is: ExeMain.hs - build-depends: base > 4 && < 5 + build-depends: base >= 4 && < 5 default-language: Haskell2010 ghc-options: -main-is ExeMain diff --git a/Cabal-tests/tests/UnitTests.hs b/Cabal-tests/tests/UnitTests.hs index cc0099175a8..4c26e3e92a8 100644 --- a/Cabal-tests/tests/UnitTests.hs +++ b/Cabal-tests/tests/UnitTests.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} module Main ( main ) where @@ -7,7 +6,6 @@ import Test.Tasty import Test.Tasty.Options import Data.Proxy -import Data.Typeable import Distribution.Simple.Utils import Distribution.Verbosity @@ -90,7 +88,6 @@ extraOptions = ] newtype OptionMtimeChangeDelay = OptionMtimeChangeDelay Int - deriving Typeable instance IsOption OptionMtimeChangeDelay where defaultValue = OptionMtimeChangeDelay 0 @@ -100,7 +97,6 @@ instance IsOption OptionMtimeChangeDelay where ++ "file modification, in microseconds" newtype GhcPath = GhcPath FilePath - deriving Typeable instance IsOption GhcPath where defaultValue = GhcPath "ghc" diff --git a/Cabal-tests/tests/UnitTests/Distribution/CabalSpecVersion.hs b/Cabal-tests/tests/UnitTests/Distribution/CabalSpecVersion.hs index 52fb5c7a689..2a23d3d23f1 100644 --- a/Cabal-tests/tests/UnitTests/Distribution/CabalSpecVersion.hs +++ b/Cabal-tests/tests/UnitTests/Distribution/CabalSpecVersion.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-deprecations #-} module UnitTests.Distribution.CabalSpecVersion (tests) where diff --git a/Cabal-tests/tests/UnitTests/Distribution/Utils/CharSet.hs b/Cabal-tests/tests/UnitTests/Distribution/Utils/CharSet.hs index a7d629ccb08..9efa58cc672 100644 --- a/Cabal-tests/tests/UnitTests/Distribution/Utils/CharSet.hs +++ b/Cabal-tests/tests/UnitTests/Distribution/Utils/CharSet.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} module UnitTests.Distribution.Utils.CharSet where import Prelude hiding (Foldable(..)) diff --git a/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs b/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs index 3bdf0465244..408e39b7dd1 100644 --- a/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs +++ b/Cabal-tests/tests/UnitTests/Distribution/Utils/Structured.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} module UnitTests.Distribution.Utils.Structured (tests) where import Data.Proxy (Proxy (..)) @@ -30,8 +29,8 @@ md5Check proxy md5Int = structureHash proxy @?= md5FromInteger md5Int md5CheckGenericPackageDescription :: Proxy GenericPackageDescription -> Assertion md5CheckGenericPackageDescription proxy = md5Check proxy - 0xe40d8d67b85712f245354657d7a80165 + 0x09251b46ffc5178a7526d31e794d9c62 md5CheckLocalBuildInfo :: Proxy LocalBuildInfo -> Assertion md5CheckLocalBuildInfo proxy = md5Check proxy - 0x94827844fdb1afedee525061749fb16f + 0x93b7e8ebb5b9f879fa5fe49b1708b43b diff --git a/Cabal-tree-diff/Cabal-tree-diff.cabal b/Cabal-tree-diff/Cabal-tree-diff.cabal index a6f65532b1c..71b3f3695ad 100644 --- a/Cabal-tree-diff/Cabal-tree-diff.cabal +++ b/Cabal-tree-diff/Cabal-tree-diff.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: Cabal-tree-diff -version: 3.13.0.0 +version: 3.14.0.0 synopsis: QuickCheck instances for types in Cabal category: Testing description: Provides tree-diff ToExpr instances for some types in Cabal @@ -11,8 +11,8 @@ library ghc-options: -Wall build-depends: , base - , Cabal-syntax ^>=3.13.0.0 - , Cabal ^>=3.13.0.0 + , Cabal-syntax ^>=3.14.0.0 + , Cabal ^>=3.14.0.0 , tree-diff ^>=0.1 || ^>=0.2 || ^>=0.3 exposed-modules: Data.TreeDiff.Instances.Cabal diff --git a/Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs b/Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs index 15fae62649e..a63faa3510c 100644 --- a/Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs +++ b/Cabal-tree-diff/src/Data/TreeDiff/Instances/Cabal.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -freduction-depth=0 #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.TreeDiff.Instances.Cabal () where diff --git a/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalLanguage.hs b/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalLanguage.hs index 78f6a7e5aa8..194ea34df80 100644 --- a/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalLanguage.hs +++ b/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalLanguage.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -freduction-depth=0 #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.TreeDiff.Instances.CabalLanguage () where diff --git a/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalSPDX.hs b/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalSPDX.hs index 2926129cb3d..520cbf8c894 100644 --- a/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalSPDX.hs +++ b/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalSPDX.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -freduction-depth=0 #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.TreeDiff.Instances.CabalSPDX () where diff --git a/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalVersion.hs b/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalVersion.hs index 3c2ac454dde..4321fd0bc3d 100644 --- a/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalVersion.hs +++ b/Cabal-tree-diff/src/Data/TreeDiff/Instances/CabalVersion.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -freduction-depth=0 #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Data.TreeDiff.Instances.CabalVersion where diff --git a/Cabal/Cabal.cabal b/Cabal/Cabal.cabal index 14e7050c5db..718abe5a643 100644 --- a/Cabal/Cabal.cabal +++ b/Cabal/Cabal.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: Cabal -version: 3.13.0.0 +version: 3.14.2.0 copyright: 2003-2024, Cabal Development Team (see AUTHORS file) license: BSD-3-Clause license-file: LICENSE @@ -34,7 +34,7 @@ library hs-source-dirs: src build-depends: - Cabal-syntax ^>= 3.13, + Cabal-syntax >= 3.14.2 && < 3.15, array >= 0.4.0.1 && < 0.6, base >= 4.13 && < 5, bytestring >= 0.10.0.0 && < 0.13, @@ -49,7 +49,7 @@ library if os(windows) build-depends: Win32 >= 2.3.0.0 && < 2.15 else - build-depends: unix >= 2.6.0.0 && < 2.9 + build-depends: unix >= 2.8.6.0 && < 2.9 ghc-options: -Wall diff --git a/Cabal/ChangeLog.md b/Cabal/ChangeLog.md index 681bbc5a84a..9481418c91c 100644 --- a/Cabal/ChangeLog.md +++ b/Cabal/ChangeLog.md @@ -1,8 +1,16 @@ +# 3.14.2.0 [Mikolaj Konarski](mailto:mikolaj@well-typed.com) April 2025 +* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md + +# 3.14.1.0 [Hécate](mailto:hecate+github@glitchbra.in) November 2024 +* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.1.0.md + +# 3.14.0.0 [Hécate](mailto:hecate+github@glitchbra.in) September 2024 +* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.0.0.md + # 3.12.1.0 [Artem Pelenitsyn](mailto:a.pelenitsyn@gmail.com) June 2024 * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.1.0.md # 3.12.0.0 [Francesco Ariis](mailto:fa-ml@ariis.it) May 2024 -# 3.12.0.0 [Francesco Ariis](mailto:fa-ml@ariis.it) March 2024 * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.0.0.md # 3.10.3.0 [Hécate](mailto:hecate+github@glitchbra.in) January 2024 diff --git a/Cabal/src/Distribution/Backpack/Configure.hs b/Cabal/src/Distribution/Backpack/Configure.hs index f3dec5055ee..4d740778e7c 100644 --- a/Cabal/src/Distribution/Backpack/Configure.hs +++ b/Cabal/src/Distribution/Backpack/Configure.hs @@ -103,6 +103,8 @@ configureComponentLocalBuildInfos let conf_pkg_map = Map.fromListWith Map.union + $ + -- Normal dependencies [ ( pc_pkgname pkg , Map.singleton (pc_compname pkg) @@ -115,8 +117,8 @@ configureComponentLocalBuildInfos ) | pkg <- prePkgDeps ] - `Map.union` Map.fromListWith - Map.union + ++ + -- Promised dependencies [ (pkg, Map.singleton (ann_cname aid) aid) | ConfiguredPromisedComponent pkg aid <- promisedPkgDeps ] diff --git a/Cabal/src/Distribution/Backpack/ModuleShape.hs b/Cabal/src/Distribution/Backpack/ModuleShape.hs index 039a6a30239..aceb14d5bc4 100644 --- a/Cabal/src/Distribution/Backpack/ModuleShape.hs +++ b/Cabal/src/Distribution/Backpack/ModuleShape.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} -- | See @@ -31,7 +30,7 @@ data ModuleShape = ModuleShape { modShapeProvides :: OpenModuleSubst , modShapeRequires :: Set ModuleName } - deriving (Eq, Show, Generic, Typeable) + deriving (Eq, Show, Generic) instance Binary ModuleShape instance Structured ModuleShape diff --git a/Cabal/src/Distribution/Compat/Async.hs b/Cabal/src/Distribution/Compat/Async.hs index b1234c8e346..7615a29a176 100644 --- a/Cabal/src/Distribution/Compat/Async.hs +++ b/Cabal/src/Distribution/Compat/Async.hs @@ -1,6 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} - -- | 'Async', yet using 'MVar's. -- -- Adopted from @async@ library @@ -40,7 +37,6 @@ import Control.Exception , uninterruptibleMask_ ) import Control.Monad (void) -import Data.Typeable (Typeable) import GHC.Exts (inline) -- | Async, but based on 'MVar', as we don't depend on @stm@. @@ -143,7 +139,6 @@ data AsyncCancelled = AsyncCancelled deriving ( Show , Eq - , Typeable ) instance Exception AsyncCancelled where diff --git a/Cabal/src/Distribution/Compat/Internal/TempFile.hs b/Cabal/src/Distribution/Compat/Internal/TempFile.hs index 5d3683be079..89f8575b6e8 100644 --- a/Cabal/src/Distribution/Compat/Internal/TempFile.hs +++ b/Cabal/src/Distribution/Compat/Internal/TempFile.hs @@ -15,17 +15,17 @@ import System.FilePath (()) import System.IO (Handle, openBinaryTempFile, openTempFile) #if defined(__IO_MANAGER_WINIO__) import System.IO (openBinaryTempFileWithDefaultPermissions) +import System.Posix.Internals (c_getpid) #else import Control.Exception (onException) import Data.Bits ((.|.)) import Foreign.C (CInt, eEXIST, getErrno, errnoToIOError) import GHC.IO.Handle.FD (fdToHandle) -import System.Posix.Internals (c_open, c_close, o_EXCL, o_BINARY, withFilePath, +import System.Posix.Internals (c_getpid, c_open, c_close, o_EXCL, o_BINARY, withFilePath, o_CREAT, o_RDWR, o_NONBLOCK, o_NOCTTY) #endif import System.IO.Error (isAlreadyExistsError) -import System.Posix.Internals (c_getpid) #if defined(mingw32_HOST_OS) || defined(ghcjs_HOST_OS) import System.Directory ( createDirectory ) diff --git a/Cabal/src/Distribution/Compat/ResponseFile.hs b/Cabal/src/Distribution/Compat/ResponseFile.hs index 8619ae56962..568e659c094 100644 --- a/Cabal/src/Distribution/Compat/ResponseFile.hs +++ b/Cabal/src/Distribution/Compat/ResponseFile.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal/src/Distribution/Compat/Stack.hs b/Cabal/src/Distribution/Compat/Stack.hs index 616a66d090d..425e53a990e 100644 --- a/Cabal/src/Distribution/Compat/Stack.hs +++ b/Cabal/src/Distribution/Compat/Stack.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal/src/Distribution/Compat/Time.hs b/Cabal/src/Distribution/Compat/Time.hs index 03d57449eb4..cce1ceaf819 100644 --- a/Cabal/src/Distribution/Compat/Time.hs +++ b/Cabal/src/Distribution/Compat/Time.hs @@ -1,5 +1,4 @@ {-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -42,20 +41,21 @@ import System.Win32.Types ( BOOL, DWORD, LPCTSTR, LPVOID, withTString ) #else -import System.Posix.Files ( FileStatus, getFileStatus ) - +import System.Posix.Files + ( FileStatus, getFileStatus #if MIN_VERSION_unix(2,6,0) -import System.Posix.Files ( modificationTimeHiRes ) + , modificationTimeHiRes #else -import System.Posix.Files ( modificationTime ) + , modificationTime #endif + ) #endif -- | An opaque type representing a file's modification time, represented -- internally as a 64-bit unsigned integer in the Windows UTC format. newtype ModTime = ModTime Word64 - deriving (Binary, Generic, Bounded, Eq, Ord, Typeable) + deriving (Binary, Generic, Bounded, Eq, Ord) instance Structured ModTime diff --git a/Cabal/src/Distribution/PackageDescription/Check.hs b/Cabal/src/Distribution/PackageDescription/Check.hs index 8bab6ec961a..2d9750de77d 100644 --- a/Cabal/src/Distribution/PackageDescription/Check.hs +++ b/Cabal/src/Distribution/PackageDescription/Check.hs @@ -568,8 +568,20 @@ checkSetupBuildInfo (Just (SetupBuildInfo ds _)) = do rck = PackageDistSuspiciousWarn . MissingUpperBounds CETSetup - checkPVP ick is - checkPVPs rck rs + leuck = + PackageDistSuspiciousWarn + . LEUpperBounds CETSetup + tzuck = + PackageDistSuspiciousWarn + . TrailingZeroUpperBounds CETSetup + gtlck = + PackageDistSuspiciousWarn + . GTLowerBounds CETSetup + checkPVP (checkDependencyVersionRange $ not . hasUpperBound) ick is + checkPVPs (checkDependencyVersionRange $ not . hasUpperBound) rck rs + checkPVPs (checkDependencyVersionRange hasLEUpperBound) leuck ds + checkPVPs (checkDependencyVersionRange hasTrailingZeroUpperBound) tzuck ds + checkPVPs (checkDependencyVersionRange hasGTLowerBound) gtlck ds checkPackageId :: Monad m => PackageIdentifier -> CheckM m () checkPackageId (PackageIdentifier pkgName_ _pkgVersion_) = do diff --git a/Cabal/src/Distribution/PackageDescription/Check/Common.hs b/Cabal/src/Distribution/PackageDescription/Check/Common.hs index 4c528831430..149f3617fc3 100644 --- a/Cabal/src/Distribution/PackageDescription/Check/Common.hs +++ b/Cabal/src/Distribution/PackageDescription/Check/Common.hs @@ -16,6 +16,7 @@ module Distribution.PackageDescription.Check.Common , partitionDeps , checkPVP , checkPVPs + , checkDependencyVersionRange ) where import Distribution.Compat.Prelude @@ -116,34 +117,32 @@ partitionDeps ads ns ds = do -- for important dependencies like base). checkPVP :: Monad m - => (String -> PackageCheck) -- Warn message dependend on name + => (Dependency -> Bool) + -> (String -> PackageCheck) -- Warn message depends on name -- (e.g. "base", "Cabal"). -> [Dependency] -> CheckM m () -checkPVP ckf ds = do - let ods = checkPVPPrim ds +checkPVP p ckf ds = do + let ods = filter p ds mapM_ (tellP . ckf . unPackageName . depPkgName) ods -- PVP dependency check for a list of dependencies. Some code duplication -- is sadly needed to provide more ergonimic error messages. checkPVPs :: Monad m - => ( [String] + => (Dependency -> Bool) + -> ( [String] -> PackageCheck -- Grouped error message, depends on a -- set of names. ) -> [Dependency] -- Deps to analyse. -> CheckM m () -checkPVPs cf ds +checkPVPs p cf ds | null ns = return () | otherwise = tellP (cf ns) where - ods = checkPVPPrim ds + ods = filter p ds ns = map (unPackageName . depPkgName) ods --- Returns dependencies without upper bounds. -checkPVPPrim :: [Dependency] -> [Dependency] -checkPVPPrim ds = filter withoutUpper ds - where - withoutUpper :: Dependency -> Bool - withoutUpper (Dependency _ ver _) = not . hasUpperBound $ ver +checkDependencyVersionRange :: (VersionRange -> Bool) -> Dependency -> Bool +checkDependencyVersionRange p (Dependency _ ver _) = p ver diff --git a/Cabal/src/Distribution/PackageDescription/Check/Target.hs b/Cabal/src/Distribution/PackageDescription/Check/Target.hs index c40fc0ef09a..0bf173cb980 100644 --- a/Cabal/src/Distribution/PackageDescription/Check/Target.hs +++ b/Cabal/src/Distribution/PackageDescription/Check/Target.hs @@ -331,17 +331,30 @@ checkBuildInfo cet ams ads bi = do checkAutogenModules ams bi -- PVP: we check for base and all other deps. + let ds = mergeDependencies $ targetBuildDepends bi (ids, rds) <- partitionDeps ads [mkUnqualComponentName "base"] - (mergeDependencies $ targetBuildDepends bi) + ds let ick = const (PackageDistInexcusable BaseNoUpperBounds) rck = PackageDistSuspiciousWarn . MissingUpperBounds cet - checkPVP ick ids + leuck = PackageDistSuspiciousWarn . LEUpperBounds cet + tzuck = PackageDistSuspiciousWarn . TrailingZeroUpperBounds cet + gtlck = PackageDistSuspiciousWarn . GTLowerBounds cet + checkPVP (checkDependencyVersionRange $ not . hasUpperBound) ick ids unless (isInternalTarget cet) - (checkPVPs rck rds) + (checkPVPs (checkDependencyVersionRange $ not . hasUpperBound) rck rds) + unless + (isInternalTarget cet) + (checkPVPs (checkDependencyVersionRange hasLEUpperBound) leuck ds) + unless + (isInternalTarget cet) + (checkPVPs (checkDependencyVersionRange hasTrailingZeroUpperBound) tzuck ds) + unless + (isInternalTarget cet) + (checkPVPs (checkDependencyVersionRange hasGTLowerBound) gtlck ds) -- Custom fields well-formedness (ASCII). mapM_ checkCustomField (customFieldsBI bi) diff --git a/Cabal/src/Distribution/PackageDescription/Check/Warning.hs b/Cabal/src/Distribution/PackageDescription/Check/Warning.hs index 8588333c1a5..78f256ec211 100644 --- a/Cabal/src/Distribution/PackageDescription/Check/Warning.hs +++ b/Cabal/src/Distribution/PackageDescription/Check/Warning.hs @@ -256,6 +256,9 @@ data CheckExplanation | UnknownCompiler [String] | BaseNoUpperBounds | MissingUpperBounds CEType [String] + | LEUpperBounds CEType [String] + | TrailingZeroUpperBounds CEType [String] + | GTLowerBounds CEType [String] | SuspiciousFlagName [String] | DeclaredUsedFlags (Set.Set FlagName) (Set.Set FlagName) | NonASCIICustomField [String] @@ -419,6 +422,9 @@ data CheckExplanationID | CIUnknownCompiler | CIBaseNoUpperBounds | CIMissingUpperBounds + | CILEUpperBounds + | CITrailingZeroUpperBounds + | CIGTLowerBounds | CISuspiciousFlagName | CIDeclaredUsedFlags | CINonASCIICustomField @@ -561,6 +567,9 @@ checkExplanationId (UnknownArch{}) = CIUnknownArch checkExplanationId (UnknownCompiler{}) = CIUnknownCompiler checkExplanationId (BaseNoUpperBounds{}) = CIBaseNoUpperBounds checkExplanationId (MissingUpperBounds{}) = CIMissingUpperBounds +checkExplanationId (LEUpperBounds{}) = CILEUpperBounds +checkExplanationId (TrailingZeroUpperBounds{}) = CITrailingZeroUpperBounds +checkExplanationId (GTLowerBounds{}) = CIGTLowerBounds checkExplanationId (SuspiciousFlagName{}) = CISuspiciousFlagName checkExplanationId (DeclaredUsedFlags{}) = CIDeclaredUsedFlags checkExplanationId (NonASCIICustomField{}) = CINonASCIICustomField @@ -588,11 +597,13 @@ checkExplanationId (WrongFieldForExpectedDocFiles{}) = CIWrongFieldForExpectedDo type CheckExplanationIDString = String --- A one-word identifier for each CheckExplanation --- --- ☞ N.B: if you modify anything here, remeber to change the documentation --- in @doc/cabal-commands.rst@! +-- | A one-word identifier for each @CheckExplanation@. ppCheckExplanationId :: CheckExplanationID -> CheckExplanationIDString +-- NOTE: If you modify anything here, remember to change the documentation +-- in @doc/cabal-commands.rst@! +-- NOTE: These strings will have to satisfy a test that these messages don't +-- have too many dashes: +-- $ cabal run Cabal-tests:unit-tests -- --pattern=Parsimonious ppCheckExplanationId CIParseWarning = "parser-warning" ppCheckExplanationId CINoNameField = "no-name-field" ppCheckExplanationId CINoVersionField = "no-version-field" @@ -708,6 +719,9 @@ ppCheckExplanationId CIUnknownArch = "unknown-arch" ppCheckExplanationId CIUnknownCompiler = "unknown-compiler" ppCheckExplanationId CIBaseNoUpperBounds = "missing-bounds-important" ppCheckExplanationId CIMissingUpperBounds = "missing-upper-bounds" +ppCheckExplanationId CILEUpperBounds = "le-upper-bounds" +ppCheckExplanationId CITrailingZeroUpperBounds = "tz-upper-bounds" +ppCheckExplanationId CIGTLowerBounds = "gt-lower-bounds" ppCheckExplanationId CISuspiciousFlagName = "suspicious-flag" ppCheckExplanationId CIDeclaredUsedFlags = "unused-flag" ppCheckExplanationId CINonASCIICustomField = "non-ascii" @@ -1301,15 +1315,33 @@ ppExplanation BaseNoUpperBounds = ++ "version. For example if you have tested your package with 'base' " ++ "version 4.5 and 4.6 then use 'build-depends: base >= 4.5 && < 4.7'." ppExplanation (MissingUpperBounds ct names) = - let separator = "\n - " - in "On " - ++ ppCET ct - ++ ", " - ++ "these packages miss upper bounds:" - ++ separator - ++ List.intercalate separator names - ++ "\n" - ++ "Please add them. There is more information at https://pvp.haskell.org/" + "On " + ++ ppCET ct + ++ ", " + ++ "these packages miss upper bounds:" + ++ listSep names + ++ "Please add them. There is more information at https://pvp.haskell.org/" +ppExplanation (LEUpperBounds ct names) = + "On " + ++ ppCET ct + ++ ", " + ++ "these packages have less than or equals (<=) upper bounds:" + ++ listSep names + ++ "Please use less than (<) for upper bounds." +ppExplanation (TrailingZeroUpperBounds ct names) = + "On " + ++ ppCET ct + ++ ", " + ++ "these packages have upper bounds with trailing zeros:" + ++ listSep names + ++ "Please avoid trailing zeros for upper bounds." +ppExplanation (GTLowerBounds ct names) = + "On " + ++ ppCET ct + ++ ", " + ++ "these packages have greater than (>) lower bounds:" + ++ listSep names + ++ "Please use greater than or equals (>=) for lower bounds." ppExplanation (SuspiciousFlagName invalidFlagNames) = "Suspicious flag names: " ++ unwords invalidFlagNames @@ -1471,6 +1503,11 @@ ppExplanation (WrongFieldForExpectedDocFiles extraDocFileSupport field paths) = -- * Formatting utilities +listSep :: [String] -> String +listSep names = + let separator = "\n - " + in separator ++ List.intercalate separator names ++ "\n" + commaSep :: [String] -> String commaSep = List.intercalate ", " diff --git a/Cabal/src/Distribution/Simple.hs b/Cabal/src/Distribution/Simple.hs index ada1d6c7aad..3533cf78336 100644 --- a/Cabal/src/Distribution/Simple.hs +++ b/Cabal/src/Distribution/Simple.hs @@ -1094,6 +1094,7 @@ defaultInstallHook_setupHooks inst_hooks pkg_descr localbuildinfo _ flags = do defaultRegisterFlags { regInPlace = installInPlace flags , regPackageDB = installPackageDB flags + , registerCommonFlags = installCommonFlags flags } when (hasLibs pkg_descr) $ register pkg_descr localbuildinfo registerFlags diff --git a/Cabal/src/Distribution/Simple/Bench.hs b/Cabal/src/Distribution/Simple/Bench.hs index dc4cf97a5bb..7cf706657d3 100644 --- a/Cabal/src/Distribution/Simple/Bench.hs +++ b/Cabal/src/Distribution/Simple/Bench.hs @@ -23,10 +23,9 @@ module Distribution.Simple.Bench import Distribution.Compat.Prelude import Prelude () -import Distribution.Compat.Environment import qualified Distribution.PackageDescription as PD import Distribution.Pretty -import Distribution.Simple.Build (addInternalBuildTools) +import Distribution.Simple.Build (addInternalBuildToolsFixed) import Distribution.Simple.BuildPaths import Distribution.Simple.Compiler import Distribution.Simple.Errors @@ -58,6 +57,7 @@ bench -- ^ flags sent to benchmark -> IO () bench args pkg_descr lbi flags = do + curDir <- LBI.absoluteWorkingDirLBI lbi let verbosity = fromFlag $ benchmarkVerbosity flags benchmarkNames = args pkgBenchmarks = PD.benchmarks pkg_descr @@ -72,7 +72,8 @@ bench args pkg_descr lbi flags = do lbi { -- Include any build-tool-depends on build tools internal to the current package. LBI.withPrograms = - addInternalBuildTools + addInternalBuildToolsFixed + (Just curDir) pkg_descr lbi (benchmarkBuildInfo bm) @@ -90,15 +91,12 @@ bench args pkg_descr lbi flags = do dieWithException verbosity $ NoBenchMarkProgram cmd - existingEnv <- getEnvironment - -- Compute the appropriate environment for running the benchmark let progDb = LBI.withPrograms lbiForBench pathVar = progSearchPath progDb envOverrides = progOverrideEnv progDb newPath <- programSearchPathAsPATHVar pathVar - overrideEnv <- fromMaybe [] <$> getEffectiveEnvironment ([("PATH", Just newPath)] ++ envOverrides) - let shellEnv = overrideEnv ++ existingEnv + shellEnv <- getFullEnvironment ([("PATH", Just newPath)] ++ envOverrides) -- Add (DY)LD_LIBRARY_PATH if needed shellEnv' <- diff --git a/Cabal/src/Distribution/Simple/Build.hs b/Cabal/src/Distribution/Simple/Build.hs index e153c25b9d7..9c257eb071c 100644 --- a/Cabal/src/Distribution/Simple/Build.hs +++ b/Cabal/src/Distribution/Simple/Build.hs @@ -48,6 +48,7 @@ module Distribution.Simple.Build -- * Handling of internal build tools , addInternalBuildTools + , addInternalBuildToolsFixed ) where import Distribution.Compat.Prelude @@ -188,13 +189,15 @@ build_setupHooks -- dumped. dumpBuildInfo verbosity distPref (configDumpBuildInfo (configFlags lbi)) pkg_descr lbi flags + curDir <- absoluteWorkingDirLBI lbi + -- Now do the actual building (\f -> foldM_ f (installedPkgs lbi) componentsToBuild) $ \index target -> do let comp = targetComponent target clbi = targetCLBI target bi = componentBuildInfo comp -- Include any build-tool-depends on build tools internal to the current package. - progs' = addInternalBuildTools pkg_descr lbi bi (withPrograms lbi) + progs' = addInternalBuildToolsFixed (Just curDir) pkg_descr lbi bi (withPrograms lbi) lbi' = lbi { withPrograms = progs' @@ -376,17 +379,20 @@ repl_setupHooks internalPackageDB <- createInternalPackageDB verbosity lbi distPref - let lbiForComponent comp lbi' = - lbi' - { withPackageDB = withPackageDB lbi ++ [internalPackageDB] - , withPrograms = - -- Include any build-tool-depends on build tools internal to the current package. - addInternalBuildTools - pkg_descr - lbi' - (componentBuildInfo comp) - (withPrograms lbi') - } + let lbiForComponent comp lbi' = do + curDir <- absoluteWorkingDirLBI lbi' + return $ + lbi' + { withPackageDB = withPackageDB lbi' ++ [internalPackageDB] + , withPrograms = + -- Include any build-tool-depends on build tools internal to the current package. + addInternalBuildToolsFixed + (Just curDir) + pkg_descr + lbi' + (componentBuildInfo comp) + (withPrograms lbi') + } runPreBuildHooks :: LocalBuildInfo -> TargetInfo -> IO () runPreBuildHooks lbi2 tgt = let inputs = @@ -404,7 +410,7 @@ repl_setupHooks [ do let clbi = targetCLBI subtarget comp = targetComponent subtarget - lbi' = lbiForComponent comp lbi + lbi' <- lbiForComponent comp lbi preBuildComponent runPreBuildHooks verbosity lbi' subtarget buildComponent (mempty{buildCommonFlags = mempty{setupVerbosity = toFlag verbosity}}) @@ -421,7 +427,7 @@ repl_setupHooks -- REPL for target components let clbi = targetCLBI target comp = targetComponent target - lbi' = lbiForComponent comp lbi + lbi' <- lbiForComponent comp lbi preBuildComponent runPreBuildHooks verbosity lbi' target replComponent flags verbosity pkg_descr lbi' suffixHandlers comp clbi distPref @@ -925,13 +931,18 @@ createInternalPackageDB verbosity lbi distPref = do -- directory environment variable for the current package to the current -- 'progOverrideEnv', so that any programs configured from now on will be -- able to invoke these build tools. -addInternalBuildTools - :: PackageDescription +-- +-- NB: This function will be removed in the next Cabal major version +-- (use addInternalBuildTools instead). This function is introduced solely for +-- backporting in a PVP compliant way. +addInternalBuildToolsFixed + :: Maybe (AbsolutePath (Dir Pkg)) + -> PackageDescription -> LocalBuildInfo -> BuildInfo -> ProgramDb -> ProgramDb -addInternalBuildTools pkg lbi bi progs = +addInternalBuildToolsFixed mpwd pkg lbi bi progs = prependProgramSearchPathNoLogging internalToolPaths [pkgDataDirVar] @@ -950,13 +961,27 @@ addInternalBuildTools pkg lbi bi progs = buildDir lbi makeRelativePathEx (toolName' toolName' <.> exeExtension (hostPlatform lbi)) ] - mbWorkDir = mbWorkDirLBI lbi - rawDataDir = dataDir pkg - dataDirPath - | null $ getSymbolicPath rawDataDir = - interpretSymbolicPath mbWorkDir sameDirectory - | otherwise = - interpretSymbolicPath mbWorkDir rawDataDir + + dataDirPath :: FilePath + dataDirPath = + case mpwd of + -- This is an absolute path, so if a process changes directory, it can still + -- find the datadir (#10717) + Just pwd -> interpretSymbolicPathAbsolute pwd (dataDir pkg) + -- This is just wrong, but implemented for PVP compliance.. + Nothing -> interpretSymbolicPathCWD (dataDir pkg) + +{-# WARNING addInternalBuildTools "This function is broken, use addInternalBuildToolsFixed instead" #-} + +-- | A backwards compatible (broken) version of `addInternalBuildTools`, do not +-- use this function. Use 'addInternalBuildToolsFixed' instead. +addInternalBuildTools + :: PackageDescription + -> LocalBuildInfo + -> BuildInfo + -> ProgramDb + -> ProgramDb +addInternalBuildTools = addInternalBuildToolsFixed Nothing -- TODO: build separate libs in separate dirs so that we can build -- multiple libs, e.g. for 'LibTest' library-style test suites diff --git a/Cabal/src/Distribution/Simple/Compiler.hs b/Cabal/src/Distribution/Simple/Compiler.hs index 52395a56668..32119deb519 100644 --- a/Cabal/src/Distribution/Simple/Compiler.hs +++ b/Cabal/src/Distribution/Simple/Compiler.hs @@ -1,5 +1,4 @@ {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} @@ -125,7 +124,7 @@ data Compiler = Compiler , compilerProperties :: Map String String -- ^ A key-value map for properties not covered by the above fields. } - deriving (Eq, Generic, Typeable, Show, Read) + deriving (Eq, Generic, Show, Read) instance Binary Compiler instance Structured Compiler @@ -200,7 +199,7 @@ data PackageDBX fp | UserPackageDB | -- | NB: the path might be relative or it might be absolute SpecificPackageDB fp - deriving (Eq, Generic, Ord, Show, Read, Typeable, Functor, Foldable, Traversable) + deriving (Eq, Generic, Ord, Show, Read, Functor, Foldable, Traversable) instance Binary fp => Binary (PackageDBX fp) instance Structured fp => Structured (PackageDBX fp) @@ -291,7 +290,7 @@ data OptimisationLevel = NoOptimisation | NormalOptimisation | MaximumOptimisation - deriving (Bounded, Enum, Eq, Generic, Read, Show, Typeable) + deriving (Bounded, Enum, Eq, Generic, Read, Show) instance Binary OptimisationLevel instance Structured OptimisationLevel @@ -324,7 +323,7 @@ data DebugInfoLevel | MinimalDebugInfo | NormalDebugInfo | MaximalDebugInfo - deriving (Bounded, Enum, Eq, Generic, Read, Show, Typeable) + deriving (Bounded, Enum, Eq, Generic, Read, Show) instance Binary DebugInfoLevel instance Structured DebugInfoLevel @@ -561,7 +560,7 @@ data ProfDetailLevel | ProfDetailAllFunctions | ProfDetailTopLate | ProfDetailOther String - deriving (Eq, Generic, Read, Show, Typeable) + deriving (Eq, Generic, Read, Show) instance Binary ProfDetailLevel instance Structured ProfDetailLevel diff --git a/Cabal/src/Distribution/Simple/Configure.hs b/Cabal/src/Distribution/Simple/Configure.hs index 033f3c9de54..7d8fdcbddfc 100644 --- a/Cabal/src/Distribution/Simple/Configure.hs +++ b/Cabal/src/Distribution/Simple/Configure.hs @@ -1,5 +1,4 @@ {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} @@ -202,7 +201,6 @@ data ConfigStateFileError PackageIdentifier PackageIdentifier (Either ConfigStateFileError LocalBuildInfo) - deriving (Typeable) -- | Format a 'ConfigStateFileError' as a user-facing error message. dispConfigStateFileError :: ConfigStateFileError -> Doc diff --git a/Cabal/src/Distribution/Simple/Errors.hs b/Cabal/src/Distribution/Simple/Errors.hs index c1cc75b5ad1..76b0f912bd2 100644 --- a/Cabal/src/Distribution/Simple/Errors.hs +++ b/Cabal/src/Distribution/Simple/Errors.hs @@ -172,7 +172,7 @@ data CabalException | UnknownVersionDb String VersionRange FilePath | MissingCoveredInstalledLibrary UnitId | SetupHooksException SetupHooksException - deriving (Show, Typeable) + deriving (Show) exceptionCode :: CabalException -> Int exceptionCode e = case e of diff --git a/Cabal/src/Distribution/Simple/Flag.hs b/Cabal/src/Distribution/Simple/Flag.hs index f8598697028..2cd9cc53d8c 100644 --- a/Cabal/src/Distribution/Simple/Flag.hs +++ b/Cabal/src/Distribution/Simple/Flag.hs @@ -62,7 +62,7 @@ import Prelude () -- 'NoFlag' and later flags override earlier ones. -- -- Isomorphic to 'Maybe' a. -data Flag a = Flag a | NoFlag deriving (Eq, Generic, Show, Read, Typeable, Foldable, Traversable) +data Flag a = Flag a | NoFlag deriving (Eq, Generic, Show, Read, Foldable, Traversable) instance Binary a => Binary (Flag a) instance Structured a => Structured (Flag a) diff --git a/Cabal/src/Distribution/Simple/GHC.hs b/Cabal/src/Distribution/Simple/GHC.hs index db475a01dd5..0bd81875d72 100644 --- a/Cabal/src/Distribution/Simple/GHC.hs +++ b/Cabal/src/Distribution/Simple/GHC.hs @@ -125,24 +125,29 @@ import Distribution.Utils.Path import Distribution.Verbosity import Distribution.Version import Language.Haskell.Extension -import System.Directory - ( canonicalizePath - , createDirectoryIfMissing - , doesDirectoryExist - , doesFileExist - , getAppUserDataDirectory - , getDirectoryContents - ) import System.FilePath ( isRelative , takeDirectory ) import qualified System.Info #ifndef mingw32_HOST_OS -import System.Directory (renameFile) import System.Posix (createSymbolicLink) #endif /* mingw32_HOST_OS */ +{- FOURMOLU_DISABLE -} +import System.Directory + ( canonicalizePath + , createDirectoryIfMissing + , doesDirectoryExist + , doesFileExist + , getAppUserDataDirectory + , getDirectoryContents +#ifndef mingw32_HOST_OS + , renameFile +#endif + ) +{- FOURMOLU_ENABLE -} + import Distribution.Simple.Setup (BuildingWhat (..)) import Distribution.Simple.Setup.Build @@ -164,14 +169,14 @@ configure verbosity hcPath hcPkgPath conf0 = do (userMaybeSpecifyPath "ghc" hcPath conf0) let implInfo = ghcVersionImplInfo ghcVersion - -- Cabal currently supports ghc >= 7.0.1 && < 9.12 + -- Cabal currently supports ghc >= 7.0.1 && < 9.14 -- ... and the following odd development version - unless (ghcVersion < mkVersion [9, 12]) $ + unless (ghcVersion < mkVersion [9, 14]) $ warn verbosity $ "Unknown/unsupported 'ghc' version detected " ++ "(Cabal " ++ prettyShow cabalVersion - ++ " supports 'ghc' version < 9.12): " + ++ " supports 'ghc' version < 9.14): " ++ programPath ghcProg ++ " is version " ++ prettyShow ghcVersion diff --git a/Cabal/src/Distribution/Simple/GHC/Build.hs b/Cabal/src/Distribution/Simple/GHC/Build.hs index 1972e9d903f..0993e916886 100644 --- a/Cabal/src/Distribution/Simple/GHC/Build.hs +++ b/Cabal/src/Distribution/Simple/GHC/Build.hs @@ -12,7 +12,7 @@ import Distribution.Simple.Flag (Flag) import Distribution.Simple.GHC.Build.ExtraSources import Distribution.Simple.GHC.Build.Link import Distribution.Simple.GHC.Build.Modules -import Distribution.Simple.GHC.Build.Utils (isHaskell) +import Distribution.Simple.GHC.Build.Utils (compilerBuildWay, isHaskell, withDynFLib) import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Program.Builtin (ghcProgram) import Distribution.Simple.Program.Db (requireProgram) @@ -73,6 +73,7 @@ build numJobs pkg_descr pbci = do verbosity = buildVerbosity pbci isLib = buildIsLib pbci lbi = localBuildInfo pbci + bi = buildBI pbci clbi = buildCLBI pbci isIndef = componentIsIndefinite clbi mbWorkDir = mbWorkDirLBI lbi @@ -111,9 +112,25 @@ build numJobs pkg_descr pbci = do (ghcProg, _) <- liftIO $ requireProgram verbosity ghcProgram (withPrograms lbi) - let wantedWays@(wantedLibWays, _, wantedExeWay) = buildWays lbi - - liftIO $ info verbosity ("Wanted build ways(" ++ show isLib ++ "): " ++ show (if isLib then wantedLibWays isIndef else [wantedExeWay])) + -- Ways which are wanted from configuration flags + let wantedWays@(wantedLibWays, wantedFLibWay, wantedExeWay) = buildWays lbi + + -- Ways which are needed due to the compiler configuration + let doingTH = usesTemplateHaskellOrQQ bi + defaultGhcWay = compilerBuildWay (buildCompiler pbci) + wantedModBuildWays = case buildComponent pbci of + CLib _ -> wantedLibWays isIndef + CFLib fl -> [wantedFLibWay (withDynFLib fl)] + CExe _ -> [wantedExeWay] + CTest _ -> [wantedExeWay] + CBench _ -> [wantedExeWay] + finalModBuildWays = + wantedModBuildWays + ++ [defaultGhcWay | doingTH && defaultGhcWay `notElem` wantedModBuildWays] + compNameStr = showComponentName $ componentName $ buildComponent pbci + + liftIO $ info verbosity ("Wanted module build ways(" ++ compNameStr ++ "): " ++ show wantedModBuildWays) + liftIO $ info verbosity ("Final module build ways(" ++ compNameStr ++ "): " ++ show finalModBuildWays) -- We need a separate build and link phase, and C sources must be compiled -- after Haskell modules, because C sources may depend on stub headers -- generated from compiling Haskell modules (#842, #3294). @@ -127,7 +144,7 @@ build numJobs pkg_descr pbci = do | otherwise -> (Nothing, Just mainFile) Nothing -> (Nothing, Nothing) - buildOpts <- buildHaskellModules numJobs ghcProg hsMainFile inputModules buildTargetDir (wantedLibWays isIndef) pbci + buildOpts <- buildHaskellModules numJobs ghcProg hsMainFile inputModules buildTargetDir finalModBuildWays pbci extraSources <- buildAllExtraSources nonHsMainFile ghcProg buildTargetDir wantedWays pbci linkOrLoadComponent ghcProg diff --git a/Cabal/src/Distribution/Simple/GHC/Build/Link.hs b/Cabal/src/Distribution/Simple/GHC/Build/Link.hs index 3f9f00c9d28..ef9f33d79c9 100644 --- a/Cabal/src/Distribution/Simple/GHC/Build/Link.hs +++ b/Cabal/src/Distribution/Simple/GHC/Build/Link.hs @@ -735,7 +735,9 @@ runReplOrWriteFlags ghcProg lbi rflags ghcOpts pkg_name target = Flag out_dir -> do let uid = componentUnitId clbi this_unit = prettyShow uid - reexported_modules = [mn | LibComponentLocalBuildInfo{} <- [clbi], IPI.ExposedModule mn (Just{}) <- componentExposedModules clbi] + reexported_modules = + [ mn | LibComponentLocalBuildInfo{componentExposedModules = exposed_mods} <- [clbi], IPI.ExposedModule mn (Just{}) <- exposed_mods + ] hidden_modules = otherModules bi extra_opts = concat $ diff --git a/Cabal/src/Distribution/Simple/GHC/EnvironmentParser.hs b/Cabal/src/Distribution/Simple/GHC/EnvironmentParser.hs index 709a375a703..41067d9dba3 100644 --- a/Cabal/src/Distribution/Simple/GHC/EnvironmentParser.hs +++ b/Cabal/src/Distribution/Simple/GHC/EnvironmentParser.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} @@ -44,7 +43,7 @@ parseEnvironmentFileLine = clearDb = P.string "clear-package-db" newtype ParseErrorExc = ParseErrorExc P.ParseError - deriving (Show, Typeable) + deriving (Show) instance Exception ParseErrorExc diff --git a/Cabal/src/Distribution/Simple/GHCJS.hs b/Cabal/src/Distribution/Simple/GHCJS.hs index 748855a6bbd..9b9939f2413 100644 --- a/Cabal/src/Distribution/Simple/GHCJS.hs +++ b/Cabal/src/Distribution/Simple/GHCJS.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} diff --git a/Cabal/src/Distribution/Simple/Haddock.hs b/Cabal/src/Distribution/Simple/Haddock.hs index ba025a85549..1769a994cdb 100644 --- a/Cabal/src/Distribution/Simple/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Haddock.hs @@ -336,12 +336,13 @@ haddock_setupHooks createInternalPackageDB verbosity lbi (flag $ setupDistPref . haddockCommonFlags) (\f -> foldM_ f (installedPkgs lbi) targets') $ \index target -> do + curDir <- absoluteWorkingDirLBI lbi let component = targetComponent target clbi = targetCLBI target bi = componentBuildInfo component -- Include any build-tool-depends on build tools internal to the current package. - progs' = addInternalBuildTools pkg_descr lbi bi (withPrograms lbi) + progs' = addInternalBuildToolsFixed (Just curDir) pkg_descr lbi bi (withPrograms lbi) lbi' = lbi { withPrograms = progs' diff --git a/Cabal/src/Distribution/Simple/InstallDirs.hs b/Cabal/src/Distribution/Simple/InstallDirs.hs index b478aefe511..86e6fa08777 100644 --- a/Cabal/src/Distribution/Simple/InstallDirs.hs +++ b/Cabal/src/Distribution/Simple/InstallDirs.hs @@ -1,5 +1,4 @@ {-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} @@ -101,7 +100,7 @@ data InstallDirs dir = InstallDirs , haddockdir :: dir , sysconfdir :: dir } - deriving (Eq, Read, Show, Functor, Generic, Typeable) + deriving (Eq, Read, Show, Functor, Generic) instance Binary dir => Binary (InstallDirs dir) instance Structured dir => Structured (InstallDirs dir) @@ -389,7 +388,7 @@ prefixRelativeInstallDirs pkgId libname compilerId platform dirs = -- | An abstract path, possibly containing variables that need to be -- substituted for to get a real 'FilePath'. newtype PathTemplate = PathTemplate [PathComponent] - deriving (Eq, Ord, Generic, Typeable) + deriving (Eq, Ord, Generic) instance Binary PathTemplate instance Structured PathTemplate diff --git a/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs b/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs index 9c411b7dcc1..a65c706af20 100644 --- a/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs +++ b/Cabal/src/Distribution/Simple/InstallDirs/Internal.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Simple.InstallDirs.Internal @@ -12,7 +11,7 @@ import Prelude () data PathComponent = Ordinary FilePath | Variable PathTemplateVariable - deriving (Eq, Ord, Generic, Typeable) + deriving (Eq, Ord, Generic) instance Binary PathComponent instance Structured PathComponent @@ -65,7 +64,7 @@ data PathTemplateVariable TestSuiteResultVar | -- | The name of the benchmark being run BenchmarkNameVar - deriving (Eq, Ord, Generic, Typeable) + deriving (Eq, Ord, Generic) instance Binary PathTemplateVariable instance Structured PathTemplateVariable diff --git a/Cabal/src/Distribution/Simple/PackageIndex.hs b/Cabal/src/Distribution/Simple/PackageIndex.hs index 927e10ae878..ead66c6dc8b 100644 --- a/Cabal/src/Distribution/Simple/PackageIndex.hs +++ b/Cabal/src/Distribution/Simple/PackageIndex.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} @@ -142,7 +141,7 @@ data PackageIndex a = PackageIndex -- preserved. See #1463 for discussion. packageIdIndex :: !(Map (PackageName, LibraryName) (Map Version [a])) } - deriving (Eq, Generic, Show, Read, Typeable) + deriving (Eq, Generic, Show, Read) instance Binary a => Binary (PackageIndex a) instance Structured a => Structured (PackageIndex a) diff --git a/Cabal/src/Distribution/Simple/Program/Db.hs b/Cabal/src/Distribution/Simple/Program/Db.hs index a9aefa7d649..c76b38e9923 100644 --- a/Cabal/src/Distribution/Simple/Program/Db.hs +++ b/Cabal/src/Distribution/Simple/Program/Db.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} @@ -106,7 +105,6 @@ data ProgramDb = ProgramDb , progOverrideEnv :: [(String, Maybe String)] , configuredProgs :: ConfiguredProgs } - deriving (Typeable) type UnconfiguredProgram = (Program, Maybe FilePath, [ProgArg]) type UnconfiguredProgs = Map.Map String UnconfiguredProgram diff --git a/Cabal/src/Distribution/Simple/Program/GHC.hs b/Cabal/src/Distribution/Simple/Program/GHC.hs index ce0ea9db92a..86320cc9472 100644 --- a/Cabal/src/Distribution/Simple/Program/GHC.hs +++ b/Cabal/src/Distribution/Simple/Program/GHC.hs @@ -329,6 +329,7 @@ normaliseGhcArgs (Just ghcVersion) PackageDescription{..} ghcArgs ] , from [8, 2] ["-fmax-uncovered-patterns", "-fmax-errors"] , from [8, 4] $ to [8, 6] ["-fmax-valid-substitutions"] + , from [9, 12] ["-fmax-forced-spec-args", "-fwrite-if-compression"] ] dropIntFlag :: Bool -> String -> String -> Any diff --git a/Cabal/src/Distribution/Simple/Program/Run.hs b/Cabal/src/Distribution/Simple/Program/Run.hs index 88afef0af91..3a6a7a37833 100644 --- a/Cabal/src/Distribution/Simple/Program/Run.hs +++ b/Cabal/src/Distribution/Simple/Program/Run.hs @@ -30,6 +30,7 @@ module Distribution.Simple.Program.Run , getProgramInvocationOutputAndErrors , getProgramInvocationLBSAndErrors , getEffectiveEnvironment + , getFullEnvironment ) where import Distribution.Compat.Prelude @@ -236,6 +237,12 @@ getProgramInvocationIODataAndErrors -- | Return the current environment extended with the given overrides. -- If an entry is specified twice in @overrides@, the second entry takes -- precedence. +-- +-- getEffectiveEnvironment returns 'Nothing' when there are no overrides. +-- It returns an argument that is suitable to pass directly to 'CreateProcess' to +-- override the environment. +-- If you need the full environment to manipulate further, even when there are no overrides, +-- then call 'getFullEnvironment'. getEffectiveEnvironment :: [(String, Maybe String)] -> IO (Maybe [(String, String)]) @@ -247,6 +254,17 @@ getEffectiveEnvironment overrides = update (var, Nothing) = Map.delete var update (var, Just val) = Map.insert var val +-- | Like 'getEffectiveEnvironment', but when no overrides are specified, +-- returns the full environment instead of 'Nothing'. +getFullEnvironment + :: [(String, Maybe String)] + -> IO [(String, String)] +getFullEnvironment overrides = do + menv <- getEffectiveEnvironment overrides + case menv of + Just env -> return env + Nothing -> getEnvironment + -- | Like the unix xargs program. Useful for when we've got very long command -- lines that might overflow an OS limit on command line length and so you -- need to invoke a command multiple times to get all the args in. diff --git a/Cabal/src/Distribution/Simple/Program/Strip.hs b/Cabal/src/Distribution/Simple/Program/Strip.hs index bb43e5ed47d..af7bbfc9754 100644 --- a/Cabal/src/Distribution/Simple/Program/Strip.hs +++ b/Cabal/src/Distribution/Simple/Program/Strip.hs @@ -58,6 +58,10 @@ stripLib verbosity (Platform arch os) progdb path = do IOS -> return () AIX -> return () Solaris -> return () + OpenBSD -> + -- '--strip-unneeded' sometimes strips too much on OpenBSD. + -- -- See https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/ghc/patches/patch-libraries_Cabal_Cabal_Distribution_Simple_Program_Strip_hs + return () Windows -> -- Stripping triggers a bug in 'strip.exe' for -- libraries with lots identically named modules. See diff --git a/Cabal/src/Distribution/Simple/Program/Types.hs b/Cabal/src/Distribution/Simple/Program/Types.hs index 630b22580cf..81bbdccfcc3 100644 --- a/Cabal/src/Distribution/Simple/Program/Types.hs +++ b/Cabal/src/Distribution/Simple/Program/Types.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} @@ -107,7 +106,7 @@ data ProgramSearchPathEntry ProgramSearchPathDir FilePath | -- | The system default ProgramSearchPathDefault - deriving (Show, Eq, Generic, Typeable) + deriving (Show, Eq, Generic) instance Binary ProgramSearchPathEntry instance Structured ProgramSearchPathEntry @@ -147,7 +146,7 @@ data ConfiguredProgram = ConfiguredProgram -- monitor to detect when the re-configuring the program might give a -- different result (e.g. found in a different location). } - deriving (Eq, Generic, Read, Show, Typeable) + deriving (Eq, Generic, Read, Show) instance Binary ConfiguredProgram instance Structured ConfiguredProgram @@ -160,7 +159,7 @@ data ProgramLocation UserSpecified {locationPath :: FilePath} | -- | The program was found automatically. FoundOnSystem {locationPath :: FilePath} - deriving (Eq, Generic, Read, Show, Typeable) + deriving (Eq, Generic, Read, Show) instance Binary ProgramLocation instance Structured ProgramLocation diff --git a/Cabal/src/Distribution/Simple/Register.hs b/Cabal/src/Distribution/Simple/Register.hs index 90704e68269..70ee283dd61 100644 --- a/Cabal/src/Distribution/Simple/Register.hs +++ b/Cabal/src/Distribution/Simple/Register.hs @@ -549,8 +549,8 @@ generalInstalledPackageInfo adjustRelIncDirs pkg abi_hash lib lbi clbi installDi , IPI.ldOptions = ldOptions bi , IPI.frameworks = map getSymbolicPath $ frameworks bi , IPI.frameworkDirs = map getSymbolicPath $ extraFrameworkDirs bi - , IPI.haddockInterfaces = [haddockdir installDirs haddockLibraryPath pkg lib] - , IPI.haddockHTMLs = [htmldir installDirs] + , IPI.haddockInterfaces = [haddockdir installDirs haddockLibraryPath pkg lib | hasModules] + , IPI.haddockHTMLs = [htmldir installDirs | hasModules] , IPI.pkgRoot = Nothing , IPI.libVisibility = libVisibility lib } diff --git a/Cabal/src/Distribution/Simple/Setup.hs b/Cabal/src/Distribution/Simple/Setup.hs index dfde4466b30..84cb560246f 100644 --- a/Cabal/src/Distribution/Simple/Setup.hs +++ b/Cabal/src/Distribution/Simple/Setup.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} @@ -6,8 +5,6 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE RankNTypes #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup -- Copyright : Isaac Jones 2003-2004 diff --git a/Cabal/src/Distribution/Simple/Setup/Benchmark.hs b/Cabal/src/Distribution/Simple/Setup/Benchmark.hs index 36fc446b5a1..f33e374c15d 100644 --- a/Cabal/src/Distribution/Simple/Setup/Benchmark.hs +++ b/Cabal/src/Distribution/Simple/Setup/Benchmark.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Benchmark -- Copyright : Isaac Jones 2003-2004 @@ -56,7 +52,7 @@ data BenchmarkFlags = BenchmarkFlags { benchmarkCommonFlags :: !CommonSetupFlags , benchmarkOptions :: [PathTemplate] } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern BenchmarkCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Build.hs b/Cabal/src/Distribution/Simple/Setup/Build.hs index 09aad42bdc8..8c124027a1e 100644 --- a/Cabal/src/Distribution/Simple/Setup/Build.hs +++ b/Cabal/src/Distribution/Simple/Setup/Build.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Build -- Copyright : Isaac Jones 2003-2004 @@ -62,7 +58,7 @@ data BuildFlags = BuildFlags , buildNumJobs :: Flag (Maybe Int) , buildUseSemaphore :: Flag String } - deriving (Read, Show, Generic, Typeable) + deriving (Read, Show, Generic) pattern BuildCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Clean.hs b/Cabal/src/Distribution/Simple/Setup/Clean.hs index 6a1974f323e..1e5e8038031 100644 --- a/Cabal/src/Distribution/Simple/Setup/Clean.hs +++ b/Cabal/src/Distribution/Simple/Setup/Clean.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Clean -- Copyright : Isaac Jones 2003-2004 @@ -54,7 +50,7 @@ data CleanFlags = CleanFlags { cleanCommonFlags :: !CommonSetupFlags , cleanSaveConf :: Flag Bool } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern CleanCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Common.hs b/Cabal/src/Distribution/Simple/Setup/Common.hs index 0a1422b327f..3baa7d347fd 100644 --- a/Cabal/src/Distribution/Simple/Setup/Common.hs +++ b/Cabal/src/Distribution/Simple/Setup/Common.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} @@ -6,8 +5,6 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Common -- Copyright : Isaac Jones 2003-2004 diff --git a/Cabal/src/Distribution/Simple/Setup/Config.hs b/Cabal/src/Distribution/Simple/Setup/Config.hs index 15c1d77f553..3b65169d1ab 100644 --- a/Cabal/src/Distribution/Simple/Setup/Config.hs +++ b/Cabal/src/Distribution/Simple/Setup/Config.hs @@ -1,6 +1,5 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} @@ -235,7 +234,7 @@ data ConfigFlags = ConfigFlags -- `build-tool-depends` will be ignored. This allows a Cabal package with -- build-tool-dependencies to be built even if the tool is not found. } - deriving (Generic, Read, Show, Typeable) + deriving (Generic, Read, Show) pattern ConfigCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Copy.hs b/Cabal/src/Distribution/Simple/Setup/Copy.hs index 719592b656e..4bdc5b8b21f 100644 --- a/Cabal/src/Distribution/Simple/Setup/Copy.hs +++ b/Cabal/src/Distribution/Simple/Setup/Copy.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} @@ -7,8 +6,6 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Copy -- Copyright : Isaac Jones 2003-2004 diff --git a/Cabal/src/Distribution/Simple/Setup/Global.hs b/Cabal/src/Distribution/Simple/Setup/Global.hs index b230289446d..fa7994b39ec 100644 --- a/Cabal/src/Distribution/Simple/Setup/Global.hs +++ b/Cabal/src/Distribution/Simple/Setup/Global.hs @@ -1,12 +1,8 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Global -- Copyright : Isaac Jones 2003-2004 @@ -51,7 +47,7 @@ data GlobalFlags = GlobalFlags , globalNumericVersion :: Flag Bool , globalWorkingDir :: Flag (SymbolicPath CWD (Dir Pkg)) } - deriving (Generic, Typeable) + deriving (Generic) defaultGlobalFlags :: GlobalFlags defaultGlobalFlags = diff --git a/Cabal/src/Distribution/Simple/Setup/Haddock.hs b/Cabal/src/Distribution/Simple/Setup/Haddock.hs index aee2210d907..33bec5e1258 100644 --- a/Cabal/src/Distribution/Simple/Setup/Haddock.hs +++ b/Cabal/src/Distribution/Simple/Setup/Haddock.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Haddock -- Copyright : Isaac Jones 2003-2004 @@ -76,7 +72,7 @@ import qualified Text.PrettyPrint as Disp -- from documentation tarballs, and we might also want to use different -- flags than for development builds, so in this case we store the generated -- documentation in @/doc/html/-docs@. -data HaddockTarget = ForHackage | ForDevelopment deriving (Eq, Show, Generic, Typeable) +data HaddockTarget = ForHackage | ForDevelopment deriving (Eq, Show, Generic) instance Binary HaddockTarget instance Structured HaddockTarget @@ -117,7 +113,7 @@ data HaddockFlags = HaddockFlags , haddockOutputDir :: Flag FilePath , haddockUseUnicode :: Flag Bool } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern HaddockCommonFlags :: Flag Verbosity @@ -452,7 +448,7 @@ data HaddockProjectFlags = HaddockProjectFlags haddockProjectResourcesDir :: Flag String , haddockProjectUseUnicode :: Flag Bool } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) defaultHaddockProjectFlags :: HaddockProjectFlags defaultHaddockProjectFlags = diff --git a/Cabal/src/Distribution/Simple/Setup/Hscolour.hs b/Cabal/src/Distribution/Simple/Setup/Hscolour.hs index 1c62c2dedca..4ee69d99b9b 100644 --- a/Cabal/src/Distribution/Simple/Setup/Hscolour.hs +++ b/Cabal/src/Distribution/Simple/Setup/Hscolour.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Hscolour -- Copyright : Isaac Jones 2003-2004 @@ -58,7 +54,7 @@ data HscolourFlags = HscolourFlags , hscolourBenchmarks :: Flag Bool , hscolourForeignLibs :: Flag Bool } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern HscolourCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Install.hs b/Cabal/src/Distribution/Simple/Setup/Install.hs index eb909612c6d..b83505a46cd 100644 --- a/Cabal/src/Distribution/Simple/Setup/Install.hs +++ b/Cabal/src/Distribution/Simple/Setup/Install.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} @@ -7,8 +6,6 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Install -- Copyright : Isaac Jones 2003-2004 diff --git a/Cabal/src/Distribution/Simple/Setup/Register.hs b/Cabal/src/Distribution/Simple/Setup/Register.hs index bbd17932245..e768ca94887 100644 --- a/Cabal/src/Distribution/Simple/Setup/Register.hs +++ b/Cabal/src/Distribution/Simple/Setup/Register.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Register -- Copyright : Isaac Jones 2003-2004 @@ -62,7 +58,7 @@ data RegisterFlags = RegisterFlags , regInPlace :: Flag Bool , regPrintId :: Flag Bool } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern RegisterCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Repl.hs b/Cabal/src/Distribution/Simple/Setup/Repl.hs index 4321a9466cb..4b73cb34b99 100644 --- a/Cabal/src/Distribution/Simple/Setup/Repl.hs +++ b/Cabal/src/Distribution/Simple/Setup/Repl.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.Repl -- Copyright : Isaac Jones 2003-2004 @@ -59,7 +55,7 @@ data ReplOptions = ReplOptions , replOptionsNoLoad :: Flag Bool , replOptionsFlagOutput :: Flag FilePath } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern ReplCommonFlags :: Flag Verbosity @@ -102,7 +98,7 @@ data ReplFlags = ReplFlags , replReload :: Flag Bool , replReplOptions :: ReplOptions } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) instance Binary ReplFlags instance Structured ReplFlags @@ -133,8 +129,7 @@ replCommand progDb = , commandDescription = Just $ \pname -> wrapText $ "If the current directory contains no package, ignores COMPONENT " - ++ "parameters and opens an interactive interpreter session; if a " - ++ "sandbox is present, its package database will be used.\n" + ++ "parameters and opens an interactive interpreter session.\n" ++ "\n" ++ "Otherwise, (re)configures with the given or default flags, and " ++ "loads the interpreter with the relevant modules. For executables, " diff --git a/Cabal/src/Distribution/Simple/Setup/SDist.hs b/Cabal/src/Distribution/Simple/Setup/SDist.hs index 6caf8e51e52..2e560dcc6b9 100644 --- a/Cabal/src/Distribution/Simple/Setup/SDist.hs +++ b/Cabal/src/Distribution/Simple/Setup/SDist.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Setup.SDist -- Copyright : Isaac Jones 2003-2004 @@ -57,7 +53,7 @@ data SDistFlags = SDistFlags , sDistDirectory :: Flag FilePath , sDistListSources :: Flag FilePath } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern SDistCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Setup/Test.hs b/Cabal/src/Distribution/Simple/Setup/Test.hs index e4c2706eed6..6e5da7d7643 100644 --- a/Cabal/src/Distribution/Simple/Setup/Test.hs +++ b/Cabal/src/Distribution/Simple/Setup/Test.hs @@ -1,14 +1,10 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ViewPatterns #-} ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Simple.Test -- Copyright : Isaac Jones 2003-2004 @@ -61,7 +57,7 @@ import qualified Text.PrettyPrint as Disp -- ------------------------------------------------------------ data TestShowDetails = Never | Failures | Always | Streaming | Direct - deriving (Eq, Ord, Enum, Bounded, Generic, Show, Typeable) + deriving (Eq, Ord, Enum, Bounded, Generic, Show) instance Binary TestShowDetails instance Structured TestShowDetails @@ -102,7 +98,7 @@ data TestFlags = TestFlags , -- TODO: think about if/how options are passed to test exes testOptions :: [PathTemplate] } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) pattern TestCommonFlags :: Flag Verbosity diff --git a/Cabal/src/Distribution/Simple/Test.hs b/Cabal/src/Distribution/Simple/Test.hs index 5b7a6daa718..d9b2c7557f0 100644 --- a/Cabal/src/Distribution/Simple/Test.hs +++ b/Cabal/src/Distribution/Simple/Test.hs @@ -27,7 +27,7 @@ import Prelude () import qualified Distribution.PackageDescription as PD import Distribution.Pretty -import Distribution.Simple.Build (addInternalBuildTools) +import Distribution.Simple.Build (addInternalBuildToolsFixed) import Distribution.Simple.Compiler import Distribution.Simple.Hpc import Distribution.Simple.InstallDirs @@ -70,6 +70,7 @@ test -- ^ flags sent to test -> IO () test args pkg_descr lbi0 flags = do + curDir <- LBI.absoluteWorkingDirLBI lbi0 let common = testCommonFlags flags verbosity = fromFlag $ setupVerbosity common distPref = fromFlag $ setupDistPref common @@ -95,7 +96,8 @@ test args pkg_descr lbi0 flags = do lbi { withPrograms = -- Include any build-tool-depends on build tools internal to the current package. - addInternalBuildTools + addInternalBuildToolsFixed + (Just curDir) pkg_descr lbi (PD.testBuildInfo suite) diff --git a/Cabal/src/Distribution/Simple/Test/ExeV10.hs b/Cabal/src/Distribution/Simple/Test/ExeV10.hs index a90ce833703..3ad112af2bb 100644 --- a/Cabal/src/Distribution/Simple/Test/ExeV10.hs +++ b/Cabal/src/Distribution/Simple/Test/ExeV10.hs @@ -8,7 +8,6 @@ module Distribution.Simple.Test.ExeV10 import Distribution.Compat.Prelude import Prelude () -import Distribution.Compat.Environment import qualified Distribution.PackageDescription as PD import Distribution.Simple.BuildPaths import Distribution.Simple.Compiler @@ -64,8 +63,6 @@ runTest pkg_descr lbi clbi hpcMarkupInfo flags suite = do way = guessWay lbi tixDir_ = i $ tixDir distPref way - existingEnv <- getEnvironment - let cmd = i (LBI.buildDir lbi) testName' @@ -92,13 +89,18 @@ runTest pkg_descr lbi clbi hpcMarkupInfo flags suite = do pathVar = progSearchPath progDb envOverrides = progOverrideEnv progDb newPath <- programSearchPathAsPATHVar pathVar - overrideEnv <- fromMaybe [] <$> getEffectiveEnvironment ([("PATH", Just newPath)] ++ envOverrides) let opts = map (testOption pkg_descr lbi suite) (testOptions flags) tixFile = packageRoot (testCommonFlags flags) getSymbolicPath (tixFilePath distPref way (testName')) - shellEnv = [("HPCTIXFILE", tixFile) | isCoverageEnabled] ++ overrideEnv ++ existingEnv + + shellEnv <- + getFullEnvironment + ( [("PATH", Just newPath)] + ++ [("HPCTIXFILE", Just tixFile) | isCoverageEnabled] + ++ envOverrides + ) -- Add (DY)LD_LIBRARY_PATH if needed shellEnv' <- @@ -125,13 +127,17 @@ runTest pkg_descr lbi clbi hpcMarkupInfo flags suite = do -- drain the output. evaluate (force logText) + let mbWorkDir = + interpretSymbolicPathCWD + <$> flagToMaybe (setupWorkingDir (testCommonFlags flags)) + (exit, logText) <- case testWrapper flags of Flag path -> rawSystemIOWithEnvAndAction verbosity path (cmd : opts) - Nothing + mbWorkDir (Just shellEnv') getLogText -- these handles are automatically closed @@ -143,7 +149,7 @@ runTest pkg_descr lbi clbi hpcMarkupInfo flags suite = do verbosity cmd opts - Nothing + mbWorkDir (Just shellEnv') getLogText -- these handles are automatically closed diff --git a/Cabal/src/Distribution/Simple/Test/LibV09.hs b/Cabal/src/Distribution/Simple/Test/LibV09.hs index 3807cc9ae9d..1d2de6f8a41 100644 --- a/Cabal/src/Distribution/Simple/Test/LibV09.hs +++ b/Cabal/src/Distribution/Simple/Test/LibV09.hs @@ -17,7 +17,6 @@ import Distribution.Compat.Prelude import Distribution.Types.UnqualComponentName import Prelude () -import Distribution.Compat.Environment import Distribution.Compat.Internal.TempFile import Distribution.Compat.Process (proc) import Distribution.ModuleName @@ -70,7 +69,6 @@ runTest pkg_descr lbi clbi hpcMarkupInfo flags suite = do way = guessWay lbi let mbWorkDir = LBI.mbWorkDirLBI lbi - existingEnv <- getEnvironment let cmd = interpretSymbolicPath mbWorkDir (LBI.buildDir lbi) @@ -100,15 +98,17 @@ runTest pkg_descr lbi clbi hpcMarkupInfo flags suite = do pathVar = progSearchPath progDb envOverrides = progOverrideEnv progDb newPath <- programSearchPathAsPATHVar pathVar - overrideEnv <- fromMaybe [] <$> getEffectiveEnvironment ([("PATH", Just newPath)] ++ envOverrides) -- Run test executable let opts = map (testOption pkg_descr lbi suite) $ testOptions flags tixFile = i $ tixFilePath distPref way testName' - shellEnv = - [("HPCTIXFILE", tixFile) | isCoverageEnabled] - ++ overrideEnv - ++ existingEnv + + shellEnv <- + getFullEnvironment + ( [("PATH", Just newPath)] + ++ [("HPCTIXFILE", Just tixFile) | isCoverageEnabled] + ++ envOverrides + ) -- Add (DY)LD_LIBRARY_PATH if needed shellEnv' <- if LBI.withDynExe lbi diff --git a/Cabal/src/Distribution/Simple/Utils.hs b/Cabal/src/Distribution/Simple/Utils.hs index 3688f602759..e3252506882 100644 --- a/Cabal/src/Distribution/Simple/Utils.hs +++ b/Cabal/src/Distribution/Simple/Utils.hs @@ -389,7 +389,7 @@ die' verbosity msg = withFrozenCallStack $ do -- Type which will be a wrapper for cabal -expections and cabal-install exceptions data VerboseException a = VerboseException CallStack POSIXTime Verbosity a - deriving (Show, Typeable) + deriving (Show) -- Function which will replace the existing die' call sites dieWithException :: (HasCallStack, Show a1, Typeable a1, Exception (VerboseException a1)) => Verbosity -> a1 -> IO a diff --git a/Cabal/src/Distribution/Types/ComponentLocalBuildInfo.hs b/Cabal/src/Distribution/Types/ComponentLocalBuildInfo.hs index 0728656620e..615cd4e3aa8 100644 --- a/Cabal/src/Distribution/Types/ComponentLocalBuildInfo.hs +++ b/Cabal/src/Distribution/Types/ComponentLocalBuildInfo.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeFamilies #-} @@ -108,7 +107,7 @@ data ComponentLocalBuildInfo , componentExeDeps :: [UnitId] , componentInternalDeps :: [UnitId] } - deriving (Generic, Read, Show, Typeable) + deriving (Generic, Read, Show) instance Binary ComponentLocalBuildInfo instance Structured ComponentLocalBuildInfo diff --git a/Cabal/src/Distribution/Types/DumpBuildInfo.hs b/Cabal/src/Distribution/Types/DumpBuildInfo.hs index 2b3dae8888f..99020febc35 100644 --- a/Cabal/src/Distribution/Types/DumpBuildInfo.hs +++ b/Cabal/src/Distribution/Types/DumpBuildInfo.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Types.DumpBuildInfo @@ -10,7 +9,7 @@ import Distribution.Compat.Prelude data DumpBuildInfo = NoDumpBuildInfo | DumpBuildInfo - deriving (Read, Show, Eq, Ord, Enum, Bounded, Generic, Typeable) + deriving (Read, Show, Eq, Ord, Enum, Bounded, Generic) instance Binary DumpBuildInfo instance Structured DumpBuildInfo diff --git a/Cabal/src/Distribution/Types/GivenComponent.hs b/Cabal/src/Distribution/Types/GivenComponent.hs index 235c8c372a0..c06fcbbfb4e 100644 --- a/Cabal/src/Distribution/Types/GivenComponent.hs +++ b/Cabal/src/Distribution/Types/GivenComponent.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Types.GivenComponent @@ -25,7 +24,7 @@ data GivenComponent = GivenComponent -- only, not for any component , givenComponentId :: ComponentId } - deriving (Generic, Read, Show, Eq, Typeable) + deriving (Generic, Read, Show, Eq) instance Binary GivenComponent instance Structured GivenComponent @@ -42,7 +41,7 @@ data PromisedComponent = PromisedComponent -- only, not for any component , promisedComponentId :: ComponentId } - deriving (Generic, Read, Show, Eq, Typeable) + deriving (Generic, Read, Show, Eq) instance Binary PromisedComponent instance Structured PromisedComponent diff --git a/Cabal/src/Distribution/Types/LocalBuildInfo.hs b/Cabal/src/Distribution/Types/LocalBuildInfo.hs index 107eefc2766..8204d59c693 100644 --- a/Cabal/src/Distribution/Types/LocalBuildInfo.hs +++ b/Cabal/src/Distribution/Types/LocalBuildInfo.hs @@ -1,5 +1,4 @@ {-# LANGUAGE DataKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE FlexibleContexts #-} @@ -144,7 +143,7 @@ data LocalBuildInfo = NewLocalBuildInfo -- ^ Information about a package configuration -- that can be modified by the user at configuration time. } - deriving (Generic, Read, Show, Typeable) + deriving (Generic, Read, Show) {-# COMPLETE LocalBuildInfo #-} diff --git a/Cabal/src/Distribution/Utils/MapAccum.hs b/Cabal/src/Distribution/Utils/MapAccum.hs index 31f62d7d02f..d141649ff83 100644 --- a/Cabal/src/Distribution/Utils/MapAccum.hs +++ b/Cabal/src/Distribution/Utils/MapAccum.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} - module Distribution.Utils.MapAccum (mapAccumM) where import Distribution.Compat.Prelude diff --git a/Cabal/src/Distribution/Utils/NubList.hs b/Cabal/src/Distribution/Utils/NubList.hs index 2a7e69a7a85..09da19aa5ae 100644 --- a/Cabal/src/Distribution/Utils/NubList.hs +++ b/Cabal/src/Distribution/Utils/NubList.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -22,7 +21,7 @@ import qualified Text.Read as R -- | NubList : A de-duplicated list that maintains the original order. newtype NubList a = NubList {fromNubList :: [a]} - deriving (Eq, Generic, Typeable) + deriving (Eq, Generic) -- NubList assumes that nub retains the list order while removing duplicate -- elements (keeping the first occurrence). Documentation for "Data.List.nub" diff --git a/Cabal/src/Distribution/Utils/Progress.hs b/Cabal/src/Distribution/Utils/Progress.hs index a2c17b69113..292dfdc64cd 100644 --- a/Cabal/src/Distribution/Utils/Progress.hs +++ b/Cabal/src/Distribution/Utils/Progress.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} -- Note: This module was copied from cabal-install. diff --git a/Cabal/src/Distribution/Verbosity.hs b/Cabal/src/Distribution/Verbosity.hs index bab48bbed21..c81c6dd8630 100644 --- a/Cabal/src/Distribution/Verbosity.hs +++ b/Cabal/src/Distribution/Verbosity.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} ----------------------------------------------------------------------------- @@ -92,7 +91,7 @@ data Verbosity = Verbosity , vFlags :: Set VerbosityFlag , vQuiet :: Bool } - deriving (Generic, Show, Read, Typeable) + deriving (Generic, Show, Read) mkVerbosity :: VerbosityLevel -> Verbosity mkVerbosity l = Verbosity{vLevel = l, vFlags = Set.empty, vQuiet = False} diff --git a/Cabal/src/Distribution/Verbosity/Internal.hs b/Cabal/src/Distribution/Verbosity/Internal.hs index b8f55cf5b98..9d851f59f07 100644 --- a/Cabal/src/Distribution/Verbosity/Internal.hs +++ b/Cabal/src/Distribution/Verbosity/Internal.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Verbosity.Internal @@ -10,7 +9,7 @@ import Distribution.Compat.Prelude import Prelude () data VerbosityLevel = Silent | Normal | Verbose | Deafening - deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Typeable) + deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded) instance Binary VerbosityLevel instance Structured VerbosityLevel @@ -24,7 +23,7 @@ data VerbosityFlag | -- | @since 3.4.0.0 VStderr | VNoWarn - deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded, Typeable) + deriving (Generic, Show, Read, Eq, Ord, Enum, Bounded) instance Binary VerbosityFlag instance Structured VerbosityFlag diff --git a/Makefile b/Makefile index 835c73b8ff9..aefab8b55cf 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,14 @@ style-commit: ## Run the code styler on the previous commit @git diff --name-only HEAD $(COMMIT) Cabal Cabal-syntax cabal-install \ | grep '.hs$$' | xargs -P $(PROCS) -I {} fourmolu -q -i {} +.PHONY: whitespace +whitespace: ## Run fix-whitespace in check mode + fix-whitespace --check --verbose + +.PHONY: fix-whitespace +fix-whitespace: ## Run fix-whitespace in fix mode + fix-whitespace --verbose + # source generation: SPDX SPDX_LICENSE_HS:=Cabal-syntax/src/Distribution/SPDX/LicenseId.hs @@ -52,7 +60,7 @@ SPDX_EXCEPTION_HS:=Cabal-syntax/src/Distribution/SPDX/LicenseExceptionId.hs .PHONY: spdx spdx : $(SPDX_LICENSE_HS) $(SPDX_EXCEPTION_HS) -SPDX_LICENSE_VERSIONS:=3.0 3.2 3.6 3.9 3.10 3.16 3.23 +SPDX_LICENSE_VERSIONS:=3.0 3.2 3.6 3.9 3.10 3.16 3.23 3.25 $(SPDX_LICENSE_HS) : templates/SPDX.LicenseId.template.hs cabal-dev-scripts/src/GenUtils.hs cabal-dev-scripts/src/GenSPDX.hs license-list-data/licenses-3.0.json license-list-data/licenses-3.2.json cabal run --builddir=dist-newstyle-meta --project-file=cabal.meta.project gen-spdx -- templates/SPDX.LicenseId.template.hs $(SPDX_LICENSE_VERSIONS:%=license-list-data/licenses-%.json) $(SPDX_LICENSE_HS) @@ -103,8 +111,8 @@ ghcid-cli : ghcid -c 'cabal repl cabal-install' .PHONY: doctest -doctest : - cd Cabal-syntax && $(DOCTEST) +doctest: + cd Cabal-syntax && $(DOCTEST) --build-depends=network-uri cd Cabal-described && $(DOCTEST) cd Cabal && $(DOCTEST) cd cabal-install-solver && $(DOCTEST) diff --git a/bootstrap/cabal-bootstrap-gen.cabal b/bootstrap/cabal-bootstrap-gen.cabal index 0b73a1de23e..e534a05fa6c 100644 --- a/bootstrap/cabal-bootstrap-gen.cabal +++ b/bootstrap/cabal-bootstrap-gen.cabal @@ -11,8 +11,8 @@ executable cabal-bootstrap-gen , aeson ^>=1.5.2.0 || ^>=2.0.3.0 || ^>=2.1.0.0 , base ^>=4.12.0.0 || ^>=4.13.0.0 || ^>=4.14.0.0 || ^>=4.15.0.0 || ^>=4.16.0.0 || ^>=4.17.0.0 || ^>=4.18.0.0 , bytestring ^>=0.10.8.2 || ^>=0.11.0.0 - , Cabal ^>=3.4.1.0 || ^>=3.6.3.0 || ^>=3.10.1.0 || ^>=3.12.1.0 - , Cabal-syntax ^>=3.8.1.0 || ^>=3.10.1.0 || ^>=3.12.1.0 + , Cabal ^>=3.12.1.0 || ^>=3.14.0.0 + , Cabal-syntax ^>=3.12.1.0 || ^>=3.14.0.0 -- For the release process, we need the last *two* Cabal-syntax -- versions here: one to make CI green when release Cabal-syntax is -- not yet on Hackage and we are bumping versions. The second for diff --git a/bootstrap/linux-9.0.2.json b/bootstrap/linux-9.0.2.json index d260767f667..0ce16e721b4 100644 --- a/bootstrap/linux-9.0.2.json +++ b/bootstrap/linux-9.0.2.json @@ -63,29 +63,27 @@ ], "dependencies": [ { - "cabal_sha256": "a4a1975fde77e289b605c45a3ef78d731d8c1834e4cef311152d910a1e94d98c", - "component": "lib:data-array-byte", + "cabal_sha256": "3eee5d3658b657371d0f940f1f38feefc2ebdf8592a32d3d0734f28c61f80ba0", + "component": "lib:bytestring", "flags": [], - "package": "data-array-byte", - "revision": 3, + "package": "bytestring", + "revision": 0, "source": "hackage", - "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", - "version": "0.1.0.1" + "src_sha256": "6bd8fa536ed6a8278bc98dfa9fdf2c91da662bea58fde929a6ba8a38bbe9d7eb", + "version": "0.11.5.3" }, { - "cabal_sha256": "98e79e1c97117143e4012983509ec95f7e5e4f6adff6914d07812a39f83404b9", - "component": "lib:bytestring", - "flags": [ - "-pure-haskell" - ], - "package": "bytestring", - "revision": 1, + "cabal_sha256": "2efc549644dd418bad537d1601fdd437c440d807265016bd993b6996c679ad2f", + "component": "lib:os-string", + "flags": [], + "package": "os-string", + "revision": 0, "source": "hackage", - "src_sha256": "ebc3b8a6ef74a5cd6ddbb8d447d1c9a5fd4964c7975ebcae0b8ab0bcc406cc8c", - "version": "0.12.1.0" + "src_sha256": "339c35fd3a290522f23de4e33528423cfd0b0a8f22946b0b9816a817b926cba0", + "version": "2.0.7" }, { - "cabal_sha256": "345cbb1afe414a09e47737e4d14cbd51891a734e67c0ef3d77a1439518bb81e8", + "cabal_sha256": "099c33e0e570dad93390e1c01c1f4bc6e4f13587de8e199df3c94a6cb62c7434", "component": "lib:filepath", "flags": [ "-cpphs" @@ -93,32 +91,44 @@ "package": "filepath", "revision": 0, "source": "hackage", - "src_sha256": "88d6452fd199e333e66e68d2dc5d715f5c6d361661a4a8add88320a82864b788", - "version": "1.4.300.2" + "src_sha256": "54aa86c432f593273d7b9f607c5b5e0a1628c2674c6f4e3b5a54eb0c83db5caf", + "version": "1.5.4.0" }, { - "cabal_sha256": "3f702a252a313a7bcb56e3908a14e7f9f1b40e41b7bdc8ae8a9605a1a8686f06", + "cabal_sha256": "5b7f8afd7a879c3c8c3c636fd3c7543cdd5e0b514b7da90e76907ccd11434031", "component": "lib:unix", "flags": [ - "-os-string" + "+os-string" ], "package": "unix", + "revision": 1, + "source": "hackage", + "src_sha256": "8117599bb3e4aa1d4656710afbc85aef2a75483eddfac5338f8cc88fb505eea2", + "version": "2.8.6.0" + }, + { + "cabal_sha256": "e3e1866eab82cb28f6a5f28507643da3987008b737e66a3c7398f39f16d824dc", + "component": "lib:file-io", + "flags": [ + "+os-string" + ], + "package": "file-io", "revision": 0, "source": "hackage", - "src_sha256": "5ab6c346aef2eb9bf80b4d29ca7e22063fc23e52fd69fbc4d18a9f98b154e424", - "version": "2.8.5.1" + "src_sha256": "e3d9113a015c57e3d8c2294550c41544f84a265291fed96cca697f91b6e86f52", + "version": "0.1.4" }, { - "cabal_sha256": "fbeec9ec346e5272167f63dcb86af513b457a7b9fc36dc818e4c7b81608d612b", + "cabal_sha256": "2490137bb7738bd79392959458ef5f276219ea5ba8a9a56d3e0b06315c1bb917", "component": "lib:directory", "flags": [ - "-os-string" + "+os-string" ], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "e864ed54ddfc6e15d2eb02c87f4be8edd7719e1f9cea13e0f86909400b6ea768", - "version": "1.3.8.5" + "src_sha256": "20a24846117fc5f8751d974b7de07210a161989410467e9adca525381b8e64cc", + "version": "1.3.9.0" }, { "cabal_sha256": "de553eefe0b6548a560e9d8100486310548470a403c1fa21108dd03713da5fc7", @@ -141,18 +151,17 @@ "version": "0.8.9.2" }, { - "cabal_sha256": "78c3fb91055d0607a80453327f087b9dc82168d41d0dca3ff410d21033b5e87d", + "cabal_sha256": "71b5fa8c64d3c1fd0a08f993463220867b08290a2256e94b0952bf0e8f5a45cc", "component": "lib:text", "flags": [ "-developer", - "-pure-haskell", "+simdutf" ], "package": "text", "revision": 1, "source": "hackage", - "src_sha256": "e40cdda8b285f4d72476ed35dc2f5f167d524e6b38bb5ec964d00ee1ff24feab", - "version": "2.1.1" + "src_sha256": "c735be650a898606ce9f2c8642bc6ac6123eea82871d5e90f92797801f59efad", + "version": "2.0.2" }, { "cabal_sha256": "8407cbd428d7f640a0fff8891bd2f7aca13cebe70a5e654856f8abec9a648b56", @@ -165,34 +174,34 @@ "version": "3.1.17.0" }, { - "cabal_sha256": null, + "cabal_sha256": "557a2b20dc85f052c86c5a06dcbd7c6995f2d0391bbff8e62c90b4b5975211da", "component": "lib:Cabal-syntax", "flags": [], "package": "Cabal-syntax", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "2a9393de33f18415fb8f4826957a87a94ffe8840ca8472a9b69dca6de45aca03", + "cabal_sha256": "9a0b2ef8096517fa0e0c7a5e9a5c2ae5744ed824c3331005f9408245810df345", "component": "lib:process", "flags": [], "package": "process", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "cefda221c3009fa2316b5cf148215cb340dad7eb8503f22e49e33722559df99a", - "version": "1.6.20.0" + "src_sha256": "496fe0566c3915b112e9772ac9c967dfeb8d5ca04895e54ae0160522bee76e65", + "version": "1.6.25.0" }, { - "cabal_sha256": null, + "cabal_sha256": "d24c689fd4b56cd12f8225562c00657e97c528849a2fc3d535557a83ca5f8dfc", "component": "lib:Cabal", "flags": [], "package": "Cabal", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": null, @@ -202,22 +211,22 @@ "revision": null, "source": "local", "src_sha256": null, - "version": "0.1" + "version": "3.14" }, { - "cabal_sha256": "60e78b6c60dc32a77ce6c37ed5ca4e838fc5f76f02836ef64d93cd21cc002325", + "cabal_sha256": "276325277350cd2c2c88916ed3ae5cd35b2b4f494ec594fbd9534081eb7fb759", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", "version": "0.68.10" }, { - "cabal_sha256": "25440c1bbd5772fdbbeec068f20138121131e1a56453db0adc113dcdf9044105", + "cabal_sha256": "b0fafb2834530084f6406017500ae619f9e5e2049787a6750c68e0d331fd62dc", "component": "lib:network", "flags": [ "-devel" @@ -225,8 +234,8 @@ "package": "network", "revision": 0, "source": "hackage", - "src_sha256": "c45696744dc437d93a56871a3dd869965b7b50eda3fe3c1a90a35e2fbb9cb9ca", - "version": "3.2.0.0" + "src_sha256": "dbd8a10456908294eb5ab9c522bf2da75444d958429a643a821464213698523e", + "version": "3.2.6.0" }, { "cabal_sha256": "129a59ba3ccfcd06192fd6da899e2711ae276a466915a047bd6727e4a0321d2e", @@ -274,27 +283,27 @@ "version": "0.9.2" }, { - "cabal_sha256": "82503a1ef0a625c210e118f2785c4138f8502aacbbfd4e5d987f6baffbb87115", + "cabal_sha256": "50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b", "component": "lib:hashable", "flags": [ - "-arch-native", + "+containers", "+integer-gmp", "-random-initial-seed" ], "package": "hashable", "revision": 0, "source": "hackage", - "src_sha256": "34652a7a1d2fc9e3d764b150bd35bcd2220761c1d4c6b446b0cfac5ad5b778cb", - "version": "1.4.6.0" + "src_sha256": "e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87", + "version": "1.4.1.0" }, { - "cabal_sha256": "9d5d9e605f52958d099e13a8b8f30ee56cb137c9192996245e3c533adb682cf8", + "cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7", "version": "2.2.5" @@ -352,27 +361,27 @@ "version": "0.2.2.1" }, { - "cabal_sha256": null, + "cabal_sha256": "c4c8fd9c71b9e813053d94408c621e7b13355c4ca1d3eaed35b8f8956eae9b87", "component": "lib:cabal-install-solver", "flags": [ "-debug-expensive-assertions", "-debug-tracetree" ], "package": "cabal-install-solver", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "200d756a7b3bab7ca2bac6eb50ed8252f26de77ac8def490a3ad743f2933acbd", + "cabal_sha256": "acb64f2af52d81b0bb92c266f11d43def726a7a7b74a2c23d219e160b54edec7", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -417,37 +426,27 @@ "version": "0.1.2" }, { - "cabal_sha256": "4d4186bb8d711435765253c7dc076c44a1d52896300689507ba135706ab35866", - "component": "lib:os-string", - "flags": [], - "package": "os-string", - "revision": 0, - "source": "hackage", - "src_sha256": "f6b388b9f9002622901d3f71437b98f95f54fbf7fe10490d319cb801c2a061ea", - "version": "2.0.3" - }, - { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar-internal", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "d6696f2b55ab4a50b8de57947abca308604eb7cf8287c40bf69cfa26133e24d3", + "cabal_sha256": "85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -455,20 +454,20 @@ "+pkg-config" ], "package": "zlib", - "revision": 0, + "revision": 2, "source": "hackage", "src_sha256": "6edd38b6b81df8d274952aa85affa6968ae86b2231e1d429ce8bc9083e6a55bc", "version": "0.7.1.0" }, { - "cabal_sha256": "8ff70524314f9ad706f8e5051d7150ee44cb82170147879b245bdab279604b16", + "cabal_sha256": "a7311a70ce2cc820ee430c389f57f82a082f148230b37526c34eac72b7b3ff34", "component": "lib:hackage-security", "flags": [ "+cabal-syntax", "+lukko" ], "package": "hackage-security", - "revision": 1, + "revision": 4, "source": "hackage", "src_sha256": "2e4261576b3e11b9f5175392947f56a638cc1a3584b8acbb962b809d7c69db69", "version": "0.6.2.6" @@ -506,11 +505,11 @@ "version": "0.96.0.1" }, { - "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", + "cabal_sha256": "3e196e1362e4d0ec9dfcd7f8d58b24fac91beafaa1c8ee34dc9dee489c362377", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" @@ -536,30 +535,30 @@ "version": "1.0.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "lib:cabal-install", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "exe:cabal", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", diff --git a/bootstrap/linux-9.2.8.json b/bootstrap/linux-9.2.8.json index 8a19bb40027..a43699746da 100644 --- a/bootstrap/linux-9.2.8.json +++ b/bootstrap/linux-9.2.8.json @@ -79,50 +79,62 @@ ], "dependencies": [ { - "cabal_sha256": "4d4186bb8d711435765253c7dc076c44a1d52896300689507ba135706ab35866", + "cabal_sha256": "2efc549644dd418bad537d1601fdd437c440d807265016bd993b6996c679ad2f", "component": "lib:os-string", "flags": [], "package": "os-string", "revision": 0, "source": "hackage", - "src_sha256": "f6b388b9f9002622901d3f71437b98f95f54fbf7fe10490d319cb801c2a061ea", - "version": "2.0.3" + "src_sha256": "339c35fd3a290522f23de4e33528423cfd0b0a8f22946b0b9816a817b926cba0", + "version": "2.0.7" }, { - "cabal_sha256": "8af7a843cba7eddc8d44ae94002b766ee8c23cbcd3ecdb2cc79ee6e0a694419a", + "cabal_sha256": "099c33e0e570dad93390e1c01c1f4bc6e4f13587de8e199df3c94a6cb62c7434", "component": "lib:filepath", "flags": [ "-cpphs" ], "package": "filepath", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "d2606db4fa8517932a2d9ea6415c365da4d1794afcb264a5b3c10110123978a7", - "version": "1.5.2.0" + "src_sha256": "54aa86c432f593273d7b9f607c5b5e0a1628c2674c6f4e3b5a54eb0c83db5caf", + "version": "1.5.4.0" }, { - "cabal_sha256": "3f702a252a313a7bcb56e3908a14e7f9f1b40e41b7bdc8ae8a9605a1a8686f06", + "cabal_sha256": "5b7f8afd7a879c3c8c3c636fd3c7543cdd5e0b514b7da90e76907ccd11434031", "component": "lib:unix", "flags": [ "+os-string" ], "package": "unix", + "revision": 1, + "source": "hackage", + "src_sha256": "8117599bb3e4aa1d4656710afbc85aef2a75483eddfac5338f8cc88fb505eea2", + "version": "2.8.6.0" + }, + { + "cabal_sha256": "e3e1866eab82cb28f6a5f28507643da3987008b737e66a3c7398f39f16d824dc", + "component": "lib:file-io", + "flags": [ + "+os-string" + ], + "package": "file-io", "revision": 0, "source": "hackage", - "src_sha256": "5ab6c346aef2eb9bf80b4d29ca7e22063fc23e52fd69fbc4d18a9f98b154e424", - "version": "2.8.5.1" + "src_sha256": "e3d9113a015c57e3d8c2294550c41544f84a265291fed96cca697f91b6e86f52", + "version": "0.1.4" }, { - "cabal_sha256": "fbeec9ec346e5272167f63dcb86af513b457a7b9fc36dc818e4c7b81608d612b", + "cabal_sha256": "2490137bb7738bd79392959458ef5f276219ea5ba8a9a56d3e0b06315c1bb917", "component": "lib:directory", "flags": [ "+os-string" ], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "e864ed54ddfc6e15d2eb02c87f4be8edd7719e1f9cea13e0f86909400b6ea768", - "version": "1.3.8.5" + "src_sha256": "20a24846117fc5f8751d974b7de07210a161989410467e9adca525381b8e64cc", + "version": "1.3.9.0" }, { "cabal_sha256": "de553eefe0b6548a560e9d8100486310548470a403c1fa21108dd03713da5fc7", @@ -135,34 +147,34 @@ "version": "3.5.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "557a2b20dc85f052c86c5a06dcbd7c6995f2d0391bbff8e62c90b4b5975211da", "component": "lib:Cabal-syntax", "flags": [], "package": "Cabal-syntax", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "2a9393de33f18415fb8f4826957a87a94ffe8840ca8472a9b69dca6de45aca03", + "cabal_sha256": "9a0b2ef8096517fa0e0c7a5e9a5c2ae5744ed824c3331005f9408245810df345", "component": "lib:process", "flags": [], "package": "process", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "cefda221c3009fa2316b5cf148215cb340dad7eb8503f22e49e33722559df99a", - "version": "1.6.20.0" + "src_sha256": "496fe0566c3915b112e9772ac9c967dfeb8d5ca04895e54ae0160522bee76e65", + "version": "1.6.25.0" }, { - "cabal_sha256": null, + "cabal_sha256": "d24c689fd4b56cd12f8225562c00657e97c528849a2fc3d535557a83ca5f8dfc", "component": "lib:Cabal", "flags": [], "package": "Cabal", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": null, @@ -172,22 +184,22 @@ "revision": null, "source": "local", "src_sha256": null, - "version": "0.1" + "version": "3.14" }, { - "cabal_sha256": "60e78b6c60dc32a77ce6c37ed5ca4e838fc5f76f02836ef64d93cd21cc002325", + "cabal_sha256": "276325277350cd2c2c88916ed3ae5cd35b2b4f494ec594fbd9534081eb7fb759", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", "version": "0.68.10" }, { - "cabal_sha256": "25440c1bbd5772fdbbeec068f20138121131e1a56453db0adc113dcdf9044105", + "cabal_sha256": "b0fafb2834530084f6406017500ae619f9e5e2049787a6750c68e0d331fd62dc", "component": "lib:network", "flags": [ "-devel" @@ -195,8 +207,8 @@ "package": "network", "revision": 0, "source": "hackage", - "src_sha256": "c45696744dc437d93a56871a3dd869965b7b50eda3fe3c1a90a35e2fbb9cb9ca", - "version": "3.2.0.0" + "src_sha256": "dbd8a10456908294eb5ab9c522bf2da75444d958429a643a821464213698523e", + "version": "3.2.6.0" }, { "cabal_sha256": "129a59ba3ccfcd06192fd6da899e2711ae276a466915a047bd6727e4a0321d2e", @@ -234,17 +246,17 @@ "version": "4000.4.1" }, { - "cabal_sha256": "a4a1975fde77e289b605c45a3ef78d731d8c1834e4cef311152d910a1e94d98c", + "cabal_sha256": "3a4040018d8f90beef81ecd0ba37f266a9aaad3e902dd790f09056f892ba22fb", "component": "lib:data-array-byte", "flags": [], "package": "data-array-byte", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "1bb6eca0b3e02d057fe7f4e14c81ef395216f421ab30fdaa1b18017c9c025600", "version": "0.1.0.1" }, { - "cabal_sha256": "82503a1ef0a625c210e118f2785c4138f8502aacbbfd4e5d987f6baffbb87115", + "cabal_sha256": "573f3ab242f75465a0d67ce9d84202650a1606575e6dbd6d31ffcf4767a9a379", "component": "lib:hashable", "flags": [ "-arch-native", @@ -254,17 +266,17 @@ "package": "hashable", "revision": 0, "source": "hackage", - "src_sha256": "34652a7a1d2fc9e3d764b150bd35bcd2220761c1d4c6b446b0cfac5ad5b778cb", - "version": "1.4.6.0" + "src_sha256": "3baee4c9027a08830d148ec524cbc0471de645e1e8426d46780ef2758df0e8da", + "version": "1.4.7.0" }, { - "cabal_sha256": "9d5d9e605f52958d099e13a8b8f30ee56cb137c9192996245e3c533adb682cf8", + "cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7", "version": "2.2.5" @@ -322,27 +334,27 @@ "version": "0.2.2.1" }, { - "cabal_sha256": null, + "cabal_sha256": "c4c8fd9c71b9e813053d94408c621e7b13355c4ca1d3eaed35b8f8956eae9b87", "component": "lib:cabal-install-solver", "flags": [ "-debug-expensive-assertions", "-debug-tracetree" ], "package": "cabal-install-solver", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "200d756a7b3bab7ca2bac6eb50ed8252f26de77ac8def490a3ad743f2933acbd", + "cabal_sha256": "acb64f2af52d81b0bb92c266f11d43def726a7a7b74a2c23d219e160b54edec7", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -387,27 +399,27 @@ "version": "0.1.2" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar-internal", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "d6696f2b55ab4a50b8de57947abca308604eb7cf8287c40bf69cfa26133e24d3", + "cabal_sha256": "85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -415,20 +427,20 @@ "+pkg-config" ], "package": "zlib", - "revision": 0, + "revision": 2, "source": "hackage", "src_sha256": "6edd38b6b81df8d274952aa85affa6968ae86b2231e1d429ce8bc9083e6a55bc", "version": "0.7.1.0" }, { - "cabal_sha256": "8ff70524314f9ad706f8e5051d7150ee44cb82170147879b245bdab279604b16", + "cabal_sha256": "a7311a70ce2cc820ee430c389f57f82a082f148230b37526c34eac72b7b3ff34", "component": "lib:hackage-security", "flags": [ "+cabal-syntax", "+lukko" ], "package": "hackage-security", - "revision": 1, + "revision": 4, "source": "hackage", "src_sha256": "2e4261576b3e11b9f5175392947f56a638cc1a3584b8acbb962b809d7c69db69", "version": "0.6.2.6" @@ -466,11 +478,11 @@ "version": "0.96.0.1" }, { - "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", + "cabal_sha256": "3e196e1362e4d0ec9dfcd7f8d58b24fac91beafaa1c8ee34dc9dee489c362377", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" @@ -496,30 +508,30 @@ "version": "1.0.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "lib:cabal-install", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "exe:cabal", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", diff --git a/bootstrap/linux-9.4.8.json b/bootstrap/linux-9.4.8.json index aa97cbabe35..2cd01139cc8 100644 --- a/bootstrap/linux-9.4.8.json +++ b/bootstrap/linux-9.4.8.json @@ -79,50 +79,62 @@ ], "dependencies": [ { - "cabal_sha256": "4d4186bb8d711435765253c7dc076c44a1d52896300689507ba135706ab35866", + "cabal_sha256": "2efc549644dd418bad537d1601fdd437c440d807265016bd993b6996c679ad2f", "component": "lib:os-string", "flags": [], "package": "os-string", "revision": 0, "source": "hackage", - "src_sha256": "f6b388b9f9002622901d3f71437b98f95f54fbf7fe10490d319cb801c2a061ea", - "version": "2.0.3" + "src_sha256": "339c35fd3a290522f23de4e33528423cfd0b0a8f22946b0b9816a817b926cba0", + "version": "2.0.7" }, { - "cabal_sha256": "8af7a843cba7eddc8d44ae94002b766ee8c23cbcd3ecdb2cc79ee6e0a694419a", + "cabal_sha256": "099c33e0e570dad93390e1c01c1f4bc6e4f13587de8e199df3c94a6cb62c7434", "component": "lib:filepath", "flags": [ "-cpphs" ], "package": "filepath", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "d2606db4fa8517932a2d9ea6415c365da4d1794afcb264a5b3c10110123978a7", - "version": "1.5.2.0" + "src_sha256": "54aa86c432f593273d7b9f607c5b5e0a1628c2674c6f4e3b5a54eb0c83db5caf", + "version": "1.5.4.0" }, { - "cabal_sha256": "3f702a252a313a7bcb56e3908a14e7f9f1b40e41b7bdc8ae8a9605a1a8686f06", + "cabal_sha256": "5b7f8afd7a879c3c8c3c636fd3c7543cdd5e0b514b7da90e76907ccd11434031", "component": "lib:unix", "flags": [ "+os-string" ], "package": "unix", + "revision": 1, + "source": "hackage", + "src_sha256": "8117599bb3e4aa1d4656710afbc85aef2a75483eddfac5338f8cc88fb505eea2", + "version": "2.8.6.0" + }, + { + "cabal_sha256": "e3e1866eab82cb28f6a5f28507643da3987008b737e66a3c7398f39f16d824dc", + "component": "lib:file-io", + "flags": [ + "+os-string" + ], + "package": "file-io", "revision": 0, "source": "hackage", - "src_sha256": "5ab6c346aef2eb9bf80b4d29ca7e22063fc23e52fd69fbc4d18a9f98b154e424", - "version": "2.8.5.1" + "src_sha256": "e3d9113a015c57e3d8c2294550c41544f84a265291fed96cca697f91b6e86f52", + "version": "0.1.4" }, { - "cabal_sha256": "fbeec9ec346e5272167f63dcb86af513b457a7b9fc36dc818e4c7b81608d612b", + "cabal_sha256": "2490137bb7738bd79392959458ef5f276219ea5ba8a9a56d3e0b06315c1bb917", "component": "lib:directory", "flags": [ "+os-string" ], "package": "directory", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "e864ed54ddfc6e15d2eb02c87f4be8edd7719e1f9cea13e0f86909400b6ea768", - "version": "1.3.8.5" + "src_sha256": "20a24846117fc5f8751d974b7de07210a161989410467e9adca525381b8e64cc", + "version": "1.3.9.0" }, { "cabal_sha256": "de553eefe0b6548a560e9d8100486310548470a403c1fa21108dd03713da5fc7", @@ -135,34 +147,34 @@ "version": "3.5.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "557a2b20dc85f052c86c5a06dcbd7c6995f2d0391bbff8e62c90b4b5975211da", "component": "lib:Cabal-syntax", "flags": [], "package": "Cabal-syntax", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "2a9393de33f18415fb8f4826957a87a94ffe8840ca8472a9b69dca6de45aca03", + "cabal_sha256": "9a0b2ef8096517fa0e0c7a5e9a5c2ae5744ed824c3331005f9408245810df345", "component": "lib:process", "flags": [], "package": "process", - "revision": 1, + "revision": 0, "source": "hackage", - "src_sha256": "cefda221c3009fa2316b5cf148215cb340dad7eb8503f22e49e33722559df99a", - "version": "1.6.20.0" + "src_sha256": "496fe0566c3915b112e9772ac9c967dfeb8d5ca04895e54ae0160522bee76e65", + "version": "1.6.25.0" }, { - "cabal_sha256": null, + "cabal_sha256": "d24c689fd4b56cd12f8225562c00657e97c528849a2fc3d535557a83ca5f8dfc", "component": "lib:Cabal", "flags": [], "package": "Cabal", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": null, @@ -172,22 +184,22 @@ "revision": null, "source": "local", "src_sha256": null, - "version": "0.1" + "version": "3.14" }, { - "cabal_sha256": "60e78b6c60dc32a77ce6c37ed5ca4e838fc5f76f02836ef64d93cd21cc002325", + "cabal_sha256": "276325277350cd2c2c88916ed3ae5cd35b2b4f494ec594fbd9534081eb7fb759", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", "version": "0.68.10" }, { - "cabal_sha256": "25440c1bbd5772fdbbeec068f20138121131e1a56453db0adc113dcdf9044105", + "cabal_sha256": "b0fafb2834530084f6406017500ae619f9e5e2049787a6750c68e0d331fd62dc", "component": "lib:network", "flags": [ "-devel" @@ -195,8 +207,8 @@ "package": "network", "revision": 0, "source": "hackage", - "src_sha256": "c45696744dc437d93a56871a3dd869965b7b50eda3fe3c1a90a35e2fbb9cb9ca", - "version": "3.2.0.0" + "src_sha256": "dbd8a10456908294eb5ab9c522bf2da75444d958429a643a821464213698523e", + "version": "3.2.6.0" }, { "cabal_sha256": "129a59ba3ccfcd06192fd6da899e2711ae276a466915a047bd6727e4a0321d2e", @@ -234,7 +246,7 @@ "version": "4000.4.1" }, { - "cabal_sha256": "82503a1ef0a625c210e118f2785c4138f8502aacbbfd4e5d987f6baffbb87115", + "cabal_sha256": "573f3ab242f75465a0d67ce9d84202650a1606575e6dbd6d31ffcf4767a9a379", "component": "lib:hashable", "flags": [ "-arch-native", @@ -244,17 +256,17 @@ "package": "hashable", "revision": 0, "source": "hackage", - "src_sha256": "34652a7a1d2fc9e3d764b150bd35bcd2220761c1d4c6b446b0cfac5ad5b778cb", - "version": "1.4.6.0" + "src_sha256": "3baee4c9027a08830d148ec524cbc0471de645e1e8426d46780ef2758df0e8da", + "version": "1.4.7.0" }, { - "cabal_sha256": "9d5d9e605f52958d099e13a8b8f30ee56cb137c9192996245e3c533adb682cf8", + "cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7", "version": "2.2.5" @@ -312,27 +324,27 @@ "version": "0.2.2.1" }, { - "cabal_sha256": null, + "cabal_sha256": "c4c8fd9c71b9e813053d94408c621e7b13355c4ca1d3eaed35b8f8956eae9b87", "component": "lib:cabal-install-solver", "flags": [ "-debug-expensive-assertions", "-debug-tracetree" ], "package": "cabal-install-solver", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "200d756a7b3bab7ca2bac6eb50ed8252f26de77ac8def490a3ad743f2933acbd", + "cabal_sha256": "acb64f2af52d81b0bb92c266f11d43def726a7a7b74a2c23d219e160b54edec7", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -377,27 +389,27 @@ "version": "0.1.2" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar-internal", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "d6696f2b55ab4a50b8de57947abca308604eb7cf8287c40bf69cfa26133e24d3", + "cabal_sha256": "85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -405,20 +417,20 @@ "+pkg-config" ], "package": "zlib", - "revision": 0, + "revision": 2, "source": "hackage", "src_sha256": "6edd38b6b81df8d274952aa85affa6968ae86b2231e1d429ce8bc9083e6a55bc", "version": "0.7.1.0" }, { - "cabal_sha256": "8ff70524314f9ad706f8e5051d7150ee44cb82170147879b245bdab279604b16", + "cabal_sha256": "a7311a70ce2cc820ee430c389f57f82a082f148230b37526c34eac72b7b3ff34", "component": "lib:hackage-security", "flags": [ "+cabal-syntax", "+lukko" ], "package": "hackage-security", - "revision": 1, + "revision": 4, "source": "hackage", "src_sha256": "2e4261576b3e11b9f5175392947f56a638cc1a3584b8acbb962b809d7c69db69", "version": "0.6.2.6" @@ -456,11 +468,11 @@ "version": "0.96.0.1" }, { - "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", + "cabal_sha256": "3e196e1362e4d0ec9dfcd7f8d58b24fac91beafaa1c8ee34dc9dee489c362377", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" @@ -486,30 +498,30 @@ "version": "1.0.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "lib:cabal-install", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "exe:cabal", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", diff --git a/bootstrap/linux-9.6.4.json b/bootstrap/linux-9.6.4.json index c0c138d5110..67ea0360bd1 100644 --- a/bootstrap/linux-9.6.4.json +++ b/bootstrap/linux-9.6.4.json @@ -60,22 +60,10 @@ "package": "exceptions", "version": "0.10.7" }, - { - "package": "filepath", - "version": "1.4.200.1" - }, { "package": "time", "version": "1.12.2" }, - { - "package": "unix", - "version": "2.8.4.0" - }, - { - "package": "directory", - "version": "1.3.8.1" - }, { "package": "binary", "version": "0.8.9.1" @@ -87,13 +75,67 @@ { "package": "parsec", "version": "3.1.16.1" - }, - { - "package": "process", - "version": "1.6.17.0" } ], "dependencies": [ + { + "cabal_sha256": "2efc549644dd418bad537d1601fdd437c440d807265016bd993b6996c679ad2f", + "component": "lib:os-string", + "flags": [], + "package": "os-string", + "revision": 0, + "source": "hackage", + "src_sha256": "339c35fd3a290522f23de4e33528423cfd0b0a8f22946b0b9816a817b926cba0", + "version": "2.0.7" + }, + { + "cabal_sha256": "099c33e0e570dad93390e1c01c1f4bc6e4f13587de8e199df3c94a6cb62c7434", + "component": "lib:filepath", + "flags": [ + "-cpphs" + ], + "package": "filepath", + "revision": 0, + "source": "hackage", + "src_sha256": "54aa86c432f593273d7b9f607c5b5e0a1628c2674c6f4e3b5a54eb0c83db5caf", + "version": "1.5.4.0" + }, + { + "cabal_sha256": "5b7f8afd7a879c3c8c3c636fd3c7543cdd5e0b514b7da90e76907ccd11434031", + "component": "lib:unix", + "flags": [ + "+os-string" + ], + "package": "unix", + "revision": 1, + "source": "hackage", + "src_sha256": "8117599bb3e4aa1d4656710afbc85aef2a75483eddfac5338f8cc88fb505eea2", + "version": "2.8.6.0" + }, + { + "cabal_sha256": "e3e1866eab82cb28f6a5f28507643da3987008b737e66a3c7398f39f16d824dc", + "component": "lib:file-io", + "flags": [ + "+os-string" + ], + "package": "file-io", + "revision": 0, + "source": "hackage", + "src_sha256": "e3d9113a015c57e3d8c2294550c41544f84a265291fed96cca697f91b6e86f52", + "version": "0.1.4" + }, + { + "cabal_sha256": "2490137bb7738bd79392959458ef5f276219ea5ba8a9a56d3e0b06315c1bb917", + "component": "lib:directory", + "flags": [ + "+os-string" + ], + "package": "directory", + "revision": 1, + "source": "hackage", + "src_sha256": "20a24846117fc5f8751d974b7de07210a161989410467e9adca525381b8e64cc", + "version": "1.3.9.0" + }, { "cabal_sha256": "de553eefe0b6548a560e9d8100486310548470a403c1fa21108dd03713da5fc7", "component": "exe:alex", @@ -105,24 +147,34 @@ "version": "3.5.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "557a2b20dc85f052c86c5a06dcbd7c6995f2d0391bbff8e62c90b4b5975211da", "component": "lib:Cabal-syntax", "flags": [], "package": "Cabal-syntax", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "9a0b2ef8096517fa0e0c7a5e9a5c2ae5744ed824c3331005f9408245810df345", + "component": "lib:process", + "flags": [], + "package": "process", + "revision": 0, + "source": "hackage", + "src_sha256": "496fe0566c3915b112e9772ac9c967dfeb8d5ca04895e54ae0160522bee76e65", + "version": "1.6.25.0" + }, + { + "cabal_sha256": "d24c689fd4b56cd12f8225562c00657e97c528849a2fc3d535557a83ca5f8dfc", "component": "lib:Cabal", "flags": [], "package": "Cabal", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": null, @@ -132,22 +184,22 @@ "revision": null, "source": "local", "src_sha256": null, - "version": "0.1" + "version": "3.14" }, { - "cabal_sha256": "60e78b6c60dc32a77ce6c37ed5ca4e838fc5f76f02836ef64d93cd21cc002325", + "cabal_sha256": "276325277350cd2c2c88916ed3ae5cd35b2b4f494ec594fbd9534081eb7fb759", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", "version": "0.68.10" }, { - "cabal_sha256": "25440c1bbd5772fdbbeec068f20138121131e1a56453db0adc113dcdf9044105", + "cabal_sha256": "b0fafb2834530084f6406017500ae619f9e5e2049787a6750c68e0d331fd62dc", "component": "lib:network", "flags": [ "-devel" @@ -155,8 +207,8 @@ "package": "network", "revision": 0, "source": "hackage", - "src_sha256": "c45696744dc437d93a56871a3dd869965b7b50eda3fe3c1a90a35e2fbb9cb9ca", - "version": "3.2.0.0" + "src_sha256": "dbd8a10456908294eb5ab9c522bf2da75444d958429a643a821464213698523e", + "version": "3.2.6.0" }, { "cabal_sha256": "129a59ba3ccfcd06192fd6da899e2711ae276a466915a047bd6727e4a0321d2e", @@ -194,37 +246,26 @@ "version": "4000.4.1" }, { - "cabal_sha256": "4d4186bb8d711435765253c7dc076c44a1d52896300689507ba135706ab35866", - "component": "lib:os-string", - "flags": [], - "package": "os-string", - "revision": 0, - "source": "hackage", - "src_sha256": "f6b388b9f9002622901d3f71437b98f95f54fbf7fe10490d319cb801c2a061ea", - "version": "2.0.3" - }, - { - "cabal_sha256": "82503a1ef0a625c210e118f2785c4138f8502aacbbfd4e5d987f6baffbb87115", + "cabal_sha256": "2f23146cbe0325029927b221647695a4c7d6e97548ff731110979e34361f58ef", "component": "lib:hashable", "flags": [ "-arch-native", - "+integer-gmp", "-random-initial-seed" ], "package": "hashable", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "34652a7a1d2fc9e3d764b150bd35bcd2220761c1d4c6b446b0cfac5ad5b778cb", - "version": "1.4.6.0" + "src_sha256": "e58b3a8e18da5f6cd7e937e5fd683e500bb1f8276b3768269759119ca0cddb6a", + "version": "1.5.0.0" }, { - "cabal_sha256": "9d5d9e605f52958d099e13a8b8f30ee56cb137c9192996245e3c533adb682cf8", + "cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7", "version": "2.2.5" @@ -282,27 +323,27 @@ "version": "0.2.2.1" }, { - "cabal_sha256": null, + "cabal_sha256": "c4c8fd9c71b9e813053d94408c621e7b13355c4ca1d3eaed35b8f8956eae9b87", "component": "lib:cabal-install-solver", "flags": [ "-debug-expensive-assertions", "-debug-tracetree" ], "package": "cabal-install-solver", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "200d756a7b3bab7ca2bac6eb50ed8252f26de77ac8def490a3ad743f2933acbd", + "cabal_sha256": "acb64f2af52d81b0bb92c266f11d43def726a7a7b74a2c23d219e160b54edec7", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -347,27 +388,27 @@ "version": "0.1.2" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar-internal", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "d6696f2b55ab4a50b8de57947abca308604eb7cf8287c40bf69cfa26133e24d3", + "cabal_sha256": "85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -375,20 +416,20 @@ "+pkg-config" ], "package": "zlib", - "revision": 0, + "revision": 2, "source": "hackage", "src_sha256": "6edd38b6b81df8d274952aa85affa6968ae86b2231e1d429ce8bc9083e6a55bc", "version": "0.7.1.0" }, { - "cabal_sha256": "8ff70524314f9ad706f8e5051d7150ee44cb82170147879b245bdab279604b16", + "cabal_sha256": "a7311a70ce2cc820ee430c389f57f82a082f148230b37526c34eac72b7b3ff34", "component": "lib:hackage-security", "flags": [ "+cabal-syntax", "+lukko" ], "package": "hackage-security", - "revision": 1, + "revision": 4, "source": "hackage", "src_sha256": "2e4261576b3e11b9f5175392947f56a638cc1a3584b8acbb962b809d7c69db69", "version": "0.6.2.6" @@ -426,11 +467,11 @@ "version": "0.96.0.1" }, { - "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", + "cabal_sha256": "3e196e1362e4d0ec9dfcd7f8d58b24fac91beafaa1c8ee34dc9dee489c362377", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" @@ -456,30 +497,30 @@ "version": "1.0.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "lib:cabal-install", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "exe:cabal", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", diff --git a/bootstrap/linux-9.8.2.json b/bootstrap/linux-9.8.2.json index 638ae20adb4..605975ada35 100644 --- a/bootstrap/linux-9.8.2.json +++ b/bootstrap/linux-9.8.2.json @@ -60,22 +60,10 @@ "package": "exceptions", "version": "0.10.7" }, - { - "package": "filepath", - "version": "1.4.200.1" - }, { "package": "time", "version": "1.12.2" }, - { - "package": "unix", - "version": "2.8.4.0" - }, - { - "package": "directory", - "version": "1.3.8.1" - }, { "package": "binary", "version": "0.8.9.1" @@ -87,17 +75,67 @@ { "package": "parsec", "version": "3.1.17.0" + } + ], + "dependencies": [ + { + "cabal_sha256": "2efc549644dd418bad537d1601fdd437c440d807265016bd993b6996c679ad2f", + "component": "lib:os-string", + "flags": [], + "package": "os-string", + "revision": 0, + "source": "hackage", + "src_sha256": "339c35fd3a290522f23de4e33528423cfd0b0a8f22946b0b9816a817b926cba0", + "version": "2.0.7" }, { - "package": "process", - "version": "1.6.18.0" + "cabal_sha256": "099c33e0e570dad93390e1c01c1f4bc6e4f13587de8e199df3c94a6cb62c7434", + "component": "lib:filepath", + "flags": [ + "-cpphs" + ], + "package": "filepath", + "revision": 0, + "source": "hackage", + "src_sha256": "54aa86c432f593273d7b9f607c5b5e0a1628c2674c6f4e3b5a54eb0c83db5caf", + "version": "1.5.4.0" }, { - "package": "semaphore-compat", - "version": "1.0.0" - } - ], - "dependencies": [ + "cabal_sha256": "5b7f8afd7a879c3c8c3c636fd3c7543cdd5e0b514b7da90e76907ccd11434031", + "component": "lib:unix", + "flags": [ + "+os-string" + ], + "package": "unix", + "revision": 1, + "source": "hackage", + "src_sha256": "8117599bb3e4aa1d4656710afbc85aef2a75483eddfac5338f8cc88fb505eea2", + "version": "2.8.6.0" + }, + { + "cabal_sha256": "e3e1866eab82cb28f6a5f28507643da3987008b737e66a3c7398f39f16d824dc", + "component": "lib:file-io", + "flags": [ + "+os-string" + ], + "package": "file-io", + "revision": 0, + "source": "hackage", + "src_sha256": "e3d9113a015c57e3d8c2294550c41544f84a265291fed96cca697f91b6e86f52", + "version": "0.1.4" + }, + { + "cabal_sha256": "2490137bb7738bd79392959458ef5f276219ea5ba8a9a56d3e0b06315c1bb917", + "component": "lib:directory", + "flags": [ + "+os-string" + ], + "package": "directory", + "revision": 1, + "source": "hackage", + "src_sha256": "20a24846117fc5f8751d974b7de07210a161989410467e9adca525381b8e64cc", + "version": "1.3.9.0" + }, { "cabal_sha256": "de553eefe0b6548a560e9d8100486310548470a403c1fa21108dd03713da5fc7", "component": "exe:alex", @@ -109,24 +147,34 @@ "version": "3.5.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "557a2b20dc85f052c86c5a06dcbd7c6995f2d0391bbff8e62c90b4b5975211da", "component": "lib:Cabal-syntax", "flags": [], "package": "Cabal-syntax", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "9a0b2ef8096517fa0e0c7a5e9a5c2ae5744ed824c3331005f9408245810df345", + "component": "lib:process", + "flags": [], + "package": "process", + "revision": 0, + "source": "hackage", + "src_sha256": "496fe0566c3915b112e9772ac9c967dfeb8d5ca04895e54ae0160522bee76e65", + "version": "1.6.25.0" + }, + { + "cabal_sha256": "d24c689fd4b56cd12f8225562c00657e97c528849a2fc3d535557a83ca5f8dfc", "component": "lib:Cabal", "flags": [], "package": "Cabal", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": null, @@ -136,22 +184,22 @@ "revision": null, "source": "local", "src_sha256": null, - "version": "0.1" + "version": "3.14" }, { - "cabal_sha256": "60e78b6c60dc32a77ce6c37ed5ca4e838fc5f76f02836ef64d93cd21cc002325", + "cabal_sha256": "276325277350cd2c2c88916ed3ae5cd35b2b4f494ec594fbd9534081eb7fb759", "component": "exe:hsc2hs", "flags": [ "-in-ghc-tree" ], "package": "hsc2hs", - "revision": 2, + "revision": 3, "source": "hackage", "src_sha256": "6f4e34d788fe2ca7091ee0a10307ee8a7c060a1ba890f2bffad16a7d4d5cef76", "version": "0.68.10" }, { - "cabal_sha256": "25440c1bbd5772fdbbeec068f20138121131e1a56453db0adc113dcdf9044105", + "cabal_sha256": "b0fafb2834530084f6406017500ae619f9e5e2049787a6750c68e0d331fd62dc", "component": "lib:network", "flags": [ "-devel" @@ -159,8 +207,8 @@ "package": "network", "revision": 0, "source": "hackage", - "src_sha256": "c45696744dc437d93a56871a3dd869965b7b50eda3fe3c1a90a35e2fbb9cb9ca", - "version": "3.2.0.0" + "src_sha256": "dbd8a10456908294eb5ab9c522bf2da75444d958429a643a821464213698523e", + "version": "3.2.6.0" }, { "cabal_sha256": "129a59ba3ccfcd06192fd6da899e2711ae276a466915a047bd6727e4a0321d2e", @@ -198,37 +246,26 @@ "version": "4000.4.1" }, { - "cabal_sha256": "4d4186bb8d711435765253c7dc076c44a1d52896300689507ba135706ab35866", - "component": "lib:os-string", - "flags": [], - "package": "os-string", - "revision": 0, - "source": "hackage", - "src_sha256": "f6b388b9f9002622901d3f71437b98f95f54fbf7fe10490d319cb801c2a061ea", - "version": "2.0.3" - }, - { - "cabal_sha256": "82503a1ef0a625c210e118f2785c4138f8502aacbbfd4e5d987f6baffbb87115", + "cabal_sha256": "2f23146cbe0325029927b221647695a4c7d6e97548ff731110979e34361f58ef", "component": "lib:hashable", "flags": [ "-arch-native", - "+integer-gmp", "-random-initial-seed" ], "package": "hashable", - "revision": 0, + "revision": 1, "source": "hackage", - "src_sha256": "34652a7a1d2fc9e3d764b150bd35bcd2220761c1d4c6b446b0cfac5ad5b778cb", - "version": "1.4.6.0" + "src_sha256": "e58b3a8e18da5f6cd7e937e5fd683e500bb1f8276b3768269759119ca0cddb6a", + "version": "1.5.0.0" }, { - "cabal_sha256": "9d5d9e605f52958d099e13a8b8f30ee56cb137c9192996245e3c533adb682cf8", + "cabal_sha256": "b7648c6165729a973d95cb328f9fd874813a81c727707e8b2552b4f03399763b", "component": "lib:async", "flags": [ "-bench" ], "package": "async", - "revision": 1, + "revision": 3, "source": "hackage", "src_sha256": "1818473ebab9212afad2ed76297aefde5fae8b5d4404daf36939aece6a8f16f7", "version": "2.2.5" @@ -286,27 +323,27 @@ "version": "0.2.2.1" }, { - "cabal_sha256": null, + "cabal_sha256": "c4c8fd9c71b9e813053d94408c621e7b13355c4ca1d3eaed35b8f8956eae9b87", "component": "lib:cabal-install-solver", "flags": [ "-debug-expensive-assertions", "-debug-tracetree" ], "package": "cabal-install-solver", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": "200d756a7b3bab7ca2bac6eb50ed8252f26de77ac8def490a3ad743f2933acbd", + "cabal_sha256": "acb64f2af52d81b0bb92c266f11d43def726a7a7b74a2c23d219e160b54edec7", "component": "lib:cryptohash-sha256", "flags": [ "-exe", "+use-cbits" ], "package": "cryptohash-sha256", - "revision": 4, + "revision": 5, "source": "hackage", "src_sha256": "73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6", "version": "0.11.102.1" @@ -351,27 +388,27 @@ "version": "0.1.2" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar-internal", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "b853b4296cb23386feda17dc0d9065af6709d22d684ec734aab65403d59ed547", + "cabal_sha256": "e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a", "component": "lib:tar", "flags": [], "package": "tar", - "revision": 0, + "revision": 1, "source": "hackage", "src_sha256": "50bb660feec8a524416d6934251b996eaa7e39d49ae107ad505ab700d43f6814", "version": "0.6.3.0" }, { - "cabal_sha256": "d6696f2b55ab4a50b8de57947abca308604eb7cf8287c40bf69cfa26133e24d3", + "cabal_sha256": "85e64a75c0b490506a7edaa2d54950c668e66b65758bb08bb14cd31faf53a206", "component": "lib:zlib", "flags": [ "-bundled-c-zlib", @@ -379,20 +416,20 @@ "+pkg-config" ], "package": "zlib", - "revision": 0, + "revision": 2, "source": "hackage", "src_sha256": "6edd38b6b81df8d274952aa85affa6968ae86b2231e1d429ce8bc9083e6a55bc", "version": "0.7.1.0" }, { - "cabal_sha256": "8ff70524314f9ad706f8e5051d7150ee44cb82170147879b245bdab279604b16", + "cabal_sha256": "a7311a70ce2cc820ee430c389f57f82a082f148230b37526c34eac72b7b3ff34", "component": "lib:hackage-security", "flags": [ "+cabal-syntax", "+lukko" ], "package": "hackage-security", - "revision": 1, + "revision": 4, "source": "hackage", "src_sha256": "2e4261576b3e11b9f5175392947f56a638cc1a3584b8acbb962b809d7c69db69", "version": "0.6.2.6" @@ -430,11 +467,11 @@ "version": "0.96.0.1" }, { - "cabal_sha256": "4868265ab5760d2fdeb96625b138c8df25d41b9ee2651fa299ed019a69403045", + "cabal_sha256": "3e196e1362e4d0ec9dfcd7f8d58b24fac91beafaa1c8ee34dc9dee489c362377", "component": "lib:resolv", "flags": [], "package": "resolv", - "revision": 3, + "revision": 4, "source": "hackage", "src_sha256": "880d283df9132a7375fa28670f71e86480a4f49972256dc2a204c648274ae74b", "version": "0.2.0.2" @@ -450,30 +487,40 @@ "version": "0.1.7.4" }, { - "cabal_sha256": null, + "cabal_sha256": "2de5218cef72b8ef090bd7d0fd930ffa143242a120c62e013b5cf039858f1855", + "component": "lib:semaphore-compat", + "flags": [], + "package": "semaphore-compat", + "revision": 3, + "source": "hackage", + "src_sha256": "1c6e6fab021c2ccee5d86112fb1c0bd016d15e0cf70c489dae5fb5ec156ed9e2", + "version": "1.0.0" + }, + { + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "lib:cabal-install", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { - "cabal_sha256": null, + "cabal_sha256": "3583679b022200ca7bc8cb7ff1cd254887b82af6cec5bbd404aa66ea9ea5d083", "component": "exe:cabal", "flags": [ "+lukko", "+native-dns" ], "package": "cabal-install", - "revision": null, + "revision": 0, "source": "local", "src_sha256": null, - "version": "3.13.0.0" + "version": "3.14.1.0" }, { "cabal_sha256": "e4be4a206f5ab6ddb5ae4fbb39101529196e20af5670c5d33326fea6eff886fd", diff --git a/buildinfo-reference-generator/buildinfo-reference-generator.cabal b/buildinfo-reference-generator/buildinfo-reference-generator.cabal index 47068ee33b1..a09fc4dc62c 100644 --- a/buildinfo-reference-generator/buildinfo-reference-generator.cabal +++ b/buildinfo-reference-generator/buildinfo-reference-generator.cabal @@ -8,7 +8,7 @@ executable buildinfo-reference-generator ghc-options: -Wall main-is: Main.hs build-depends: - , base >=4.11 && <4.21 + , base >=4.11 && <4.22 , Cabal , Cabal-described , containers diff --git a/cabal-dev-scripts/src/GenSPDX.hs b/cabal-dev-scripts/src/GenSPDX.hs index adb3276a1bd..083dbf7c951 100644 --- a/cabal-dev-scripts/src/GenSPDX.hs +++ b/cabal-dev-scripts/src/GenSPDX.hs @@ -36,6 +36,7 @@ main = generate =<< O.execParser opts where <*> licenses "3.10" <*> licenses "3.16" <*> licenses "3.23" + <*> licenses "3.25" template = O.strArgument $ mconcat [ O.metavar "SPDX.LicenseId.template.hs" diff --git a/cabal-dev-scripts/src/GenSPDXExc.hs b/cabal-dev-scripts/src/GenSPDXExc.hs index c85438a828b..a9a08717818 100644 --- a/cabal-dev-scripts/src/GenSPDXExc.hs +++ b/cabal-dev-scripts/src/GenSPDXExc.hs @@ -35,6 +35,7 @@ main = generate =<< O.execParser opts where <*> licenses "3.10" <*> licenses "3.16" <*> licenses "3.23" + <*> licenses "3.25" template = O.strArgument $ mconcat [ O.metavar "SPDX.LicenseExceptionId.template.hs" diff --git a/cabal-dev-scripts/src/GenUtils.hs b/cabal-dev-scripts/src/GenUtils.hs index 7d7b39c2add..f64388463da 100644 --- a/cabal-dev-scripts/src/GenUtils.hs +++ b/cabal-dev-scripts/src/GenUtils.hs @@ -33,12 +33,14 @@ data SPDXLicenseListVersion | SPDXLicenseListVersion_3_10 | SPDXLicenseListVersion_3_16 | SPDXLicenseListVersion_3_23 + | SPDXLicenseListVersion_3_25 deriving (Eq, Ord, Show, Enum, Bounded) allVers :: Set.Set SPDXLicenseListVersion allVers = Set.fromList [minBound .. maxBound] prettyVer :: SPDXLicenseListVersion -> Text +prettyVer SPDXLicenseListVersion_3_25 = "SPDX License List 3.25" prettyVer SPDXLicenseListVersion_3_23 = "SPDX License List 3.23" prettyVer SPDXLicenseListVersion_3_16 = "SPDX License List 3.16" prettyVer SPDXLicenseListVersion_3_10 = "SPDX License List 3.10" @@ -48,6 +50,7 @@ prettyVer SPDXLicenseListVersion_3_2 = "SPDX License List 3.2" prettyVer SPDXLicenseListVersion_3_0 = "SPDX License List 3.0" suffixVer :: SPDXLicenseListVersion -> String +suffixVer SPDXLicenseListVersion_3_25 = "_3_25" suffixVer SPDXLicenseListVersion_3_23 = "_3_23" suffixVer SPDXLicenseListVersion_3_16 = "_3_16" suffixVer SPDXLicenseListVersion_3_10 = "_3_10" @@ -60,7 +63,7 @@ suffixVer SPDXLicenseListVersion_3_0 = "_3_0" -- Per version ------------------------------------------------------------------------------- -data PerV a = PerV a a a a a a a +data PerV a = PerV a a a a a a a a deriving (Show, Functor, Foldable, Traversable) class Functor f => Representable i f | f -> i where @@ -68,13 +71,14 @@ class Functor f => Representable i f | f -> i where tabulate :: (i -> a) -> f a instance Representable SPDXLicenseListVersion PerV where - index SPDXLicenseListVersion_3_0 (PerV x _ _ _ _ _ _) = x - index SPDXLicenseListVersion_3_2 (PerV _ x _ _ _ _ _) = x - index SPDXLicenseListVersion_3_6 (PerV _ _ x _ _ _ _) = x - index SPDXLicenseListVersion_3_9 (PerV _ _ _ x _ _ _) = x - index SPDXLicenseListVersion_3_10 (PerV _ _ _ _ x _ _) = x - index SPDXLicenseListVersion_3_16 (PerV _ _ _ _ _ x _) = x - index SPDXLicenseListVersion_3_23 (PerV _ _ _ _ _ _ x) = x + index SPDXLicenseListVersion_3_0 (PerV x _ _ _ _ _ _ _) = x + index SPDXLicenseListVersion_3_2 (PerV _ x _ _ _ _ _ _) = x + index SPDXLicenseListVersion_3_6 (PerV _ _ x _ _ _ _ _) = x + index SPDXLicenseListVersion_3_9 (PerV _ _ _ x _ _ _ _) = x + index SPDXLicenseListVersion_3_10 (PerV _ _ _ _ x _ _ _) = x + index SPDXLicenseListVersion_3_16 (PerV _ _ _ _ _ x _ _) = x + index SPDXLicenseListVersion_3_23 (PerV _ _ _ _ _ _ x _) = x + index SPDXLicenseListVersion_3_25 (PerV _ _ _ _ _ _ _ x) = x tabulate f = PerV (f SPDXLicenseListVersion_3_0) @@ -84,6 +88,7 @@ instance Representable SPDXLicenseListVersion PerV where (f SPDXLicenseListVersion_3_10) (f SPDXLicenseListVersion_3_16) (f SPDXLicenseListVersion_3_23) + (f SPDXLicenseListVersion_3_25) ------------------------------------------------------------------------------- -- Sorting @@ -162,6 +167,7 @@ toConstructorName t = t special :: Text -> Text special "0BSD" = "NullBSD" special "389_exception" = "DS389_exception" + special "3D_Slicer_1_0" = "X3D_Slicer_1_0" special u = u mkList :: [Text] -> Text diff --git a/cabal-install-solver/ChangeLog.md b/cabal-install-solver/ChangeLog.md index 3cd7794fe29..e98218e072c 100644 --- a/cabal-install-solver/ChangeLog.md +++ b/cabal-install-solver/ChangeLog.md @@ -1 +1 @@ -Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.12.1.0.md +Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.2.0.md diff --git a/cabal-install-solver/cabal-install-solver.cabal b/cabal-install-solver/cabal-install-solver.cabal index 2cb276e910a..ef9de96fe38 100644 --- a/cabal-install-solver/cabal-install-solver.cabal +++ b/cabal-install-solver/cabal-install-solver.cabal @@ -1,6 +1,6 @@ cabal-version: 2.2 name: cabal-install-solver -version: 3.13.0.0 +version: 3.14.2.0 synopsis: The solver component of cabal-install description: The solver component used in the cabal-install command-line program. @@ -99,10 +99,10 @@ library build-depends: , array >=0.4 && <0.6 - , base >=4.13 && <4.21 + , base >=4.13 && <4.22 , bytestring >=0.10.6.0 && <0.13 - , Cabal ^>=3.13 - , Cabal-syntax ^>=3.13 + , Cabal ^>=3.14 + , Cabal-syntax ^>=3.14 , containers >=0.5.6.2 && <0.8 , edit-distance ^>= 0.2.2 , directory >= 1.3.7.0 && < 1.4 @@ -131,7 +131,7 @@ Test-Suite unit-tests UnitTests.Distribution.Solver.Modular.MessageUtils build-depends: - , base >= 4.13 && <4.21 + , base >= 4.13 && <4.22 , Cabal-syntax , cabal-install-solver , tasty >= 1.2.3 && <1.6 diff --git a/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs b/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs index cde029d195b..457cd6c9b13 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/OptionalStanza.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Solver.Types.OptionalStanza ( -- * OptionalStanza @@ -38,7 +37,7 @@ import Distribution.Utils.Structured (Structured (..), nominalStructure) data OptionalStanza = TestStanzas | BenchStanzas - deriving (Eq, Ord, Enum, Bounded, Show, Generic, Typeable) + deriving (Eq, Ord, Enum, Bounded, Show, Generic) -- | String representation of an OptionalStanza. showStanza :: OptionalStanza -> String diff --git a/cabal-install-solver/src/Distribution/Solver/Types/PkgConfigDb.hs b/cabal-install-solver/src/Distribution/Solver/Types/PkgConfigDb.hs index ccf52ea2c8c..a16bde1f0b0 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/PkgConfigDb.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/PkgConfigDb.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE LambdaCase #-} ----------------------------------------------------------------------------- @@ -53,7 +52,7 @@ import Distribution.Verbosity (Verbosity) -- but we don't know the exact version (because parsing of the version number -- failed). newtype PkgConfigDb = PkgConfigDb (M.Map PkgconfigName (Maybe PkgconfigVersion)) - deriving (Show, Generic, Typeable) + deriving (Show, Generic) instance Binary PkgConfigDb instance Structured PkgConfigDb diff --git a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs index c57ade0c3e3..db5e9956aed 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/ProjectConfigPath.hs @@ -1,4 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE ViewPatterns #-} module Distribution.Solver.Types.ProjectConfigPath ( @@ -7,6 +8,7 @@ module Distribution.Solver.Types.ProjectConfigPath , projectConfigPathRoot , nullProjectConfigPath , consProjectConfigPath + , unconsProjectConfigPath -- * Messages , docProjectConfigPath @@ -16,21 +18,24 @@ module Distribution.Solver.Types.ProjectConfigPath -- * Checks and Normalization , isCyclicConfigPath + , isTopLevelConfigPath , canonicalizeConfigPath ) where import Distribution.Solver.Compat.Prelude hiding (toList, (<>)) +import qualified Distribution.Solver.Compat.Prelude as P ((<>)) import Prelude (sequence) import Data.Coerce (coerce) import Data.List.NonEmpty ((<|)) -import Network.URI (parseURI) +import Network.URI (parseURI, parseAbsoluteURI) import System.Directory import System.FilePath import qualified Data.List.NonEmpty as NE import Distribution.Solver.Modular.Version (VR) import Distribution.Pretty (prettyShow) import Text.PrettyPrint +import Distribution.Simple.Utils (ordNub) -- | Path to a configuration file, either a singleton project root, or a longer -- list representing a path to an import. The path is a non-empty list that we @@ -44,7 +49,41 @@ import Text.PrettyPrint -- List elements are relative to each other but once canonicalized, elements are -- relative to the directory of the project root. newtype ProjectConfigPath = ProjectConfigPath (NonEmpty FilePath) - deriving (Eq, Ord, Show, Generic) + deriving (Eq, Show, Generic) + +-- | Sorts URIs after local file paths and longer file paths after shorter ones +-- as measured by the number of path segments. If still equal, then sorting is +-- lexical. +-- +-- The project itself, a single element root path, compared to any of the +-- configuration paths it imports, should always sort first. Comparing one +-- project root path against another is done lexically. +instance Ord ProjectConfigPath where + compare pa@(ProjectConfigPath (NE.toList -> as)) pb@(ProjectConfigPath (NE.toList -> bs)) = + case (as, bs) of + -- There should only ever be one root project path, only one path + -- with length 1. Comparing it to itself should be EQ. Don't assume + -- this though, do a comparison anyway when both sides have length + -- 1. The root path, the project itself, should always be the first + -- path in a sorted listing. + ([a], [b]) -> compare a b + ([_], _) -> LT + (_, [_]) -> GT + + (a:_, b:_) -> case (parseAbsoluteURI a, parseAbsoluteURI b) of + (Just ua, Just ub) -> compare ua ub P.<> compare aImporters bImporters + (Just _, Nothing) -> GT + (Nothing, Just _) -> LT + (Nothing, Nothing) -> compare (splitPath a) (splitPath b) P.<> compare aImporters bImporters + _ -> + compare (length as) (length bs) + P.<> compare (length aPaths) (length bPaths) + P.<> compare aPaths bPaths + where + aPaths = splitPath <$> as + bPaths = splitPath <$> bs + aImporters = snd $ unconsProjectConfigPath pa + bImporters = snd $ unconsProjectConfigPath pb instance Binary ProjectConfigPath instance Structured ProjectConfigPath @@ -99,10 +138,11 @@ docProjectConfigPath (ProjectConfigPath (p :| ps)) = vcat $ -- "- cabal.project\n- project-cabal/constraints.config\n- project-cabal/ghc-latest.config\n- project-cabal/ghc-options.config\n- project-cabal/pkgs.config\n- project-cabal/pkgs/benchmarks.config\n- project-cabal/pkgs/buildinfo.config\n- project-cabal/pkgs/cabal.config\n- project-cabal/pkgs/install.config\n- project-cabal/pkgs/integration-tests.config\n- project-cabal/pkgs/tests.config" docProjectConfigPaths :: [ProjectConfigPath] -> Doc docProjectConfigPaths ps = vcat - [ text "-" <+> text p | ProjectConfigPath (p :| _) <- ps ] + [ text "-" <+> text p + | p <- ordNub [ p | ProjectConfigPath (p :| _) <- ps ] + ] --- | A message for a cyclical import, assuming the head of the path is the --- duplicate. +-- | A message for a cyclical import, a "cyclical import of". cyclicalImportMsg :: ProjectConfigPath -> Doc cyclicalImportMsg path@(ProjectConfigPath (duplicate :| _)) = vcat @@ -138,10 +178,19 @@ nullProjectConfigPath = ProjectConfigPath $ "unused" :| [] isCyclicConfigPath :: ProjectConfigPath -> Bool isCyclicConfigPath (ProjectConfigPath p) = length p /= length (NE.nub p) +-- | Check if the project config path is top-level, meaning it was not included by +-- some other project config. +isTopLevelConfigPath :: ProjectConfigPath -> Bool +isTopLevelConfigPath (ProjectConfigPath p) = NE.length p == 1 + -- | Prepends the path of the importee to the importer path. consProjectConfigPath :: FilePath -> ProjectConfigPath -> ProjectConfigPath consProjectConfigPath p ps = ProjectConfigPath (p <| coerce ps) +-- | Split the path into the importee and the importer path. +unconsProjectConfigPath :: ProjectConfigPath -> (FilePath, Maybe ProjectConfigPath) +unconsProjectConfigPath ps = fmap ProjectConfigPath <$> NE.uncons (coerce ps) + -- | Make paths relative to the directory of the root of the project, not -- relative to the file they were imported from. makeRelativeConfigPath :: FilePath -> ProjectConfigPath -> ProjectConfigPath diff --git a/cabal-install-solver/src/Distribution/Solver/Types/SourcePackage.hs b/cabal-install-solver/src/Distribution/Solver/Types/SourcePackage.hs index 35cba9b6e4a..0162f6e7f02 100644 --- a/cabal-install-solver/src/Distribution/Solver/Types/SourcePackage.hs +++ b/cabal-install-solver/src/Distribution/Solver/Types/SourcePackage.hs @@ -1,5 +1,4 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveDataTypeable #-} module Distribution.Solver.Types.SourcePackage ( PackageDescriptionOverride , SourcePackage(..) @@ -25,7 +24,7 @@ data SourcePackage loc = SourcePackage , srcpkgSource :: loc , srcpkgDescrOverride :: PackageDescriptionOverride } - deriving (Eq, Show, Generic, Typeable) + deriving (Eq, Show, Generic) instance Binary loc => Binary (SourcePackage loc) instance Structured loc => Structured (SourcePackage loc) diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index db6d1452ae3..40efe8393e5 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -1,7 +1,7 @@ Cabal-Version: 3.0 Name: cabal-install -Version: 3.13.0.0 +Version: 3.14.2.0 Synopsis: The command-line interface for Cabal and Hackage. Description: The \'cabal\' command-line program simplifies the process of managing @@ -52,16 +52,16 @@ common warnings ghc-options: -Wnoncanonical-monadfail-instances common base-dep - build-depends: base >=4.13 && <4.21 + build-depends: base >=4.13 && <4.22 common cabal-dep - build-depends: Cabal ^>=3.13 + build-depends: Cabal >=3.14.2 && <3.15 common cabal-syntax-dep - build-depends: Cabal-syntax ^>=3.13 + build-depends: Cabal-syntax ^>=3.14 common cabal-install-solver-dep - build-depends: cabal-install-solver ^>=3.13 + build-depends: cabal-install-solver ^>=3.14 library import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep @@ -221,7 +221,7 @@ library build-depends: async >= 2.0 && < 2.3, array >= 0.4 && < 0.6, - base16-bytestring >= 0.1.1 && < 1.1.0.0, + base16-bytestring >= 0.1.1 && < 1.1, binary >= 0.7.3 && < 0.9, bytestring >= 0.10.6.0 && < 0.13, containers >= 0.5.6.2 && < 0.8, @@ -231,13 +231,12 @@ library edit-distance >= 0.2.2 && < 0.3, exceptions >= 0.10.4 && < 0.11, filepath >= 1.4.0.0 && < 1.6, - hashable >= 1.0 && < 1.6, HTTP >= 4000.1.5 && < 4000.5, mtl >= 2.0 && < 2.4, network-uri >= 2.6.0.2 && < 2.7, pretty >= 1.1 && < 1.2, process >= 1.2.3.0 && < 1.7, - random >= 1.2 && < 1.3, + random >= 1.2 && < 1.4, stm >= 2.0 && < 2.6, tar >= 0.5.0.3 && < 0.7, time >= 1.5.0.1 && < 1.15, @@ -245,7 +244,7 @@ library hackage-security >= 0.6.2.0 && < 0.7, text >= 1.2.3 && < 1.3 || >= 2.0 && < 2.2, parsec >= 3.1.13.0 && < 3.2, - open-browser >= 0.2.1.0 && < 0.3, + open-browser >= 0.2.1.0 && < 0.4, regex-base >= 0.94.0.0 && <0.95, regex-posix >= 0.96.0.0 && <0.97, safe-exceptions >= 0.1.7.0 && < 0.2, @@ -261,7 +260,7 @@ library -- newer directory for symlinks build-depends: Win32 >= 2.8 && < 3, directory >=1.3.1.0 else - build-depends: unix >= 2.5 && < 2.9 + build-depends: unix >= 2.5 && < 2.8 || >= 2.8.6.0 && < 2.9 if flag(lukko) build-depends: lukko >= 0.1 && <0.2 @@ -333,6 +332,7 @@ test-suite unit-tests UnitTests.Options build-depends: +<<<<<<< HEAD array, bytestring, cabal-install, @@ -355,6 +355,30 @@ test-suite unit-tests tasty-hunit >= 0.10, tree-diff, QuickCheck >= 2.14.3 && <2.16 +======= + , array + , bytestring + , cabal-install + , Cabal-tree-diff + , Cabal-QuickCheck + , Cabal-tests + , containers + , directory + , filepath + , mtl + , network-uri >= 2.6.2.0 && <2.7 + , random + , tar + , time + , zlib + , tasty >= 1.2.3 && <1.6 + , tasty-golden >=2.3.1.1 && <2.4 + , tasty-quickcheck ^>=0.11 + , tasty-expected-failure + , tasty-hunit >= 0.10 + , tree-diff + , QuickCheck >= 2.14.3 && <2.18 +>>>>>>> af3395c34 (Bump QuickCheck) -- Tests to run with a limited stack and heap size @@ -431,7 +455,6 @@ test-suite long-tests containers, directory, filepath, - hashable, mtl, network-uri >= 2.6.2.0 && <2.7, random, @@ -440,5 +463,5 @@ test-suite long-tests tasty-expected-failure, tasty-hunit >= 0.10, tasty-quickcheck <0.12, - QuickCheck >= 2.14 && <2.16, + QuickCheck >= 2.14 && <2.18, pretty-show >= 1.6.15 diff --git a/cabal-install/changelog b/cabal-install/changelog index 281329c7fe7..63f64ddfe49 100644 --- a/cabal-install/changelog +++ b/cabal-install/changelog @@ -1,5 +1,14 @@ -*-change-log-*- +3.14.2.0 Mikolaj Konarski April 2025 + * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.2.0.md + +3.14.1.0 Hécate November 2024 + * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.1.0.md + +3.14.0.0 Hécate September 2024 + * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.0.0.md + 3.12.1.0 Artem Pelenitsyn June 2024 * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.12.1.0.md diff --git a/cabal-install/src/Distribution/Client/Check.hs b/cabal-install/src/Distribution/Client/Check.hs index f8c1d456751..cc119324a49 100644 --- a/cabal-install/src/Distribution/Client/Check.hs +++ b/cabal-install/src/Distribution/Client/Check.hs @@ -1,9 +1,3 @@ -{-# LANGUAGE CPP #-} - ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.Check -- Copyright : (c) Lennart Kolmodin 2008 diff --git a/cabal-install/src/Distribution/Client/CmdInstall.hs b/cabal-install/src/Distribution/Client/CmdInstall.hs index 210ac78ca01..1587b20a44d 100644 --- a/cabal-install/src/Distribution/Client/CmdInstall.hs +++ b/cabal-install/src/Distribution/Client/CmdInstall.hs @@ -1126,8 +1126,8 @@ symlink overwritePolicy installDir (mkSourceBinDir unit) - (mkExeName exe) (mkFinalExeName exe) + (mkExeName exe) -- | -- -- * When 'InstallCheckOnly', warn if install would fail overwrite policy @@ -1172,7 +1172,7 @@ installCheckUnitExes errorMessage installdir exe = case overwritePolicy of NeverOverwrite -> "Path '" - <> (installdir prettyShow exe) + <> (installdir mkFinalExeName exe) <> "' already exists. " <> "Use --overwrite-policy=always to overwrite." -- This shouldn't even be possible, but we keep it in case symlinking or diff --git a/cabal-install/src/Distribution/Client/CmdOutdated.hs b/cabal-install/src/Distribution/Client/CmdOutdated.hs index ed40a1a85e6..ab5e7cc21a0 100644 --- a/cabal-install/src/Distribution/Client/CmdOutdated.hs +++ b/cabal-install/src/Distribution/Client/CmdOutdated.hs @@ -1,11 +1,6 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.CmdOutdated -- Maintainer : cabal-devel@haskell.org diff --git a/cabal-install/src/Distribution/Client/CmdPath.hs b/cabal-install/src/Distribution/Client/CmdPath.hs index 8ca8d6181f1..0d3e538a625 100644 --- a/cabal-install/src/Distribution/Client/CmdPath.hs +++ b/cabal-install/src/Distribution/Client/CmdPath.hs @@ -1,12 +1,7 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.CmdPath -- Maintainer : cabal-devel@haskell.org diff --git a/cabal-install/src/Distribution/Client/CmdTest.hs b/cabal-install/src/Distribution/Client/CmdTest.hs index 7c1adffdc91..3812bd6af87 100644 --- a/cabal-install/src/Distribution/Client/CmdTest.hs +++ b/cabal-install/src/Distribution/Client/CmdTest.hs @@ -33,7 +33,8 @@ import Distribution.Client.NixStyleOptions ) import Distribution.Client.ProjectOrchestration import Distribution.Client.Setup - ( ConfigFlags (..) + ( CommonSetupFlags (..) + , ConfigFlags (..) , GlobalFlags (..) ) import Distribution.Client.TargetProblem @@ -66,7 +67,6 @@ import Distribution.Verbosity import qualified System.Exit (exitSuccess) import Distribution.Client.Errors -import Distribution.Client.Setup (CommonSetupFlags (..)) import GHC.Environment ( getFullArgs ) diff --git a/cabal-install/src/Distribution/Client/CmdUpdate.hs b/cabal-install/src/Distribution/Client/CmdUpdate.hs index c388ba39871..c438ed6b2cf 100644 --- a/cabal-install/src/Distribution/Client/CmdUpdate.hs +++ b/cabal-install/src/Distribution/Client/CmdUpdate.hs @@ -1,6 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-} diff --git a/cabal-install/src/Distribution/Client/Compat/Semaphore.hs b/cabal-install/src/Distribution/Client/Compat/Semaphore.hs index 42c398b5c33..60fda2cf389 100644 --- a/cabal-install/src/Distribution/Client/Compat/Semaphore.hs +++ b/cabal-install/src/Distribution/Client/Compat/Semaphore.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# OPTIONS_GHC -funbox-strict-fields #-} module Distribution.Client.Compat.Semaphore @@ -22,13 +21,12 @@ import Control.Exception (mask_, onException) import Control.Monad (join, unless) import Data.List.NonEmpty (NonEmpty (..)) import qualified Data.List.NonEmpty as NE -import Data.Typeable (Typeable) -- | 'QSem' is a quantity semaphore in which the resource is acquired -- and released in units of one. It provides guaranteed FIFO ordering -- for satisfying blocked `waitQSem` calls. data QSem = QSem !(TVar Int) !(TVar [TVar Bool]) !(TVar [TVar Bool]) - deriving (Eq, Typeable) + deriving (Eq) newQSem :: Int -> IO QSem newQSem i = atomically $ do diff --git a/cabal-install/src/Distribution/Client/Config.hs b/cabal-install/src/Distribution/Client/Config.hs index 2faf9e1756d..e3c768643ce 100644 --- a/cabal-install/src/Distribution/Client/Config.hs +++ b/cabal-install/src/Distribution/Client/Config.hs @@ -49,7 +49,10 @@ module Distribution.Client.Config ) where import Distribution.Client.Compat.Prelude -import Distribution.Compat.Environment (lookupEnv) +import Distribution.Compat.Environment + ( getEnvironment + , lookupEnv + ) import Prelude () import Language.Haskell.Extension (Language (Haskell2010)) @@ -126,9 +129,6 @@ import Distribution.Client.Version ( cabalInstallVersion ) import qualified Distribution.Compat.CharParsing as P -import Distribution.Compat.Environment - ( getEnvironment - ) import Distribution.Compiler ( CompilerFlavor (..) , defaultCompilerFlavor @@ -226,7 +226,8 @@ import System.Directory , renameFile ) import System.FilePath - ( takeDirectory + ( normalise + , takeDirectory , (<.>) , () ) @@ -1679,7 +1680,12 @@ postProcessRepo lineno reponameStr repo0 = do -- Note: the trailing colon is important "file+noindex:" -> do let uri = remoteRepoURI repo0 - return $ Left $ LocalRepo reponame (uriPath uri) (uriFragment uri == "#shared-cache") + return $ + Left $ + LocalRepo + reponame + (normalise (uriPath uri)) + (uriFragment uri == "#shared-cache") _ -> do let repo = repo0{remoteRepoName = reponame} diff --git a/cabal-install/src/Distribution/Client/Configure.hs b/cabal-install/src/Distribution/Client/Configure.hs index 6634f874071..0051be9e399 100644 --- a/cabal-install/src/Distribution/Client/Configure.hs +++ b/cabal-install/src/Distribution/Client/Configure.hs @@ -1,10 +1,5 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.Configure -- Copyright : (c) David Himmelstrup 2005, diff --git a/cabal-install/src/Distribution/Client/Errors.hs b/cabal-install/src/Distribution/Client/Errors.hs index d25c59af41e..665f34edf9a 100644 --- a/cabal-install/src/Distribution/Client/Errors.hs +++ b/cabal-install/src/Distribution/Client/Errors.hs @@ -186,7 +186,7 @@ data CabalInstallException | MissingPackageList RemoteRepo | CmdPathAcceptsNoTargets | CmdPathCommandDoesn'tSupportDryRun - deriving (Show, Typeable) + deriving (Show) exceptionCodeCabalInstall :: CabalInstallException -> Int exceptionCodeCabalInstall e = case e of diff --git a/cabal-install/src/Distribution/Client/FileMonitor.hs b/cabal-install/src/Distribution/Client/FileMonitor.hs index 0872a9a9504..6883b6b107d 100644 --- a/cabal-install/src/Distribution/Client/FileMonitor.hs +++ b/cabal-install/src/Distribution/Client/FileMonitor.hs @@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -35,7 +34,6 @@ import Prelude () import Data.Binary.Get (runGetOrFail) import qualified Data.ByteString.Lazy as BS -import qualified Data.Hashable as Hashable import qualified Data.Map.Strict as Map import Control.Exception @@ -51,6 +49,7 @@ import qualified Control.Monad.State as State import Control.Monad.Trans (MonadIO, liftIO) import Distribution.Client.Glob +import Distribution.Client.HashValue import Distribution.Client.Utils (MergeResult (..), mergeBy) import Distribution.Compat.Time import Distribution.Simple.FileMonitor.Types @@ -83,8 +82,6 @@ data MonitorStateFileSet instance Binary MonitorStateFileSet instance Structured MonitorStateFileSet -type Hash = Int - -- | The state necessary to determine whether a monitored file has changed. -- -- This covers all the cases of 'MonitorFilePath' except for globs which is @@ -107,7 +104,7 @@ data MonitorStateFileStatus | -- | cached file mtime MonitorStateFileModTime !ModTime | -- | cached mtime and content hash - MonitorStateFileHashed !ModTime !Hash + MonitorStateFileHashed !ModTime !HashValue | MonitorStateDirExists | -- | cached dir mtime MonitorStateDirModTime !ModTime @@ -961,21 +958,21 @@ buildMonitorStateGlobRel -- updating a file monitor the set of files is the same or largely the same so -- we can grab the previously known content hashes with their corresponding -- mtimes. -type FileHashCache = Map FilePath (ModTime, Hash) +type FileHashCache = Map FilePath (ModTime, HashValue) -- | We declare it a cache hit if the mtime of a file is the same as before. -lookupFileHashCache :: FileHashCache -> FilePath -> ModTime -> Maybe Hash +lookupFileHashCache :: FileHashCache -> FilePath -> ModTime -> Maybe HashValue lookupFileHashCache hashcache file mtime = do (mtime', hash) <- Map.lookup file hashcache guard (mtime' == mtime) return hash -- | Either get it from the cache or go read the file -getFileHash :: FileHashCache -> FilePath -> FilePath -> ModTime -> IO Hash +getFileHash :: FileHashCache -> FilePath -> FilePath -> ModTime -> IO HashValue getFileHash hashcache relfile absfile mtime = case lookupFileHashCache hashcache relfile mtime of Just hash -> return hash - Nothing -> readFileHash absfile + Nothing -> readFileHashValue absfile -- | Build a 'FileHashCache' from the previous 'MonitorStateFileSet'. While -- in principle we could preserve the structure of the previous state, given @@ -998,7 +995,7 @@ readCacheFileHashes monitor = collectAllFileHashes singlePaths `Map.union` collectAllGlobHashes globPaths - collectAllFileHashes :: [MonitorStateFile] -> Map FilePath (ModTime, Hash) + collectAllFileHashes :: [MonitorStateFile] -> Map FilePath (ModTime, HashValue) collectAllFileHashes singlePaths = Map.fromList [ (fpath, (mtime, hash)) @@ -1010,7 +1007,7 @@ readCacheFileHashes monitor = singlePaths ] - collectAllGlobHashes :: [MonitorStateGlob] -> Map FilePath (ModTime, Hash) + collectAllGlobHashes :: [MonitorStateGlob] -> Map FilePath (ModTime, HashValue) collectAllGlobHashes globPaths = Map.fromList [ (fpath, (mtime, hash)) @@ -1018,7 +1015,7 @@ readCacheFileHashes monitor = , (fpath, (mtime, hash)) <- collectGlobHashes "" gstate ] - collectGlobHashes :: FilePath -> MonitorStateGlobRel -> [(FilePath, (ModTime, Hash))] + collectGlobHashes :: FilePath -> MonitorStateGlobRel -> [(FilePath, (ModTime, HashValue))] collectGlobHashes dir (MonitorStateGlobDirs _ _ _ entries) = [ res | (subdir, fstate) <- entries @@ -1043,13 +1040,13 @@ probeFileModificationTime root file mtime = do unless unchanged (somethingChanged file) -- | Within the @root@ directory, check if @file@ has its 'ModTime' and --- 'Hash' is the same as @mtime@ and @hash@, short-circuiting if it is +-- 'HashValue' is the same as @mtime@ and @hash@, short-circuiting if it is -- different. probeFileModificationTimeAndHash :: FilePath -> FilePath -> ModTime - -> Hash + -> HashValue -> ChangedM () probeFileModificationTimeAndHash root file mtime hash = do unchanged <- @@ -1092,12 +1089,12 @@ checkModificationTimeUnchanged root file mtime = return (mtime == mtime') -- | Returns @True@ if, inside the @root@ directory, @file@ has the --- same 'ModTime' and 'Hash' as @mtime and @chash@. +-- same 'ModTime' and 'HashValue' as @mtime and @chash@. checkFileModificationTimeAndHashUnchanged :: FilePath -> FilePath -> ModTime - -> Hash + -> HashValue -> IO Bool checkFileModificationTimeAndHashUnchanged root file mtime chash = handleIOException False $ do @@ -1105,15 +1102,9 @@ checkFileModificationTimeAndHashUnchanged root file mtime chash = if mtime == mtime' then return True else do - chash' <- readFileHash (root file) + chash' <- readFileHashValue (root file) return (chash == chash') --- | Read a non-cryptographic hash of a @file@. -readFileHash :: FilePath -> IO Hash -readFileHash file = - withBinaryFile file ReadMode $ \hnd -> - evaluate . Hashable.hash =<< BS.hGetContents hnd - -- | Given a directory @dir@, return @Nothing@ if its 'ModTime' -- is the same as @mtime@, and the new 'ModTime' if it is not. checkDirectoryModificationTime :: FilePath -> ModTime -> IO (Maybe ModTime) @@ -1129,7 +1120,7 @@ checkDirectoryModificationTime dir mtime = handleErrorCall :: a -> IO a -> IO a handleErrorCall e = handle handler where - handler (ErrorCallWithLocation _ _) = return e + handler (ErrorCall _) = return e -- | Run an IO computation, returning @e@ if there is any 'IOException'. -- diff --git a/cabal-install/src/Distribution/Client/GenBounds.hs b/cabal-install/src/Distribution/Client/GenBounds.hs index 935db05fa43..d5fb7a5b240 100644 --- a/cabal-install/src/Distribution/Client/GenBounds.hs +++ b/cabal-install/src/Distribution/Client/GenBounds.hs @@ -1,9 +1,3 @@ -{-# LANGUAGE CPP #-} - ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.GenBounds -- Copyright : (c) Doug Beardsley 2015 diff --git a/cabal-install/src/Distribution/Client/GlobalFlags.hs b/cabal-install/src/Distribution/Client/GlobalFlags.hs index 6b41a79b5ef..2fd19e71b50 100644 --- a/cabal-install/src/Distribution/Client/GlobalFlags.hs +++ b/cabal-install/src/Distribution/Client/GlobalFlags.hs @@ -57,7 +57,8 @@ import Network.URI , uriScheme ) import System.FilePath - ( () + ( isAbsolute + , () ) import qualified Distribution.Client.Security.DNS as Sec.DNS @@ -69,8 +70,6 @@ import qualified Hackage.Security.Client.Repository.Remote as Sec.Remote import qualified Hackage.Security.Util.Path as Sec import qualified Hackage.Security.Util.Pretty as Sec -import qualified System.FilePath.Posix as FilePath.Posix - -- ------------------------------------------------------------ -- * Global flags @@ -192,7 +191,7 @@ withRepoContext' ignoreExpiry extraPaths = \callback -> do for_ localNoIndexRepos $ \local -> - unless (FilePath.Posix.isAbsolute (localRepoPath local)) $ + unless (isAbsolute (localRepoPath local)) $ warn verbosity $ "file+noindex " ++ unRepoName (localRepoName local) ++ " repository path is not absolute; this is fragile, and not recommended" diff --git a/cabal-install/src/Distribution/Client/HashValue.hs b/cabal-install/src/Distribution/Client/HashValue.hs index e19956b7ed3..c5698f27f1e 100644 --- a/cabal-install/src/Distribution/Client/HashValue.hs +++ b/cabal-install/src/Distribution/Client/HashValue.hs @@ -1,5 +1,4 @@ {-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Distribution.Client.HashValue @@ -38,7 +37,7 @@ import System.IO (IOMode (..), withBinaryFile) -- package ids. newtype HashValue = HashValue BS.ByteString - deriving (Eq, Generic, Show, Typeable) + deriving (Eq, Generic, Show) -- Cannot do any sensible validation here. Although we use SHA256 -- for stuff we hash ourselves, we can also get hashes from TUF diff --git a/cabal-install/src/Distribution/Client/IndexUtils.hs b/cabal-install/src/Distribution/Client/IndexUtils.hs index f66cf0d651c..d3dbe533cd8 100644 --- a/cabal-install/src/Distribution/Client/IndexUtils.hs +++ b/cabal-install/src/Distribution/Client/IndexUtils.hs @@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GADTs #-} @@ -8,10 +7,6 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.IndexUtils -- Copyright : (c) Duncan Coutts 2008 @@ -457,11 +452,11 @@ readRepoIndex verbosity repoCtxt repo idxState = if isDoesNotExistError e then do case repo of - RepoRemote{..} -> dieWithException verbosity $ MissingPackageList repoRemote - RepoSecure{..} -> dieWithException verbosity $ MissingPackageList repoRemote + RepoRemote{..} -> warn verbosity $ exceptionMessageCabalInstall $ MissingPackageList repoRemote + RepoSecure{..} -> warn verbosity $ exceptionMessageCabalInstall $ MissingPackageList repoRemote RepoLocalNoIndex local _ -> warn verbosity $ - "Error during construction of local+noindex " + "Error during construction of file+noindex " ++ unRepoName (localRepoName local) ++ " repository index: " ++ show e @@ -521,7 +516,7 @@ whenCacheOutOfDate index action = do then action else if localNoIndex index - then return () -- TODO: don't update cache for local+noindex repositories + then return () -- TODO: don't update cache for file+noindex repositories else do indexTime <- getModTime $ indexFile index cacheTime <- getModTime $ cacheFile index @@ -692,7 +687,7 @@ data PreferredVersionsParseError = PreferredVersionsParseError , preferredVersionsOriginalDependency :: String -- ^ Original input that produced the parser error. } - deriving (Generic, Read, Show, Eq, Ord, Typeable) + deriving (Generic, Read, Show, Eq, Ord) -- | Parse `preferred-versions` file, collecting parse errors that can be shown -- in error messages. @@ -1120,12 +1115,14 @@ readIndexCache verbosity index = do -- 'dieWithException's if it fails again). Throws IOException if any arise. readNoIndexCache :: Verbosity -> Index -> IO NoIndexCache readNoIndexCache verbosity index = do - cacheOrFail <- readNoIndexCache' index + cacheOrFail <- readNoIndexCache' verbosity index case cacheOrFail of Left msg -> do warn verbosity $ concat - [ "Parsing the index cache failed (" + [ "Parsing the index cache for repo \"" + , unRepoName (repoName repo) + , "\" failed (" , msg , "). " , "Trying to regenerate the index cache..." @@ -1133,10 +1130,12 @@ readNoIndexCache verbosity index = do updatePackageIndexCacheFile verbosity index - either (dieWithException verbosity . CorruptedIndexCache) return =<< readNoIndexCache' index + either (dieWithException verbosity . CorruptedIndexCache) return =<< readNoIndexCache' verbosity index -- we don't hash cons local repository cache, they are hopefully small Right res -> return res + where + RepoIndex _ctxt repo = index -- | Read the 'Index' cache from the filesystem. Throws IO exceptions -- if any arise and returns Left on invalid input. @@ -1147,8 +1146,12 @@ readIndexCache' index | otherwise = Right . read00IndexCache <$> BSS.readFile (cacheFile index) -readNoIndexCache' :: Index -> IO (Either String NoIndexCache) -readNoIndexCache' index = structuredDecodeFileOrFail (cacheFile index) +readNoIndexCache' :: Verbosity -> Index -> IO (Either String NoIndexCache) +readNoIndexCache' verbosity index = do + exists <- doesFileExist (cacheFile index) + if exists + then structuredDecodeFileOrFail (cacheFile index) + else updatePackageIndexCacheFile verbosity index >> readNoIndexCache' verbosity index -- | Write the 'Index' cache to the filesystem writeIndexCache :: Index -> Cache -> IO () diff --git a/cabal-install/src/Distribution/Client/Init/NonInteractive/Heuristics.hs b/cabal-install/src/Distribution/Client/Init/NonInteractive/Heuristics.hs index 138f9684553..e6838aa2e45 100644 --- a/cabal-install/src/Distribution/Client/Init/NonInteractive/Heuristics.hs +++ b/cabal-install/src/Distribution/Client/Init/NonInteractive/Heuristics.hs @@ -165,14 +165,14 @@ guessAuthorEmail = guessGitInfo "user.email" guessGitInfo :: Interactive m => String -> m (Maybe String) guessGitInfo target = do - localInfo <- readProcessWithExitCode "git" ["config", "--local", target] "" - if null $ snd' localInfo - then do - globalInfo <- readProcessWithExitCode "git" ["config", "--global", target] "" - case fst' globalInfo of - ExitSuccess -> return $ Just (trim $ snd' globalInfo) - _ -> return Nothing - else return $ Just (trim $ snd' localInfo) - where - fst' (x, _, _) = x - snd' (_, x, _) = x + localInfo <- maybeReadProcessWithExitCode "git" ["config", "--local", target] "" + case localInfo of + Nothing -> return Nothing + Just (_, localStdout, _) -> + if null localStdout + then do + globalInfo <- maybeReadProcessWithExitCode "git" ["config", "--global", target] "" + case globalInfo of + Just (ExitSuccess, globalStdout, _) -> return $ Just (trim globalStdout) + _ -> return Nothing + else return $ Just (trim localStdout) diff --git a/cabal-install/src/Distribution/Client/Init/Types.hs b/cabal-install/src/Distribution/Client/Init/Types.hs index 0887cb54a71..8da7ba2b52b 100644 --- a/cabal-install/src/Distribution/Client/Init/Types.hs +++ b/cabal-install/src/Distribution/Client/Init/Types.hs @@ -3,6 +3,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} +{-# LANGUAGE TypeApplications #-} -- | -- Module : Distribution.Client.Init.Types @@ -346,6 +347,7 @@ class Monad m => Interactive m where doesFileExist :: FilePath -> m Bool canonicalizePathNoThrow :: FilePath -> m FilePath readProcessWithExitCode :: FilePath -> [String] -> String -> m (ExitCode, String, String) + maybeReadProcessWithExitCode :: FilePath -> [String] -> String -> m (Maybe (ExitCode, String, String)) getEnvironment :: m [(String, String)] getCurrentYear :: m Integer listFilesInside :: (FilePath -> m Bool) -> FilePath -> m [FilePath] @@ -389,6 +391,7 @@ instance Interactive PromptIO where doesFileExist = liftIO <$> P.doesFileExist canonicalizePathNoThrow = liftIO <$> P.canonicalizePathNoThrow readProcessWithExitCode a b c = liftIO $ Process.readProcessWithExitCode a b c + maybeReadProcessWithExitCode a b c = liftIO $ (Just <$> Process.readProcessWithExitCode a b c) `P.catch` const @_ @IOError (pure Nothing) getEnvironment = liftIO P.getEnvironment getCurrentYear = liftIO P.getCurrentYear listFilesInside test dir = do @@ -438,6 +441,7 @@ instance Interactive PurePrompt where readProcessWithExitCode !_ !_ !_ = do input <- pop return (ExitSuccess, input, "") + maybeReadProcessWithExitCode a b c = Just <$> readProcessWithExitCode a b c getEnvironment = fmap (map read) popList getCurrentYear = fmap read pop listFilesInside pred' !_ = do diff --git a/cabal-install/src/Distribution/Client/InstallPlan.hs b/cabal-install/src/Distribution/Client/InstallPlan.hs index 46212baaccc..df719fa5926 100644 --- a/cabal-install/src/Distribution/Client/InstallPlan.hs +++ b/cabal-install/src/Distribution/Client/InstallPlan.hs @@ -1,6 +1,5 @@ {-# LANGUAGE BangPatterns #-} {-# LANGUAGE ConstraintKinds #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -258,7 +257,6 @@ data GenericInstallPlan ipkg srcpkg = GenericInstallPlan { planGraph :: !(Graph (GenericPlanPackage ipkg srcpkg)) , planIndepGoals :: !IndependentGoals } - deriving (Typeable) -- | 'GenericInstallPlan' specialised to most commonly used types. type InstallPlan = diff --git a/cabal-install/src/Distribution/Client/InstallSymlink.hs b/cabal-install/src/Distribution/Client/InstallSymlink.hs index 7a470843779..4d650a0a8c1 100644 --- a/cabal-install/src/Distribution/Client/InstallSymlink.hs +++ b/cabal-install/src/Distribution/Client/InstallSymlink.hs @@ -1,12 +1,6 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.InstallSymlink -- Copyright : (c) Duncan Coutts 2008 diff --git a/cabal-install/src/Distribution/Client/Main.hs b/cabal-install/src/Distribution/Client/Main.hs index e6278a5ef9a..efaabff8837 100644 --- a/cabal-install/src/Distribution/Client/Main.hs +++ b/cabal-install/src/Distribution/Client/Main.hs @@ -1,12 +1,7 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Main -- Copyright : (c) David Himmelstrup 2005 diff --git a/cabal-install/src/Distribution/Client/Manpage.hs b/cabal-install/src/Distribution/Client/Manpage.hs index fa543239b79..42480f33d9e 100644 --- a/cabal-install/src/Distribution/Client/Manpage.hs +++ b/cabal-install/src/Distribution/Client/Manpage.hs @@ -1,7 +1,3 @@ -{-# LANGUAGE CPP #-} - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.Manpage -- Copyright : (c) Maciek Makowski 2015 diff --git a/cabal-install/src/Distribution/Client/ProjectBuilding.hs b/cabal-install/src/Distribution/Client/ProjectBuilding.hs index 4d7bde7fc55..27e097b5586 100644 --- a/cabal-install/src/Distribution/Client/ProjectBuilding.hs +++ b/cabal-install/src/Distribution/Client/ProjectBuilding.hs @@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE CPP #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE NamedFieldPuns #-} diff --git a/cabal-install/src/Distribution/Client/ProjectBuilding/Types.hs b/cabal-install/src/Distribution/Client/ProjectBuilding/Types.hs index 397a01ee68e..864455cb540 100644 --- a/cabal-install/src/Distribution/Client/ProjectBuilding/Types.hs +++ b/cabal-install/src/Distribution/Client/ProjectBuilding/Types.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} - -- | Types for the "Distribution.Client.ProjectBuilding" -- -- Moved out to avoid module cycles. @@ -156,7 +154,7 @@ data BuildFailure = BuildFailure { buildFailureLogFile :: Maybe FilePath , buildFailureReason :: BuildFailureReason } - deriving (Show, Typeable) + deriving (Show) instance Exception BuildFailure diff --git a/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs b/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs index f1486388b8c..43e685a0338 100644 --- a/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs +++ b/cabal-install/src/Distribution/Client/ProjectBuilding/UnpackedPackage.hs @@ -447,7 +447,7 @@ buildInplaceUnpackedPackage -- TODO: [code cleanup] there is duplication between the -- distdirlayout and the builddir here builddir is not -- enough, we also need the per-package cachedir - createDirectoryIfMissingVerbose verbosity True $ getSymbolicPath builddir + createDirectoryIfMissingVerbose verbosity True $ interpretSymbolicPath (Just srcdir) builddir createDirectoryIfMissingVerbose verbosity True diff --git a/cabal-install/src/Distribution/Client/ProjectConfig.hs b/cabal-install/src/Distribution/Client/ProjectConfig.hs index aabb318e9d9..1d44139fbf4 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE RecordWildCards #-} @@ -37,6 +35,7 @@ module Distribution.Client.ProjectConfig , writeProjectLocalFreezeConfig , writeProjectConfigFile , commandLineFlagsToProjectConfig + , onlyTopLevelProvenance -- * Packages within projects , ProjectPackageLocation (..) @@ -96,6 +95,7 @@ import Distribution.Client.GlobalFlags ( RepoContext (..) , withRepoContext' ) +import Distribution.Client.HashValue import Distribution.Client.HttpUtils ( HttpTransport , configureTransport @@ -185,6 +185,10 @@ import Distribution.Types.PackageVersionConstraint import Distribution.Types.SourceRepo ( RepoType (..) ) +import Distribution.Utils.Generic + ( toUTF8BS + , toUTF8LBS + ) import Distribution.Utils.NubList ( fromNubList ) @@ -203,11 +207,9 @@ import Control.Exception (handle) import Control.Monad.Trans (liftIO) import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as LBS -import qualified Data.Hashable as Hashable import qualified Data.List.NonEmpty as NE import qualified Data.Map as Map import qualified Data.Set as Set -import Numeric (showHex) import Network.URI ( URI (..) @@ -651,7 +653,7 @@ data BadProjectRoot | BadProjectRootAbsoluteFileNotFound FilePath | BadProjectRootDirFileNotFound FilePath FilePath | BadProjectRootFileBroken FilePath - deriving (Show, Typeable, Eq) + deriving (Show, Eq) instance Exception BadProjectRoot where displayException = renderBadProjectRoot @@ -886,7 +888,7 @@ data ProjectPackageLocation -- | Exception thrown by 'findProjectPackages'. data BadPackageLocations = BadPackageLocations (Set ProjectConfigProvenance) [BadPackageLocation] - deriving (Show, Typeable) + deriving (Show) instance Exception BadPackageLocations where displayException = renderBadPackageLocations @@ -1544,7 +1546,6 @@ data CabalFileParseError -- ^ We might discover the spec version the package needs [PWarning] -- ^ warnings - deriving (Typeable) -- | Manual instance which skips file contents instance Show CabalFileParseError where @@ -1596,7 +1597,7 @@ readSourcePackageCabalFile verbosity pkgfilename content = data CabalFileSearchFailure = NoCabalFileFound FilePath | MultipleCabalFilesFound FilePath - deriving (Show, Typeable) + deriving (Show) instance Exception CabalFileSearchFailure @@ -1655,7 +1656,7 @@ localFileNameForRemoteTarball :: URI -> FilePath localFileNameForRemoteTarball uri = mangleName uri ++ "-" - ++ showHex locationHash "" + ++ showHashValue locationHash where mangleName = truncateString 10 @@ -1665,15 +1666,15 @@ localFileNameForRemoteTarball uri = . dropTrailingPathSeparator . uriPath - locationHash :: Word - locationHash = fromIntegral (Hashable.hash (uriToString id uri "")) + locationHash :: HashValue + locationHash = hashValue (toUTF8LBS (uriToString id uri "")) -- | The name to use for a local file or dir for a remote 'SourceRepo'. -- This is deterministic based on the source repo identity details, and -- intended to produce non-clashing file names for different repos. localFileNameForRemoteRepo :: SourceRepoList -> FilePath localFileNameForRemoteRepo SourceRepositoryPackage{srpType, srpLocation} = - mangleName srpLocation ++ "-" ++ showHex locationHash "" + mangleName srpLocation ++ "-" ++ showHashValue locationHash where mangleName = truncateString 10 @@ -1682,9 +1683,10 @@ localFileNameForRemoteRepo SourceRepositoryPackage{srpType, srpLocation} = . dropTrailingPathSeparator -- just the parts that make up the "identity" of the repo - locationHash :: Word + locationHash :: HashValue locationHash = - fromIntegral (Hashable.hash (show srpType, srpLocation)) + hashValue $ + LBS.fromChunks [toUTF8BS srpLocation, toUTF8BS (show srpType)] -- | Truncate a string, with a visual indication that it is truncated. truncateString :: Int -> String -> String @@ -1705,7 +1707,7 @@ truncateString n s data BadPerPackageCompilerPaths = BadPerPackageCompilerPaths [(PackageName, String)] - deriving (Show, Typeable) + deriving (Show) instance Exception BadPerPackageCompilerPaths where displayException = renderBadPerPackageCompilerPaths @@ -1749,3 +1751,9 @@ checkBadPerPackageCompilerPaths compilerPrograms packagesConfig = ] of [] -> return () ps -> throwIO (BadPerPackageCompilerPaths ps) + +-- | Filter out non-top-level project configs. +onlyTopLevelProvenance :: Set ProjectConfigProvenance -> Set ProjectConfigProvenance +onlyTopLevelProvenance = Set.filter $ \case + Implicit -> False + Explicit ps -> isTopLevelConfigPath ps diff --git a/cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs b/cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs index a4191325f8b..f7cd9928fd3 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig/Legacy.hs @@ -39,7 +39,7 @@ import Distribution.Types.Flag (FlagName, parsecFlagAssignment) import Distribution.Client.ProjectConfig.Types import Distribution.Client.Types.AllowNewer (AllowNewer (..), AllowOlder (..)) -import Distribution.Client.Types.Repo (LocalRepo (..), RemoteRepo (..), emptyRemoteRepo) +import Distribution.Client.Types.Repo (LocalRepo (..), RemoteRepo (..), emptyRemoteRepo, normaliseFileNoIndexURI) import Distribution.Client.Types.RepoName (RepoName (..), unRepoName) import Distribution.Client.Types.SourceRepo (SourceRepoList, sourceRepositoryPackageGrammar) @@ -173,7 +173,7 @@ import Distribution.Simple.Command , option , reqArg' ) -import Distribution.System (Arch, OS) +import Distribution.System (Arch, OS, buildOS) import Distribution.Types.PackageVersionConstraint ( PackageVersionConstraint ) @@ -185,7 +185,7 @@ import Distribution.Utils.Path hiding import qualified Data.ByteString.Char8 as BS import qualified Data.Map as Map import qualified Data.Set as Set -import Network.URI (URI (..), parseURI) +import Network.URI (URI (..), nullURIAuth, parseURI) import System.Directory (createDirectoryIfMissing, makeAbsolute) import System.FilePath (isAbsolute, isPathSeparator, makeValid, splitFileName, ()) import Text.PrettyPrint @@ -2043,7 +2043,14 @@ remoteRepoSectionDescr = localToRemote :: LocalRepo -> RemoteRepo localToRemote (LocalRepo name path sharedCache) = (emptyRemoteRepo name) - { remoteRepoURI = URI "file+noindex:" Nothing path "" (if sharedCache then "#shared-cache" else "") + { remoteRepoURI = + normaliseFileNoIndexURI buildOS $ + URI + "file+noindex:" + (Just nullURIAuth) + path + "" + (if sharedCache then "#shared-cache" else "") } ------------------------------- diff --git a/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs b/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs index a2826390de6..1a2b6ae2fa6 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig/Types.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -152,7 +151,7 @@ data ProjectConfig = ProjectConfig -- any packages which are explicitly named in `cabal.project`. , projectConfigSpecificPackage :: MapMappend PackageName PackageConfig } - deriving (Eq, Show, Generic, Typeable) + deriving (Eq, Show, Generic) -- | That part of the project configuration that only affects /how/ we build -- and not the /value/ of the things we build. This means this information @@ -338,7 +337,7 @@ instance Structured PackageConfig -- | Newtype wrapper for 'Map' that provides a 'Monoid' instance that takes -- the last value rather than the first value for overlapping keys. newtype MapLast k v = MapLast {getMapLast :: Map k v} - deriving (Eq, Show, Functor, Generic, Binary, Typeable) + deriving (Eq, Show, Functor, Generic, Binary) instance (Structured k, Structured v) => Structured (MapLast k v) @@ -354,7 +353,7 @@ instance Ord k => Semigroup (MapLast k v) where -- | Newtype wrapper for 'Map' that provides a 'Monoid' instance that -- 'mappend's values of overlapping keys rather than taking the first. newtype MapMappend k v = MapMappend {getMapMappend :: Map k v} - deriving (Eq, Show, Functor, Generic, Binary, Typeable) + deriving (Eq, Show, Functor, Generic, Binary) instance (Structured k, Structured v) => Structured (MapMappend k v) @@ -439,7 +438,7 @@ data SolverSettings = SolverSettings -- solverSettingOverrideReinstall :: Bool, -- solverSettingUpgradeDeps :: Bool } - deriving (Eq, Show, Generic, Typeable) + deriving (Eq, Show, Generic) instance Binary SolverSettings instance Structured SolverSettings diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index 50423b2d1df..8068ba39a9e 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveFunctor #-} @@ -100,7 +99,18 @@ module Distribution.Client.ProjectPlanning ) where import Distribution.Client.Compat.Prelude -import Text.PrettyPrint (render) +import Text.PrettyPrint + ( colon + , comma + , fsep + , hang + , punctuate + , quotes + , render + , text + , vcat + , ($$) + ) import Prelude () import Distribution.Client.Config @@ -192,6 +202,7 @@ import Distribution.Backpack.LinkedComponent import Distribution.Backpack.ModuleShape import Distribution.Simple.Utils +import Distribution.Verbosity import Distribution.Version import qualified Distribution.InstalledPackageInfo as IPI @@ -219,7 +230,6 @@ import qualified Data.Set as Set import Distribution.Client.Errors import Distribution.Solver.Types.ProjectConfigPath import System.FilePath -import Text.PrettyPrint (colon, comma, fsep, hang, punctuate, quotes, text, vcat, ($$)) import qualified Text.PrettyPrint as Disp -- | Check that an 'ElaboratedConfiguredPackage' actually makes @@ -394,13 +404,13 @@ rebuildProjectConfig localPackages <- phaseReadLocalPackages (projectConfig <> cliConfig) return (projectConfig, localPackages) - sequence_ - [ do - info verbosity . render . vcat $ - text "this build was affected by the following (project) config files:" - : [text "-" <+> docProjectConfigPath path] - | Explicit path <- Set.toList $ projectConfigProvenance projectConfig - ] + let configfiles = + [ text "-" <+> docProjectConfigPath path + | Explicit path <- Set.toList . (if verbosity >= verbose then id else onlyTopLevelProvenance) $ projectConfigProvenance projectConfig + ] + unless (null configfiles) $ + notice (verboseStderr verbosity) . render . vcat $ + text "Configuration is affected by the following files:" : configfiles return (projectConfig <> cliConfig, localPackages) where @@ -460,6 +470,7 @@ configureCompiler { projectConfigHcFlavor , projectConfigHcPath , projectConfigHcPkg + , projectConfigProgPathExtra } , projectConfigLocalPackages = PackageConfig @@ -470,6 +481,7 @@ configureCompiler let fileMonitorCompiler = newFileMonitor $ distProjectCacheFile "compiler" progsearchpath <- liftIO $ getSystemSearchPath + rerunIfChanged verbosity fileMonitorCompiler @@ -482,37 +494,78 @@ configureCompiler ) $ do liftIO $ info verbosity "Compiler settings changed, reconfiguring..." - let extraPath = fromNubList packageConfigProgramPathExtra - progdb <- liftIO $ prependProgramSearchPath verbosity extraPath [] defaultProgramDb - let progdb' = userSpecifyPaths (Map.toList (getMapLast packageConfigProgramPaths)) progdb - (comp, plat, progdb'') <- + progdb <- + liftIO $ + -- Add paths in the global config + prependProgramSearchPath verbosity (fromNubList projectConfigProgPathExtra) [] defaultProgramDb + -- Add paths in the local config + >>= prependProgramSearchPath verbosity (fromNubList packageConfigProgramPathExtra) [] + >>= pure . userSpecifyPaths (Map.toList (getMapLast packageConfigProgramPaths)) + result@(_, _, progdb') <- liftIO $ Cabal.configCompilerEx hcFlavor hcPath hcPkg - progdb' + progdb verbosity - -- Note that we added the user-supplied program locations and args -- for /all/ programs, not just those for the compiler prog and -- compiler-related utils. In principle we don't know which programs -- the compiler will configure (and it does vary between compilers). -- We do know however that the compiler will only configure the -- programs it cares about, and those are the ones we monitor here. - monitorFiles (programsMonitorFiles progdb'') + monitorFiles (programsMonitorFiles progdb') - -- Configure the unconfigured programs in the program database, - -- as we can't serialise unconfigured programs. - -- See also #2241 and #9840. - finalProgDb <- liftIO $ configureAllKnownPrograms verbosity progdb'' + -- Note: There is currently a bug here: we are dropping unconfigured + -- programs from the 'ProgramDb' when we re-use the cache created by + -- 'rerunIfChanged'. + -- + -- See Note [Caching the result of configuring the compiler] - return (comp, plat, finalProgDb) + return result where hcFlavor = flagToMaybe projectConfigHcFlavor hcPath = flagToMaybe projectConfigHcPath hcPkg = flagToMaybe projectConfigHcPkg +{- Note [Caching the result of configuring the compiler] +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +We can't straightforwardly cache anything that contains a 'ProgramDb', because +the 'Binary' instance for 'ProgramDb' discards all unconfigured programs. +See that instance, as well as 'restoreProgramDb', for a few more details. + +This means that if we try to cache the result of configuring the compiler (which +contains a 'ProgramDb'): + + - On the first run, we will obtain a 'ProgramDb' which may contain several + unconfigured programs. In particular, configuring GHC will add tools such + as `ar` and `ld` as unconfigured programs to the 'ProgramDb', with custom + logic for finding their location based on the location of the GHC binary. + - On subsequent runs, if we use the cache created by 'rerunIfChanged', we will + deserialise the 'ProgramDb' from disk, which means it won't include any + unconfigured programs, which might mean we are unable to find 'ar' or 'ld'. + +This is not currently a huge problem because, in the Cabal library, we eagerly +re-run the configureCompiler step (thus recovering any lost information), but +this is wasted work that we should stop doing in Cabal, given that cabal-install +has already figured out all the necessary information about the compiler. + +To fix this bug, we can't simply eagerly configure all unconfigured programs, +as was originally attempted, for a couple of reasons: + + - it does more work than necessary, by configuring programs that we may not + end up needing, + - it means that we prioritise system executables for built-in build tools + (such as `alex` and `happy`), instead of using the proper version for a + package or package component, as specified by a `build-tool-depends` stanza + or by package-level `extra-prog-path` arguments. + This lead to bug reports #10633 and #10692. + +See #9840 for more information about the problems surrounding the lossly +Binary ProgramDb instance. +-} + ------------------------------------------------------------------------------ -- * Deciding what to do: making an 'ElaboratedInstallPlan' @@ -2264,13 +2317,16 @@ elaborateInstallPlan ] <> perPkgOptionMapLast pkgid packageConfigProgramPaths elabProgramArgs = - Map.fromList - [ (programId prog, args) - | prog <- configuredPrograms compilerprogdb - , let args = programOverrideArgs $ addHaddockIfDocumentationEnabled prog - , not (null args) - ] - <> perPkgOptionMapMappend pkgid packageConfigProgramArgs + Map.unionWith + (++) + ( Map.fromList + [ (programId prog, args) + | prog <- configuredPrograms compilerprogdb + , let args = programOverrideArgs $ addHaddockIfDocumentationEnabled prog + , not (null args) + ] + ) + (perPkgOptionMapMappend pkgid packageConfigProgramArgs) elabProgramPathExtra = perPkgOptionNubList pkgid packageConfigProgramPathExtra elabConfigureScriptArgs = perPkgOptionList pkgid packageConfigConfigureArgs elabExtraLibDirs = perPkgOptionList pkgid packageConfigExtraLibDirs diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs b/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs index 31a0d5df248..c5f018e8ea6 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning/Types.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} @@ -193,7 +192,7 @@ data ElaboratedSharedConfig = ElaboratedSharedConfig -- used. , pkgConfigReplOptions :: ReplOptions } - deriving (Show, Generic, Typeable) + deriving (Show, Generic) -- TODO: [code cleanup] no Eq instance @@ -338,7 +337,7 @@ data ElaboratedConfiguredPackage = ElaboratedConfiguredPackage elabPkgOrComp :: ElaboratedPackageOrComponent -- ^ Component/package specific information } - deriving (Eq, Show, Generic, Typeable) + deriving (Eq, Show, Generic) normaliseConfiguredPackage :: ElaboratedSharedConfig @@ -934,7 +933,7 @@ data SetupScriptStyle | SetupCustomImplicitDeps | SetupNonCustomExternalLib | SetupNonCustomInternalLib - deriving (Eq, Show, Generic, Typeable) + deriving (Eq, Show, Generic) instance Binary SetupScriptStyle instance Structured SetupScriptStyle diff --git a/cabal-install/src/Distribution/Client/Run.hs b/cabal-install/src/Distribution/Client/Run.hs index 7ff4c8bb5e8..4366b5dfea2 100644 --- a/cabal-install/src/Distribution/Client/Run.hs +++ b/cabal-install/src/Distribution/Client/Run.hs @@ -28,13 +28,14 @@ import Distribution.PackageDescription , TestSuite (..) ) import Distribution.Simple (PackageDBX (..)) -import Distribution.Simple.Build (addInternalBuildTools) +import Distribution.Simple.Build (addInternalBuildToolsFixed) import Distribution.Simple.BuildPaths (exeExtension) import Distribution.Simple.Compiler (CompilerFlavor (..), compilerFlavor) import Distribution.Simple.Flag (fromFlag) import Distribution.Simple.LocalBuildInfo ( ComponentName (..) , LocalBuildInfo (..) + , absoluteWorkingDirLBI , buildDir , depLibraryPaths , interpretSymbolicPathLBI @@ -59,7 +60,6 @@ import Distribution.Types.UnqualComponentName import qualified Distribution.Simple.GHCJS as GHCJS import Distribution.Client.Errors -import Distribution.Compat.Environment (getEnvironment) import Distribution.Utils.Path -- | Return the executable to run and any extra arguments that should be @@ -143,6 +143,7 @@ splitRunArgs verbosity lbi args = -- | Run a given executable. run :: Verbosity -> LocalBuildInfo -> Executable -> [String] -> IO () run verbosity lbi exe exeArgs = do + curDir <- absoluteWorkingDirLBI lbi let distPref = fromFlag $ configDistPref $ configFlags lbi buildPref = buildDir lbi pkg_descr = localPkgDescr lbi @@ -154,7 +155,8 @@ run verbosity lbi exe exeArgs = do { withPackageDB = withPackageDB lbi ++ [SpecificPackageDB internalPkgDb] , -- Include any build-tool-depends on build tools internal to the current package. withPrograms = - addInternalBuildTools + addInternalBuildToolsFixed + (Just curDir) pkg_descr lbi (buildInfo exe) @@ -178,13 +180,11 @@ run verbosity lbi exe exeArgs = do return (p, []) -- Compute the appropriate environment for running the executable - existingEnv <- getEnvironment let progDb = withPrograms lbiForExe pathVar = progSearchPath progDb envOverrides = progOverrideEnv progDb newPath <- programSearchPathAsPATHVar pathVar - overrideEnv <- fromMaybe [] <$> getEffectiveEnvironment ([("PATH", Just newPath)] ++ envOverrides) - let env = overrideEnv ++ existingEnv + env <- getFullEnvironment ([("PATH", Just newPath)] ++ envOverrides) -- Add (DY)LD_LIBRARY_PATH if needed env' <- diff --git a/cabal-install/src/Distribution/Client/Sandbox.hs b/cabal-install/src/Distribution/Client/Sandbox.hs index d4523d784c5..732856a3d8f 100644 --- a/cabal-install/src/Distribution/Client/Sandbox.hs +++ b/cabal-install/src/Distribution/Client/Sandbox.hs @@ -1,12 +1,7 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.Sandbox -- Maintainer : cabal-devel@haskell.org diff --git a/cabal-install/src/Distribution/Client/SavedFlags.hs b/cabal-install/src/Distribution/Client/SavedFlags.hs index 1a598a58fd7..1f752e11bd4 100644 --- a/cabal-install/src/Distribution/Client/SavedFlags.hs +++ b/cabal-install/src/Distribution/Client/SavedFlags.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} - module Distribution.Client.SavedFlags ( readCommandFlags , writeCommandFlags @@ -67,7 +65,6 @@ data SavedArgsError = SavedArgsErrorHelp Args | SavedArgsErrorList Args | SavedArgsErrorOther Args [String] - deriving (Typeable) instance Show SavedArgsError where show (SavedArgsErrorHelp args) = diff --git a/cabal-install/src/Distribution/Client/Security/HTTP.hs b/cabal-install/src/Distribution/Client/Security/HTTP.hs index 941d0b28dab..9eafc7bdae2 100644 --- a/cabal-install/src/Distribution/Client/Security/HTTP.hs +++ b/cabal-install/src/Distribution/Client/Security/HTTP.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} @@ -180,7 +178,6 @@ mkReqHeaders reqHeaders mRange' = -------------------------------------------------------------------------------} data UnexpectedResponse = UnexpectedResponse URI Int - deriving (Typeable) instance HC.Pretty UnexpectedResponse where pretty (UnexpectedResponse uri code) = diff --git a/cabal-install/src/Distribution/Client/Setup.hs b/cabal-install/src/Distribution/Client/Setup.hs index 78e864d1a65..faa33e47113 100644 --- a/cabal-install/src/Distribution/Client/Setup.hs +++ b/cabal-install/src/Distribution/Client/Setup.hs @@ -1621,7 +1621,7 @@ data CheckFlags = CheckFlags { checkVerbosity :: Flag Verbosity , checkIgnore :: [CheckExplanationIDString] } - deriving (Show, Typeable) + deriving (Show) defaultCheckFlags :: CheckFlags defaultCheckFlags = diff --git a/cabal-install/src/Distribution/Client/SetupWrapper.hs b/cabal-install/src/Distribution/Client/SetupWrapper.hs index 1b401ff6f7c..78833af6d15 100644 --- a/cabal-install/src/Distribution/Client/SetupWrapper.hs +++ b/cabal-install/src/Distribution/Client/SetupWrapper.hs @@ -143,7 +143,10 @@ import Distribution.Simple.Program.GHC , renderGhcOptions ) import Distribution.Simple.Setup - ( Flag (..), CommonSetupFlags (..), GlobalFlags (..) + ( CommonSetupFlags (..) + , Flag (..) + , GlobalFlags (..) + , globalCommand ) import Distribution.Simple.Utils ( cabalVersion @@ -175,7 +178,6 @@ import Distribution.Verbosity import Data.List (foldl1') import qualified Data.Map.Lazy as Map -import Distribution.Simple.Setup (globalCommand) import Distribution.Client.Compat.ExecutablePath (getExecutablePath) import Distribution.Compat.Process (proc) import System.Directory (doesFileExist) diff --git a/cabal-install/src/Distribution/Client/SolverInstallPlan.hs b/cabal-install/src/Distribution/Client/SolverInstallPlan.hs index f4422080a4b..17dcf6d9398 100644 --- a/cabal-install/src/Distribution/Client/SolverInstallPlan.hs +++ b/cabal-install/src/Distribution/Client/SolverInstallPlan.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TypeFamilies #-} @@ -93,7 +92,7 @@ data SolverInstallPlan = SolverInstallPlan { planIndex :: !SolverPlanIndex , planIndepGoals :: !IndependentGoals } - deriving (Typeable, Generic) + deriving (Generic) {- -- | Much like 'planPkgIdOf', but mapping back to full packages. diff --git a/cabal-install/src/Distribution/Client/Store.hs b/cabal-install/src/Distribution/Client/Store.hs index 9ffe6099c7f..dcf4c78d02c 100644 --- a/cabal-install/src/Distribution/Client/Store.hs +++ b/cabal-install/src/Distribution/Client/Store.hs @@ -47,8 +47,7 @@ import System.FilePath import Lukko #else import System.IO (openFile, IOMode(ReadWriteMode), hClose) -import GHC.IO.Handle.Lock (hLock, hTryLock, LockMode(ExclusiveLock)) -import GHC.IO.Handle.Lock (hUnlock) +import GHC.IO.Handle.Lock (LockMode (ExclusiveLock), hLock, hTryLock, hUnlock) #endif -- $concurrency diff --git a/cabal-install/src/Distribution/Client/Targets.hs b/cabal-install/src/Distribution/Client/Targets.hs index 1a37c9c73b9..a4a9188b57a 100644 --- a/cabal-install/src/Distribution/Client/Targets.hs +++ b/cabal-install/src/Distribution/Client/Targets.hs @@ -1,14 +1,7 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveFoldable #-} -{-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE ScopedTypeVariables #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- Module : Distribution.Client.Targets -- Copyright : (c) Duncan Coutts 2011 diff --git a/cabal-install/src/Distribution/Client/Types/BuildResults.hs b/cabal-install/src/Distribution/Client/Types/BuildResults.hs index 55c01534620..61ad6e41c96 100644 --- a/cabal-install/src/Distribution/Client/Types/BuildResults.hs +++ b/cabal-install/src/Distribution/Client/Types/BuildResults.hs @@ -32,7 +32,7 @@ data BuildFailure | BuildFailed SomeException | TestsFailed SomeException | InstallFailed SomeException - deriving (Show, Typeable, Generic) + deriving (Show, Generic) instance Exception BuildFailure @@ -48,9 +48,9 @@ data BuildResult deriving (Show, Generic) data DocsResult = DocsNotTried | DocsFailed | DocsOk - deriving (Show, Generic, Typeable) + deriving (Show, Generic) data TestsResult = TestsNotTried | TestsOk - deriving (Show, Generic, Typeable) + deriving (Show, Generic) instance Binary BuildFailure instance Binary BuildResult diff --git a/cabal-install/src/Distribution/Client/Types/PackageLocation.hs b/cabal-install/src/Distribution/Client/Types/PackageLocation.hs index 2f4993e22bd..9a0537aae7a 100644 --- a/cabal-install/src/Distribution/Client/Types/PackageLocation.hs +++ b/cabal-install/src/Distribution/Client/Types/PackageLocation.hs @@ -37,7 +37,7 @@ data PackageLocation local RepoTarballPackage Repo PackageId local | -- | A package available from a version control system source repository RemoteSourceRepoPackage SourceRepoMaybe local - deriving (Show, Functor, Eq, Ord, Generic, Typeable) + deriving (Show, Functor, Eq, Ord, Generic) instance Binary local => Binary (PackageLocation local) instance Structured local => Structured (PackageLocation local) diff --git a/cabal-install/src/Distribution/Client/Types/Repo.hs b/cabal-install/src/Distribution/Client/Types/Repo.hs index b5606725432..83ecc454863 100644 --- a/cabal-install/src/Distribution/Client/Types/Repo.hs +++ b/cabal-install/src/Distribution/Client/Types/Repo.hs @@ -15,6 +15,9 @@ module Distribution.Client.Types.Repo , repoName , isRepoRemote , maybeRepoRemote + + -- * Windows + , normaliseFileNoIndexURI ) where import Distribution.Client.Compat.Prelude @@ -23,6 +26,7 @@ import Prelude () import Network.URI (URI (..), nullURI, parseAbsoluteURI, uriToString) import Distribution.Simple.Utils (toUTF8BS) +import Distribution.System (OS (Windows)) import Distribution.Client.HashValue (hashValue, showHashValue, truncateHash) @@ -32,6 +36,9 @@ import qualified Text.PrettyPrint as Disp import Distribution.Client.Types.RepoName +import qualified System.FilePath.Posix as Posix +import qualified System.FilePath.Windows as Windows + ------------------------------------------------------------------------------- -- Remote repository ------------------------------------------------------------------------------- @@ -190,3 +197,41 @@ repoName :: Repo -> RepoName repoName (RepoLocalNoIndex r _) = localRepoName r repoName (RepoRemote r _) = remoteRepoName r repoName (RepoSecure r _) = remoteRepoName r + +------------------------------------------------------------------------------- + +-- * Windows utils + +------------------------------------------------------------------------------- + +-- | When on Windows, we need to convert the paths in URIs to be POSIX-style. +-- +-- >>> import Network.URI +-- >>> normaliseFileNoIndexURI Windows (URI "file+noindex:" (Just nullURIAuth) "C:\\dev\\foo" "" "") +-- file+noindex:C:/dev/foo +-- +-- Other formats of file paths are not understood by @network-uri@: +-- +-- >>> import Network.URI +-- >>> uriPath <$> parseURI "file+noindex://C:/foo.txt" +-- Just "/foo.txt" +-- >>> parseURI "file+noindex://C:\foo.txt" +-- Nothing +-- >>> uriPath <$> parseURI "file+noindex:///C:/foo.txt" +-- Just "/C:/foo.txt" +-- >>> uriPath <$> parseURI "file+noindex:C:/foo.txt" +-- Just "C:/foo.txt" +-- +-- Out of the ones above, only the last one can be used from anywhere in the +-- system. +normaliseFileNoIndexURI :: OS -> URI -> URI +normaliseFileNoIndexURI os uri@(URI scheme _auth path query fragment) + | "file+noindex:" <- scheme + , Windows <- os = + URI scheme Nothing (asPosixPath path) query fragment + | otherwise = uri + where + asPosixPath p = + -- We don't use 'isPathSeparator' because @Windows.isPathSeparator + -- Posix.pathSeparator == True@. + [if x == Windows.pathSeparator then Posix.pathSeparator else x | x <- p] diff --git a/cabal-install/src/Distribution/Deprecated/ParseUtils.hs b/cabal-install/src/Distribution/Deprecated/ParseUtils.hs index e1d389ac9aa..e432b0a2333 100644 --- a/cabal-install/src/Distribution/Deprecated/ParseUtils.hs +++ b/cabal-install/src/Distribution/Deprecated/ParseUtils.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE Rank2Types #-} ----------------------------------------------------------------------------- -- This module is meant to be local-only to Distribution... diff --git a/cabal-install/src/Distribution/Deprecated/ReadP.hs b/cabal-install/src/Distribution/Deprecated/ReadP.hs index 2e6f9c189b8..69e1c38006e 100644 --- a/cabal-install/src/Distribution/Deprecated/ReadP.hs +++ b/cabal-install/src/Distribution/Deprecated/ReadP.hs @@ -1,10 +1,5 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ - -- | -- -- Module : Distribution.Deprecated.ReadP diff --git a/cabal-install/tests/IntegrationTests2.hs b/cabal-install/tests/IntegrationTests2.hs index e6373cd18b8..486ebc8edc0 100644 --- a/cabal-install/tests/IntegrationTests2.hs +++ b/cabal-install/tests/IntegrationTests2.hs @@ -1,7 +1,6 @@ {- FOURMOLU_DISABLE -} {-# LANGUAGE CPP #-} {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} @@ -46,24 +45,31 @@ import qualified Distribution.Client.CmdBench as CmdBench import qualified Distribution.Client.CmdHaddock as CmdHaddock import qualified Distribution.Client.CmdListBin as CmdListBin +import qualified Distribution.Client.CmdHaddockProject as CmdHaddockProject +import Distribution.Client.Config (SavedConfig (savedGlobalFlags), createDefaultConfigFile, loadConfig) +import Distribution.Client.GlobalFlags + ( GlobalFlags + , defaultGlobalFlags + , globalNix + ) +import Distribution.Client.Setup (globalCommand, globalStoreDir) +import Distribution.ModuleName (ModuleName) import Distribution.Package import Distribution.PackageDescription import Distribution.InstalledPackageInfo (InstalledPackageInfo) -import Distribution.Simple.Setup (toFlag, HaddockFlags(..), defaultHaddockFlags) -import Distribution.Client.Setup (globalCommand) -import Distribution.Client.Config (loadConfig, SavedConfig(savedGlobalFlags), createDefaultConfigFile) +import Distribution.Simple.Setup + ( toFlag, + HaddockFlags(..), + defaultHaddockFlags, + HaddockProjectFlags(..), + defaultHaddockProjectFlags ) import Distribution.Simple.Compiler import Distribution.Simple.Command import qualified Distribution.Simple.Flag as Flag import Distribution.System import Distribution.Version -import Distribution.ModuleName (ModuleName) import Distribution.Text import Distribution.Utils.Path (unsafeMakeSymbolicPath) -import qualified Distribution.Client.CmdHaddockProject as CmdHaddockProject -import Distribution.Client.Setup (globalStoreDir) -import Distribution.Client.GlobalFlags (defaultGlobalFlags) -import Distribution.Simple.Setup (HaddockProjectFlags(..), defaultHaddockProjectFlags) import qualified Data.Map as Map import qualified Data.Set as Set @@ -84,10 +90,9 @@ import Test.Tasty.Options import Data.Tagged (Tagged(..)) import qualified Data.ByteString as BS -import Distribution.Client.GlobalFlags (GlobalFlags, globalNix) +import Data.Maybe (fromJust) import Distribution.Simple.Flag (Flag (Flag, NoFlag)) import Distribution.Types.ParStrat -import Data.Maybe (fromJust) #if !MIN_VERSION_directory(1,2,7) removePathForcibly :: FilePath -> IO () @@ -1818,7 +1823,6 @@ mkProjectConfig (GhcPath ghcPath) = data GhcPath = GhcPath (Maybe FilePath) - deriving Typeable instance IsOption GhcPath where defaultValue = GhcPath Nothing diff --git a/cabal-install/tests/UnitTests/Distribution/Client/FileMonitor.hs b/cabal-install/tests/UnitTests/Distribution/Client/FileMonitor.hs index 88901d17cb7..d14f87d06da 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/FileMonitor.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/FileMonitor.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} - module UnitTests.Distribution.Client.FileMonitor (tests) where import Distribution.Parsec (simpleParsec) @@ -32,7 +30,7 @@ tests :: Int -> [TestTree] tests mtimeChange = [ testGroup "Structured hashes" - [ testCase "MonitorStateFile" $ structureHash (Proxy :: Proxy MonitorStateFile) @?= Fingerprint 0xe4108804c34962f6 0x06e94f8fc9e48e13 + [ testCase "MonitorStateFile" $ structureHash (Proxy :: Proxy MonitorStateFile) @?= Fingerprint 0xe1339b9dcfdfe19d 0x9135a5f30da7ca82 , testCase "MonitorStateGlob" $ structureHash (Proxy :: Proxy MonitorStateGlob) @?= Fingerprint fingerprintStateGlob1 fingerprintStateGlob2 , testCase "MonitorStateFileSet" $ structureHash (Proxy :: Proxy MonitorStateFileSet) @?= Fingerprint fingerprintStateFileSet1 fingerprintStateFileSet2 ] @@ -88,10 +86,10 @@ tests mtimeChange = Windows -> expectFailBecause msg _ -> id fingerprintStateGlob1, fingerprintStateGlob2, fingerprintStateFileSet1, fingerprintStateFileSet2 :: Word64 - fingerprintStateGlob1 = 0x8d6292a27f48ab78 - fingerprintStateGlob2 = 0xa69393cf17cb6c71 - fingerprintStateFileSet1 = 0x441fcb5eaf403013 - fingerprintStateFileSet2 = 0x129db82bba47f56f + fingerprintStateGlob1 = 0x1f9edda22b7e8de6 + fingerprintStateGlob2 = 0xda1d085c9fc6f5db + fingerprintStateFileSet1 = 0x00ac4a0df546905d + fingerprintStateFileSet2 = 0x5b2b2df018b1fa83 -- Check the file system behaves the way we expect it to diff --git a/cabal-install/tests/UnitTests/Distribution/Client/Glob.hs b/cabal-install/tests/UnitTests/Distribution/Client/Glob.hs index c51ce7e2448..38d245a045c 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/Glob.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/Glob.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module UnitTests.Distribution.Client.Glob (tests) where diff --git a/cabal-install/tests/UnitTests/Distribution/Client/JobControl.hs b/cabal-install/tests/UnitTests/Distribution/Client/JobControl.hs index 73769f91b18..068037a1706 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/JobControl.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/JobControl.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} - module UnitTests.Distribution.Client.JobControl (tests) where import Distribution.Client.JobControl @@ -178,7 +176,7 @@ prop_cancel_parallel (Positive (Small maxJobLimit)) xs ys = do return $ Set.fromList (xs' ++ ys') `Set.isSubsetOf` Set.fromList (xs ++ ys) data TestException = TestException Int - deriving (Typeable, Show) + deriving (Show) instance Exception TestException diff --git a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs b/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs index 1996dab1a1d..1733153f856 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs @@ -33,6 +33,7 @@ import qualified Distribution.Simple.InstallDirs as InstallDirs import Distribution.Simple.Program.Db import Distribution.Simple.Program.Types import Distribution.Simple.Utils (toUTF8BS) +import Distribution.System (OS (Windows), buildOS) import Distribution.Types.PackageVersionConstraint import Distribution.Version @@ -1016,7 +1017,10 @@ instance Arbitrary LocalRepo where arbitrary = LocalRepo <$> arbitrary - <*> elements ["/tmp/foo", "/tmp/bar"] -- TODO: generate valid absolute paths + <*> elements + ( (if buildOS == Windows then map (normalise . ("C:" ++)) else id) + ["/tmp/foo", "/tmp/bar"] + ) -- TODO: generate valid absolute paths <*> arbitrary instance Arbitrary PreSolver where diff --git a/cabal-install/tests/UnitTests/Distribution/Client/UserConfig.hs b/cabal-install/tests/UnitTests/Distribution/Client/UserConfig.hs index 91ed61c86cd..a9cb90c64f1 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/UserConfig.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/UserConfig.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} - module UnitTests.Distribution.Client.UserConfig ( tests ) where diff --git a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs index c891f60692b..d53729e1a21 100644 --- a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs +++ b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StandaloneDeriving #-} {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -10,7 +9,6 @@ import Prelude () import Control.Arrow ((&&&)) import Data.Either (lefts) -import Data.Hashable (Hashable (..)) import Data.List (groupBy, isInfixOf) import Text.Show.Pretty (parseValue, valToStr) @@ -20,7 +18,7 @@ import Test.QuickCheck.Instances.Cabal () import Test.Tasty (TestTree) import Distribution.Types.Flag (FlagName) -import Distribution.Utils.ShortText (ShortText) +import Distribution.Utils.ShortText (ShortText, fromShortText) import Distribution.Client.Setup (defaultMaxBackjumps) @@ -47,7 +45,8 @@ import Distribution.Version import UnitTests.Distribution.Solver.Modular.DSL import UnitTests.Distribution.Solver.Modular.QuickCheck.Utils - ( testPropertyWithSeed + ( ArbitraryOrd (..) + , testPropertyWithSeed ) tests :: [TestTree] @@ -223,6 +222,9 @@ newtype VarOrdering = VarOrdering { unVarOrdering :: Variable P.QPN -> Variable P.QPN -> Ordering } +instance Arbitrary VarOrdering where + arbitrary = VarOrdering <$> arbitraryCompare + solve :: EnableBackjumping -> FineGrainedConflicts @@ -618,22 +620,18 @@ instance Arbitrary OptionalStanza where shrink BenchStanzas = [TestStanzas] shrink TestStanzas = [] --- Randomly sorts solver variables using 'hash'. --- TODO: Sorting goals with this function is very slow. -instance Arbitrary VarOrdering where - arbitrary = do - f <- arbitrary :: Gen (Int -> Int) - return $ VarOrdering (comparing (f . hash)) - -instance Hashable pn => Hashable (Variable pn) -instance Hashable a => Hashable (P.Qualified a) -instance Hashable P.PackagePath -instance Hashable P.Qualifier -instance Hashable P.Namespace -instance Hashable OptionalStanza -instance Hashable FlagName -instance Hashable PackageName -instance Hashable ShortText +instance ArbitraryOrd pn => ArbitraryOrd (Variable pn) +instance ArbitraryOrd a => ArbitraryOrd (P.Qualified a) +instance ArbitraryOrd P.PackagePath +instance ArbitraryOrd P.Qualifier +instance ArbitraryOrd P.Namespace +instance ArbitraryOrd OptionalStanza +instance ArbitraryOrd FlagName +instance ArbitraryOrd PackageName +instance ArbitraryOrd ShortText where + arbitraryCompare = do + strc <- arbitraryCompare + pure $ \l r -> strc (fromShortText l) (fromShortText r) deriving instance Generic (Variable pn) deriving instance Generic (P.Qualified a) diff --git a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck/Utils.hs b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck/Utils.hs index c1882bc659a..24d61e1e72d 100644 --- a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck/Utils.hs +++ b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/QuickCheck/Utils.hs @@ -1,10 +1,17 @@ +{-# LANGUAGE DefaultSignatures #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE TypeOperators #-} + module UnitTests.Distribution.Solver.Modular.QuickCheck.Utils ( testPropertyWithSeed + , ArbitraryOrd (..) ) where import Data.Tagged (Tagged, retag) +import GHC.Generics import System.Random (getStdRandom, random) +import qualified Test.QuickCheck as QC import Test.Tasty (TestTree) import Test.Tasty.Options (OptionDescription, lookupOption, setOption) import Test.Tasty.Providers (IsTest (..), singleTest) @@ -35,3 +42,79 @@ instance IsTest QCWithSeed where _ -> getStdRandom random notice normal $ "Using --quickcheck-replay=" ++ show replay run (setOption (QuickCheckReplayLegacy replay) options) test progress + +-- | Typeclass for doing arbitrary (but law-abiding) comparisons. See also +-- 'ArbitraryOrd', this is the version that works with 'GHC.Generics'. +class GArbitraryOrd f where + garbitraryCompare :: QC.Gen (f p -> f p -> Ordering) + +instance GArbitraryOrd V1 where + garbitraryCompare = pure $ \_ _ -> EQ + +instance GArbitraryOrd U1 where + garbitraryCompare = pure $ \_ _ -> EQ + +instance (GArbitraryOrd f, GArbitraryOrd g) => GArbitraryOrd (f :+: g) where + garbitraryCompare = do + bias <- QC.arbitrary + lcompare <- garbitraryCompare + rcompare <- garbitraryCompare + pure $ \l r -> + let args = if bias then (l, r) else (r, l) + in case args of + (L1 x, L1 y) -> lcompare x y + (L1 _, R1 _) -> LT + (R1 x, R1 y) -> rcompare x y + (R1 _, L1 _) -> GT + +instance (GArbitraryOrd f, GArbitraryOrd g) => GArbitraryOrd (f :*: g) where + garbitraryCompare = do + bias <- QC.arbitrary + xcompare <- garbitraryCompare + ycompare <- garbitraryCompare + pure $ \l r -> + let (x1 :*: y1, x2 :*: y2) = if bias then (l, r) else (r, l) + in case xcompare x1 x2 of + LT -> LT + EQ -> ycompare y1 y2 + GT -> GT + +instance GArbitraryOrd f => GArbitraryOrd (M1 i t f) where + garbitraryCompare = (\c (M1 l) (M1 r) -> c l r) <$> garbitraryCompare + +instance ArbitraryOrd c => GArbitraryOrd (K1 i c) where + garbitraryCompare = (\c (K1 l) (K1 r) -> c l r) <$> arbitraryCompare + +-- | Typeclass for doing arbitrary (but law-abiding) comparisons. +class ArbitraryOrd a where + arbitraryCompare :: QC.Gen (a -> a -> Ordering) + default arbitraryCompare + :: (Generic a, GArbitraryOrd (Rep a)) => QC.Gen (a -> a -> Ordering) + arbitraryCompare = (\c l r -> c (from l) (from r)) <$> garbitraryCompare + +instance ArbitraryOrd Char where + arbitraryCompare = arbitraryCompareReverseSection + +-- | Construct an arbitrary comparison by (conceptually) laying out all values +-- in a list, picking two values (since we are using arbitrary these should +-- be "good" values), and then reversing the section between these two values. +arbitraryCompareReverseSection + :: (QC.Arbitrary a, Ord a) => QC.Gen (a -> a -> Ordering) +arbitraryCompareReverseSection = do + x <- QC.arbitrary + y <- QC.arbitrary + let inside n = n >= min x y && n <= max x y + pure $ \l r -> if inside l && inside r then compare r l else compare l r + +instance ArbitraryOrd a => ArbitraryOrd [a] where + arbitraryCompare = do + shorterIsLess <- QC.arbitrary + cmp <- arbitraryCompare + let go [] [] = EQ + go [] (_ : _) = if shorterIsLess then LT else GT + go (_ : _) [] = if shorterIsLess then GT else LT + go (x : xs) (y : ys) = case cmp x y of + LT -> LT + EQ -> go xs ys + GT -> GT + pure go diff --git a/cabal-install/tests/UnitTests/Distribution/Solver/Types/OptionalStanza.hs b/cabal-install/tests/UnitTests/Distribution/Solver/Types/OptionalStanza.hs index 3e2959b01f2..61f94ea28b4 100644 --- a/cabal-install/tests/UnitTests/Distribution/Solver/Types/OptionalStanza.hs +++ b/cabal-install/tests/UnitTests/Distribution/Solver/Types/OptionalStanza.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} - module UnitTests.Distribution.Solver.Types.OptionalStanza ( tests ) where diff --git a/cabal-install/tests/UnitTests/Options.hs b/cabal-install/tests/UnitTests/Options.hs index 232f80a2711..6971d271a17 100644 --- a/cabal-install/tests/UnitTests/Options.hs +++ b/cabal-install/tests/UnitTests/Options.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE DeriveDataTypeable #-} - module UnitTests.Options ( OptionShowSolverLog (..) , OptionMtimeChangeDelay (..) @@ -9,7 +7,6 @@ module UnitTests.Options where import Data.Proxy -import Data.Typeable import Test.Tasty.Options @@ -25,7 +22,6 @@ extraOptions = ] newtype OptionShowSolverLog = OptionShowSolverLog Bool - deriving (Typeable) instance IsOption OptionShowSolverLog where defaultValue = OptionShowSolverLog False @@ -35,7 +31,6 @@ instance IsOption OptionShowSolverLog where optionCLParser = flagCLParser Nothing (OptionShowSolverLog True) newtype OptionMtimeChangeDelay = OptionMtimeChangeDelay Int - deriving (Typeable) instance IsOption OptionMtimeChangeDelay where defaultValue = OptionMtimeChangeDelay 0 @@ -47,7 +42,6 @@ instance IsOption OptionMtimeChangeDelay where ++ "file modification, in microseconds" newtype RunNetworkTests = RunNetworkTests Bool - deriving (Typeable) instance IsOption RunNetworkTests where defaultValue = RunNetworkTests True diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external-target.out b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external-target.out index ff8d8b3f518..abca8b3cc98 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external-target.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external-target.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.external.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.out b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.out index 1c42b18b90a..d5aca3080fd 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-external.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.external.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal-target.out b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal-target.out index 2a91ccc557a..f9dfec2b574 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal-target.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal-target.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.internal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.out b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.out index 42f77888c8c..1bf07c32034 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cabal-internal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.internal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Includes2/cov.out b/cabal-testsuite/PackageTests/Backpack/Includes2/cov.out index 0d1b2c027b5..dde9cb4b37a 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes2/cov.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes2/cov.out @@ -1,4 +1,6 @@ # cabal test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.out b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.out index 6e2abbf4a0c..5c8ce031497 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-external.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.external.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.out b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.out index f7e2f2d75ef..9597b8ca719 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-internal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.internal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -18,8 +20,7 @@ Configuring library 'indef' instantiated with Data.Map = containers-:Data.Map for I-0.1.0.0... Preprocessing library 'indef' for I-0.1.0.0... -Building library 'indef' instantiated with - Data.Map = containers-:Data.Map +Building library 'indef' instantiated with Data.Map = containers-:Data.Map for I-0.1.0.0... Configuring executable 'exe' for I-0.1.0.0... Preprocessing executable 'exe' for I-0.1.0.0... diff --git a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-repo.out b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-repo.out index d6fb3844873..d6033fc608c 100644 --- a/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-repo.out +++ b/cabal-testsuite/PackageTests/Backpack/Includes3/cabal-repo.out @@ -1,6 +1,10 @@ # cabal v2-update +Configuration is affected by the following files: +- cabal.repo.project Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.repo.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out b/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out index 31c9428dcaf..2709b24a4d8 100644 --- a/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/Reexport2/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: Problem with module re-exports: diff --git a/cabal-testsuite/PackageTests/Backpack/T6385/cabal.out b/cabal-testsuite/PackageTests/Backpack/T6385/cabal.out index ad3387bf28b..7147f2ead8b 100644 --- a/cabal-testsuite/PackageTests/Backpack/T6385/cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/T6385/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.out b/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.out index 3ebec1cc5c1..6308ceaefd3 100644 --- a/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.out +++ b/cabal-testsuite/PackageTests/Backpack/bkpcabal01/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/BuildAutogenPackageGuard/cabal.out b/cabal-testsuite/PackageTests/BuildAutogenPackageGuard/cabal.out index 512a50e37ee..8224b23be46 100644 --- a/cabal-testsuite/PackageTests/BuildAutogenPackageGuard/cabal.out +++ b/cabal-testsuite/PackageTests/BuildAutogenPackageGuard/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out index 966c934480b..053a770072e 100644 --- a/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out +++ b/cabal-testsuite/PackageTests/BuildDeps/DepCycle/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: Dependency cycle between the following components: diff --git a/cabal-testsuite/PackageTests/BuildDeps/InternalLibrary1/cabal.out b/cabal-testsuite/PackageTests/BuildDeps/InternalLibrary1/cabal.out index f00101f9ba2..eced886a5e8 100644 --- a/cabal-testsuite/PackageTests/BuildDeps/InternalLibrary1/cabal.out +++ b/cabal-testsuite/PackageTests/BuildDeps/InternalLibrary1/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out index a1636d8cbff..92f3698edc6 100644 --- a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out +++ b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackage/use-local-version-of-package.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -11,6 +13,8 @@ Building executable 'my-exe' for pkg-1.0... # pkg my-exe local pkg-1.0 # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out index 482ff118031..de46b91c396 100644 --- a/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out +++ b/cabal-testsuite/PackageTests/BuildTargets/UseLocalPackageForSetup/use-local-package-as-setup-dep.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/BuildToolDepends/setup.out b/cabal-testsuite/PackageTests/BuildToolDepends/setup.out index 9a873303de8..1c2bd108bca 100644 --- a/cabal-testsuite/PackageTests/BuildToolDepends/setup.out +++ b/cabal-testsuite/PackageTests/BuildToolDepends/setup.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/cabal.project b/cabal-testsuite/PackageTests/BuildToolDependsExternal/cabal.project new file mode 100644 index 00000000000..359fdc811bd --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/cabal.project @@ -0,0 +1,2 @@ +packages: client +optional-packages: pre-proc diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/client/Hello.x b/cabal-testsuite/PackageTests/BuildToolDependsExternal/client/Hello.x new file mode 100644 index 00000000000..28f179506bf --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/client/Hello.x @@ -0,0 +1,3 @@ +module Main where + +main = print 0 diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/client/client.cabal b/cabal-testsuite/PackageTests/BuildToolDependsExternal/client/client.cabal new file mode 100644 index 00000000000..a13e99b682a --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/client/client.cabal @@ -0,0 +1,13 @@ +name: client +version: 0.1.0.0 +synopsis: Checks build-tool-depends are put in PATH +license: BSD3 +category: Testing +build-type: Simple +cabal-version: >=1.10 + +executable hello-world + main-is: Hello.hs + build-depends: base + build-tool-depends: pre-proc:alex + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/pre-proc/MyCustomPreprocessor.hs b/cabal-testsuite/PackageTests/BuildToolDependsExternal/pre-proc/MyCustomPreprocessor.hs new file mode 100644 index 00000000000..bcc4af46d1c --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/pre-proc/MyCustomPreprocessor.hs @@ -0,0 +1,13 @@ +module Main where + +import System.Environment +import System.IO + +-- This is a "fake" version of alex, so it should take the command line arguments +-- as alex. +main :: IO () +main = do + (_:"-o":target:source:_) <- getArgs + let f '0' = '1' + f c = c + writeFile target . map f =<< readFile source diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/pre-proc/pre-proc.cabal b/cabal-testsuite/PackageTests/BuildToolDependsExternal/pre-proc/pre-proc.cabal new file mode 100644 index 00000000000..5724eb58296 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/pre-proc/pre-proc.cabal @@ -0,0 +1,17 @@ +name: pre-proc +version: 999.999.999 +synopsis: Checks build-tool-depends are put in PATH +license: BSD3 +category: Testing +build-type: Simple +cabal-version: >=1.10 + +executable alex + main-is: MyCustomPreprocessor.hs + build-depends: base, directory + default-language: Haskell2010 + +executable bad-do-not-build-me + main-is: MyMissingPreprocessor.hs + build-depends: base, directory + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/scripts/alex b/cabal-testsuite/PackageTests/BuildToolDependsExternal/scripts/alex new file mode 100755 index 00000000000..27bdc4e880d --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/scripts/alex @@ -0,0 +1,4 @@ +#! /usr/bin/env bash + +echo "I am not the alex you are looking for" +exit 1 diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/setup.out b/cabal-testsuite/PackageTests/BuildToolDependsExternal/setup.out new file mode 100644 index 00000000000..0600824409d --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/setup.out @@ -0,0 +1,14 @@ +# cabal v2-build +Configuration is affected by the following files: +- cabal.project +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - pre-proc-999.999.999 (exe:alex) (first run) + - client-0.1.0.0 (exe:hello-world) (first run) +Configuring executable 'alex' for pre-proc-999.999.999... +Preprocessing executable 'alex' for pre-proc-999.999.999... +Building executable 'alex' for pre-proc-999.999.999... +Configuring executable 'hello-world' for client-0.1.0.0... +Preprocessing executable 'hello-world' for client-0.1.0.0... +Building executable 'hello-world' for client-0.1.0.0... diff --git a/cabal-testsuite/PackageTests/BuildToolDependsExternal/setup.test.hs b/cabal-testsuite/PackageTests/BuildToolDependsExternal/setup.test.hs new file mode 100644 index 00000000000..6575b355838 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildToolDependsExternal/setup.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude +-- Test build-tool-depends isn't influenced by PATH +main = cabalTest $ do + env <- getTestEnv + addToPath (testTmpDir env "scripts/") $ cabal "v2-build" ["client"] diff --git a/cabal-testsuite/PackageTests/BuildTools/External/cabal.out b/cabal-testsuite/PackageTests/BuildTools/External/cabal.out index b61bf0f1886..8fee1586cdc 100644 --- a/cabal-testsuite/PackageTests/BuildTools/External/cabal.out +++ b/cabal-testsuite/PackageTests/BuildTools/External/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/BuildTools/Internal/cabal.out b/cabal-testsuite/PackageTests/BuildTools/Internal/cabal.out index 37cab90e663..73d2639a82f 100644 --- a/cabal-testsuite/PackageTests/BuildTools/Internal/cabal.out +++ b/cabal-testsuite/PackageTests/BuildTools/Internal/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/BuildWays/p/CHANGELOG.md b/cabal-testsuite/PackageTests/BuildWays/p/CHANGELOG.md new file mode 100644 index 00000000000..9ede8b27d4f --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/p/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for p + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/cabal-testsuite/PackageTests/BuildWays/p/p.cabal b/cabal-testsuite/PackageTests/BuildWays/p/p.cabal new file mode 100644 index 00000000000..687cf16bc0c --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/p/p.cabal @@ -0,0 +1,18 @@ +cabal-version: 3.12 +name: p +version: 0.1.0.0 +license: NONE +author: Matthew Pickering +maintainer: matthewtpickering@gmail.com +build-type: Simple +extra-doc-files: CHANGELOG.md + +common warnings + ghc-options: -Wall + +library + import: warnings + exposed-modules: MyLib + build-depends: base + hs-source-dirs: src + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/BuildWays/p/src/MyLib.hs b/cabal-testsuite/PackageTests/BuildWays/p/src/MyLib.hs new file mode 100644 index 00000000000..e657c4403f6 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/p/src/MyLib.hs @@ -0,0 +1,4 @@ +module MyLib (someFunc) where + +someFunc :: IO () +someFunc = putStrLn "someFunc" diff --git a/cabal-testsuite/PackageTests/BuildWays/q/CHANGELOG.md b/cabal-testsuite/PackageTests/BuildWays/q/CHANGELOG.md new file mode 100644 index 00000000000..62632c53766 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/q/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for q + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/cabal-testsuite/PackageTests/BuildWays/q/app/Main.hs b/cabal-testsuite/PackageTests/BuildWays/q/app/Main.hs new file mode 100644 index 00000000000..642b418a547 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/q/app/Main.hs @@ -0,0 +1,7 @@ +{-# LANGUAGE TemplateHaskell #-} +module Main where + +import MyLib + +main :: IO () +main = someFunc diff --git a/cabal-testsuite/PackageTests/BuildWays/q/q.cabal b/cabal-testsuite/PackageTests/BuildWays/q/q.cabal new file mode 100644 index 00000000000..a4f2a1d65d7 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/q/q.cabal @@ -0,0 +1,19 @@ +cabal-version: 3.12 +name: q +version: 0.1.0.0 +license: NONE +author: Matthew Pickering +maintainer: matthewtpickering@gmail.com +build-type: Simple +extra-doc-files: CHANGELOG.md + +common warnings + ghc-options: -Wall + +executable q + import: warnings + main-is: Main.hs + build-depends: p, base + hs-source-dirs: app + ghc-options: -dynamic-too + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/BuildWays/setup.test.hs b/cabal-testsuite/PackageTests/BuildWays/setup.test.hs new file mode 100644 index 00000000000..dd4531599e4 --- /dev/null +++ b/cabal-testsuite/PackageTests/BuildWays/setup.test.hs @@ -0,0 +1,10 @@ +import Test.Cabal.Prelude + +opts = ["--enable-shared", "--enable-library-vanilla", "--enable-library-profiling"] + +-- See #10418 +main = setupTest $ recordMode DoNotRecord $ withPackageDb $ do + skipIfNoSharedLibraries + skipIfNoProfiledLibraries + withDirectory "p" $ setup_install opts + withDirectory "q" $ setup_install opts diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out index c037b09c0f5..37bb62112ca 100644 --- a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/cabal.out @@ -1,4 +1,4 @@ # cabal check The package will not build sanely due to these errors: -Error: [impossible-dep] The package has an impossible version range for a dependency on an internal library: pkg:internal >1.0 && <2.0. This version range does not include the current package, and must be removed as the current package's library will always be used. +Error: [impossible-dep] The package has an impossible version range for a dependency on an internal library: pkg:internal >=1.0 && <2. This version range does not include the current package, and must be removed as the current package's library will always be used. Error: Hackage would reject this package. diff --git a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal index ffebdd5ee04..64165ade3cb 100644 --- a/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal +++ b/cabal-testsuite/PackageTests/Check/ConfiguredPackage/Fields/ImpossibleVersionRangeLib/pkg.cabal @@ -10,7 +10,7 @@ license: GPL-3.0-or-later library exposed-modules: Module build-depends: base == 4.*, - internal > 1.0 && < 2.0 + internal >= 1.0 && < 2 default-language: Haskell2010 library internal diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out b/cabal-testsuite/PackageTests/Check/DepVersionRange/BaseDep/cabal.out similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.out rename to cabal-testsuite/PackageTests/Check/DepVersionRange/BaseDep/cabal.out diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.test.hs b/cabal-testsuite/PackageTests/Check/DepVersionRange/BaseDep/cabal.test.hs similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/cabal.test.hs rename to cabal-testsuite/PackageTests/Check/DepVersionRange/BaseDep/cabal.test.hs diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/pkg.cabal b/cabal-testsuite/PackageTests/Check/DepVersionRange/BaseDep/pkg.cabal similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersions/pkg.cabal rename to cabal-testsuite/PackageTests/Check/DepVersionRange/BaseDep/pkg.cabal diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/Setup.hs b/cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/Setup.hs similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/Setup.hs rename to cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/Setup.hs diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out b/cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/cabal.out similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.out rename to cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/cabal.out diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.test.hs b/cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/cabal.test.hs similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/cabal.test.hs rename to cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/cabal.test.hs diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal b/cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/pkg.cabal similarity index 90% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal rename to cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/pkg.cabal index 1c184cb17d4..3aa5c161924 100644 --- a/cabal-testsuite/PackageTests/Check/NonConfCheck/SetupBounds/pkg.cabal +++ b/cabal-testsuite/PackageTests/Check/DepVersionRange/CustomSetupBaseDep/pkg.cabal @@ -9,7 +9,7 @@ maintainer: none@example.com license: GPL-3.0-or-later custom-setup - setup-depends: base > 1 + setup-depends: base >= 1 library exposed-modules: Foo diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/cabal.out b/cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/cabal.out similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/cabal.out rename to cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/cabal.out diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/cabal.test.hs b/cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/cabal.test.hs similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/cabal.test.hs rename to cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/cabal.test.hs diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/pkg.cabal b/cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/pkg.cabal similarity index 84% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/pkg.cabal rename to cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/pkg.cabal index 3d5b861f059..a4e0eecab0d 100644 --- a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsLibInt/pkg.cabal +++ b/cabal-testsuite/PackageTests/Check/DepVersionRange/InternalLibDep/pkg.cabal @@ -9,12 +9,12 @@ license: GPL-3.0-or-later library exposed-modules: Foo - build-depends: base <= 3.10, + build-depends: base < 3.10, int-lib default-language: Haskell2010 library int-lib exposed-modules: Bar - build-depends: text > 1 + build-depends: text >= 1 default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/cabal.out b/cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/cabal.out similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/cabal.out rename to cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/cabal.out diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/cabal.test.hs b/cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/cabal.test.hs similarity index 100% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/cabal.test.hs rename to cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/cabal.test.hs diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/pkg.cabal b/cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/pkg.cabal similarity index 92% rename from cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/pkg.cabal rename to cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/pkg.cabal index 06c47e49740..eb60e1c4472 100644 --- a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternalSimple/pkg.cabal +++ b/cabal-testsuite/PackageTests/Check/DepVersionRange/UnboundedInternalDep/pkg.cabal @@ -9,7 +9,7 @@ license: GPL-3.0-or-later library exposed-modules: Foo - build-depends: text < 5.0 + build-depends: text < 5 default-language: Haskell2010 executable prova diff --git a/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/cabal.out b/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/cabal.out new file mode 100644 index 00000000000..e566ffae18a --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/cabal.out @@ -0,0 +1,18 @@ +# cabal check +These warnings may cause trouble when distributing the package: +Warning: [missing-upper-bounds] On library, these packages miss upper bounds: + - missing-upper + - exclusive-minimums-missing-upper + - or-exclusive-minimums-missing-upper + - or-inclusive-maximums-missing-upper +Please add them. There is more information at https://pvp.haskell.org/ +Warning: [le-upper-bounds] On library, these packages have less than or equals (<=) upper bounds: + - inclusive-maximums + - and-inclusive-maximums + - or-inclusive-maximums-missing-upper +Please use less than (<) for upper bounds. +Warning: [gt-lower-bounds] On library, these packages have greater than (>) lower bounds: + - exclusive-minimums-missing-upper + - and-exclusive-minimums + - or-exclusive-minimums-missing-upper +Please use greater than or equals (>=) for lower bounds. diff --git a/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/cabal.test.hs b/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/cabal.test.hs new file mode 100644 index 00000000000..60a32cb7374 --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/cabal.test.hs @@ -0,0 +1,4 @@ +import Test.Cabal.Prelude + +main = cabalTest $ + cabal "check" [] diff --git a/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/pkg.cabal b/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/pkg.cabal new file mode 100644 index 00000000000..f8fc673e14c --- /dev/null +++ b/cabal-testsuite/PackageTests/Check/DepVersionRange/VersionConstraintOperators/pkg.cabal @@ -0,0 +1,25 @@ +cabal-version: 3.0 +name: pkg +synopsis: synopsis +description: description +version: 0 +category: example +maintainer: none@example.com +license: GPL-3.0-or-later + +library + exposed-modules: Foo + default-language: Haskell2010 + build-depends: + , base ^>= 4.20.0.0 + + , missing-upper >= 0 + , missing-lower < 1 + + , exclusive-minimums-missing-upper > 0 + , and-exclusive-minimums > 0 && < 1 + , or-exclusive-minimums-missing-upper > 0 || < 1 + + , inclusive-maximums <= 1 + , and-inclusive-maximums >= 0 && <= 1 + , or-inclusive-maximums-missing-upper >= 0 || <= 1 diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternal/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternal/pkg.cabal index 91943d4987a..cbd71c314f5 100644 --- a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternal/pkg.cabal +++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsInternal/pkg.cabal @@ -10,7 +10,7 @@ license: GPL-3.0-or-later library exposed-modules: Foo default-language: Haskell2010 - build-depends: base <= 3.10 + build-depends: base < 3.10 executable test-exe main-is: Main.hs diff --git a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsStraddle/pkg.cabal b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsStraddle/pkg.cabal index b21ffe61f12..37d3948e696 100644 --- a/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsStraddle/pkg.cabal +++ b/cabal-testsuite/PackageTests/Check/NonConfCheck/PackageVersionsStraddle/pkg.cabal @@ -10,6 +10,6 @@ license: GPL-3.0-or-later library exposed-modules: Foo default-language: Haskell2010 - build-depends: base > 2, - base <= 3.10 + build-depends: base >= 2, + base < 3.10 diff --git a/cabal-testsuite/PackageTests/CmmSources/cabal.out b/cabal-testsuite/PackageTests/CmmSources/cabal.out index 1664b64c7fc..f05bf7aa5a4 100644 --- a/cabal-testsuite/PackageTests/CmmSources/cabal.out +++ b/cabal-testsuite/PackageTests/CmmSources/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/CmmSourcesDyn/cabal.out b/cabal-testsuite/PackageTests/CmmSourcesDyn/cabal.out index 1664b64c7fc..f05bf7aa5a4 100644 --- a/cabal-testsuite/PackageTests/CmmSourcesDyn/cabal.out +++ b/cabal-testsuite/PackageTests/CmmSourcesDyn/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/CmmSourcesExe/cabal.out b/cabal-testsuite/PackageTests/CmmSourcesExe/cabal.out index 77b94906515..8ad5a59bac4 100644 --- a/cabal-testsuite/PackageTests/CmmSourcesExe/cabal.out +++ b/cabal-testsuite/PackageTests/CmmSourcesExe/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out index 7a6333d21bc..63038c95bbd 100644 --- a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.out @@ -1,6 +1,10 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-run +Configuration is affected by the following files: +- cabal.project +- extra.project + imported by: cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -62,6 +66,13 @@ cyclical import of cyclical-2-out-out-self-b.config; imported by: cyclical-2-out-out-self.project # checking that cyclical check doesn't false-positive on same file names in different folders; hoping within a folder and then into a subfolder # cabal v2-build +Configuration is affected by the following files: +- noncyclical-same-filename-a.project +- noncyclical-same-filename-a.config + imported by: noncyclical-same-filename-a.project +- same-filename/noncyclical-same-filename-a.config + imported by: noncyclical-same-filename-a.config + imported by: noncyclical-same-filename-a.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -71,6 +82,13 @@ Preprocessing library for my-0.1... Building library for my-0.1... # checking that cyclical check doesn't false-positive on same file names in different folders; hoping into a subfolder and then back out again # cabal v2-build +Configuration is affected by the following files: +- noncyclical-same-filename-b.project +- noncyclical-same-filename-b.config + imported by: same-filename/noncyclical-same-filename-b.config + imported by: noncyclical-same-filename-b.project +- same-filename/noncyclical-same-filename-b.config + imported by: noncyclical-same-filename-b.project Up to date # checking that cyclical check catches a same file name that imports itself # cabal v2-build @@ -101,9 +119,121 @@ cyclical import of cyclical-same-filename-out-out-back.config; imported by: cyclical-same-filename-out-out-back.project # checking that imports work skipping into a subfolder and then back out again and again # cabal v2-build +Configuration is affected by the following files: +- hops-0.project +- hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops-4.config + imported by: hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops-6.config + imported by: hops/hops-5.config + imported by: hops-4.config + imported by: hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops-8.config + imported by: hops/hops-7.config + imported by: hops-6.config + imported by: hops/hops-5.config + imported by: hops-4.config + imported by: hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops/hops-1.config + imported by: hops-0.project +- hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops/hops-5.config + imported by: hops-4.config + imported by: hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops/hops-7.config + imported by: hops-6.config + imported by: hops/hops-5.config + imported by: hops-4.config + imported by: hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project +- hops/hops-9.config + imported by: hops-8.config + imported by: hops/hops-7.config + imported by: hops-6.config + imported by: hops/hops-5.config + imported by: hops-4.config + imported by: hops/hops-3.config + imported by: hops-2.config + imported by: hops/hops-1.config + imported by: hops-0.project Up to date # checking conflicting constraints skipping into a subfolder and then back out again and again # cabal v2-build +Configuration is affected by the following files: +- oops-0.project +- oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops-4.config + imported by: oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops-6.config + imported by: oops/oops-5.config + imported by: oops-4.config + imported by: oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops-8.config + imported by: oops/oops-7.config + imported by: oops-6.config + imported by: oops/oops-5.config + imported by: oops-4.config + imported by: oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops/oops-1.config + imported by: oops-0.project +- oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops/oops-5.config + imported by: oops-4.config + imported by: oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops/oops-7.config + imported by: oops-6.config + imported by: oops/oops-5.config + imported by: oops-4.config + imported by: oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project +- oops/oops-9.config + imported by: oops-8.config + imported by: oops/oops-7.config + imported by: oops-6.config + imported by: oops/oops-5.config + imported by: oops-4.config + imported by: oops/oops-3.config + imported by: oops-2.config + imported by: oops/oops-1.config + imported by: oops-0.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs index c1aea47ce85..b5429e39776 100644 --- a/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/cabal.test.hs @@ -111,7 +111,7 @@ main = cabalTest . withRepo "repo" . recordMode RecordMarked $ do -- +-- hops/hops-9.config (no further imports so not cyclical) log "checking that imports work skipping into a subfolder and then back out again and again" hopping <- cabal' "v2-build" [ "--project-file=hops-0.project" ] - assertOutputContains "this build was affected by the following (project) config files:" hopping + assertOutputContains "Configuration is affected by the following files" hopping assertOutputContains "- hops-0.project" hopping assertOutputContains diff --git a/cabal-testsuite/PackageTests/ConditionalAndImport/with-ghc.config b/cabal-testsuite/PackageTests/ConditionalAndImport/with-ghc.config new file mode 100644 index 00000000000..140a00be1b9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ConditionalAndImport/with-ghc.config @@ -0,0 +1,7 @@ +-- WARNING: Override the `with-compiler: ghc-x.y.z` of the stackage import, of +-- https://www.stackage.org/nightly-yyyy-mm-dd/cabal.config. Otherwise tests +-- will fail with: +-- -Error: [Cabal-5490] +-- -Cannot find the program 'ghc'. User-specified path 'ghc-x.y.z' does not +-- refer to an executable and the program is not on the system path. +with-compiler: ghc diff --git a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out index bf17f93ac6c..507f9fc2ccb 100644 --- a/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out +++ b/cabal-testsuite/PackageTests/ConfigFile/T8487/cabal.out @@ -1,4 +1,6 @@ # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O2 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Configure/cabal.out b/cabal-testsuite/PackageTests/Configure/cabal.out index 79a33e68892..019ac30955f 100644 --- a/cabal-testsuite/PackageTests/Configure/cabal.out +++ b/cabal-testsuite/PackageTests/Configure/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Configure/cabal.test.hs b/cabal-testsuite/PackageTests/Configure/cabal.test.hs index afcc00cbf7a..cd419e8cee2 100644 --- a/cabal-testsuite/PackageTests/Configure/cabal.test.hs +++ b/cabal-testsuite/PackageTests/Configure/cabal.test.hs @@ -2,9 +2,26 @@ import Test.Cabal.Prelude import Control.Monad.IO.Class import Data.Maybe import System.Directory +import System.Environment +import Data.List (isSuffixOf) + -- Test for 'build-type: Configure' example from the setup manual. main = cabalTest $ do - hasAutoreconf <- liftIO $ fmap isJust $ findExecutable "autoreconf" - skipUnless "no autoreconf" hasAutoreconf - _ <- shell "autoreconf" ["-i"] - cabal "v2-build" [] + if isWindows + then do + (mCI, mSh) <- liftIO $ (,) <$> lookupEnv "CI" <*> lookupEnv "SHELL" + case (mCI, mSh) of + (Nothing, Nothing) -> skip "Missing $SHELL" + (Nothing, Just sh) -> do + env <- getTestEnv + void $ shell sh [ "-l", "-c", "cd $(cygpath -m '" <> testTmpDir env <> "') && autoreconf -i"] + cabal "v2-build" [] + (Just{}, _) -> do + env <- getTestEnv + void $ shell "C:\\msys64\\usr\\bin\\bash.exe" [ "-l", "-c", "cd $(cygpath -m '" <> testTmpDir env <> "') && autoreconf -i"] + cabal "v2-build" [] + else do + hasAutoreconf <- liftIO $ fmap isJust $ findExecutable "autoreconf" + skipUnless "no autoreconf" hasAutoreconf + _ <- shell "autoreconf" ["-i"] + cabal "v2-build" [] diff --git a/cabal-testsuite/PackageTests/Configure/setup.test.hs b/cabal-testsuite/PackageTests/Configure/setup.test.hs index 559b88c6ff2..5eaea387fe6 100644 --- a/cabal-testsuite/PackageTests/Configure/setup.test.hs +++ b/cabal-testsuite/PackageTests/Configure/setup.test.hs @@ -2,9 +2,25 @@ import Test.Cabal.Prelude import Control.Monad.IO.Class import Data.Maybe import System.Directory +import System.Environment + -- Test for 'build-type: Configure' example from the setup manual. -main = setupTest $ do - hasAutoreconf <- liftIO $ fmap isJust $ findExecutable "autoreconf" - skipUnless "no autoreconf" hasAutoreconf - _ <- shell "autoreconf" ["-i"] - setup_build [] +main = setupTest $ + if isWindows + then do + (mCI, mSh) <- liftIO $ (,) <$> lookupEnv "CI" <*> lookupEnv "SHELL" + case (mCI, mSh) of + (Nothing, Nothing) -> skip "Missing $SHELL" + (Nothing, Just sh) -> do + env <- getTestEnv + void $ shell sh [ "-l", "-c", "cd $(cygpath -m '" <> testTmpDir env <> "') && autoreconf -i"] + setup_build [] + (Just{}, _) -> do + env <- getTestEnv + void $ shell "C:\\msys64\\usr\\bin\\bash.exe" [ "-l", "-c", "cd $(cygpath -m '" <> testTmpDir env <> "') && autoreconf -i"] + setup_build [] + else do + hasAutoreconf <- liftIO $ fmap isJust $ findExecutable "autoreconf" + skipUnless "no autoreconf" hasAutoreconf + _ <- shell "autoreconf" ["-i"] + setup_build [] diff --git a/cabal-testsuite/PackageTests/CopyHie/cabal.out b/cabal-testsuite/PackageTests/CopyHie/cabal.out index a45daf37831..d6e8a9f3f42 100644 --- a/cabal-testsuite/PackageTests/CopyHie/cabal.out +++ b/cabal-testsuite/PackageTests/CopyHie/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/CustomSegfault/cabal.out b/cabal-testsuite/PackageTests/CustomSegfault/cabal.out index 80f27e69b58..2c7f2ea0ddc 100644 --- a/cabal-testsuite/PackageTests/CustomSegfault/cabal.out +++ b/cabal-testsuite/PackageTests/CustomSegfault/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/CustomTestCoverage/cabal.out b/cabal-testsuite/PackageTests/CustomTestCoverage/cabal.out index 8597dcc94df..f46d372f357 100644 --- a/cabal-testsuite/PackageTests/CustomTestCoverage/cabal.out +++ b/cabal-testsuite/PackageTests/CustomTestCoverage/cabal.out @@ -1,4 +1,6 @@ # cabal test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/CustomWithoutCabal/cabal.out b/cabal-testsuite/PackageTests/CustomWithoutCabal/cabal.out index 74d7f6adf31..b2e823ff426 100644 --- a/cabal-testsuite/PackageTests/CustomWithoutCabal/cabal.out +++ b/cabal-testsuite/PackageTests/CustomWithoutCabal/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/CustomWithoutCabalDefaultMain/cabal.out b/cabal-testsuite/PackageTests/CustomWithoutCabalDefaultMain/cabal.out index 0e26184375c..49829f86e53 100644 --- a/cabal-testsuite/PackageTests/CustomWithoutCabalDefaultMain/cabal.out +++ b/cabal-testsuite/PackageTests/CustomWithoutCabalDefaultMain/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/Setup.hs b/cabal-testsuite/PackageTests/DataDirSetupTest/Setup.hs new file mode 100644 index 00000000000..9a994af677b --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.cabal.out b/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.cabal.out new file mode 100644 index 00000000000..f1e923b5ca8 --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.cabal.out @@ -0,0 +1,13 @@ +# Setup configure +Configuring datadir-test-0.1.0.0... +# Setup build +Preprocessing library for datadir-test-0.1.0.0... +Building library for datadir-test-0.1.0.0... +Preprocessing test suite 'datadir-test' for datadir-test-0.1.0.0... +Building test suite 'datadir-test' for datadir-test-0.1.0.0... +# Setup test +Running 1 test suites... +Test suite datadir-test: RUNNING... +Test suite datadir-test: PASS +Test suite logged to: cabal.cabal.dist/work/dist/test/datadir-test-0.1.0.0-datadir-test.log +1 of 1 test suites (1 of 1 test cases) passed. diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.out b/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.out new file mode 100644 index 00000000000..eadbc3aeac3 --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.out @@ -0,0 +1,13 @@ +# Setup configure +Configuring datadir-test-0.1.0.0... +# Setup build +Preprocessing library for datadir-test-0.1.0.0... +Building library for datadir-test-0.1.0.0... +Preprocessing test suite 'datadir-test' for datadir-test-0.1.0.0... +Building test suite 'datadir-test' for datadir-test-0.1.0.0... +# Setup test +Running 1 test suites... +Test suite datadir-test: RUNNING... +Test suite datadir-test: PASS +Test suite logged to: cabal.dist/work/dist/test/datadir-test-0.1.0.0-datadir-test.log +1 of 1 test suites (1 of 1 test cases) passed. diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.test.hs b/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.test.hs new file mode 100644 index 00000000000..e779c5cb62b --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +main = setupAndCabalTest $ do + setup_build ["--enable-tests"] + setup "test" ["--show-details=streaming"] diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/datadir-test.cabal b/cabal-testsuite/PackageTests/DataDirSetupTest/datadir-test.cabal new file mode 100644 index 00000000000..b17ed9835fe --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/datadir-test.cabal @@ -0,0 +1,27 @@ +cabal-version: 2.4 +name: datadir-test +version: 0.1.0.0 +synopsis: Test for datadir environment variable +license: BSD-3-Clause +author: Cabal Test Suite +maintainer: cabal-dev@haskell.org +build-type: Simple + +data-files: + testdata/sample.txt + +library + exposed-modules: MyLib + build-depends: base >=4.7 && <5 + other-modules: Paths_datadir_test + hs-source-dirs: src + default-language: Haskell2010 + +test-suite datadir-test + type: exitcode-stdio-1.0 + main-is: DataDirTest.hs + hs-source-dirs: test + build-depends: base >=4.7 && <5, + datadir-test, + directory + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/src/MyLib.hs b/cabal-testsuite/PackageTests/DataDirSetupTest/src/MyLib.hs new file mode 100644 index 00000000000..5aa2db01bdb --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/src/MyLib.hs @@ -0,0 +1,6 @@ +module MyLib (getDataFileName) where + +import qualified Paths_datadir_test as Paths + +getDataFileName :: FilePath -> IO FilePath +getDataFileName = Paths.getDataFileName diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/test/DataDirTest.hs b/cabal-testsuite/PackageTests/DataDirSetupTest/test/DataDirTest.hs new file mode 100644 index 00000000000..1c5d14b7f0b --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/test/DataDirTest.hs @@ -0,0 +1,48 @@ +{-# LANGUAGE ScopedTypeVariables #-} +module Main where + +import Control.Monad (when) +import System.Directory (createDirectory, doesFileExist, getCurrentDirectory, setCurrentDirectory) +import System.Environment (getEnv) +import System.Exit (exitFailure, exitSuccess) +import System.IO (hPutStrLn, stderr) +import MyLib (getDataFileName) +import Control.Exception + +main :: IO () +main = do + -- Print the datadir environment variable + dataDirEnv <- getEnv "datadir_test_datadir" + putStrLn $ "datadir_test_datadir: " ++ dataDirEnv + + -- Get path to our test data file + dataFilePath <- getDataFileName "testdata/sample.txt" + putStrLn $ "Data file path: " ++ dataFilePath + + -- Check that we can access the file + fileExists <- doesFileExist dataFilePath + putStrLn $ "File exists: " ++ show fileExists + + -- Create a subdirectory and change into it + currentDir <- getCurrentDirectory + putStrLn $ "Current directory: " ++ currentDir + createDirectory "subdir" `catch` \(_ :: SomeException) -> pure () + setCurrentDirectory "subdir" + newDir <- getCurrentDirectory + putStrLn $ "New directory: " ++ newDir + + -- Try to access the data file again after changing directory + dataFilePathAfterCd <- getDataFileName "testdata/sample.txt" + putStrLn $ "Data file path after cd: " ++ dataFilePathAfterCd + + fileExistsAfterCd <- doesFileExist dataFilePathAfterCd + putStrLn $ "File exists after cd: " ++ show fileExistsAfterCd + + -- Exit with error if we can't find the file + when (not fileExistsAfterCd) $ do + hPutStrLn stderr "ERROR: Could not find data file after changing directory!" + hPutStrLn stderr $ "datadir_test_datadir was set to: " ++ dataDirEnv + exitFailure + + putStrLn "SUCCESS: Data file found correctly even after changing directory!" + exitSuccess diff --git a/cabal-testsuite/PackageTests/DataDirSetupTest/testdata/sample.txt b/cabal-testsuite/PackageTests/DataDirSetupTest/testdata/sample.txt new file mode 100644 index 00000000000..464ea37bec0 --- /dev/null +++ b/cabal-testsuite/PackageTests/DataDirSetupTest/testdata/sample.txt @@ -0,0 +1 @@ +This is test data for the datadir test. diff --git a/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.out b/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.out new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.project b/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.project new file mode 100644 index 00000000000..58d710ed2dd --- /dev/null +++ b/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.project @@ -0,0 +1 @@ +packages: p diff --git a/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.test.hs b/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.test.hs new file mode 100644 index 00000000000..f02f9350102 --- /dev/null +++ b/cabal-testsuite/PackageTests/DuplicateEnvVars/cabal.test.hs @@ -0,0 +1,5 @@ +import Test.Cabal.Prelude + +main = cabalTest $ recordMode DoNotRecord $ do + res <- cabal' "test" ["all"] + assertOutputContains "No duplicate environment variables found" res diff --git a/cabal-testsuite/PackageTests/DuplicateEnvVars/p/Main.hs b/cabal-testsuite/PackageTests/DuplicateEnvVars/p/Main.hs new file mode 100644 index 00000000000..42bf2496553 --- /dev/null +++ b/cabal-testsuite/PackageTests/DuplicateEnvVars/p/Main.hs @@ -0,0 +1,16 @@ +module Main where + +import Data.List (group, sort) +import System.Environment (getEnvironment) + +main = do + env <- getEnvironment + let sortedEnv = sort env + duplicates = filter (\g -> length g > 1) $ group $ map fst sortedEnv + + if null duplicates + then putStrLn "No duplicate environment variables found." + else do + putStrLn "Found duplicate environment variables:" + mapM_ (\d -> putStrLn $ " - " ++ head d) duplicates + fail "Test failed due to duplicate environment variables" diff --git a/cabal-testsuite/PackageTests/DuplicateEnvVars/p/p.cabal b/cabal-testsuite/PackageTests/DuplicateEnvVars/p/p.cabal new file mode 100644 index 00000000000..23bc3d59902 --- /dev/null +++ b/cabal-testsuite/PackageTests/DuplicateEnvVars/p/p.cabal @@ -0,0 +1,10 @@ +cabal-version: 3.0 +name: p +version: 0.1.0.0 +build-type: Simple + +test-suite env-test + default-language: Haskell2010 + type: exitcode-stdio-1.0 + main-is: Main.hs + build-depends: base diff --git a/cabal-testsuite/PackageTests/Exec/cabal.out b/cabal-testsuite/PackageTests/Exec/cabal.out index 7ce2cfb90f0..28952d14e4e 100644 --- a/cabal-testsuite/PackageTests/Exec/cabal.out +++ b/cabal-testsuite/PackageTests/Exec/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExecModern/cabal.out b/cabal-testsuite/PackageTests/ExecModern/cabal.out index fc4e1b601b3..0e1b514edcb 100644 --- a/cabal-testsuite/PackageTests/ExecModern/cabal.out +++ b/cabal-testsuite/PackageTests/ExecModern/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExternalCommand/cabal.out b/cabal-testsuite/PackageTests/ExternalCommand/cabal.out index 1c4c24db55c..a5139bb22a6 100644 --- a/cabal-testsuite/PackageTests/ExternalCommand/cabal.out +++ b/cabal-testsuite/PackageTests/ExternalCommand/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExternalCommandEnv/cabal.out b/cabal-testsuite/PackageTests/ExternalCommandEnv/cabal.out index 1c4c24db55c..a5139bb22a6 100644 --- a/cabal-testsuite/PackageTests/ExternalCommandEnv/cabal.out +++ b/cabal-testsuite/PackageTests/ExternalCommandEnv/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExternalCommandExitCode/cabal.out b/cabal-testsuite/PackageTests/ExternalCommandExitCode/cabal.out index 1c4c24db55c..a5139bb22a6 100644 --- a/cabal-testsuite/PackageTests/ExternalCommandExitCode/cabal.out +++ b/cabal-testsuite/PackageTests/ExternalCommandExitCode/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExternalCommandHelp/cabal.out b/cabal-testsuite/PackageTests/ExternalCommandHelp/cabal.out index 1c4c24db55c..a5139bb22a6 100644 --- a/cabal-testsuite/PackageTests/ExternalCommandHelp/cabal.out +++ b/cabal-testsuite/PackageTests/ExternalCommandHelp/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExtraPackages/cabal.out b/cabal-testsuite/PackageTests/ExtraPackages/cabal.out index 95c356b73f6..0ae87fbc8ef 100644 --- a/cabal-testsuite/PackageTests/ExtraPackages/cabal.out +++ b/cabal-testsuite/PackageTests/ExtraPackages/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ExtraProgPath/setup.out b/cabal-testsuite/PackageTests/ExtraProgPath/setup.out index 01fc2e5cfc0..13729def443 100644 --- a/cabal-testsuite/PackageTests/ExtraProgPath/setup.out +++ b/cabal-testsuite/PackageTests/ExtraProgPath/setup.out @@ -1,4 +1,8 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project +Warning: cannot determine version of /pkg-config : +"" Warning: cannot determine version of /pkg-config : "" Resolving dependencies... diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/MyLibrary.hs b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/MyLibrary.hs new file mode 100644 index 00000000000..a51c414bcd2 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/MyLibrary.hs @@ -0,0 +1 @@ +module MyLibrary () where diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/cabal.project b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/cabal.project new file mode 100644 index 00000000000..0d7f076e888 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/cabal.project @@ -0,0 +1 @@ +packages: *.cabal diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/my.cabal b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/my.cabal new file mode 100644 index 00000000000..a5b78b076f9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/my.cabal @@ -0,0 +1,20 @@ +name: CheckExtraProgPathGlobal +version: 0.1 +license: BSD3 +license-file: LICENSE +author: Yuto Takano +maintainer: Yuto Takano +synopsis: Check Extra Prog Path Global +category: PackageTests +build-type: Simple +cabal-version: 2.0 + +description: + Check that Cabal recognizes an override of the prog path. + +Library + pkgconfig-depends: zlib + default-language: Haskell2010 + build-depends: base <5.0 + exposed-modules: + MyLibrary diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config new file mode 100644 index 00000000000..8e11e375648 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config @@ -0,0 +1,49 @@ +#!/bin/sh + +set -eu + +# ugly, but "good enough" for this test +# This will need to be updated whenever cabal invokes pkg-config +# in new ways +case "$*" in + '--version') + echo 2.1.0 # whatever + ;; + + '--variable pc_path pkg-config') + echo '.' + ;; + + '--list-all') + printf 'zlib zlib - zlib compression library\n' + # \256 = \xAE is the iso-8859-1 (latin-1) encoded version of U+00AE, + # i.e. the "registered sign": ® + # This resulted in problems, see #9608 + printf 'vpl Intel\256 Video Processing Library - Accelerated video decode, encode, and frame processing capabilities on Intel\256 GPUs\n' + # \360 = \xF0 is latin-1 for ð; this is orð, Icelandic for "word"/"words". + printf 'or\360 Icelandic characters\n' + ;; + + '--modversion '*) + shift # drop the --modversion + for arg; do + case "$arg" in + zlib) echo 1.3; ;; # whatever + vpl) echo 2.10; ;; # whatever + # No entry for orð here; let's not even try to match on that + *) + echo >&2 "Package $arg was not found in the pkg-config search path." + exit 1 + esac + done + ;; + + # Ignore some stuff we're not implementing + '--cflags '*) ;; + '--libs '*) ;; + + *) + echo >&2 "pkg-config: unrecognised arguments $* (this is an incomplete shim)" + exit 1 + ;; +esac diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config.exe b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config.exe differ diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config.shim b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config.shim new file mode 100644 index 00000000000..3b34632849f --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts-winpath/pkg-config.shim @@ -0,0 +1,2 @@ +path = "FINDSH/sh.exe" +args = "SCRIPTSWINPATHDIR/pkg-config" diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config new file mode 100755 index 00000000000..8093036d3e2 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config @@ -0,0 +1,3 @@ +#!/bin/sh + +exit 1; diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config.exe b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config.exe differ diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config.shim b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config.shim new file mode 100644 index 00000000000..c5115969480 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/scripts/pkg-config.shim @@ -0,0 +1,2 @@ +path = "FINDSH/sh.exe" +args = "SCRIPTSDIR/pkg-config" diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/setup.out b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/setup.out new file mode 100644 index 00000000000..c3836228383 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/setup.out @@ -0,0 +1,14 @@ +# cabal v2-build +Configuration is affected by the following files: +- cabal.project +Warning: cannot determine version of /scripts/pkg-config : +"" +Warning: cannot determine version of /scripts/pkg-config : +"" +Resolving dependencies... +Error: [Cabal-7107] +Could not resolve dependencies: +[__0] next goal: CheckExtraProgPathGlobal (user goal) +[__0] rejecting: CheckExtraProgPathGlobal-0.1 (pkg-config package zlib-any is needed but no pkg-config executable was found or querying it failed) +[__0] fail (backjumping, conflict set: CheckExtraProgPathGlobal) +After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: CheckExtraProgPathGlobal (2) diff --git a/cabal-testsuite/PackageTests/ExtraProgPathGlobal/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/setup.test.hs new file mode 100644 index 00000000000..5aba770b18b --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathGlobal/setup.test.hs @@ -0,0 +1,60 @@ +import Test.Cabal.Prelude +import System.Directory + +-- Test that extra-prog-path in the global cabal config (~/.cabal/config) +-- overrides the path for pkg-config while resolving a dependency on zlib. +-- Specifically, this test emulates the scenario on Windows where pkg-config +-- doesn't exist natively and must be provided via extra-prog-path. +main = cabalTest $ do + env <- getTestEnv + let + testDir = testCurrentDir env + tmpDir = testTmpDir env + -- Scripts is where we put a bad pkg-config + scripts = tmpDir "scripts" + -- Scripts-Winpath contains a mock pkg-config that returns good results. + -- We add this to PATH on Windows before executing the test so we can tell + -- apart when Cabal uses the override or not. + scripts_winpath = tmpDir "scripts-winpath" + + ------------------------- + -- Workaround for the fact that, on Windows, Cabal will only look for + -- .exe files to satisfy executable dependencies. So we have to create a + -- shim pkg-config.exe file in 'script'. This is a thin wrapper (which is + -- explicitly added to Git) that calls whatever is defined in the .shim + -- file. In our case, we rewrite the .shim file as below so that the + -- pkg-config script is executed using sh. + when isWindows $ do + mb_sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case mb_sh of + Nothing -> skip "no sh" + Just sh -> do + let escape = concatMap (\c -> case c of '\\' -> "\\\\\\\\"; x -> [x]) + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> escape sh <> "/g", escape (scripts "pkg-config.shim"), escape (scripts_winpath "pkg-config.shim") ] + void $ shell "sed" [ "-i", "-e", "s/SCRIPTSDIR/" <> escape scripts <> "/g", escape (scripts "pkg-config.shim") ] + void $ shell "sed" [ "-i", "-e", "s/SCRIPTSWINPATHDIR/" <> escape scripts_winpath <> "/g", escape (scripts_winpath "pkg-config.shim") ] + + -- End of Windows workaround + ------------------------------ + + -- On Windows, we want it to find the "scripts/pkg-config" (which will + -- return exit code 1), instead of what we add to the path + -- ("scripts-winpath/pkg-config", which will return exit code 0). This is + -- because Windows doesn't have a system pkg-config by default. If we didn't + -- add a known-to-be-good mock pkg-config in the path, we wouldn't be able + -- to tell apart from Cabal logs whether it wasn't able to find pkg-config + -- at all (test fail) or whether the override worked and it found the bad + -- one but couldn't query it (test success). + -- + -- On other systems, we want it to find "scripts/pkg-config" (exit code 1) + -- instead of the system pkg-config (success). + let wrap_test = if isWindows then addToPath scripts_winpath else id + + -- Add global config override in ~/.cabal/config (in the test environment). + liftIO $ appendFile (testUserCabalConfigFile env) $ + "\nextra-prog-path: " ++ scripts + liftIO $ putStrLn $ testUserCabalConfigFile env + + -- On correct behaviour, cabal should fail because it found our exit-code-1 + -- pkg-config through the global extra-prog-path. + fails $ wrap_test $ cabal "v2-build" [] diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/cabal.project b/cabal-testsuite/PackageTests/ExtraProgPathLocal/cabal.project new file mode 100644 index 00000000000..7c64e37f6d3 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/cabal.project @@ -0,0 +1 @@ +packages: client diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/client/Hello.x b/cabal-testsuite/PackageTests/ExtraProgPathLocal/client/Hello.x new file mode 100644 index 00000000000..9f36e8f8813 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/client/Hello.x @@ -0,0 +1,3 @@ +This file is deliberately an invalid .x file, +to ensure that we pick up the local alex script rather than +any system-wide alex executable. diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/client/client.cabal b/cabal-testsuite/PackageTests/ExtraProgPathLocal/client/client.cabal new file mode 100644 index 00000000000..825fb893922 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/client/client.cabal @@ -0,0 +1,12 @@ +name: client +version: 0.1.0.0 +synopsis: Checks build-tool-depends are put in PATH +license: BSD3 +category: Testing +build-type: Simple +cabal-version: >=1.10 + +executable hello-world + main-is: Hello.hs + build-depends: base + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex new file mode 100755 index 00000000000..5fd07c9795b --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex @@ -0,0 +1,3 @@ +#! /usr/bin/env bash + +echo "I am not the alex you are looking for" diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex.exe b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex.exe differ diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex.shim b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex.shim new file mode 100644 index 00000000000..1b827e8f883 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts/alex.shim @@ -0,0 +1,2 @@ +path = "FINDSH/sh.exe" +args = "SCRIPTSDIR/alex" diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex new file mode 100755 index 00000000000..671539c560e --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex @@ -0,0 +1,4 @@ +#! /usr/bin/env bash + +echo "I am the alex you are looking for" +echo "module Main where main = print ()" > $3 diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex.exe b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex.exe differ diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex.shim b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex.shim new file mode 100644 index 00000000000..0ab606d997a --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/scripts2/alex.shim @@ -0,0 +1,2 @@ +path = "FINDSH/sh.exe" +args = "SCRIPTS2DIR/alex" diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/setup.out b/cabal-testsuite/PackageTests/ExtraProgPathLocal/setup.out new file mode 100644 index 00000000000..8bcc416af16 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/setup.out @@ -0,0 +1,10 @@ +# cabal v2-build +Configuration is affected by the following files: +- cabal.project +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - client-0.1.0.0 (exe:hello-world) (first run) +Configuring executable 'hello-world' for client-0.1.0.0... +Preprocessing executable 'hello-world' for client-0.1.0.0... +Building executable 'hello-world' for client-0.1.0.0... diff --git a/cabal-testsuite/PackageTests/ExtraProgPathLocal/setup.test.hs b/cabal-testsuite/PackageTests/ExtraProgPathLocal/setup.test.hs new file mode 100644 index 00000000000..496d5822dd1 --- /dev/null +++ b/cabal-testsuite/PackageTests/ExtraProgPathLocal/setup.test.hs @@ -0,0 +1,39 @@ +import Test.Cabal.Prelude +import System.Directory + +-- Test package-local extra-prog-path works. +main = cabalTest $ do + env <- getTestEnv + let + testDir = testCurrentDir env + tmpDir = testTmpDir env + scripts1 = tmpDir "scripts" + scripts2 = tmpDir "scripts2" + + ------------------------- + -- Workaround for the fact that, on Windows, Cabal will only look for + -- .exe files to satisfy executable dependencs. So we have to create + -- shim alex.exe files (the good one in 'scripts2', the bad one in 'scripts') + -- with the logic below. + when isWindows $ do + mb_sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case mb_sh of + Nothing -> skip "no sh" + Just sh -> do + let escape = concatMap (\c -> case c of '\\' -> "\\\\\\\\"; x -> [x]) + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> escape sh <> "/g", escape (scripts1 "alex.shim"), escape (scripts2 "alex.shim") ] + void $ shell "sed" [ "-i", "-e", "s/SCRIPTSDIR/" <> escape scripts1 <> "/g", escape (scripts1 "alex.shim") ] + void $ shell "sed" [ "-i", "-e", "s/SCRIPTS2DIR/" <> escape scripts2 <> "/g", escape (scripts2 "alex.shim") ] + + -- End of Windows workarounds + ------------------------------ + + -- Add the 'scripts' directory to PATH, and add the 'scripts2' directory + -- to extra-prog-path. + -- + -- This checks that the executables in extra-prog-path take priority over + -- those in PATH: 'scripts/alex' will fail, while 'scripts2/alex' will succeed. + + liftIO $ appendFile (testDir "cabal.project") $ + "\npackage client\n extra-prog-path:" ++ scripts2 + addToPath scripts1 $ cabal "v2-build" ["client"] diff --git a/cabal-testsuite/PackageTests/FFI/CSourceDependsStub/cabal.out b/cabal-testsuite/PackageTests/FFI/CSourceDependsStub/cabal.out index cdfe4ab10de..d7d7f802298 100644 --- a/cabal-testsuite/PackageTests/FFI/CSourceDependsStub/cabal.out +++ b/cabal-testsuite/PackageTests/FFI/CSourceDependsStub/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.out b/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.out index 97e0b60ec7c..2db68152992 100644 --- a/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.out +++ b/cabal-testsuite/PackageTests/FFI/ForeignOptsC/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.out b/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.out index 522304298c4..a95271222aa 100644 --- a/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.out +++ b/cabal-testsuite/PackageTests/FFI/ForeignOptsCxx/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/cabal.test.hs b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/cabal.test.hs index 245901c8bef..da8afae103e 100644 --- a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/cabal.test.hs +++ b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/cabal.test.hs @@ -1,7 +1,7 @@ import Test.Cabal.Prelude main = do - cabalTest . expectBrokenIfWindows 10179 . recordMode DoNotRecord $ do + cabalTest . recordMode DoNotRecord $ do cwd <- fmap testCurrentDir getTestEnv testInvokedWithBuildRunner cwd "test" [] testInvokedWithBuildRunner cwd "run" ["ghcjs-exe"] @@ -14,6 +14,8 @@ testInvokedWithBuildRunner cwd cabalCmd extraArgs = do [ "--ghcjs" , "--with-compiler", cwd fakeGhcjsPath ] + -- On windows point cabal to the right cc + ++ if isWindows then ["--with-gcc", "scripts/cc.bat"] else [] assertOutputContains magicString output where - fakeGhcjsPath = "scripts/fake-ghcjs.sh" + fakeGhcjsPath = if isWindows then "scripts/fake-ghcjs.exe" else "scripts/fake-ghcjs.sh" diff --git a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/cc.bat b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/cc.bat new file mode 100644 index 00000000000..b2300d2fd6b --- /dev/null +++ b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/cc.bat @@ -0,0 +1,45 @@ +@ECHO off + +FOR /f "delims=" %%A in ('call ghc.exe --print-libdir') do set "libdir=%%A" +FOR /f "delims=" %%A in ('call ghc.exe --numeric-version') do set "numVersion=%%A" +setlocal EnableDelayedExpansion + +call :compareVersions 9.4.1 %numVersion% +if %errorlevel% == 1 (set "cc=gcc.exe") else (set "cc=clang.exe") +CALL !libdir:lib=mingw\bin\!%cc% %* +EXIT /B %ERRORLEVEL% + +REM taken from https://stackoverflow.com/questions/15807762/compare-version-numbers-in-batch-file + +:compareVersions version1 version2 +:: +:: Compares two version numbers and returns the result in the ERRORLEVEL +:: +:: Returns 1 if version1 > version2 +:: 0 if version1 = version2 +:: -1 if version1 < version2 +:: +:: The nodes must be delimited by . or , or - +:: +:: Nodes are normally strictly numeric, without a 0 prefix. A letter suffix +:: is treated as a separate node +:: +setlocal enableDelayedExpansion +set "v1=%~1" +set "v2=%~2" +:loop +call :parseNode "%v1%" n1 v1 +call :parseNode "%v2%" n2 v2 +if %n1% gtr %n2% exit /b 1 +if %n1% lss %n2% exit /b -1 +if not defined v1 if not defined v2 exit /b 0 +if not defined v1 exit /b -1 +if not defined v2 exit /b 1 +goto :loop + + +:parseNode version nodeVar remainderVar +for /f "tokens=1* delims=." %%A in ("%~1") do ( + set "%~2=%%A" + set "%~3=%%B" +) diff --git a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/fake-ghcjs.exe b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/fake-ghcjs.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/fake-ghcjs.exe differ diff --git a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/fake-ghcjs.shim b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/fake-ghcjs.shim new file mode 100644 index 00000000000..725429e82d7 --- /dev/null +++ b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/fake-ghcjs.shim @@ -0,0 +1,2 @@ +path = "sh.exe" +args = "scripts/fake-ghcjs.sh" diff --git a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/ghcjs-pkg.exe b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/ghcjs-pkg.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/ghcjs-pkg.exe differ diff --git a/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/ghcjs-pkg.shim b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/ghcjs-pkg.shim new file mode 100644 index 00000000000..d330fc23e3e --- /dev/null +++ b/cabal-testsuite/PackageTests/GHCJS/BuildRunner/scripts/ghcjs-pkg.shim @@ -0,0 +1,2 @@ +path = "sh.exe" +args = "scripts/ghcjs-pkg" diff --git a/cabal-testsuite/PackageTests/Get/T7248/cabal.out b/cabal-testsuite/PackageTests/Get/T7248/cabal.out index a172b425d4d..0c6e3ce035c 100644 --- a/cabal-testsuite/PackageTests/Get/T7248/cabal.out +++ b/cabal-testsuite/PackageTests/Get/T7248/cabal.out @@ -1,4 +1,6 @@ # cabal get Warning: /cabal.config: Unrecognized stanza on line 3 -Error: [Cabal-7160] -The package list for 'repo.invalid' does not exist. Run 'cabal update' to download it. +Warning: The package list for 'repo.invalid' does not exist. Run 'cabal update' to download it. +Error: [Cabal-7100] +There is no package named 'a-b-s-e-n-t'. +You may need to run 'cabal update' to get the latest list of available packages. diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc-pkg.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc-pkg.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc-pkg.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc-pkg.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc-pkg.shim new file mode 100644 index 00000000000..0ec39dd3f09 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc-pkg.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc-pkg" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc.shim new file mode 100644 index 00000000000..97596f1c171 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/ghc.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/setup.test.hs b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/setup.test.hs index 86a7cf804ea..805f56abc9c 100644 --- a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/setup.test.hs +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectory/setup.test.hs @@ -1,9 +1,19 @@ import Test.Cabal.Prelude +import System.Directory -main = setupAndCabalTest $ expectBrokenIfWindows 10179 $ do +main = setupAndCabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "ghc.shim", "ghc-pkg.shim"] env <- getTestEnv let cwd = testCurrentDir env ghc_path <- programPathM ghcProgram r <- withEnv [("WITH_GHC", Just ghc_path)] - . fails $ setup' "configure" ["-w", cwd "ghc"] + . fails $ setup' "configure" ["-w", cwd if isWindows then "ghc.exe" else "ghc" ] assertOutputContains "is version 9999999" r diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-7.10.shim new file mode 100644 index 00000000000..16ae1ddead3 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc-7.10" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-pkg-ghc-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-pkg-ghc-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-pkg-ghc-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-pkg-ghc-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-pkg-ghc-7.10.shim new file mode 100644 index 00000000000..9e85ac7f0fb --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/ghc-pkg-ghc-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc-pkg-ghc-7.10" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/setup.test.hs b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/setup.test.hs index 0b0a37413be..e60d3685863 100644 --- a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/setup.test.hs +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryGhcVersion/setup.test.hs @@ -1,9 +1,19 @@ import Test.Cabal.Prelude +import System.Directory -main = setupAndCabalTest $ expectBrokenIfWindows 10179 $ do +main = setupAndCabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "ghc-7.10.shim", "ghc-pkg-ghc-7.10.shim"] env <- getTestEnv let cwd = testCurrentDir env ghc_path <- programPathM ghcProgram r <- withEnv [("WITH_GHC", Just ghc_path)] - . fails $ setup' "configure" ["-w", cwd "ghc-7.10"] + . fails $ setup' "configure" ["-w", cwd if isWindows then "ghc-7.10.exe" else "ghc-7.10"] assertOutputContains "is version 9999999" r diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-7.10.shim new file mode 100644 index 00000000000..16ae1ddead3 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc-7.10" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-pkg-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-pkg-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-pkg-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-pkg-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-pkg-7.10.shim new file mode 100644 index 00000000000..8558f8a0513 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/ghc-pkg-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc-pkg-7.10" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/setup.test.hs b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/setup.test.hs index 0b0a37413be..b5f6b4c88d6 100644 --- a/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/setup.test.hs +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SameDirectoryVersion/setup.test.hs @@ -1,9 +1,19 @@ import Test.Cabal.Prelude +import System.Directory -main = setupAndCabalTest $ expectBrokenIfWindows 10179 $ do +main = setupAndCabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "ghc-7.10.shim", "ghc-pkg-7.10.shim"] env <- getTestEnv let cwd = testCurrentDir env ghc_path <- programPathM ghcProgram r <- withEnv [("WITH_GHC", Just ghc_path)] - . fails $ setup' "configure" ["-w", cwd "ghc-7.10"] + . fails $ setup' "configure" ["-w", cwd if isWindows then "ghc-7.10.exe" else "ghc-7.10"] assertOutputContains "is version 9999999" r diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc-pkg.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc-pkg.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc-pkg.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc-pkg.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc-pkg.shim new file mode 100644 index 00000000000..1c68332a0a6 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc-pkg.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "bin\ghc-pkg" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc.shim new file mode 100644 index 00000000000..97596f1c171 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/bin/ghc.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/setup.test.hs b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/setup.test.hs index 0b80a76a952..b188acc36d6 100644 --- a/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/setup.test.hs +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/Symlink/setup.test.hs @@ -1,10 +1,22 @@ import Test.Cabal.Prelude +import System.Directory -main = setupAndCabalTest $ expectBrokenIfWindows 10179 $ do - withSymlink "bin/ghc" "ghc" $ do +main = setupAndCabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "bin/ghc.shim", "bin/ghc-pkg.shim"] + (if isWindows + then withSymlink "bin/ghc.exe" "ghc.exe" . withSymlink "bin/ghc.shim" "ghc.shim" . withSymlink "bin/ghc" "ghc" + else withSymlink "bin/ghc" "ghc") $ do env <- getTestEnv let cwd = testCurrentDir env ghc_path <- programPathM ghcProgram r <- withEnv [("WITH_GHC", Just ghc_path)] - . fails $ setup' "configure" ["-w", cwd "ghc"] + . fails $ setup' "configure" ["-w", cwd if isWindows then "ghc.exe" else "ghc"] assertOutputContains "is version 9999999" r diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-7.10.shim new file mode 100644 index 00000000000..97596f1c171 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-pkg-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-pkg-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-pkg-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-pkg-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-pkg-7.10.shim new file mode 100644 index 00000000000..5c1d58caf88 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/bin/ghc-pkg-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "bin\ghc-pkg-7.10" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/setup.test.hs b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/setup.test.hs index 150f2bc8739..bf9b16fa195 100644 --- a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/setup.test.hs +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkGhcVersion/setup.test.hs @@ -1,10 +1,22 @@ import Test.Cabal.Prelude +import System.Directory -main = setupAndCabalTest $ expectBrokenIfWindows 10179 $ do - withSymlink "bin/ghc-7.10" "ghc" $ do +main = setupAndCabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "bin/ghc-7.10.shim", "bin/ghc-pkg-7.10.shim"] + (if isWindows + then withSymlink "bin/ghc-7.10.exe" "ghc.exe" . withSymlink "bin/ghc-7.10.shim" "ghc.shim" . withSymlink "bin/ghc-7.10" "ghc" + else withSymlink "bin/ghc-7.10" "ghc") $ do env <- getTestEnv let cwd = testCurrentDir env ghc_path <- programPathM ghcProgram r <- withEnv [("WITH_GHC", Just ghc_path)] - . fails $ setup' "configure" ["-w", cwd "ghc"] + . fails $ setup' "configure" ["-w", cwd if isWindows then "ghc.exe" else "ghc"] assertOutputContains "is version 9999999" r diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-7.10.shim new file mode 100644 index 00000000000..97596f1c171 --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "ghc" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-pkg-ghc-7.10.exe b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-pkg-ghc-7.10.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-pkg-ghc-7.10.exe differ diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-pkg-ghc-7.10.shim b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-pkg-ghc-7.10.shim new file mode 100644 index 00000000000..7e9ba24d98b --- /dev/null +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/bin/ghc-pkg-ghc-7.10.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "bin\ghc-pkg-ghc-7.10" diff --git a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/setup.test.hs b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/setup.test.hs index 150f2bc8739..2f406ce6226 100644 --- a/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/setup.test.hs +++ b/cabal-testsuite/PackageTests/GhcPkgGuess/SymlinkVersion/setup.test.hs @@ -1,10 +1,22 @@ import Test.Cabal.Prelude +import System.Directory -main = setupAndCabalTest $ expectBrokenIfWindows 10179 $ do - withSymlink "bin/ghc-7.10" "ghc" $ do +main = setupAndCabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "bin/ghc-7.10.shim", "bin/ghc-pkg-ghc-7.10.shim"] + (if isWindows + then withSymlink "bin/ghc-7.10.exe" "ghc.exe" . withSymlink "bin/ghc-7.10.shim" "ghc.shim" . withSymlink "bin/ghc-7.10" "ghc" + else withSymlink "bin/ghc-7.10" "ghc") $ do env <- getTestEnv let cwd = testCurrentDir env ghc_path <- programPathM ghcProgram r <- withEnv [("WITH_GHC", Just ghc_path)] - . fails $ setup' "configure" ["-w", cwd "ghc"] + . fails $ setup' "configure" ["-w", cwd if isWindows then "ghc.exe" else "ghc"] assertOutputContains "is version 9999999" r diff --git a/cabal-testsuite/PackageTests/HaddockArgs/hoogle.out b/cabal-testsuite/PackageTests/HaddockArgs/hoogle.out index 3aeb5d42e04..4f2b2103045 100644 --- a/cabal-testsuite/PackageTests/HaddockArgs/hoogle.out +++ b/cabal-testsuite/PackageTests/HaddockArgs/hoogle.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out b/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out index c892ec8e80a..4e304d38ece 100644 --- a/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out +++ b/cabal-testsuite/PackageTests/HaddockArgs/quickjump.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md b/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md new file mode 100644 index 00000000000..8f36ef2ecea --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for HaddockArgsCombine + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal b/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal new file mode 100644 index 00000000000..8a5eb8ffa65 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/HaddockArgsCombine.cabal @@ -0,0 +1,14 @@ +cabal-version: 3.14 +name: HaddockArgsCombine +version: 0.1.0.0 +license: NONE +author: Matthew Pickering +maintainer: matthewtpickering@gmail.com +build-type: Simple +extra-doc-files: CHANGELOG.md + +executable HaddockArgsCombine + main-is: Main.hs + build-depends: base + hs-source-dirs: app + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs b/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs new file mode 100644 index 00000000000..9b1ce43a481 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/app/Main.hs @@ -0,0 +1,6 @@ +module Main where + +import Data.List + +main :: IO () +main = putStrLn "Hello, Haskell!" diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out new file mode 100644 index 00000000000..f7671fe3af4 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.out @@ -0,0 +1,8 @@ +# cabal v2-run +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - HaddockArgsCombine-0.1.0.0 (exe:HaddockArgsCombine) (first run) +Configuring executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0... +Preprocessing executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0... +Building executable 'HaddockArgsCombine' for HaddockArgsCombine-0.1.0.0... diff --git a/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs new file mode 100644 index 00000000000..d04a4c94062 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockArgsCombine/cabal.test.hs @@ -0,0 +1,3 @@ +import Test.Cabal.Prelude +main = cabalTest $ do + fails $ cabal "v2-run" ["--ghc-options=-Wall -Werror", "--enable-documentation"] diff --git a/cabal-testsuite/PackageTests/HaddockBuildDepends/cabal.out b/cabal-testsuite/PackageTests/HaddockBuildDepends/cabal.out index 8eff18e3d6c..8b0daaa45ad 100644 --- a/cabal-testsuite/PackageTests/HaddockBuildDepends/cabal.out +++ b/cabal-testsuite/PackageTests/HaddockBuildDepends/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/HaddockEmptyLib/empty/empty.cabal b/cabal-testsuite/PackageTests/HaddockEmptyLib/empty/empty.cabal new file mode 100644 index 00000000000..e848e5ab2d6 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockEmptyLib/empty/empty.cabal @@ -0,0 +1,6 @@ +name: emptyLib +Cabal-version: >= 1.2 +version: 1.0 +build-type: Simple + +Library diff --git a/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.cabal.out b/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.cabal.out new file mode 100644 index 00000000000..90a9995cfb2 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.cabal.out @@ -0,0 +1,13 @@ +# Setup configure +Configuring emptyLib-1.0... +# Setup build +Preprocessing library for emptyLib-1.0... +Building library for emptyLib-1.0... +# Setup haddock +Preprocessing library for emptyLib-1.0... +Running Haddock on library for emptyLib-1.0... +Warning: Haddocks are being requested, but there aren't any modules given to create documentation for. +# Setup copy +Installing library in +# Setup register +Registering library for emptyLib-1.0... diff --git a/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.out b/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.out new file mode 100644 index 00000000000..90a9995cfb2 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.out @@ -0,0 +1,13 @@ +# Setup configure +Configuring emptyLib-1.0... +# Setup build +Preprocessing library for emptyLib-1.0... +Building library for emptyLib-1.0... +# Setup haddock +Preprocessing library for emptyLib-1.0... +Running Haddock on library for emptyLib-1.0... +Warning: Haddocks are being requested, but there aren't any modules given to create documentation for. +# Setup copy +Installing library in +# Setup register +Registering library for emptyLib-1.0... diff --git a/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.test.hs b/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.test.hs new file mode 100644 index 00000000000..c91d5216275 --- /dev/null +++ b/cabal-testsuite/PackageTests/HaddockEmptyLib/setup.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude +-- Test install when the library is empty, for #9997 +main = setupAndCabalTest $ + withPackageDb $ + withDirectory "empty" $ + setup_install_with_docs [] diff --git a/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out b/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out index bfa16bf91c5..4f21f859ad9 100644 --- a/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out +++ b/cabal-testsuite/PackageTests/HaddockProject/haddock-project.out @@ -3,6 +3,8 @@ Downloading the latest package list from test-local-repo # cabal haddock-project Warning: haddock-project command is experimental, it might break in the future Resolving dependencies... +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - async-2.2.4 (lib) (requires build) diff --git a/cabal-testsuite/PackageTests/HaddockWarn/cabal.out b/cabal-testsuite/PackageTests/HaddockWarn/cabal.out index fae3d5423de..bdf609a5940 100644 --- a/cabal-testsuite/PackageTests/HaddockWarn/cabal.out +++ b/cabal-testsuite/PackageTests/HaddockWarn/cabal.out @@ -1,3 +1,5 @@ # cabal v2-haddock +Configuration is affected by the following files: +- cabal.project Resolving dependencies... -No documentation was generated as this package does not contain a library. Perhaps you want to use the --haddock-all flag, or one or more of the --haddock-executables, --haddock-tests, --haddock-benchmarks or --haddock-internal flags. \ No newline at end of file +No documentation was generated as this package does not contain a library. Perhaps you want to use the --haddock-all flag, or one or more of the --haddock-executables, --haddock-tests, --haddock-benchmarks or --haddock-internal flags. diff --git a/cabal-testsuite/PackageTests/Init/init-without-git.out b/cabal-testsuite/PackageTests/Init/init-without-git.out new file mode 100644 index 00000000000..9a143a9375c --- /dev/null +++ b/cabal-testsuite/PackageTests/Init/init-without-git.out @@ -0,0 +1 @@ +# cabal init diff --git a/cabal-testsuite/PackageTests/Init/init-without-git.test.hs b/cabal-testsuite/PackageTests/Init/init-without-git.test.hs new file mode 100644 index 00000000000..4c98f751c57 --- /dev/null +++ b/cabal-testsuite/PackageTests/Init/init-without-git.test.hs @@ -0,0 +1,22 @@ +import Test.Cabal.Prelude +import System.Directory +import System.FilePath +import Distribution.Simple.Utils +import Distribution.Verbosity + +-- Test cabal init when git is not installed +main = do + skipIfWindows "Might fail on windows." + tmp <- getTemporaryDirectory + withTempDirectory normal tmp "bin" $ + \bin -> cabalTest $ + do + ghc_path <- programPathM ghcProgram + cabal_path <- programPathM cabalProgram + withSymlink ghc_path (bin "ghc") . withSymlink cabal_path (bin "cabal") . + withEnv [("PATH", Just bin)] $ do + cwd <- fmap testSourceCopyDir getTestEnv + + void . withDirectory cwd $ do + cabalWithStdin "init" ["-i"] + "2\n\n5\n\n\n2\n\n\n\n\n\n\n\n\n\n" diff --git a/cabal-testsuite/PackageTests/Install/DistPrefInstall/CHANGELOG.md b/cabal-testsuite/PackageTests/Install/DistPrefInstall/CHANGELOG.md new file mode 100644 index 00000000000..3d5552b0ba5 --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/DistPrefInstall/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for DistPrefInstall + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/cabal-testsuite/PackageTests/Install/DistPrefInstall/DistPrefInstall.cabal b/cabal-testsuite/PackageTests/Install/DistPrefInstall/DistPrefInstall.cabal new file mode 100644 index 00000000000..536d26b3648 --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/DistPrefInstall/DistPrefInstall.cabal @@ -0,0 +1,18 @@ +cabal-version: 3.12 +name: DistPrefInstall +version: 0.1.0.0 +license: NONE +author: Matthew Pickering +maintainer: matthewtpickering@gmail.com +build-type: Simple +extra-doc-files: CHANGELOG.md + +common warnings + ghc-options: -Wall + +library + import: warnings + exposed-modules: MyLib + build-depends: base + hs-source-dirs: src + default-language: Haskell2010 diff --git a/cabal-testsuite/PackageTests/Install/DistPrefInstall/Setup.hs b/cabal-testsuite/PackageTests/Install/DistPrefInstall/Setup.hs new file mode 100644 index 00000000000..9a994af677b --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/DistPrefInstall/Setup.hs @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/cabal-testsuite/PackageTests/Install/DistPrefInstall/setup.test.hs b/cabal-testsuite/PackageTests/Install/DistPrefInstall/setup.test.hs new file mode 100644 index 00000000000..27b709e7070 --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/DistPrefInstall/setup.test.hs @@ -0,0 +1,8 @@ +import Test.Cabal.Prelude + +main = setupTest $ recordMode DoNotRecord $ withPackageDb $ do + setup "configure" [] + setup "build" [] + setup "copy" [] + setup "install" [] + setup "sdist" [] diff --git a/cabal-testsuite/PackageTests/Install/DistPrefInstall/src/MyLib.hs b/cabal-testsuite/PackageTests/Install/DistPrefInstall/src/MyLib.hs new file mode 100644 index 00000000000..e657c4403f6 --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/DistPrefInstall/src/MyLib.hs @@ -0,0 +1,4 @@ +module MyLib (someFunc) where + +someFunc :: IO () +someFunc = putStrLn "someFunc" diff --git a/cabal-testsuite/PackageTests/Install/ProgramAffixes/overwrite-policy.out b/cabal-testsuite/PackageTests/Install/ProgramAffixes/overwrite-policy.out new file mode 100644 index 00000000000..cf1c952c9d3 --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/ProgramAffixes/overwrite-policy.out @@ -0,0 +1,160 @@ +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - p-1.0 (exe:p) (requires build) +Configuring p-1.0... +Preprocessing executable 'p' for p-1.0... +Building executable 'p' for p-1.0... +Installing executable p in +Warning: The directory /overwrite-policy.dist/home/.cabal/store/ghc-/incoming/new-/overwrite-policy.dist/home/.cabal/store/ghc-/-/bin is not in the system search path. +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/p' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/p-my-suffix' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/my-prefix-p' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/my-prefix-p-my-suffix' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Symlinking 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/p' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/p-my-suffix' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/my-prefix-p' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Error: [Cabal-7149] +Path '/overwrite-policy.dist/usr/bin/my-prefix-p-my-suffix' already exists. Use --overwrite-policy=always to overwrite. +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/my-prefix-p-my-suffix' +# cabal install +Wrote tarball sdist to /overwrite-policy.dist/work/./dist/sdist/p-1.0.tar.gz +Resolving dependencies... +Copying 'p' to '/overwrite-policy.dist/usr/bin/p' diff --git a/cabal-testsuite/PackageTests/Install/ProgramAffixes/overwrite-policy.test.hs b/cabal-testsuite/PackageTests/Install/ProgramAffixes/overwrite-policy.test.hs new file mode 100644 index 00000000000..f94fa436387 --- /dev/null +++ b/cabal-testsuite/PackageTests/Install/ProgramAffixes/overwrite-policy.test.hs @@ -0,0 +1,66 @@ +import Test.Cabal.Prelude +import System.FilePath (()) +import System.Directory (removeFile) + +main = cabalTest $ do + runTestForInstallMethod "symlink" + runTestForInstallMethod "copy" + +runTestForInstallMethod :: String -> TestM () +runTestForInstallMethod method = do + env <- getTestEnv + let installdir = testPrefixDir env "bin" + + -- install the binary, don't overwrite anything + cabal "install" + ["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "never"] + -- install the binary, don't overwrite anything + fails $ cabal "install" + ["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "never"] + -- install the binary again, forcing an overwrite, should succeed. + cabal "install" + ["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "always"] + -- remove the installed binary. + liftIO $ removeFile (installdir "p" <.> exeExt) + + testPolicyForAffix installdir method ["--program-suffix", "-my-suffix"] + testPolicyForAffix installdir method ["--program-prefix", "my-prefix-"] + testPolicyForAffix installdir method ["--program-prefix", "my-prefix-", "--program-suffix", "-my-suffix"] + -- remove the installed binaries. + liftIO $ removeFile (installdir "p" <.> exeExt) + liftIO $ removeFile (installdir "p-my-suffix" <.> exeExt) + liftIO $ removeFile (installdir "my-prefix-p" <.> exeExt) + liftIO $ removeFile (installdir "my-prefix-p-my-suffix" <.> exeExt) + +-- | Run a policy test for a given 'install-method' and program-affix +-- (i.e., '--program-suffix' or '--program-prefix'). +-- +-- When a program affix is given, the installation should not be affected +-- by installing the binary with no affix and vice-versa. +-- So, installing the program without any affix is not affected by installations with +-- some program affix. +testPolicyForAffix :: FilePath -> String -> [String] -> TestM () +testPolicyForAffix installdir method affixArgs = do + -- install the binary again, forcing an overwrite, must succeed. + -- The rest of this test assumes the binary has been installed before. + cabal "install" + ["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "always"] + + -- Install the binary with some program affix, don't need overwrite anything + cabal "install" + (["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "never"] ++ affixArgs) + -- Once the binary is installed, we can't overwrite it unless we are told so. + fails $ cabal "install" + (["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "never"] ++ affixArgs) + -- Successfully overwrite the binary if told so. + cabal "install" + (["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "always"] ++ affixArgs) + + -- remove the installed binary. + liftIO $ removeFile (installdir "p" <.> exeExt) + -- Make sure we can still install the original program with no program affix without overwriting, + -- even though, the program is already installed with some affix. + cabal "install" + ["p", "--installdir", installdir, "--install-method", method, "--overwrite-policy", "never"] + +exeExt = if isWindows then "exe" else "" diff --git a/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out b/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out index 72a24d04059..fabb3eb96bf 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/cabal-per-package.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: Internal libraries only supported with per-component builds. diff --git a/cabal-testsuite/PackageTests/InternalLibraries/cabal.out b/cabal-testsuite/PackageTests/InternalLibraries/cabal.out index fba3d64f472..dce636019a9 100644 --- a/cabal-testsuite/PackageTests/InternalLibraries/cabal.out +++ b/cabal-testsuite/PackageTests/InternalLibraries/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/JS/JsSources/other-arch.out b/cabal-testsuite/PackageTests/JS/JsSources/other-arch.out index a07cc17dd35..5a9e791cfce 100644 --- a/cabal-testsuite/PackageTests/JS/JsSources/other-arch.out +++ b/cabal-testsuite/PackageTests/JS/JsSources/other-arch.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/JS/JsSourcesExe/other-arch.out b/cabal-testsuite/PackageTests/JS/JsSourcesExe/other-arch.out index 96e1bbadcf9..441e8b14ba4 100644 --- a/cabal-testsuite/PackageTests/JS/JsSourcesExe/other-arch.out +++ b/cabal-testsuite/PackageTests/JS/JsSourcesExe/other-arch.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ListBin/SelectedComponent/cabal.out b/cabal-testsuite/PackageTests/ListBin/SelectedComponent/cabal.out index 3728cc3e70e..a3613ceff25 100644 --- a/cabal-testsuite/PackageTests/ListBin/SelectedComponent/cabal.out +++ b/cabal-testsuite/PackageTests/ListBin/SelectedComponent/cabal.out @@ -1,4 +1,6 @@ # cabal list-bin +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultiRepl/CabalMacros/cabal.out b/cabal-testsuite/PackageTests/MultiRepl/CabalMacros/cabal.out index 9c141d7ac42..ec51444c0e4 100644 --- a/cabal-testsuite/PackageTests/MultiRepl/CabalMacros/cabal.out +++ b/cabal-testsuite/PackageTests/MultiRepl/CabalMacros/cabal.out @@ -1,4 +1,6 @@ # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultiRepl/EnabledClosure/cabal.out b/cabal-testsuite/PackageTests/MultiRepl/EnabledClosure/cabal.out index 8944a7dba34..90c934d9535 100644 --- a/cabal-testsuite/PackageTests/MultiRepl/EnabledClosure/cabal.out +++ b/cabal-testsuite/PackageTests/MultiRepl/EnabledClosure/cabal.out @@ -1,4 +1,6 @@ # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultiRepl/EnabledSucc/cabal.out b/cabal-testsuite/PackageTests/MultiRepl/EnabledSucc/cabal.out index 6571793245e..e077254e102 100644 --- a/cabal-testsuite/PackageTests/MultiRepl/EnabledSucc/cabal.out +++ b/cabal-testsuite/PackageTests/MultiRepl/EnabledSucc/cabal.out @@ -1,4 +1,6 @@ # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultiRepl/ExtraOptions/cabal.out b/cabal-testsuite/PackageTests/MultiRepl/ExtraOptions/cabal.out index 2032e6d4542..ce8177d9bd9 100644 --- a/cabal-testsuite/PackageTests/MultiRepl/ExtraOptions/cabal.out +++ b/cabal-testsuite/PackageTests/MultiRepl/ExtraOptions/cabal.out @@ -1,4 +1,6 @@ # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.out b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.out new file mode 100644 index 00000000000..31adc84d9fa --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.out @@ -0,0 +1,16 @@ +# cabal v2-repl +Configuration is affected by the following files: +- cabal.project +Resolving dependencies... +Build profile: -w ghc- -O1 +In order, the following will be built: + - foo-0.1.0.0 (interactive) (lib:x) (first run) + - foo-0.1.0.0 (lib:y) (first run) + - foo-0.1.0.0 (interactive) (lib:z) (first run) +Configuring library 'x' for foo-0.1.0.0... +Preprocessing library 'x' for foo-0.1.0.0... +Configuring library 'y' for foo-0.1.0.0... +Preprocessing library 'y' for foo-0.1.0.0... +Building library 'y' for foo-0.1.0.0... +Configuring library 'z' for foo-0.1.0.0... +Preprocessing library 'z' for foo-0.1.0.0... diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.project b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.project new file mode 100644 index 00000000000..e6fdbadb439 --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.project @@ -0,0 +1 @@ +packages: . diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.test.hs b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.test.hs new file mode 100644 index 00000000000..9f9bf6b1e7a --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/cabal.test.hs @@ -0,0 +1,7 @@ + +import Test.Cabal.Prelude + +main = do + cabalTest $ do + skipUnlessGhcVersion ">= 9.4" + void $ cabalWithStdin "v2-repl" ["--enable-multi-repl","x", "z"] "" diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/x/X.hs b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/x/X.hs new file mode 100644 index 00000000000..e970dea80c5 --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/x/X.hs @@ -0,0 +1 @@ +module X where diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/y/Y.hs b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/y/Y.hs new file mode 100644 index 00000000000..4385338c3c3 --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/y/Y.hs @@ -0,0 +1 @@ +module Y where diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/z/Z.hs b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/z/Z.hs new file mode 100644 index 00000000000..9b0bdc618e6 --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/components/z/Z.hs @@ -0,0 +1 @@ +module Z where diff --git a/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/foo.cabal b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/foo.cabal new file mode 100644 index 00000000000..fa261a57771 --- /dev/null +++ b/cabal-testsuite/PackageTests/MultiRepl/InternalLibs/foo.cabal @@ -0,0 +1,33 @@ +cabal-version: 3.14 + +name: foo +version: 0.1.0.0 +build-type: Simple + +library x + exposed-modules: + X + hs-source-dirs: + components/x + build-depends: + base + +library y + exposed-modules: + Y + hs-source-dirs: + components/y + build-depends: + base + -- uncommenting this causes 'make show' to pass + -- , foo:x + +library z + exposed-modules: + Z + hs-source-dirs: + components/z + build-depends: + base + , foo:x + , foo:y diff --git a/cabal-testsuite/PackageTests/MultiRepl/NotEnabledFail/cabal.multirepl-a.out b/cabal-testsuite/PackageTests/MultiRepl/NotEnabledFail/cabal.multirepl-a.out index 3b38560a7d4..108004e859e 100644 --- a/cabal-testsuite/PackageTests/MultiRepl/NotEnabledFail/cabal.multirepl-a.out +++ b/cabal-testsuite/PackageTests/MultiRepl/NotEnabledFail/cabal.multirepl-a.out @@ -1,4 +1,6 @@ # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7076] Cannot open a repl for multiple components at once. The targets 'pkg-a' and 'pkg-b' refer to different components.. diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/Failing/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/Failing/cabal.out index 5dee45c63bd..a1a6e519a55 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/Failing/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/Failing/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/Successful/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/Successful/cabal.out index 272b9fc6b4c..48ccbdc36cb 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/Successful/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/Successful/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/T6083Post/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/T6083Post/cabal.out index fb7bb90085f..b0122dc2950 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/T6083Post/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/T6083Post/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/T6083PostMixin/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/T6083PostMixin/cabal.out index fb7bb90085f..b0122dc2950 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/T6083PostMixin/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/T6083PostMixin/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/T6083Pre/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/T6083Pre/cabal.out index fbeef6a0af7..0eae2556c8c 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/T6083Pre/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/T6083Pre/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/T6083PreMixin/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/T6083PreMixin/cabal.out index fbeef6a0af7..0eae2556c8c 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/T6083PreMixin/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/T6083PreMixin/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/MultipleLibraries/T6894/cabal.out b/cabal-testsuite/PackageTests/MultipleLibraries/T6894/cabal.out index 8f3f3286d40..8622b4f95be 100644 --- a/cabal-testsuite/PackageTests/MultipleLibraries/T6894/cabal.out +++ b/cabal-testsuite/PackageTests/MultipleLibraries/T6894/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBench/MultipleBenchmarks/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdBench/MultipleBenchmarks/cabal.out index cff1673e167..8d3e71f53dd 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBench/MultipleBenchmarks/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBench/MultipleBenchmarks/cabal.out @@ -1,4 +1,6 @@ # cabal v2-bench +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -10,6 +12,8 @@ Running 1 benchmarks... Benchmark foo: RUNNING... Benchmark foo: FINISH # cabal v2-bench +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - MultipleBenchmarks-1.0 (bench:bar) (first run) diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.out index 84b8bdd781b..a962f5da6a4 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBench/OptionsFlag/cabal.out @@ -1,4 +1,6 @@ # cabal v2-bench +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBench/WarningRTS/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdBench/WarningRTS/cabal.out index 84eec3eeae3..2f194d22dc1 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBench/WarningRTS/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBench/WarningRTS/cabal.out @@ -1,4 +1,6 @@ # cabal bench +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Warning: Some RTS options were found standalone, which affect cabal and not the binary. Please note that +RTS inside the --benchmark-options argument suffices if your goal is to affect the benchmarked binary. For example, use "cabal test --benchmark-options='+RTS -N'" to pass the '-N' RTS option to your binary. Build profile: -w ghc- -O1 @@ -11,6 +13,8 @@ Running 1 benchmarks... Benchmark foo: RUNNING... Benchmark foo: FINISH # cabal bench +Configuration is affected by the following files: +- cabal.project Warning: Some RTS options were found standalone, which affect cabal and not the binary. Please note that +RTS inside the --benchmark-options argument suffices if your goal is to affect the benchmarked binary. For example, use "cabal test --benchmark-options='+RTS -N'" to pass the '-N' RTS option to your binary. Build profile: -w ghc- -O1 In order, the following will be built: @@ -21,6 +25,8 @@ Running 1 benchmarks... Benchmark foo: RUNNING... Benchmark foo: FINISH # cabal bench +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - WarningRTS-1.0 (bench:foo) (first run) diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdBuild/OnlyConfigure/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdBuild/OnlyConfigure/cabal.out index 594f392e735..7de34d52b59 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdBuild/OnlyConfigure/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdBuild/OnlyConfigure/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,6 +9,8 @@ In order, the following will be built: Configuring library for OnlyConfigure-1.0... Configuring executable 'foo' for OnlyConfigure-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -17,6 +21,8 @@ Configuring library for OnlyConfigure-1.0... Configuring test suite 'bar' for OnlyConfigure-1.0... Configuring executable 'foo' for OnlyConfigure-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdExec/GhcInvocation/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdExec/GhcInvocation/cabal.out index 437714d34bd..7e96d11422f 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdExec/GhcInvocation/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdExec/GhcInvocation/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,3 +9,5 @@ Configuring library for inplace-dep-1.0... Preprocessing library for inplace-dep-1.0... Building library for inplace-dep-1.0... # cabal v2-exec +Configuration is affected by the following files: +- cabal.project diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdExec/RunExe/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdExec/RunExe/cabal.out index 2ae9f2a0fd4..691cbb03f6f 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdExec/RunExe/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdExec/RunExe/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,3 +9,5 @@ Configuring executable 'foo' for RunExe-1.0... Preprocessing executable 'foo' for RunExe-1.0... Building executable 'foo' for RunExe-1.0... # cabal v2-exec +Configuration is affected by the following files: +- cabal.project diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRepl/CustomSetup/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRepl/CustomSetup/cabal.out index d581aac783e..cc77b3c7b41 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRepl/CustomSetup/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRepl/CustomSetup/cabal.out @@ -1,4 +1,6 @@ # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Datafiles/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Datafiles/cabal.out index 8893a5acdc9..ba2ac3912ac 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Datafiles/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Datafiles/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,6 +9,8 @@ Configuring executable 'foo' for foo-1.0... Preprocessing executable 'foo' for foo-1.0... Building executable 'foo' for foo-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - foo-1.0 (lib) (first run) diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExeAndLib/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExeAndLib/cabal.out index 02391a63734..4417a2fb4c8 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExeAndLib/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExeAndLib/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,5 +9,7 @@ Configuring executable 'foo' for ExeAndLib-1.0... Preprocessing executable 'foo' for ExeAndLib-1.0... Building executable 'foo' for ExeAndLib-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7070] The run command is for running executables, but the target 'ExeAndLib' refers to the library ExeAndLib from the package ExeAndLib-1.0. diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExitCodePropagation/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExitCodePropagation/cabal.out index 0cf6a51332f..d2cbf7245af 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExitCodePropagation/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ExitCodePropagation/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultipleExes/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultipleExes/cabal.out index 2223a88a94c..b5e1175e983 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultipleExes/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultipleExes/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,6 +9,8 @@ Configuring executable 'foo' for MultipleExes-1.0... Preprocessing executable 'foo' for MultipleExes-1.0... Building executable 'foo' for MultipleExes-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - MultipleExes-1.0 (exe:bar) (first run) @@ -14,12 +18,18 @@ Configuring executable 'bar' for MultipleExes-1.0... Preprocessing executable 'bar' for MultipleExes-1.0... Building executable 'bar' for MultipleExes-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7070] The run command is for running a single executable at once. The target '' refers to the package MultipleExes-1.0 which includes - executables: bar and foo # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7070] The run command is for running a single executable at once. The target 'MultipleExes' refers to the package MultipleExes-1.0 which includes - executables: bar and foo diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultiplePackages/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultiplePackages/cabal.out index 7f851dca6a8..54b0387e0e1 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultiplePackages/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/MultiplePackages/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,7 +9,11 @@ Configuring executable 'bar-exe' for bar-1.0... Preprocessing executable 'bar-exe' for bar-1.0... Building executable 'bar-exe' for bar-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project # cabal v2-run +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - foo-1.0 (exe:foo-exe) (first run) @@ -15,6 +21,8 @@ Configuring executable 'foo-exe' for foo-1.0... Preprocessing executable 'foo-exe' for foo-1.0... Building executable 'foo-exe' for foo-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - bar-1.0 (exe:foo-exe) (first run) @@ -22,20 +30,28 @@ Configuring executable 'foo-exe' for bar-1.0... Preprocessing executable 'foo-exe' for bar-1.0... Building executable 'foo-exe' for bar-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7135] No targets given and there is no package in the current directory. Specify packages or components by name or location. See 'cabal build --help' for more details on target options. # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7070] The run command is for running a single executable at once. The target 'bar' refers to the package bar-1.0 which includes - executables: bar-exe and foo-exe # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7132] Ambiguous target 'foo-exe'. It could be: bar:foo-exe (component) foo:foo-exe (component) # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7131] Unknown target 'foo:bar-exe'. The package foo has no component 'bar-exe'. diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/RunMainBad/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/RunMainBad/cabal.out index 25b71f37cce..d836bcbed00 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/RunMainBad/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/RunMainBad/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7070] The run command can only run an executable as a whole, not files or modules within them, but the target 'Main.hs' refers to the file Main.hs in the executable foo. diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.out index 936db57d6be..075d530474d 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Script/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptBad/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptBad/cabal.out index be36f8398e0..aa977554b57 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptBad/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptBad/cabal.out @@ -1,3 +1,5 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7121] Failed extracting script block: `{- cabal:` start marker not found diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptLiterate/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptLiterate/cabal.out index 0615cc31a41..2c4abd1b407 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptLiterate/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/ScriptLiterate/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Single/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Single/cabal.out index 2d03fa7af39..1599052effd 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/Single/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/Single/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,9 +9,19 @@ Configuring executable 'foo' for Single-1.0... Preprocessing executable 'foo' for Single-1.0... Building executable 'foo' for Single-1.0... # cabal v2-run +Configuration is affected by the following files: +- cabal.project # cabal v2-run +Configuration is affected by the following files: +- cabal.project # cabal v2-run +Configuration is affected by the following files: +- cabal.project # cabal v2-run +Configuration is affected by the following files: +- cabal.project # cabal v2-run +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7070] Cannot run the package bar, it is not in this project (either directly or indirectly). If you want to add it to the project then edit the cabal.project file. diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdRun/WarningRTS/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdRun/WarningRTS/cabal.out index a7f6033bb1d..ac29846553e 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdRun/WarningRTS/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdRun/WarningRTS/cabal.out @@ -1,4 +1,6 @@ # cabal run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Warning: Your RTS options are applied to cabal, not the executable. Use '--' to separate cabal options from your executable options. For example, use 'cabal run -- +RTS -N to pass the '-N' RTS option to your executable. Build profile: -w ghc- -O1 @@ -8,5 +10,9 @@ Configuring executable 'foo' for WarningRTS-1.0... Preprocessing executable 'foo' for WarningRTS-1.0... Building executable 'foo' for WarningRTS-1.0... # cabal run +Configuration is affected by the following files: +- cabal.project Warning: Your RTS options are applied to cabal, not the executable. Use '--' to separate cabal options from your executable options. For example, use 'cabal run -- +RTS -N to pass the '-N' RTS option to your executable. # cabal run +Configuration is affected by the following files: +- cabal.project diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.out index 55aac7326b6..959dedbdb61 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdTest/OptionsFlag/cabal.out @@ -1,4 +1,6 @@ # cabal v2-test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/CmdTest/WarningRTS/cabal.out b/cabal-testsuite/PackageTests/NewBuild/CmdTest/WarningRTS/cabal.out index aef2481eac8..c16c641e235 100644 --- a/cabal-testsuite/PackageTests/NewBuild/CmdTest/WarningRTS/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/CmdTest/WarningRTS/cabal.out @@ -1,4 +1,6 @@ # cabal test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Warning: Some RTS options were found standalone, which affect cabal and not the binary. Please note that +RTS inside the --test-options argument suffices if your goal is to affect the tested binary. For example, use "cabal test --test-options='+RTS -N'" to pass the '-N' RTS option to your binary. Build profile: -w ghc- -O1 @@ -13,6 +15,8 @@ Test suite foo: PASS Test suite logged to: /cabal.dist/work/./dist/build//ghc-/WarningRTS-1.0/t/foo/test/WarningRTS-1.0-foo.log 1 of 1 test suites (1 of 1 test cases) passed. # cabal test +Configuration is affected by the following files: +- cabal.project Warning: Some RTS options were found standalone, which affect cabal and not the binary. Please note that +RTS inside the --test-options argument suffices if your goal is to affect the tested binary. For example, use "cabal test --test-options='+RTS -N'" to pass the '-N' RTS option to your binary. Build profile: -w ghc- -O1 In order, the following will be built: @@ -25,6 +29,8 @@ Test suite foo: PASS Test suite logged to: /cabal.dist/work/./dist/build//ghc-/WarningRTS-1.0/t/foo/test/WarningRTS-1.0-foo.log 1 of 1 test suites (1 of 1 test cases) passed. # cabal test +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - WarningRTS-1.0 (test:foo) (first run) diff --git a/cabal-testsuite/PackageTests/NewBuild/MonitorCabalFiles/cabal.out b/cabal-testsuite/PackageTests/NewBuild/MonitorCabalFiles/cabal.out index 93f0fd7f938..20490c7cbd5 100644 --- a/cabal-testsuite/PackageTests/NewBuild/MonitorCabalFiles/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/MonitorCabalFiles/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -9,6 +11,8 @@ Building executable 'q' for q-0.1.0.0... Error: [Cabal-7125] Failed to build q-0.1.0.0-inplace-q. # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/T3827/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T3827/cabal.out index 3c7beab60c7..6b549c4eb26 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T3827/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T3827/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/T3978/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T3978/cabal.out index bb8adff32b7..3769d3ba3f7 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T3978/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T3978/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/NewBuild/T4017/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T4017/cabal.out index 2175160b583..0d86c44624e 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T4017/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T4017/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/T4405/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T4405/cabal.out index 2b684028ae0..e91a6fe2c15 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T4405/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T4405/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -11,4 +13,6 @@ Configuring library for q-1.0... Preprocessing library for q-1.0... Building library for q-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Up to date diff --git a/cabal-testsuite/PackageTests/NewBuild/T4477/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T4477/cabal.out index e8c59896590..5904b7d5372 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T4477/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T4477/cabal.out @@ -1,4 +1,6 @@ # cabal v2-run +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewBuild/T8875/cabal.out b/cabal-testsuite/PackageTests/NewBuild/T8875/cabal.out index 7bb94dd545c..9a1118c9b2f 100644 --- a/cabal-testsuite/PackageTests/NewBuild/T8875/cabal.out +++ b/cabal-testsuite/PackageTests/NewBuild/T8875/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewConfigure/ConfigFile/cabal.out b/cabal-testsuite/PackageTests/NewConfigure/ConfigFile/cabal.out index f26ed6aac4d..1e95b7b237b 100644 --- a/cabal-testsuite/PackageTests/NewConfigure/ConfigFile/cabal.out +++ b/cabal-testsuite/PackageTests/NewConfigure/ConfigFile/cabal.out @@ -1,5 +1,11 @@ # cabal v2-configure +Configuration is affected by the following files: +- cabal.project Config file not written due to flag(s). # cabal v2-configure +Configuration is affected by the following files: +- cabal.project Config file not written due to flag(s). # cabal v2-configure +Configuration is affected by the following files: +- cabal.project diff --git a/cabal-testsuite/PackageTests/NewConfigure/LocalConfigOverwrite/cabal.out b/cabal-testsuite/PackageTests/NewConfigure/LocalConfigOverwrite/cabal.out index 316c05855bb..14c74f590ec 100644 --- a/cabal-testsuite/PackageTests/NewConfigure/LocalConfigOverwrite/cabal.out +++ b/cabal-testsuite/PackageTests/NewConfigure/LocalConfigOverwrite/cabal.out @@ -1,4 +1,10 @@ # cabal v2-configure +Configuration is affected by the following files: +- cabal.project +- cabal.project.local 'cabal.project.local' already exists, backing it up to 'cabal.project.local~'. # cabal v2-configure -'foo.project.local' already exists, backing it up to 'foo.project.local~'. \ No newline at end of file +Configuration is affected by the following files: +- foo.project +- foo.project.local +'foo.project.local' already exists, backing it up to 'foo.project.local~'. diff --git a/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out b/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out index ff47b1dd0cc..9674cd0cc8b 100644 --- a/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out +++ b/cabal-testsuite/PackageTests/NewFreeze/BuildTools/new_freeze.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: @@ -9,9 +11,14 @@ In order, the following would be built: - my-library-dep-1.0 (lib) (requires build) - my-local-package-1.0 (lib) (first run) # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Wrote freeze file: /cabal.project.freeze # cabal v2-build +Configuration is affected by the following files: +- cabal.project +- cabal.project.freeze Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: diff --git a/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out b/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out index d0cc7e4ee0c..8adf0bf2702 100644 --- a/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out +++ b/cabal-testsuite/PackageTests/NewFreeze/Flags/new_freeze.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: @@ -8,9 +10,14 @@ In order, the following would be built: - my-library-dep-1.0 (lib) (requires build) - my-local-package-1.0 (lib) (first run) # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Wrote freeze file: /cabal.project.freeze # cabal v2-build +Configuration is affected by the following files: +- cabal.project +- cabal.project.freeze Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: diff --git a/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out b/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out index 36278f47542..f07819538f4 100644 --- a/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out +++ b/cabal-testsuite/PackageTests/NewFreeze/FreezeFile/new_freeze.out @@ -1,19 +1,30 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: - my-library-dep-2.0 (lib) (requires build) - my-local-package-1.0 (exe:my-exe) (first run) # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project Freeze file not written due to flag(s) # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project Freeze file not written due to flag(s) # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Wrote freeze file: /cabal.project.freeze # cabal v2-build +Configuration is affected by the following files: +- cabal.project +- cabal.project.freeze Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -27,12 +38,19 @@ Configuring executable 'my-exe' for my-local-package-1.0... Preprocessing executable 'my-exe' for my-local-package-1.0... Building executable 'my-exe' for my-local-package-1.0... # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project +- cabal.project.freeze Wrote freeze file: /cabal.project.freeze # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: - my-library-dep-2.0 (lib) (requires build) - my-local-package-1.0 (exe:my-exe) (configuration changed) # cabal v2-freeze +Configuration is affected by the following files: +- cabal.project Wrote freeze file: /cabal.project.freeze diff --git a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out index 0683a3921ce..5d630e959d4 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/DisableDoc/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal haddock +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewHaddock/Fails/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/Fails/cabal.out index bb0ee5b906d..19689952971 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/Fails/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/Fails/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -9,6 +11,8 @@ Building library for example-1.0... Error: [Cabal-7125] Failed to build example-1.0-inplace. # cabal v2-haddock +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - example-1.0 (lib) (configuration changed) diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out index 5a0ba914174..64bbea860f0 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockForHackageCmdOutput/cabal.out @@ -1,4 +1,6 @@ # cabal haddock +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out index 38614b49b84..6cfdece7f8d 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputCmd/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal haddock +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out index 38614b49b84..6cfdece7f8d 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/HaddockOutput/HaddockOutputConfig/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal haddock +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out b/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out index 32f39065358..002abb6a29a 100644 --- a/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out +++ b/cabal-testsuite/PackageTests/NewHaddock/ImplyDependencies/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal haddock +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/NewSdist/DeterministicTrivial/deterministic.out b/cabal-testsuite/PackageTests/NewSdist/DeterministicTrivial/deterministic.out index 72eb09e8a77..aa041be7ed4 100644 --- a/cabal-testsuite/PackageTests/NewSdist/DeterministicTrivial/deterministic.out +++ b/cabal-testsuite/PackageTests/NewSdist/DeterministicTrivial/deterministic.out @@ -1,2 +1,4 @@ # cabal v2-sdist -Wrote tarball sdist to /dist-newstyle/sdist/deterministic-0.tar.gz \ No newline at end of file +Configuration is affected by the following files: +- cabal.project +Wrote tarball sdist to /dist-newstyle/sdist/deterministic-0.tar.gz diff --git a/cabal-testsuite/PackageTests/NewSdist/Globbing/cabal.out b/cabal-testsuite/PackageTests/NewSdist/Globbing/cabal.out index c28bd059b30..a0d41690c88 100644 --- a/cabal-testsuite/PackageTests/NewSdist/Globbing/cabal.out +++ b/cabal-testsuite/PackageTests/NewSdist/Globbing/cabal.out @@ -1,4 +1,6 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project a/Main.hs a/a.cabal a/doc/index.html diff --git a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out index 926e5a2560e..42bf006f13e 100644 --- a/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out +++ b/cabal-testsuite/PackageTests/NewSdist/ManyDataFiles/many-data-files.out @@ -1,2 +1,4 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote tarball sdist to /dist-newstyle/sdist/many-data-files-0.tar.gz diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-output-dir.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-output-dir.out index abcbfc25590..f8fbb9a2c41 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-output-dir.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-output-dir.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote tarball sdist to /archives/a-0.1.tar.gz Wrote tarball sdist to /archives/b-0.1.tar.gz diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-test-sute.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-test-sute.out index 83628c9a8e2..cf7d268fa44 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-test-sute.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all-test-sute.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7151] It is not possible to package only the test suites from a package for distribution. Only entire packages may be packaged for distribution. diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all.out index e370f410fe4..bd7eb8add5b 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/all.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote tarball sdist to /dist-newstyle/sdist/a-0.1.tar.gz Wrote tarball sdist to /dist-newstyle/sdist/b-0.1.tar.gz diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/list-sources-output-dir.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/list-sources-output-dir.out index 64b8452177f..2b9f08b3e5a 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/list-sources-output-dir.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/list-sources-output-dir.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote source list to /lists/a-0.1.list Wrote source list to /lists/b-0.1.list diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-archive-to-stdout.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-archive-to-stdout.out index e8bc3312c87..b0670909503 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-archive-to-stdout.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-archive-to-stdout.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7152] Can't write multiple tarballs to standard output! diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-list-sources.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-list-sources.out index dd464def39a..ffb2f9afe32 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-list-sources.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-list-sources.out @@ -1,4 +1,6 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project a/Main.hs a/Test.hs a/a.cabal diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-target.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-target.out index e370f410fe4..bd7eb8add5b 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-target.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/multi-target.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote tarball sdist to /dist-newstyle/sdist/a-0.1.tar.gz Wrote tarball sdist to /dist-newstyle/sdist/b-0.1.tar.gz diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/target-remote-package.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/target-remote-package.out index 386eaff9b13..2265a38e933 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/target-remote-package.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/target-remote-package.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7151] The package base cannot be packaged for distribution, because it is not local to this project. diff --git a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/valid-and-test-suite.out b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/valid-and-test-suite.out index 6c1e881f806..4da566899a8 100644 --- a/cabal-testsuite/PackageTests/NewSdist/MultiTarget/valid-and-test-suite.out +++ b/cabal-testsuite/PackageTests/NewSdist/MultiTarget/valid-and-test-suite.out @@ -1,3 +1,5 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Error: [Cabal-7151] The component test suite 'a-tests' cannot be packaged for distribution on its own. Only entire packages may be packaged for distribution. diff --git a/cabal-testsuite/PackageTests/NewSdist/NullTerminated/cabal.out b/cabal-testsuite/PackageTests/NewSdist/NullTerminated/cabal.out index 90c82a7d6c4..23597943ecd 100644 Binary files a/cabal-testsuite/PackageTests/NewSdist/NullTerminated/cabal.out and b/cabal-testsuite/PackageTests/NewSdist/NullTerminated/cabal.out differ diff --git a/cabal-testsuite/PackageTests/OfflineFlag/offlineFlag.out b/cabal-testsuite/PackageTests/OfflineFlag/offlineFlag.out index a7b18a253a6..80ca07ddddd 100644 --- a/cabal-testsuite/PackageTests/OfflineFlag/offlineFlag.out +++ b/cabal-testsuite/PackageTests/OfflineFlag/offlineFlag.out @@ -1,6 +1,10 @@ # cabal v2-update +Configuration is affected by the following files: +- cabal.repo.project Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- cabal.repo.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -9,6 +13,8 @@ In order, the following will be built: Error: [Cabal-7125] --offline was specified, hence refusing to download the package: remote version 0.1.0.0. # cabal v2-build +Configuration is affected by the following files: +- cabal.repo.project Build profile: -w ghc- -O1 In order, the following will be built: - remote-0.1.0.0 (lib) (requires build) @@ -21,4 +27,6 @@ Configuring executable 'current' for current-0.1.0.0... Preprocessing executable 'current' for current-0.1.0.0... Building executable 'current' for current-0.1.0.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.repo.project Up to date diff --git a/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-base.out b/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-base.out index 506ac48f14e..06e5d066600 100644 --- a/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-base.out +++ b/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-base.out @@ -8,6 +8,8 @@ Installing library in # Setup register Registering library for p-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-p.out b/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-p.out index 2235fc32f50..4367c22aea3 100644 --- a/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-p.out +++ b/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-p.out @@ -8,6 +8,8 @@ Installing library in # Setup register Registering library for p-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-packagedbs.out b/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-packagedbs.out index 5697c77102c..941aa1c2f51 100644 --- a/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-packagedbs.out +++ b/cabal-testsuite/PackageTests/PackageDB/cabal-fail-no-packagedbs.out @@ -1,3 +1,5 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Error: [Cabal-2300] No package databases have been specified. If you use --package-db=clear, you must follow it with --package-db= with 'global', 'user' or a specific file. diff --git a/cabal-testsuite/PackageTests/PackageDB/cabal-manual-packagedb.out b/cabal-testsuite/PackageTests/PackageDB/cabal-manual-packagedb.out index e1c59d1cbb8..6570a93a7c5 100644 --- a/cabal-testsuite/PackageTests/PackageDB/cabal-manual-packagedb.out +++ b/cabal-testsuite/PackageTests/PackageDB/cabal-manual-packagedb.out @@ -8,6 +8,8 @@ Installing library in # Setup register Registering library for p-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/PackageDB/cabal-packagedb.out b/cabal-testsuite/PackageTests/PackageDB/cabal-packagedb.out index e1c59d1cbb8..6570a93a7c5 100644 --- a/cabal-testsuite/PackageTests/PackageDB/cabal-packagedb.out +++ b/cabal-testsuite/PackageTests/PackageDB/cabal-packagedb.out @@ -8,6 +8,8 @@ Installing library in # Setup register Registering library for p-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Path/Config/cabal.out b/cabal-testsuite/PackageTests/Path/Config/cabal.out index 2263588109f..8e963e3eb4c 100644 --- a/cabal-testsuite/PackageTests/Path/Config/cabal.out +++ b/cabal-testsuite/PackageTests/Path/Config/cabal.out @@ -53,10 +53,16 @@ test-dir # cabal path /cabal.dist/home/.cabal # cabal path +Configuration is affected by the following files: +- fake.cabal.project /cabal.dist/home/.cabal # cabal path +Configuration is affected by the following files: +- fake.cabal.project {"cabal-version":"","cache-home":"/cabal.dist/home/.cabal"} # cabal path +Configuration is affected by the following files: +- fake.cabal.project /cabal.dist/home/.cabal # cabal path my-cache-dir @@ -71,10 +77,16 @@ my-cache-dir # cabal path /cabal.dist/home/.cabal/packages # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-cache-dir # cabal path +Configuration is affected by the following files: +- fake.cabal.project {"cabal-version":"","remote-repo-cache":"my-cache-dir"} # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-cache-dir # cabal path my-logs-dir @@ -89,10 +101,16 @@ my-logs-dir # cabal path /cabal.dist/home/.cabal/logs # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-logs-dir # cabal path +Configuration is affected by the following files: +- fake.cabal.project {"cabal-version":"","logs-dir":"my-logs-dir"} # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-logs-dir # cabal path my-store-dir @@ -107,10 +125,16 @@ my-store-dir # cabal path /cabal.dist/home/.cabal/store # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-store-dir # cabal path +Configuration is affected by the following files: +- fake.cabal.project {"cabal-version":"","store-dir":"my-store-dir"} # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-store-dir # cabal path fake-cabal.config @@ -125,10 +149,16 @@ fake-cabal.config # cabal path /cabal.dist/home/.cabal/config # cabal path +Configuration is affected by the following files: +- fake.cabal.project fake-cabal.config # cabal path +Configuration is affected by the following files: +- fake.cabal.project {"cabal-version":"","config-file":"fake-cabal.config"} # cabal path +Configuration is affected by the following files: +- fake.cabal.project fake-cabal.config # cabal path my-installdir @@ -143,8 +173,14 @@ my-installdir # cabal path /cabal.dist/home/.cabal/bin # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-installdir # cabal path +Configuration is affected by the following files: +- fake.cabal.project {"cabal-version":"","installdir":"my-installdir"} # cabal path +Configuration is affected by the following files: +- fake.cabal.project my-installdir diff --git a/cabal-testsuite/PackageTests/PkgConfigParse/pkg-config.exe b/cabal-testsuite/PackageTests/PkgConfigParse/pkg-config.exe new file mode 100644 index 00000000000..537023174dc Binary files /dev/null and b/cabal-testsuite/PackageTests/PkgConfigParse/pkg-config.exe differ diff --git a/cabal-testsuite/PackageTests/PkgConfigParse/pkg-config.shim b/cabal-testsuite/PackageTests/PkgConfigParse/pkg-config.shim new file mode 100644 index 00000000000..2c187de462e --- /dev/null +++ b/cabal-testsuite/PackageTests/PkgConfigParse/pkg-config.shim @@ -0,0 +1,2 @@ +path = "FINDSH\sh.exe" +args = "pkg-config" \ No newline at end of file diff --git a/cabal-testsuite/PackageTests/PkgConfigParse/setup.test.hs b/cabal-testsuite/PackageTests/PkgConfigParse/setup.test.hs index 2528e7459e5..edebd2d131c 100644 --- a/cabal-testsuite/PackageTests/PkgConfigParse/setup.test.hs +++ b/cabal-testsuite/PackageTests/PkgConfigParse/setup.test.hs @@ -1,7 +1,17 @@ +import System.Directory import Test.Cabal.Prelude -- Test that invalid unicode in pkg-config output doesn't trip up cabal very much -main = cabalTest $ expectBrokenIfWindows 10179 $ do +main = cabalTest $ do + when isWindows $ do + sh <- fmap takeDirectory <$> liftIO (findExecutable "sh") + case sh of + Nothing -> skip "no sh" + Just sh' -> do + let sh'' = concatMap (\c -> case c of + '\\' -> "\\\\\\\\" + x -> [x]) sh' + void $ shell "sed" [ "-i", "-e", "s/FINDSH/" <> sh'' <> "/g", "pkg-config.shim"] cdir <- testCurrentDir `fmap` getTestEnv res <- cabal' "v2-build" ["--extra-prog-path="++cdir, "-v2"] assertOutputContains "Some pkg-config packages have names containing invalid unicode: or" res diff --git a/cabal-testsuite/PackageTests/ProfShared/setup.test.hs b/cabal-testsuite/PackageTests/ProfShared/setup.test.hs index 84fcbd47e57..54147e34575 100644 --- a/cabal-testsuite/PackageTests/ProfShared/setup.test.hs +++ b/cabal-testsuite/PackageTests/ProfShared/setup.test.hs @@ -16,8 +16,8 @@ main = do let ls = lines (resultOutput r) - library_prefix = "Wanted build ways(True): " - executable_prefix = "Wanted build ways(False): " + library_prefix = "Wanted module build ways(library): " + executable_prefix = "Wanted module build ways(executable 'Prof'): " get_ways prefix = map (drop (length prefix)) (filter (prefix `isPrefixOf`) ls) library_ways = read_ways (get_ways library_prefix) diff --git a/cabal-testsuite/PackageTests/Project/CoverageProject/cabal.out b/cabal-testsuite/PackageTests/Project/CoverageProject/cabal.out index 1278857b31d..3b7c1d4b788 100644 --- a/cabal-testsuite/PackageTests/Project/CoverageProject/cabal.out +++ b/cabal-testsuite/PackageTests/Project/CoverageProject/cabal.out @@ -1,4 +1,6 @@ # cabal test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/0.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/0.config new file mode 100644 index 00000000000..05195095cb0 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/0.config @@ -0,0 +1,7 @@ +import: cfg/1.config +import: cfg/3.config +import: cfg/5.config +import: cfg/7.config +import: cfg/9.config + +import: with-ghc.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/2.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/2.config new file mode 100644 index 00000000000..80143e396c8 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/2.config @@ -0,0 +1,2 @@ +import: cfg/3.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/4.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/4.config new file mode 100644 index 00000000000..8b84982cc3e --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/4.config @@ -0,0 +1,2 @@ +import: cfg/5.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/6.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/6.config new file mode 100644 index 00000000000..43ce76e8766 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/6.config @@ -0,0 +1,2 @@ +import: cfg/7.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/8.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/8.config new file mode 100644 index 00000000000..28d0551160f --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/8.config @@ -0,0 +1,2 @@ +import: cfg/9.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cabal.out b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cabal.out new file mode 100644 index 00000000000..437612a2eca --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cabal.out @@ -0,0 +1,3 @@ +# checking "using config from message" with URI imports +# cabal v2-build +# checking that package directories and locations are reported in order diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cabal.test.hs b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cabal.test.hs new file mode 100644 index 00000000000..e354b356d7f --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cabal.test.hs @@ -0,0 +1,42 @@ +import Test.Cabal.Prelude + +main = cabalTest . recordMode RecordMarked $ do + let log = recordHeader . pure + + log "checking \"using config from message\" with URI imports" + out <- fails $ cabal' "v2-build" [ "all", "--dry-run", "--project-file=no-pkgs.project" ] + + -- Use assertRegex when the output is tainted by the temp directory, like + -- this: + -- + -- When using configuration from: + -- - /tmp/cabal-testsuite-282695/cabal.project + -- - /tmp/cabal-testsuite-282695/2.config etc + assertRegex + "Project configuration with URI imports is listed in full" + "When using configuration from:(\n|\r\n) \ + \ .*no-pkgs\\.project(\n|\r\n) \ + \ .*0\\.config(\n|\r\n) \ + \ .*2\\.config(\n|\r\n) \ + \ .*4\\.config(\n|\r\n) \ + \ .*6\\.config(\n|\r\n) \ + \ .*8\\.config(\n|\r\n) \ + \ .*1\\.config(\n|\r\n) \ + \ .*3\\.config(\n|\r\n) \ + \ .*5\\.config(\n|\r\n) \ + \ .*7\\.config(\n|\r\n) \ + \ .*9\\.config(\n|\r\n) \ + \ .*with-ghc\\.config(\n|\r\n) \ + \ .*https://www.stackage.org/lts-21.25/cabal.config(\n|\r\n)" + out + + log "checking that package directories and locations are reported in order" + assertOutputContains + "The following errors occurred: \ + \ - The package directory 'no-pkg-1' does not contain any .cabal file. \ + \ - The package location 'no-pkg-2-dir' does not exist. \ + \ - The package directory 'no-pkg-3' does not contain any .cabal file. \ + \ - The package location 'no-pkg-4-dir' does not exist." + out + + return () diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/1.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/1.config new file mode 100644 index 00000000000..126a94da61d --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/1.config @@ -0,0 +1,2 @@ +import: ../2.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/3.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/3.config new file mode 100644 index 00000000000..f40b183e472 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/3.config @@ -0,0 +1,2 @@ +import: ../4.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/5.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/5.config new file mode 100644 index 00000000000..7f579a54345 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/5.config @@ -0,0 +1,2 @@ +import: ../6.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/7.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/7.config new file mode 100644 index 00000000000..7cd98c9c244 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/7.config @@ -0,0 +1,2 @@ +import: ../8.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/9.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/9.config new file mode 100644 index 00000000000..44d1cc5e562 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/cfg/9.config @@ -0,0 +1,2 @@ +-- No imports here +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkg-1/README.md b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkg-1/README.md new file mode 100644 index 00000000000..ba73c42531f --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkg-1/README.md @@ -0,0 +1,2 @@ +There's intentionally no package here but the directory for the package exists +so that the project can find it. diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkg-3/README.md b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkg-3/README.md new file mode 100644 index 00000000000..ba73c42531f --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkg-3/README.md @@ -0,0 +1,2 @@ +There's intentionally no package here but the directory for the package exists +so that the project can find it. diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkgs.project b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkgs.project new file mode 100644 index 00000000000..0d723a9e298 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/no-pkgs.project @@ -0,0 +1,7 @@ +packages: + no-pkg-1 + no-pkg-2-dir + no-pkg-3 + no-pkg-4-dir + +import: 0.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/with-ghc.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/with-ghc.config new file mode 100644 index 00000000000..140a00be1b9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromComplex/with-ghc.config @@ -0,0 +1,7 @@ +-- WARNING: Override the `with-compiler: ghc-x.y.z` of the stackage import, of +-- https://www.stackage.org/nightly-yyyy-mm-dd/cabal.config. Otherwise tests +-- will fail with: +-- -Error: [Cabal-5490] +-- -Cannot find the program 'ghc'. User-specified path 'ghc-x.y.z' does not +-- refer to an executable and the program is not on the system path. +with-compiler: ghc diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/a-very-extra.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/a-very-extra.config new file mode 100644 index 00000000000..c0f8dc3cc73 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/a-very-extra.config @@ -0,0 +1,2 @@ +import: https://www.stackage.org/lts-21.25/cabal.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/an-extra.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/an-extra.config new file mode 100644 index 00000000000..c0f8dc3cc73 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/an-extra.config @@ -0,0 +1,2 @@ +import: https://www.stackage.org/lts-21.25/cabal.config +import: https://www.stackage.org/lts-21.25/cabal.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.out b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.out new file mode 100644 index 00000000000..92fd8204a40 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.out @@ -0,0 +1 @@ +# cabal v2-build diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.project b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.project new file mode 100644 index 00000000000..32308f3491f --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.project @@ -0,0 +1,9 @@ +packages: no-pkg-dir +import: z-empty.config +import: an-extra.config +import: an-extra.config +import: a-very-extra.config +import: a-very-extra.config +import: https://www.stackage.org/lts-21.25/cabal.config +import: https://www.stackage.org/lts-21.25/cabal.config +import: with-ghc.config diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.test.hs b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.test.hs new file mode 100644 index 00000000000..cf37d1621a6 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/cabal.test.hs @@ -0,0 +1,24 @@ +import Test.Cabal.Prelude + +main = cabalTest . recordMode RecordMarked $ do + let log = recordHeader . pure + + out <- fails $ cabal' "v2-build" [ "all", "--dry-run" ] + + -- Use assertRegex when the output is tainted by the temp directory, like + -- this: + -- + -- When using configuration from: + -- - /tmp/cabal-testsuite-282695/cabal.project + assertRegex + "Project configuration is listed in full and deduplicated" + "When using configuration from:(\n|\r\n) \ + \ .*cabal\\.project(\n|\r\n) \ + \ .*a-very-extra\\.config(\n|\r\n) \ + \ .*an-extra\\.config(\n|\r\n) \ + \ .*with-ghc\\.config(\n|\r\n) \ + \ .*z-empty\\.config(\n|\r\n) \ + \ .*https://www.stackage.org/lts-21.25/cabal.config(\n|\r\n)" + out + + return () diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/with-ghc.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/with-ghc.config new file mode 100644 index 00000000000..140a00be1b9 --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/with-ghc.config @@ -0,0 +1,7 @@ +-- WARNING: Override the `with-compiler: ghc-x.y.z` of the stackage import, of +-- https://www.stackage.org/nightly-yyyy-mm-dd/cabal.config. Otherwise tests +-- will fail with: +-- -Error: [Cabal-5490] +-- -Cannot find the program 'ghc'. User-specified path 'ghc-x.y.z' does not +-- refer to an executable and the program is not on the system path. +with-compiler: ghc diff --git a/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/z-empty.config b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/z-empty.config new file mode 100644 index 00000000000..771bb389fde --- /dev/null +++ b/cabal-testsuite/PackageTests/ProjectImport/DedupUsingConfigFromSimple/z-empty.config @@ -0,0 +1 @@ +-- This file is intentionally empty, just this comment. diff --git a/cabal-testsuite/PackageTests/Regression/T4154/install-time-with-constraint.out b/cabal-testsuite/PackageTests/Regression/T4154/install-time-with-constraint.out index 7bc5e2e63a6..c5daa27101f 100644 --- a/cabal-testsuite/PackageTests/Regression/T4154/install-time-with-constraint.out +++ b/cabal-testsuite/PackageTests/Regression/T4154/install-time-with-constraint.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: diff --git a/cabal-testsuite/PackageTests/Regression/T4202/cabal.out b/cabal-testsuite/PackageTests/Regression/T4202/cabal.out index a7bae1abdb2..426ccd41ed8 100644 --- a/cabal-testsuite/PackageTests/Regression/T4202/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T4202/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -11,12 +13,16 @@ Configuring executable 'qexe' for q-1.0... Preprocessing executable 'qexe' for q-1.0... Building executable 'qexe' for q-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - p-1.0 (lib) (file P.hs changed) Preprocessing library for p-1.0... Building library for p-1.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - q-1.0 (exe:qexe) (file /cabal.dist/work/dist/build//ghc-/p-1.0/cache/build changed) diff --git a/cabal-testsuite/PackageTests/Regression/T4720/cabal.out b/cabal-testsuite/PackageTests/Regression/T4720/cabal.out index 3cf3d3afe28..34903b832da 100644 --- a/cabal-testsuite/PackageTests/Regression/T4720/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T4720/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T4798/cabal.out b/cabal-testsuite/PackageTests/Regression/T4798/cabal.out index 05de54b124c..55571a3f647 100644 --- a/cabal-testsuite/PackageTests/Regression/T4798/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T4798/cabal.out @@ -1,4 +1,6 @@ # cabal test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T4986/cabal.out b/cabal-testsuite/PackageTests/Regression/T4986/cabal.out index 1ceb427b04c..fdec868d0a5 100644 --- a/cabal-testsuite/PackageTests/Regression/T4986/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T4986/cabal.out @@ -1 +1,3 @@ -# cabal v2-configure \ No newline at end of file +# cabal v2-configure +Configuration is affected by the following files: +- cabal.project diff --git a/cabal-testsuite/PackageTests/Regression/T5213/cabal.out b/cabal-testsuite/PackageTests/Regression/T5213/cabal.out index fb0e7ad7a9a..799c2005c0b 100644 --- a/cabal-testsuite/PackageTests/Regression/T5213/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T5213/cabal.out @@ -1,4 +1,6 @@ # cabal new-test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.out b/cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.out index 57cb186d882..1aaf72ce762 100644 --- a/cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T5213ExeCoverage/cabal.out @@ -1,4 +1,6 @@ # cabal new-test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T5309/cabal.out b/cabal-testsuite/PackageTests/Regression/T5309/cabal.out index e799843e5b6..a2f7566f38a 100644 --- a/cabal-testsuite/PackageTests/Regression/T5309/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T5309/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -15,6 +17,8 @@ Configuring executable 'exe-with-lib' for T5309-1.0.0.0... Preprocessing executable 'exe-with-lib' for T5309-1.0.0.0... Building executable 'exe-with-lib' for T5309-1.0.0.0... # cabal v2-test +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - T5309-1.0.0.0 (test:test-no-lib) (first run) @@ -36,6 +40,8 @@ Test suite test-with-lib: PASS Test suite logged to: /cabal.dist/work/./dist/build//ghc-/T5309-1.0.0.0/t/test-with-lib/test/T5309-1.0.0.0-test-with-lib.log 1 of 1 test suites (1 of 1 test cases) passed. # cabal v2-bench +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - T5309-1.0.0.0 (bench:bench-no-lib) (first run) diff --git a/cabal-testsuite/PackageTests/Regression/T5318/sdist-list-sources.out b/cabal-testsuite/PackageTests/Regression/T5318/sdist-list-sources.out index faefc513fe8..8e257e232a7 100644 --- a/cabal-testsuite/PackageTests/Regression/T5318/sdist-list-sources.out +++ b/cabal-testsuite/PackageTests/Regression/T5318/sdist-list-sources.out @@ -1,2 +1,4 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote source list to /empty-data-dir-0.list diff --git a/cabal-testsuite/PackageTests/Regression/T5677/cabal.out b/cabal-testsuite/PackageTests/Regression/T5677/cabal.out index 88bc2862665..d660ba36715 100644 --- a/cabal-testsuite/PackageTests/Regression/T5677/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T5677/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T6334/cabal.out b/cabal-testsuite/PackageTests/Regression/T6334/cabal.out index a0a58d72357..d011ce510c0 100644 --- a/cabal-testsuite/PackageTests/Regression/T6334/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6334/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T6440/cabal.out b/cabal-testsuite/PackageTests/Regression/T6440/cabal.out index 5c24cecf81f..8de48ba2a8d 100644 --- a/cabal-testsuite/PackageTests/Regression/T6440/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6440/cabal.out @@ -1,4 +1,6 @@ # cabal test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T6853/cabal.out b/cabal-testsuite/PackageTests/Regression/T6853/cabal.out index 75fe8d9ef1c..2c7e916bd12 100644 --- a/cabal-testsuite/PackageTests/Regression/T6853/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6853/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T6961/DepExternal/cabal.out b/cabal-testsuite/PackageTests/Regression/T6961/DepExternal/cabal.out index a063ee92cb8..2e8cfbf46cc 100644 --- a/cabal-testsuite/PackageTests/Regression/T6961/DepExternal/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6961/DepExternal/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: diff --git a/cabal-testsuite/PackageTests/Regression/T6961/DepInternal/cabal.out b/cabal-testsuite/PackageTests/Regression/T6961/DepInternal/cabal.out index cda3c265371..495d99db1f8 100644 --- a/cabal-testsuite/PackageTests/Regression/T6961/DepInternal/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6961/DepInternal/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/Regression/T6961/Exe/cabal.out b/cabal-testsuite/PackageTests/Regression/T6961/Exe/cabal.out index bde31817cf4..ddd01927783 100644 --- a/cabal-testsuite/PackageTests/Regression/T6961/Exe/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6961/Exe/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: diff --git a/cabal-testsuite/PackageTests/Regression/T6961/Test/cabal.out b/cabal-testsuite/PackageTests/Regression/T6961/Test/cabal.out index 8f28d66058a..8b24d62d861 100644 --- a/cabal-testsuite/PackageTests/Regression/T6961/Test/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T6961/Test/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following would be built: diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out index 5c8ed7ba2c5..d19a9b23a47 100644 --- a/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T7234/Fail/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out index a0c85309b1f..5accd75362d 100644 --- a/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T7234/Success/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T8507/cabal.out b/cabal-testsuite/PackageTests/Regression/T8507/cabal.out index a4b777afbbc..7f8230fe9fe 100644 --- a/cabal-testsuite/PackageTests/Regression/T8507/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T8507/cabal.out @@ -1,4 +1,6 @@ # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T9640/cabal.out b/cabal-testsuite/PackageTests/Regression/T9640/cabal.out index 4c0f119823f..e0d2968a2e3 100644 --- a/cabal-testsuite/PackageTests/Regression/T9640/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T9640/cabal.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/Regression/T9756/cabal.out b/cabal-testsuite/PackageTests/Regression/T9756/cabal.out index 61a814acd68..32930c9a727 100644 --- a/cabal-testsuite/PackageTests/Regression/T9756/cabal.out +++ b/cabal-testsuite/PackageTests/Regression/T9756/cabal.out @@ -12,6 +12,8 @@ Installing executable mybuilder in Warning: The directory /cabal.dist/home/.cabal/store/ghc-/incoming/new-/cabal.dist/home/.cabal/store/ghc-/-/bin is not in the system search path. Symlinking 'mybuilder' to '/cabal.dist/install/mybuilder' # cabal v2-build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/RelativePathProjectImports/cabal.out b/cabal-testsuite/PackageTests/RelativePathProjectImports/cabal.out index 53ac1b8e71c..10c4953236f 100644 --- a/cabal-testsuite/PackageTests/RelativePathProjectImports/cabal.out +++ b/cabal-testsuite/PackageTests/RelativePathProjectImports/cabal.out @@ -1,4 +1,8 @@ # cabal build +Configuration is affected by the following files: +- cabal.project +- dep/cabal.project + imported by: cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -15,6 +19,10 @@ Configuring library for main-0.1... Preprocessing library for main-0.1... Building library for main-0.1... # cabal build +Configuration is affected by the following files: +- cabal.project +- dep/cabal.project + imported by: cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-no-load.out b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-no-load.out index 6f2908d3f26..9177f4d5c37 100644 --- a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-no-load.out +++ b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-no-load.out @@ -1,5 +1,7 @@ # cabal clean # cabal repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-normal.out b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-normal.out index 68ecdbe4008..b3e330f7e29 100644 --- a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-normal.out +++ b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.exec-normal.out @@ -1,5 +1,7 @@ # cabal clean # cabal repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-no-load.out b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-no-load.out index 6f2908d3f26..9177f4d5c37 100644 --- a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-no-load.out +++ b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-no-load.out @@ -1,5 +1,7 @@ # cabal clean # cabal repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-normal.out b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-normal.out index 6f2908d3f26..9177f4d5c37 100644 --- a/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-normal.out +++ b/cabal-testsuite/PackageTests/ReplNoLoad/cabal.lib-normal.out @@ -1,5 +1,7 @@ # cabal clean # cabal repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options-multiple-flags.out b/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options-multiple-flags.out index 374ac0dd8c3..e45e9385218 100644 --- a/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options-multiple-flags.out +++ b/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options-multiple-flags.out @@ -1,5 +1,7 @@ # cabal clean # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options.out b/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options.out index 374ac0dd8c3..e45e9385218 100644 --- a/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options.out +++ b/cabal-testsuite/PackageTests/ReplOptions/cabal.multiple-repl-options.out @@ -1,5 +1,7 @@ # cabal clean # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags-negative.out b/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags-negative.out index ba1bbef88db..9368db4d3dd 100644 --- a/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags-negative.out +++ b/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags-negative.out @@ -1,5 +1,7 @@ # cabal clean # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags.out b/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags.out index 374ac0dd8c3..e45e9385218 100644 --- a/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags.out +++ b/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options-multiple-flags.out @@ -1,5 +1,7 @@ # cabal clean # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options.out b/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options.out index 374ac0dd8c3..e45e9385218 100644 --- a/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options.out +++ b/cabal-testsuite/PackageTests/ReplOptions/cabal.single-repl-options.out @@ -1,5 +1,7 @@ # cabal clean # cabal v2-repl +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/SDist/T5195and5349/cabal.out b/cabal-testsuite/PackageTests/SDist/T5195and5349/cabal.out index f42c4e98177..d6db93b0a25 100644 --- a/cabal-testsuite/PackageTests/SDist/T5195and5349/cabal.out +++ b/cabal-testsuite/PackageTests/SDist/T5195and5349/cabal.out @@ -1,4 +1,6 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Warning: Ignoring directory '././actually-a-directory' listed in a Cabal package field which should only include files (not directories). Warning: Ignoring directory './actually-a-directory' listed in a Cabal package field which should only include files (not directories). Warning: Ignoring directory './actually-a-directory' listed in a Cabal package field which should only include files (not directories). diff --git a/cabal-testsuite/PackageTests/SDist/T7028/cabal.out b/cabal-testsuite/PackageTests/SDist/T7028/cabal.out index 222d3c33c8b..4ec2d96e545 100644 --- a/cabal-testsuite/PackageTests/SDist/T7028/cabal.out +++ b/cabal-testsuite/PackageTests/SDist/T7028/cabal.out @@ -1,2 +1,4 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote source list to /t7028-0.list diff --git a/cabal-testsuite/PackageTests/SDist/T7124/cabal-list.out b/cabal-testsuite/PackageTests/SDist/T7124/cabal-list.out index cb65c326a56..b45ccabcb39 100644 --- a/cabal-testsuite/PackageTests/SDist/T7124/cabal-list.out +++ b/cabal-testsuite/PackageTests/SDist/T7124/cabal-list.out @@ -1,4 +1,6 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote source list to /pkg-a-0.list Error: [Cabal-6661] filepath wildcard './data.txt' does not match any files. diff --git a/cabal-testsuite/PackageTests/SDist/T7124/cabal.out b/cabal-testsuite/PackageTests/SDist/T7124/cabal.out index 5dbaee755bc..ec1a61ec9f8 100644 --- a/cabal-testsuite/PackageTests/SDist/T7124/cabal.out +++ b/cabal-testsuite/PackageTests/SDist/T7124/cabal.out @@ -1,4 +1,6 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote tarball sdist to /pkg-a-0.tar.gz Error: [Cabal-6661] filepath wildcard './data.txt' does not match any files. diff --git a/cabal-testsuite/PackageTests/SDist/T7698/cabal.out b/cabal-testsuite/PackageTests/SDist/T7698/cabal.out index 99370eb5dd6..b4405270c12 100644 --- a/cabal-testsuite/PackageTests/SDist/T7698/cabal.out +++ b/cabal-testsuite/PackageTests/SDist/T7698/cabal.out @@ -1,2 +1,4 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote source list to /t7698-0.list diff --git a/cabal-testsuite/PackageTests/SDist/T8817/cabal.out b/cabal-testsuite/PackageTests/SDist/T8817/cabal.out index c99d15276fe..89e68f1c41e 100644 --- a/cabal-testsuite/PackageTests/SDist/T8817/cabal.out +++ b/cabal-testsuite/PackageTests/SDist/T8817/cabal.out @@ -1,2 +1,4 @@ # cabal v2-sdist +Configuration is affected by the following files: +- cabal.project Wrote tarball sdist to /t8817-0.tar.gz diff --git a/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-all.out b/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-all.out index e37e3fccc4d..638ea9ced39 100644 --- a/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-all.out +++ b/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-all.out @@ -1,4 +1,6 @@ # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-exe.out b/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-exe.out index 7c69357323d..036c131915c 100644 --- a/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-exe.out +++ b/cabal-testsuite/PackageTests/ShowBuildInfo/A/build-info-exe.out @@ -1,4 +1,6 @@ # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/ShowBuildInfo/A/remove-outdated.out b/cabal-testsuite/PackageTests/ShowBuildInfo/A/remove-outdated.out index 3ad97d2f378..0b788f6c53e 100644 --- a/cabal-testsuite/PackageTests/ShowBuildInfo/A/remove-outdated.out +++ b/cabal-testsuite/PackageTests/ShowBuildInfo/A/remove-outdated.out @@ -1,4 +1,6 @@ # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -7,6 +9,8 @@ Configuring executable 'A' for A-0.1.0.0... Preprocessing executable 'A' for A-0.1.0.0... Building executable 'A' for A-0.1.0.0... # cabal v2-build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - A-0.1.0.0 (exe:A) (configuration changed) diff --git a/cabal-testsuite/PackageTests/ShowBuildInfo/CompileFail/compile-fail.out b/cabal-testsuite/PackageTests/ShowBuildInfo/CompileFail/compile-fail.out index b0cae576cd6..a2ecb2be87d 100644 --- a/cabal-testsuite/PackageTests/ShowBuildInfo/CompileFail/compile-fail.out +++ b/cabal-testsuite/PackageTests/ShowBuildInfo/CompileFail/compile-fail.out @@ -1,4 +1,6 @@ # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -13,6 +15,8 @@ Building test suite 'CompileFail-test' for CompileFail-0.1.0.0... Error: [Cabal-7125] Failed to build CompileFail-0.1.0.0-inplace-CompileFail-test. # cabal build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - CompileFail-0.1.0.0 (lib:failing) (first run) diff --git a/cabal-testsuite/PackageTests/ShowBuildInfo/Complex/single.out b/cabal-testsuite/PackageTests/ShowBuildInfo/Complex/single.out index 3825d1f6cf8..f46f8948e28 100644 --- a/cabal-testsuite/PackageTests/ShowBuildInfo/Complex/single.out +++ b/cabal-testsuite/PackageTests/ShowBuildInfo/Complex/single.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal build +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: @@ -17,10 +19,14 @@ Building executable 'Complex' for Complex-0.1.0.0... # show-build-info Complex exe:Complex {"cabal-lib-version":"","compiler":{"flavour":"ghc","compiler-id":"ghc-","path":""},"components":[{"type":"exe","name":"exe:Complex","unit-id":"Complex-0.1.0.0-inplace-Complex","compiler-args":["-fbuilding-cabal-package","-O","-outputdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build","-odir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build","-hidir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build","-hiedir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build/extra-compilation-artifacts/hie","-stubdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build","-i","-iapp","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build/Complex/autogen","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build/Complex/autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build","-optP-include","-optPsingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/x/Complex/build/Complex/autogen/cabal_macros.h","-this-unit-id","Complex-0.1.0.0-inplace-Complex","-hide-all-packages","-Wmissing-home-modules","-no-user-package-db","-package-db","/single.dist/home/.cabal/store/ghc-/package.db","-package-db","/single.dist/work/dist/packagedb/ghc-","-package-id","","-package-id","","-XHaskell2010","-threaded","-rtsopts","-with-rtsopts=-N -T","-Wredundant-constraints"],"modules":["Other","Paths_Complex"],"src-files":["Main.lhs"],"hs-src-dirs":["app"],"src-dir":"/","cabal-file":"Complex.cabal"}]} # cabal build +Configuration is affected by the following files: +- cabal.project Up to date # show-build-info Complex lib {"cabal-lib-version":"","compiler":{"flavour":"ghc","compiler-id":"ghc-","path":""},"components":[{"type":"lib","name":"lib","unit-id":"Complex-0.1.0.0-inplace","compiler-args":["-fbuilding-cabal-package","-O","-outputdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build","-odir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build","-hidir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build","-hiedir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build/extra-compilation-artifacts/hie","-stubdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build","-i","-isrc","-idoesnt-exist","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build/autogen","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build/autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build","-optP-include","-optPsingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/build/autogen/cabal_macros.h","-this-unit-id","Complex-0.1.0.0-inplace","-hide-all-packages","-Wmissing-home-modules","-no-user-package-db","-package-db","/single.dist/home/.cabal/store/ghc-/package.db","-package-db","/single.dist/work/dist/packagedb/ghc-","-package-id","","-XHaskell2010","-Wall"],"modules":["A","B","C","D","Paths_Complex"],"src-files":[],"hs-src-dirs":["src","doesnt-exist"],"src-dir":"/","cabal-file":"Complex.cabal"}]} # cabal build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - criterion-1.1.4.0 (lib) (requires build) @@ -36,6 +42,8 @@ Building benchmark 'complex-benchmarks' for Complex-0.1.0.0... # show-build-info Complex bench:complex-benchmarks {"cabal-lib-version":"","compiler":{"flavour":"ghc","compiler-id":"ghc-","path":""},"components":[{"type":"bench","name":"bench:complex-benchmarks","unit-id":"Complex-0.1.0.0-inplace-complex-benchmarks","compiler-args":["-fbuilding-cabal-package","-O","-outputdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build","-odir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build","-hidir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build","-hiedir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build/extra-compilation-artifacts/hie","-stubdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build","-i","-ibenchmark","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build/complex-benchmarks/autogen","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build/complex-benchmarks/autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build","-optP-include","-optPsingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/b/complex-benchmarks/build/complex-benchmarks/autogen/cabal_macros.h","-this-unit-id","Complex-0.1.0.0-inplace-complex-benchmarks","-hide-all-packages","-Wmissing-home-modules","-no-user-package-db","-package-db","/single.dist/home/.cabal/store/ghc-/package.db","-package-db","/single.dist/work/dist/packagedb/ghc-","-package-id","","-package-id","","-package-id","","-XHaskell2010","-Wall","-rtsopts","-threaded","-with-rtsopts=-N"],"modules":["Paths_Complex"],"src-files":["Main.hs"],"hs-src-dirs":["benchmark"],"src-dir":"/","cabal-file":"Complex.cabal"}]} # cabal build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - test-framework-0.8.1.1 (lib) (requires build) @@ -51,6 +59,8 @@ Building test suite 'func-test' for Complex-0.1.0.0... # show-build-info Complex test:func-test {"cabal-lib-version":"","compiler":{"flavour":"ghc","compiler-id":"ghc-","path":""},"components":[{"type":"test","name":"test:func-test","unit-id":"Complex-0.1.0.0-inplace-func-test","compiler-args":["-fbuilding-cabal-package","-O","-outputdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build","-odir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build","-hidir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build","-hiedir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build/extra-compilation-artifacts/hie","-stubdir","single.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build","-i","-itest","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build/func-test/autogen","-isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build/func-test/autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build/global-autogen","-Isingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build","-optP-include","-optPsingle.dist/work/./dist/build//ghc-/Complex-0.1.0.0/t/func-test/build/func-test/autogen/cabal_macros.h","-this-unit-id","Complex-0.1.0.0-inplace-func-test","-hide-all-packages","-Wmissing-home-modules","-no-user-package-db","-package-db","/single.dist/home/.cabal/store/ghc-/package.db","-package-db","/single.dist/work/dist/packagedb/ghc-","-package-id","","-package-id","","-package-id","","-XHaskell2010"],"modules":[],"src-files":["FuncMain.hs"],"hs-src-dirs":["test"],"src-dir":"/","cabal-file":"Complex.cabal"}]} # cabal build +Configuration is affected by the following files: +- cabal.project Build profile: -w ghc- -O1 In order, the following will be built: - another-framework-0.8.1.1 (lib) (requires build) diff --git a/cabal-testsuite/PackageTests/TestChangeDir/cabal.project b/cabal-testsuite/PackageTests/TestChangeDir/cabal.project new file mode 100644 index 00000000000..410dbc32d08 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/cabal.project @@ -0,0 +1,3 @@ +packages: regression-simple + +tests: True diff --git a/cabal-testsuite/PackageTests/TestChangeDir/cabal.test.hs b/cabal-testsuite/PackageTests/TestChangeDir/cabal.test.hs new file mode 100644 index 00000000000..2aaf2ac3933 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/cabal.test.hs @@ -0,0 +1,6 @@ +import Test.Cabal.Prelude + +main = cabalTest . recordMode DoNotRecord $ do + -- Building a target that contains whitespace + cabal "test" ["regression-simple"] + cabal "bench" ["regression-simple"] diff --git a/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/CHANGELOG.md b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/CHANGELOG.md new file mode 100644 index 00000000000..728a34daa36 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/CHANGELOG.md @@ -0,0 +1,5 @@ +# Revision history for regression-simple + +## 0.1.0.0 -- YYYY-mm-dd + +* First version. Released on an unsuspecting world. diff --git a/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/bench/Main.hs b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/bench/Main.hs new file mode 100644 index 00000000000..d4be9546a21 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/bench/Main.hs @@ -0,0 +1,4 @@ +module Main (main) where + +main :: IO () +main = readFile "do-i-exist.txt" >>= print diff --git a/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/do-i-exist.txt b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/do-i-exist.txt new file mode 100644 index 00000000000..044c92dc6a5 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/do-i-exist.txt @@ -0,0 +1 @@ +I exist diff --git a/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/regression-simple.cabal b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/regression-simple.cabal new file mode 100644 index 00000000000..527908d1f16 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/regression-simple.cabal @@ -0,0 +1,27 @@ +cabal-version: 3.14 +name: regression-simple +version: 0.1.0.0 +license: NONE +author: Matthew Pickering +maintainer: matthewtpickering@gmail.com +build-type: Simple +extra-doc-files: CHANGELOG.md + +common warnings + ghc-options: -Wall + +test-suite regression-simple-test + import: warnings + default-language: Haskell2010 + type: exitcode-stdio-1.0 + hs-source-dirs: test + main-is: Main.hs + build-depends: base + +benchmark regression-simple-bench + import: warnings + default-language: Haskell2010 + type: exitcode-stdio-1.0 + hs-source-dirs: bench + main-is: Main.hs + build-depends: base diff --git a/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/test/Main.hs b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/test/Main.hs new file mode 100644 index 00000000000..d4be9546a21 --- /dev/null +++ b/cabal-testsuite/PackageTests/TestChangeDir/regression-simple/test/Main.hs @@ -0,0 +1,4 @@ +module Main (main) where + +main :: IO () +main = readFile "do-i-exist.txt" >>= print diff --git a/cabal-testsuite/PackageTests/TestCodeGenerator/cabal.out b/cabal-testsuite/PackageTests/TestCodeGenerator/cabal.out index b6691231474..31af40384d3 100644 --- a/cabal-testsuite/PackageTests/TestCodeGenerator/cabal.out +++ b/cabal-testsuite/PackageTests/TestCodeGenerator/cabal.out @@ -1,4 +1,6 @@ # cabal v2-test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/cabal.out b/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/cabal.out index 8fb3ea6d6d3..c7dac223635 100644 --- a/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/cabal.out +++ b/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/cabal.out @@ -1,4 +1,6 @@ # cabal v2-test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/coverage.out b/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/coverage.out index 872dbd57eaf..0d98e24beaa 100644 --- a/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/coverage.out +++ b/cabal-testsuite/PackageTests/TestSuiteTests/ExeV10/coverage.out @@ -1,4 +1,6 @@ # cabal v2-test +Configuration is affected by the following files: +- cabal.project Resolving dependencies... Build profile: -w ghc- -O1 In order, the following will be built: diff --git a/cabal-testsuite/PackageTests/VersionPriority/0-local.out b/cabal-testsuite/PackageTests/VersionPriority/0-local.out index f57e8b4db97..176876e269f 100644 --- a/cabal-testsuite/PackageTests/VersionPriority/0-local.out +++ b/cabal-testsuite/PackageTests/VersionPriority/0-local.out @@ -1,6 +1,8 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- 0-local.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/VersionPriority/1-local.out b/cabal-testsuite/PackageTests/VersionPriority/1-local.out index 0de3c6d5f1f..acca1619534 100644 --- a/cabal-testsuite/PackageTests/VersionPriority/1-local.out +++ b/cabal-testsuite/PackageTests/VersionPriority/1-local.out @@ -1,6 +1,10 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- 1-local-constraints-import.project +- stackage-local.config + imported by: 1-local-constraints-import.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: @@ -14,6 +18,10 @@ Could not resolve dependencies: [__1] fail (backjumping, conflict set: cabal-version-override, hashable) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: hashable (3), cabal-version-override (2) # cabal v2-build +Configuration is affected by the following files: +- 1-local-import-constraints.project +- stackage-local.config + imported by: 1-local-import-constraints.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/VersionPriority/1-web.out b/cabal-testsuite/PackageTests/VersionPriority/1-web.out index cfdaa0d2dbc..f7ca5a23be8 100644 --- a/cabal-testsuite/PackageTests/VersionPriority/1-web.out +++ b/cabal-testsuite/PackageTests/VersionPriority/1-web.out @@ -1,6 +1,12 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- 1-web-constraints-import.project +- project-stackage/nightly-2023-12-07.config + imported by: 1-web-constraints-import.project +- with-ghc.config + imported by: 1-web-constraints-import.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: @@ -14,6 +20,12 @@ Could not resolve dependencies: [__1] fail (backjumping, conflict set: cabal-version-override, hashable) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: hashable (3), cabal-version-override (2) # cabal v2-build +Configuration is affected by the following files: +- 1-web-import-constraints.project +- project-stackage/nightly-2023-12-07.config + imported by: 1-web-import-constraints.project +- with-ghc.config + imported by: 1-web-import-constraints.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/VersionPriority/2-local.out b/cabal-testsuite/PackageTests/VersionPriority/2-local.out index ccb733ca12e..bf3ae4cb27c 100644 --- a/cabal-testsuite/PackageTests/VersionPriority/2-local.out +++ b/cabal-testsuite/PackageTests/VersionPriority/2-local.out @@ -1,6 +1,13 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- 2-local-constraints-import.project +- hop-local.config + imported by: 2-local-constraints-import.project +- stackage-local.config + imported by: hop-local.config + imported by: 2-local-constraints-import.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: @@ -15,6 +22,13 @@ Could not resolve dependencies: [__1] fail (backjumping, conflict set: cabal-version-override, hashable) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: hashable (3), cabal-version-override (2) # cabal v2-build +Configuration is affected by the following files: +- 2-local-import-constraints.project +- hop-local.config + imported by: 2-local-import-constraints.project +- stackage-local.config + imported by: hop-local.config + imported by: 2-local-import-constraints.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/VersionPriority/2-web.out b/cabal-testsuite/PackageTests/VersionPriority/2-web.out index 15e5c01517b..17bc5a01962 100644 --- a/cabal-testsuite/PackageTests/VersionPriority/2-web.out +++ b/cabal-testsuite/PackageTests/VersionPriority/2-web.out @@ -1,6 +1,15 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- 2-web-constraints-import.project +- project-stackage/nightly-2023-12-07.config + imported by: stackage-web.config + imported by: 2-web-constraints-import.project +- stackage-web.config + imported by: 2-web-constraints-import.project +- with-ghc.config + imported by: 2-web-constraints-import.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: @@ -15,6 +24,15 @@ Could not resolve dependencies: [__1] fail (backjumping, conflict set: cabal-version-override, hashable) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: hashable (3), cabal-version-override (2) # cabal v2-build +Configuration is affected by the following files: +- 2-web-import-constraints.project +- project-stackage/nightly-2023-12-07.config + imported by: stackage-web.config + imported by: 2-web-import-constraints.project +- stackage-web.config + imported by: 2-web-import-constraints.project +- with-ghc.config + imported by: 2-web-import-constraints.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/PackageTests/VersionPriority/3-web.out b/cabal-testsuite/PackageTests/VersionPriority/3-web.out index 9321613639e..d9eee435ab1 100644 --- a/cabal-testsuite/PackageTests/VersionPriority/3-web.out +++ b/cabal-testsuite/PackageTests/VersionPriority/3-web.out @@ -1,6 +1,19 @@ # cabal v2-update Downloading the latest package list from test-local-repo # cabal v2-build +Configuration is affected by the following files: +- 3-web-constraints-import.project +- hop-web.config + imported by: 3-web-constraints-import.project +- project-stackage/nightly-2023-12-07.config + imported by: stackage-web.config + imported by: hop-web.config + imported by: 3-web-constraints-import.project +- stackage-web.config + imported by: hop-web.config + imported by: 3-web-constraints-import.project +- with-ghc.config + imported by: 3-web-constraints-import.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: @@ -16,6 +29,19 @@ Could not resolve dependencies: [__1] fail (backjumping, conflict set: cabal-version-override, hashable) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: hashable (3), cabal-version-override (2) # cabal v2-build +Configuration is affected by the following files: +- 3-web-import-constraints.project +- hop-web.config + imported by: 3-web-import-constraints.project +- project-stackage/nightly-2023-12-07.config + imported by: stackage-web.config + imported by: hop-web.config + imported by: 3-web-import-constraints.project +- stackage-web.config + imported by: hop-web.config + imported by: 3-web-import-constraints.project +- with-ghc.config + imported by: 3-web-import-constraints.project Resolving dependencies... Error: [Cabal-7107] Could not resolve dependencies: diff --git a/cabal-testsuite/README.md b/cabal-testsuite/README.md index 73b39d56801..2c3d17e6150 100644 --- a/cabal-testsuite/README.md +++ b/cabal-testsuite/README.md @@ -1,18 +1,21 @@ cabal-testsuite is a suite of integration tests for Cabal-based frameworks. -How to run ----------- +# How to run 1. Build `cabal-testsuite` (`cabal build cabal-testsuite:cabal-tests`) 2. Run the `cabal-tests` executable. It will scan for all tests in your current directory and subdirectories and run them. - To run a specific set of tests, use `cabal-tests --with-cabal=CABALBIN PATH ...`. - (e.g. `cabal run cabal-testsuite:cabal-tests -- --with-cabal=cabal cabal-testsuite/PackageTests/TestOptions/setup.test.hs`) - You can control parallelism using the `-j` flag. There are a few useful flags: +* To run a specific set of tests, pass the path to a `.test.hs` file to run or + use the `-p`/`--pattern` flag to filter tests. + + See the ["Selecting tests"](#selecting-tests) section below for more details. + +* `-j INT` controls the number of threads used for running tests. + * `--with-cabal PATH` can be used to specify the path of a `cabal-install` executable. IF YOU DO NOT SPECIFY THIS FLAG, CABAL INSTALL TESTS WILL NOT RUN. @@ -28,6 +31,28 @@ There are a few useful flags: * `--keep-tmp-files` can be used to keep the temporary directories that tests are run in. +## Selecting tests + +To run a specific set of tests, use `cabal-tests --with-cabal=CABALBIN PATH ...`, e.g.: + +``` +cabal run cabal-testsuite:cabal-tests -- \ + --with-cabal=cabal \ + cabal-testsuite/PackageTests/TestOptions/setup.test.hs +``` + +Alternatively, use `-p`/`--pattern` to select tests dynamically: + +``` +cabal run cabal-testsuite:cabal-tests -- \ + --with-cabal=cabal \ + --pattern "/TestOptions/" +``` + +See [the documentation for Tasty pattern +syntax](https://hackage.haskell.org/package/tasty#patterns) for more +information. + ## Which Cabal library version do cabal-install tests use? By default the `cabal-install` tests will use the `Cabal` library which comes with @@ -74,8 +99,7 @@ components have broken doctests our CI currently checks that `Cabal-syntax` and `Cabal` doctests pass via `make doctest-install && make doctest` (you can use this `make`-based workflow too). -How to write ------------- +# How to write If you learn better by example, just look at the tests that live in `cabal-testsuite/PackageTests`; if you `git log -p`, you can @@ -155,8 +179,7 @@ allow multiple tests to be defined in one file but run in parallel; at the moment, these just indicate long running tests that should be run early (to avoid straggling). -Frequently asked questions --------------------------- +# Frequently asked questions For all of these answers, to see examples of the functions in question, grep the test suite. @@ -223,8 +246,7 @@ long before editing a file, in order for file system timestamp resolution to pick it up. Use `withDelay` and `delay` prior to making a modification. -Hermetic tests --------------- +# Hermetic tests Tests are run in a fresh temporary system directory. This attempts to isolate the tests from anything specific to do with your directory structure. In particular @@ -235,8 +257,7 @@ tests from anything specific to do with your directory structure. In particular * You must `git add` all files which are relevant to the test, otherwise they will not be copied. -Design notes ------------- +# Design notes This is the second rewrite of the integration testing framework. The primary goal was to use Haskell as the test language (letting us take @@ -296,8 +317,7 @@ figure out how to get out the threading setting, and then spawn that many GHCi servers to service the running threads. Improvements welcome. -Expect tests ------------- +# Expect tests An expect test (aka _golden test_) is a test where we read out the output of the test @@ -366,8 +386,7 @@ Some other notes: on the output for the string you're looking for. Try to be deterministic, but sometimes it's not (easily) possible. -Non-goals ---------- +# Non-goals Here are some things we do not currently plan on supporting: diff --git a/cabal-testsuite/cabal-testsuite.cabal b/cabal-testsuite/cabal-testsuite.cabal index 479b372b8ca..061f36f129c 100644 --- a/cabal-testsuite/cabal-testsuite.cabal +++ b/cabal-testsuite/cabal-testsuite.cabal @@ -26,9 +26,9 @@ common shared default-language: Haskell2010 build-depends: - , base >= 4.11 && < 4.21 + , base >= 4.11 && < 4.22 -- this needs to match the in-tree lib:Cabal version - , Cabal ^>= 3.13.0.0 + , Cabal ^>= 3.14.0.0 ghc-options: -Wall @@ -104,6 +104,8 @@ executable cabal-tests -- dependencies specific to exe:cabal-tests , clock ^>= 0.7.2 || ^>=0.8 , directory + , tasty + , containers build-tool-depends: cabal-testsuite:setup default-extensions: TypeOperators diff --git a/cabal-testsuite/main/cabal-tests.hs b/cabal-testsuite/main/cabal-tests.hs index 4ffdadd4352..8f75bbda487 100644 --- a/cabal-testsuite/main/cabal-tests.hs +++ b/cabal-testsuite/main/cabal-tests.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE NondecreasingIndentation #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE ScopedTypeVariables #-} @@ -23,7 +22,19 @@ import Control.Exception import Control.Monad import GHC.Conc (numCapabilities) import Data.List +import Data.Proxy (Proxy(Proxy)) +import qualified Data.Sequence as Seq (fromList) import Text.Printf +import qualified Test.Tasty.Options as Tasty + ( OptionSet + , OptionDescription (Option) + , lookupOption + ) +import qualified Test.Tasty.Runners as Tasty + ( optionParser + , TestPattern + , testPatternMatches + ) import qualified System.Clock as Clock import System.IO import System.FilePath @@ -72,7 +83,8 @@ data MainArgs = MainArgs { mainArgQuiet :: Bool, mainArgDistDir :: Maybe FilePath, mainArgCabalSpec :: Maybe CabalLibSpec, - mainCommonArgs :: CommonArgs + mainCommonArgs :: CommonArgs, + mainTastyArgs :: Tasty.OptionSet } data CabalLibSpec = BootCabalLib | InTreeCabalLib FilePath FilePath | SpecificCabalLib String FilePath @@ -117,6 +129,17 @@ mainArgParser = MainArgs <> metavar "DIR")) <*> optional cabalLibSpecParser <*> commonArgParser + <*> tastyArgParser + +tastyArgParser :: Parser Tasty.OptionSet +tastyArgParser = + let (warnings, parser) = + Tasty.optionParser + [ Tasty.Option (Proxy @Tasty.TestPattern) + ] + in if null warnings + then parser + else error $ unlines ("Failed to create parser for Tasty CLI options:" : warnings) -- Unpack and build a specific released version of Cabal and Cabal-syntax libraries buildCabalLibsProject :: String -> Verbosity -> Maybe FilePath -> FilePath -> IO [FilePath] @@ -161,12 +184,10 @@ buildCabalLibsSpecific ver verb mbGhc builddir_rel = do csgot <- doesDirectoryExist (dir "Cabal-syntax-" ++ ver) unless csgot $ runProgramInvocation verb ((programInvocation cabal ["get", "Cabal-syntax-" ++ ver]) { progInvokeCwd = Just dir }) - let hooksVerFromVer _ = "0.1" - hooksVer = hooksVerFromVer ver - chgot <- doesDirectoryExist (dir "Cabal-hooks-" ++ hooksVer) + chgot <- doesDirectoryExist (dir "Cabal-hooks-" ++ ver) unless chgot $ - runProgramInvocation verb ((programInvocation cabal ["get", "Cabal-hooks-" ++ hooksVer]) { progInvokeCwd = Just dir }) - buildCabalLibsProject ("packages: Cabal-" ++ ver ++ " Cabal-syntax-" ++ ver ++ " Cabal-hooks-" ++ hooksVer) verb mbGhc dir + runProgramInvocation verb ((programInvocation cabal ["get", "Cabal-hooks-" ++ ver]) { progInvokeCwd = Just dir }) + buildCabalLibsProject ("packages: Cabal-" ++ ver ++ " Cabal-syntax-" ++ ver ++ " Cabal-hooks-" ++ ver) verb mbGhc dir buildCabalLibsIntree :: String -> Verbosity -> Maybe FilePath -> FilePath -> IO [FilePath] @@ -184,6 +205,7 @@ main = do -- Parse arguments. N.B. 'helper' adds the option `--help`. args <- execParser $ info (mainArgParser <**> helper) mempty let verbosity = if mainArgVerbose args then verbose else normal + testPattern = Tasty.lookupOption @Tasty.TestPattern (mainTastyArgs args) pkg_dbs <- -- Not path to cabal-install so we're not going to run cabal-install tests so we @@ -264,7 +286,7 @@ main = do -- NB: getDirectoryContentsRecursive is lazy IO, but it -- doesn't handle directories disappearing gracefully. Fix -- this! - (single_tests, multi_tests) <- evaluate (partitionTests test_scripts) + (single_tests, multi_tests) <- evaluate (partitionTests testPattern test_scripts) let all_tests = multi_tests ++ single_tests margin = maximum (map length all_tests) + 2 hPutStrLn stderr $ "tests to run: " ++ show (length all_tests) @@ -381,10 +403,19 @@ main = do findTests :: IO [FilePath] findTests = getDirectoryContentsRecursive "." -partitionTests :: [FilePath] -> ([FilePath], [FilePath]) -partitionTests = go [] [] +-- | Partition a list of paths into a tuple of test paths and multi-test paths. +-- +-- Non-test paths and test paths that don't match the given `Tasty.TestPattern` are dropped. +partitionTests :: Tasty.TestPattern -> [FilePath] -> ([FilePath], [FilePath]) +partitionTests testPattern paths = + go [] [] paths where - go ts ms [] = (ts, ms) + -- Filter a list, keeping only paths that match the @pattern@. + keepPatternMatches = filter (Tasty.testPatternMatches testPattern . toTastyPath) + + toTastyPath path = Seq.fromList $ splitDirectories path + + go ts ms [] = (keepPatternMatches ts, keepPatternMatches ms) go ts ms (f:fs) = -- NB: Keep this synchronized with isTestFile case takeExtensions f of diff --git a/cabal-testsuite/src/Test/Cabal/Monad.hs b/cabal-testsuite/src/Test/Cabal/Monad.hs index 38534402d26..5059daf13c8 100644 --- a/cabal-testsuite/src/Test/Cabal/Monad.hs +++ b/cabal-testsuite/src/Test/Cabal/Monad.hs @@ -1,4 +1,3 @@ -{-# LANGUAGE CPP #-} {-# LANGUAGE ScopedTypeVariables #-} -- | The test monad @@ -35,6 +34,7 @@ module Test.Cabal.Monad ( testPrefixDir, testLibInstallDir, testDistDir, + testSystemTmpDir, testPackageDbDir, testRepoDir, testKeysDir, @@ -88,9 +88,6 @@ import Distribution.Verbosity import Distribution.Version import Control.Concurrent.Async -#if !MIN_VERSION_base(4,11,0) -import Data.Monoid ((<>)) -#endif import Data.Monoid (mempty) import qualified Control.Exception as E import Control.Monad @@ -410,6 +407,10 @@ runTestM mode m = -- effect on Windows. , ("CABAL_DIR", Just (testCabalDir env)) , ("CABAL_CONFIG", Just (testUserCabalConfigFile env)) + -- Set `TMPDIR` so that temporary files aren't created in the global `TMPDIR`. + , ("TMPDIR", Just (testSystemTmpDir env)) + -- Windows uses `TMP` for the `TMPDIR`. + , ("TMP", Just (testSystemTmpDir env)) ], testShouldFail = False, testRelativeCurrentDir = ".", @@ -548,6 +549,7 @@ initWorkDir :: TestM () initWorkDir = do env <- getTestEnv liftIO $ createDirectoryIfMissing True (testWorkDir env) + liftIO $ createDirectoryIfMissing True (testSystemTmpDir env) @@ -824,6 +826,11 @@ testName env = testSubName env <.> testMode env testWorkDir :: TestEnv -> FilePath testWorkDir env = testTmpDir env (testName env <.> "dist") +-- The folder which TMPDIR is set to. +-- This is different to testTmpDir, which is the folder which is the test is run from. +testSystemTmpDir :: TestEnv -> FilePath +testSystemTmpDir env = testWorkDir env "tmp" + -- | The absolute prefix where installs go. testPrefixDir :: TestEnv -> FilePath testPrefixDir env = testWorkDir env "usr" diff --git a/cabal-testsuite/src/Test/Cabal/NeedleHaystack.hs b/cabal-testsuite/src/Test/Cabal/NeedleHaystack.hs new file mode 100644 index 00000000000..0e8dfae9038 --- /dev/null +++ b/cabal-testsuite/src/Test/Cabal/NeedleHaystack.hs @@ -0,0 +1,276 @@ +{-# LANGUAGE MultiWayIf #-} +{-# LANGUAGE NoImplicitPrelude #-} +{-# LANGUAGE ViewPatterns #-} + +-- | Functions for searching for a needle in a haystack, with transformations +-- for the strings to search in and the search strings such as re-encoding line +-- breaks or delimiting lines. Both LF and CRLF line breaks are recognized. +module Test.Cabal.NeedleHaystack + ( TxContains(..) + , txContainsId + , NeedleHaystack(..) + , symNeedleHaystack + , multilineNeedleHaystack + , needleHaystack + , lineBreaksToSpaces + , normalizePathSeparators + , encodeLf + , delimitLines + ) where + +import Prelude hiding (unlines) +import qualified Prelude (unlines) +import Data.Maybe (isJust) +import Distribution.System +import Distribution.Utils.Generic (unsnoc) +import Data.List (isPrefixOf, tails) +import qualified System.FilePath.Posix as Posix +import qualified System.FilePath.Windows as Windows +import Network.URI (parseURI) + +{- +Note [Multiline Needles] +~~~~~~~~~~~~~~~~~~~~~~~~ + +How we search for multiline strings in output that varies by platform. + +Reading Expected Multiline Strings Verbatim +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +With @ghc-9.12.1@ adding @-XMultilineStrings@, writing multiline string +expectations for @cabal-testsuite/PackageTests/**/*.test.hs@ test scripts might +be have been easier but for a catch. We run these tests with older @GHC@ +versions so would need to use @-XCPP@ for those versions and the C preprocessor +does not play nicely with string gaps. While it is possible to encode a +multiline string as a single line with embedded LF characters or by breaking the +line up arbitrarily and using @++@ concatenation or by calling unlines on a list +of lines, string gaps are the multiline strings of Haskell prior to +@-XMultilineStrings@. + +To avoid these problems and for the convenience of pasting the expected value +verbatim into a file, @readFileVerbatim@ can read the expected multiline output +for tests from a text file. This has the same implementation as @readFile@ from +the @strict-io@ package to avoid problems at cleanup. + +Warning: Windows file locking hack: hit the retry limit 3 while trying to remove +C:\Users\\AppData\Local\Temp\cabal-testsuite-8376 +cabal.test.hs: +C:\Users\\AppData\Local\Temp\cabal-testsuite-8376\errors.expect.txt: removePathForcibly:DeleteFile +"\\\\?\\C:\\Users\\\\AppData\\Local\\Temp\\cabal-testsuite-8376\\errors.expect.txt": +permission denied (The process cannot access the file because it is being used by another process.) + +The other process accessing the file is @C:\WINDOWS\System32\svchost.exe@ +running a @QueryDirectory@ event and this problem only occurs when the test +fails. + +Hidden Actual Value Modification +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The @assertOutputContains@ function was modifying the actual value (the test +output) with @concatOutput@ before checking if it contained the expected value. +This function, now renamed as @lineBreaksToSpaces@, would remove CR values and +convert LF values to spaces. + +With this setup, false positives were possible. An expected value using string +gaps and spaces would match a @concatOutput@ modified actual value of +"foo_bar_baz", where '_' was any of space, LF or CRLF in the unmodified actual +value. The latter two are false positive matches. + +> let expect = "foo \ +> \bar \ +> \baz" + +False negatives were also possible. An expected value set up using string gaps +with LF characters or with @-XMultilineStrings@ wouldn't match an actual value +of "foo_bar_baz", where '_' was either LF or CRLF because these characters had +been replaced by spaces in the actual value, modified before the comparison. + +> let expect = "foo\n\ +> \bar\n\ +> \baz" + +> {-# LANGUAGE MultilineStrings #-} +> +> let expect = """ +> foo +> bar +> baz +> """ + +We had these problems: + +1. The actual value was changed before comparison and this change was not visible. +2. The expected value was not changed in the same way as the actual value. This + made it possible for equal values to become unequal (false negatives) and for + unequal values to become equal (false positives). + +Explicit Changes and Visible Line Delimiters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To fix these problems, an added @assertOn@ function takes a @NeedleHaystack@ +configuration for how the search is made, what to expect (to find the expected +value or not) and how to display the expected and actual values. + +A pilcrow ¶ is often used to visibly display line endings but our terminal +output is restricted to ASCII so lines are delimited between @^@ and @$@ +markers. The needle (the expected output fragment) is shown annotated this way +and the haystack (the actual output) can optionally be shown this way too. + +This is still a lenient match, allowing LF to match CRLF, but @encodeLf@ doesn't +replace LF with spaces like @concatOutput@ (@lineBreaksToSpaces@) did: + +If you choose to display the actual value by setting +@NeedleHaystack{displayHaystack = True}@ then its lines will be delimited. + +With @assertOn@, supplying string transformation to both the needle and haystack +before comparison and before display can help find out why an expected value is +or isn't found in the test output. +-} + +-- | Transformations for the search strings and the text to search in. +data TxContains = + TxContains + { + -- | Reverse conversion for display, applied to the forward converted value. + txBwd :: (String -> String), + -- | Forward conversion for comparison. + txFwd :: (String -> String) + } + +-- | Identity transformation for the search strings and the text to search in, +-- leaves them unchanged. +txContainsId :: TxContains +txContainsId = TxContains id id + +-- | Conversions of the needle and haystack strings, the seach string and the +-- text to search in. +data NeedleHaystack = + NeedleHaystack + { + expectNeedleInHaystack :: Bool, + displayHaystack :: Bool, + txNeedle :: TxContains, + txHaystack :: TxContains + } + +-- | Symmetric needle and haystack functions, the same conversion for each going +-- forward and the same coversion for each going backward. +symNeedleHaystack :: (String -> String) -> (String -> String) -> NeedleHaystack +symNeedleHaystack bwd fwd = let tx = TxContains bwd fwd in NeedleHaystack True False tx tx + +-- | Multiline needle and haystack functions with symmetric conversions. Going +-- forward converts line breaks to @"\\n"@. Going backward adds visible +-- delimiters to lines. +multilineNeedleHaystack :: NeedleHaystack +multilineNeedleHaystack = symNeedleHaystack delimitLines encodeLf + +-- | Minimal set up for finding the needle in the haystack. Doesn't change the +-- strings and doesn't display the haystack in any assertion failure message. +needleHaystack :: NeedleHaystack +needleHaystack = NeedleHaystack True False txContainsId txContainsId + +-- | Replace line breaks with spaces, correctly handling @"\\r\\n"@. +-- +-- >>> lineBreaksToSpaces "foo\nbar\r\nbaz" +-- "foo bar baz" +-- +-- >>> lineBreaksToSpaces "foo\nbar\r\nbaz\n" +-- "foo bar baz" +-- +-- >>> lineBreaksToSpaces "\nfoo\nbar\r\nbaz\n" +-- " foo bar baz" +lineBreaksToSpaces :: String -> String +lineBreaksToSpaces = unwords . lines . filter ((/=) '\r') + +-- | Replaces path separators found with those of the current OS, URL-like paths +-- excluded. +-- +-- > buildOS == Linux; normalizePathSeparators "foo\bar\baz" => "foo/bar/baz" +-- > buildOS == Windows; normalizePathSeparators "foo/bar/baz" => "foo\bar\baz" +normalizePathSeparators :: String -> String +normalizePathSeparators = + unlines . map normalizePathSeparator . lines + where + normalizePathSeparator p = + if | any (isJust . parseURI) (tails p) -> p + | buildOS == Windows -> + [if Posix.isPathSeparator c then Windows.pathSeparator else c| c <- p] + | otherwise -> + [if Windows.isPathSeparator c then Posix.pathSeparator else c| c <- p] + +-- | @unlines@ from base will add a trailing newline if there isn't one already +-- but this one doesn't +-- +-- >>> lines "abc" +-- ["abc"] +-- +-- >>> Data.List.unlines $ lines "abc" +-- "abc\n" +-- +-- >>> unlines $ lines "abc" +-- "abc" +unlines :: [String] -> String +unlines = maybe "" fst . unsnoc . Prelude.unlines + +-- | Replace line CRLF line breaks with LF line breaks. +-- +-- >>> encodeLf "foo\nbar\r\nbaz" +-- "foo\nbar\nbaz" +-- +-- >>> encodeLf "foo\nbar\r\nbaz\n" +-- "foo\nbar\nbaz\n" +-- +-- >>> encodeLf "\nfoo\nbar\r\nbaz\n" +-- "\nfoo\nbar\nbaz\n" +-- +-- >>> encodeLf "\n\n\n" +-- "\n\n\n" +encodeLf :: String -> String +encodeLf = filter (/= '\r') + +-- | Mark lines with visible delimiters, @^@ at the start and @$@ at the end. +-- +-- >>> delimitLines "" +-- "^$" +-- +-- >>> delimitLines "\n" +-- "^$\n" +-- +-- >>> delimitLines "\n\n" +-- "^$\n^$\n" +-- +-- >>> delimitLines "\n\n\n" +-- "^$\n^$\n^$\n" +-- +-- >>> delimitLines $ encodeLf "foo\nbar\r\nbaz" +-- "^foo$\n^bar$\n^baz$" +-- +-- >>> delimitLines $ encodeLf "foo\nbar\r\nbaz\n" +-- "^foo$\n^bar$\n^baz$\n" +-- +-- >>> delimitLines $ encodeLf "\nfoo\nbar\r\nbaz\n" +-- "^$\n^foo$\n^bar$\n^baz$\n" +delimitLines:: String -> String +delimitLines "" = "^$" +delimitLines "\n" = "^$\n" +delimitLines ('\n' : xs) = "^$\n" ++ delimitLines xs +delimitLines output = fixupStart . fixupEnd $ + foldr + (\c acc -> c : + if | "\n" == acc -> "$\n" + |("\n" `isPrefixOf` acc) -> "$\n^" ++ drop 1 acc + | otherwise -> acc + ) + "" + output + where + fixupStart :: String -> String + fixupStart s@[] = s + fixupStart s@('^' : _) = s + fixupStart s = '^' : s + + fixupEnd :: String -> String + fixupEnd s@[] = s + fixupEnd s@(reverse -> '$' : _) = s + fixupEnd s@(reverse -> '\n' : '$' : _) = s + fixupEnd s = s ++ "$" diff --git a/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs b/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs index 33e1522526b..f361ae68737 100644 --- a/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs +++ b/cabal-testsuite/src/Test/Cabal/OutputNormalizer.hs @@ -46,7 +46,7 @@ normalizeOutput nenv = . resub (posixRegexEscape "tmp/src-" ++ "[0-9]+") "" . resub (posixRegexEscape (normalizerTmpDir nenv) ++ sameDir) "/" . resub (posixRegexEscape (normalizerCanonicalTmpDir nenv) ++ sameDir) "/" - -- Munge away C: prefix on filenames (Windows). We convert C:\\ to \\. + -- Munge away C:\ prefix on filenames (Windows). We convert C:\ to \. . (if buildOS == Windows then resub "([A-Z]):\\\\" "\\\\" else id) . appEndo (F.fold (map (Endo . packageIdRegex) (normalizerKnownPackages nenv))) -- Look for 0.1/installed-0d6uzW7Ubh1Fb4TB5oeQ3G diff --git a/cabal-testsuite/src/Test/Cabal/Prelude.hs b/cabal-testsuite/src/Test/Cabal/Prelude.hs index 7a8fbf651e8..e6cdf2c74a5 100644 --- a/cabal-testsuite/src/Test/Cabal/Prelude.hs +++ b/cabal-testsuite/src/Test/Cabal/Prelude.hs @@ -54,6 +54,7 @@ import Control.Concurrent.Async (withAsync) import qualified Data.Aeson as JSON import qualified Data.ByteString.Lazy as BSL import Control.Monad (unless, when, void, forM_, liftM2, liftM4) +import Control.Monad.Catch ( bracket_ ) import Control.Monad.Trans.Reader (withReaderT, runReaderT) import Control.Monad.IO.Class (MonadIO (..)) import qualified Crypto.Hash.SHA256 as SHA256 @@ -70,10 +71,11 @@ import Control.Retry (exponentialBackoff, limitRetriesByCumulativeDelay) import Network.Wait (waitTcpVerbose) import System.Environment import System.Process +import System.IO +import qualified System.FilePath.Posix as Posix +import qualified System.FilePath.Windows as Windows #ifndef mingw32_HOST_OS -import Control.Monad.Catch ( bracket_ ) -import System.Posix.Files ( createSymbolicLink ) import System.Posix.Resource #endif @@ -613,11 +615,12 @@ withRepo repo_dir m = do withReaderT (\env' -> env' { testHaveRepo = True }) m -- TODO: Arguably should undo everything when we're done... where - repoUri env ="file+noindex://" ++ (if isWindows - then map (\x -> case x of - '\\' -> '/' - _ -> x) - else id) (testRepoDir env) + repoUri env ="file+noindex:" ++ (if isWindows + then map (\x -> if x == Windows.pathSeparator + then Posix.pathSeparator + else x + ) + else ("//" ++)) (testRepoDir env) -- | Given a directory (relative to the 'testCurrentDir') containing -- a series of directories representing packages, generate an @@ -1123,19 +1126,20 @@ withDelay m = do Just _ -> m -- | Create a symlink for the duration of the provided action. If the symlink --- already exists, it is deleted. Does not work on Windows. +-- already exists, it is deleted. withSymlink :: FilePath -> FilePath -> TestM a -> TestM a -#ifdef mingw32_HOST_OS +#if defined(mingw32_HOST_OS) && !MIN_VERSION_directory(1,3,1) withSymlink _oldpath _newpath _act = - error "PackageTests.PackageTester.withSymlink: does not work on Windows!" + error "Test.Cabal.Prelude.withSymlink: does not work on Windows with directory <1.3.1!" #else withSymlink oldpath newpath0 act = do + liftIO $ hPutStrLn stderr $ "Symlinking " <> oldpath <> " <== " <> newpath0 env <- getTestEnv let newpath = testCurrentDir env newpath0 symlinkExists <- liftIO $ doesFileExist newpath when symlinkExists $ liftIO $ removeFile newpath - bracket_ (liftIO $ createSymbolicLink oldpath newpath) - (liftIO $ removeFile newpath) act + bracket_ (liftIO $ createFileLink oldpath newpath) + (liftIO $ pure ()) act #endif writeSourceFile :: FilePath -> String -> TestM () diff --git a/cabal-testsuite/src/Test/Cabal/TestCode.hs b/cabal-testsuite/src/Test/Cabal/TestCode.hs index fc24b216285..1809f5e1239 100644 --- a/cabal-testsuite/src/Test/Cabal/TestCode.hs +++ b/cabal-testsuite/src/Test/Cabal/TestCode.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} @@ -17,7 +15,6 @@ module Test.Cabal.TestCode ( ) where import Control.Exception (Exception (..)) -import Data.Typeable (Typeable) ------------------------------------------------------------------------------- -- TestCode @@ -31,7 +28,7 @@ data TestCode | TestCodeFail | TestCodeFlakyFailed IssueID | TestCodeFlakyPassed IssueID - deriving (Eq, Show, Read, Typeable) + deriving (Eq, Show, Read) instance Exception TestCode where @@ -53,7 +50,7 @@ isTestCodeSkip _ = False type TestPassed = Bool newtype IssueID = IssueID Int - deriving newtype (Eq, Typeable, Num, Show, Read) + deriving newtype (Eq, Num, Show, Read) data FlakyStatus = NotFlaky diff --git a/cabal.bootstrap.project b/cabal.bootstrap.project index 00e676c24ad..bd75ec5c289 100644 --- a/cabal.bootstrap.project +++ b/cabal.bootstrap.project @@ -9,9 +9,4 @@ packages: tests: False benchmarks: False --- This project file is used to generate bootstrap plans, --- as such we cannot enable "-march=native". -constraints: - hashable -arch-native - -index-state: hackage.haskell.org 2024-07-15T21:05:18Z +index-state: hackage.haskell.org 2024-11-20T00:00:00Z diff --git a/cabal.release.project b/cabal.release.project index ee061449efc..c7258f78093 100644 --- a/cabal.release.project +++ b/cabal.release.project @@ -2,7 +2,4 @@ import: project-cabal/pkgs/cabal.config import: project-cabal/pkgs/install.config import: project-cabal/pkgs/tests.config -constraints: - hashable -arch-native - -index-state: hackage.haskell.org 2024-07-15T21:05:18Z +index-state: hackage.haskell.org 2024-11-20T00:00:00Z diff --git a/cabal.validate.project b/cabal.validate.project index 2e3084cccf0..52c78411107 100644 --- a/cabal.validate.project +++ b/cabal.validate.project @@ -7,8 +7,3 @@ tests: True write-ghc-environment-files: never program-options ghc-options: -Werror - --- This project file is used to distribute the cabal-head binary, --- as such we cannot enable "-march=native". -constraints: - hashable -arch-native diff --git a/changelog.d/configure-messages b/changelog.d/configure-messages deleted file mode 100644 index f0fab79e734..00000000000 --- a/changelog.d/configure-messages +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: clarify Cabal "configure" messages -packages: Cabal -prs: #9476 - -synopsis: { - - Cabal can issue a number of error messages referencing "Setup configure", - but it simply references "configure" which could mean any of three - things (Setup configure, the package's "configure" script, or "cabal - configure"). This has recently caught out even Cabal devs. Clarify these - messages. - -} diff --git a/changelog.d/issue-10046 b/changelog.d/issue-10046 deleted file mode 100644 index 668d077271e..00000000000 --- a/changelog.d/issue-10046 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Bug fix - Don't pass --coverage-for for non-dependency libs of testsuite -packages: cabal-install -issues: #10046 -prs: #10250 diff --git a/changelog.d/issue-10051 b/changelog.d/issue-10051 deleted file mode 100644 index b582fc2b619..00000000000 --- a/changelog.d/issue-10051 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Added `--all` and `--haddock-all` switches to `haddock-project` subcommand -packages: cabal-install -issues: #10051 -prs: #2272 diff --git a/changelog.d/issue-10166 b/changelog.d/issue-10166 deleted file mode 100644 index 02d313adca9..00000000000 --- a/changelog.d/issue-10166 +++ /dev/null @@ -1,20 +0,0 @@ -synopsis: Include package version when passing `--promised-dependency` flag -packages: Cabal Cabal-syntax -prs: #10248 -issues: #10166 - -description: { - -The --promised dependency flag now expects an argument in format - -``` -NAME-VER[:COMPONENT_NAME]=CID` -``` - -rather than - -``` -NAME[:COMPONENT_NAME]=CID -``` - -} diff --git a/changelog.d/issue-4816 b/changelog.d/issue-4816 deleted file mode 100644 index e0ac7700b7e..00000000000 --- a/changelog.d/issue-4816 +++ /dev/null @@ -1,23 +0,0 @@ -synopsis: Add support for building profiled dynamic way -packages: Cabal Cabal-syntax cabal-install -prs: #9900 -issues: #4816 - -description: { -Add support for profiled dynamic way - -New options for cabal.project and ./Setup interface: - -* `profiling-shared`: Enable building profiling dynamic way -* Passing `--enable-profiling` and `--enable-executable-dynamic` builds - profiled dynamic executables. - -Support for using `profiling-shared` is guarded behind a constraint -which ensures you are using `Cabal >= 3.13`. - -In the cabal file: - -* `ghc-prof-shared-options`, for passing options when building in - profiling dynamic way - -} diff --git a/changelog.d/issue-4816-2 b/changelog.d/issue-4816-2 deleted file mode 100644 index 96307c3f83e..00000000000 --- a/changelog.d/issue-4816-2 +++ /dev/null @@ -1,26 +0,0 @@ -synopsis: Fix interaction of `--*-shared` and `--*-executable-dynamic` options. -packages: cabal-install -prs: #9900 -issues: #10050 - -description: { - -If you explicitly request `--disable-shared` it should disable the building of -a shared library and override any automatic ways this option is turned on. - -Passing `--enable-executable-dynamic` turns on `--enable-shared` if the option is -not specified explicitly. - -Before this patch, writing `--disable-shared` on its own would not disable the building of shared libraries. Writing `--disable-shared` and `--disable-executable-dynamic` would disable shared library -creation (despite `--disable-executable-dynamic` being the default). - -Now: - -* If you specify `--enable-shared` then shared objects are built. -* If you specify `--disabled-shared` then shared objects are not built. -* If you don't explicitly specify whether you want to build shared libraries then - * `--enable-executable-dynamic` will automatically turn on building shared libraries - * `--enable-executable-dynamic --enable-profiling` will automatically turn on building - shared profiling libraries (if supported by your compiler). - -} diff --git a/changelog.d/issue-8817 b/changelog.d/issue-8817 deleted file mode 100644 index 0743671fa0d..00000000000 --- a/changelog.d/issue-8817 +++ /dev/null @@ -1,17 +0,0 @@ -synopsis: Neutral field to add files to sdist -packages: Cabal Cabal-syntax -prs: #10107 -issues: #8817 -significance: significant - -description: { - -Adds the `extra-files` field to the cabal file specification. This is like -the other `extra-*` fields in that it is copied with the `sdist` command, -except there are no other semantics. Compare to: - -* `extra-source-files`: Tracked by `cabal build`. - -* `extra-doc-files`: Copied by Haddock to the html directory. - -} diff --git a/changelog.d/issue-9702 b/changelog.d/issue-9702 deleted file mode 100644 index 7df998b8d8d..00000000000 --- a/changelog.d/issue-9702 +++ /dev/null @@ -1,39 +0,0 @@ -synopsis: Working directory support for Cabal -packages: Cabal-syntax Cabal cabal-install -prs: #9718 -issues: #9702 - -description: { - -The Cabal library is now able to handle a passed-in working directory, instead -of always relying on the current working directory of the parent process. - -In order to achieve this, the `SymbolicPath` abstraction was fleshed out, and -all fields of `PackageDescription` that, if relative, should be interpreted -with respect to e.g. the package root, use `SymbolicPath` instead of `FilePath`. - -This means that many library functions in `Cabal` take an extra argument of type -`Maybe (SymbolicPath CWD (Dir "Package))`, which is an optional (relative or -absolute) path to the package root (if relative, relative to the current working -directory). In addition, many functions that used to manipulate `FilePath`s now -manipulate `SymbolicPath`s, require explicit conversion using e.g. `getSymbolicPath`. - -To illustrate with file searching, the `Cabal` library defines: - -```haskell -findFileCwd - :: forall dir1 dir2 file - . Verbosity - -> Maybe (SymbolicPath CWD (Dir dir1)) - -- ^ working directory - -> [SymbolicPath dir1 (Dir dir2)] - -- ^ search directories - -> RelativePath dir2 File - -- ^ filename - -> IO (SymbolicPath dir1 File) -``` - -See Note [Symbolic paths] in `Distribution.Utils.Path` for further information -on the design of this API. -} - diff --git a/changelog.d/pr-10089 b/changelog.d/pr-10089 deleted file mode 100644 index ed322194e21..00000000000 --- a/changelog.d/pr-10089 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: `curl` transport now supports Basic authentication -packages: cabal-install -prs: #10089 - -description: { - -- The `curl` HTTP transport previously only supported the HTTP Digest - authentication scheme. Basic authentication is now supported - when using HTTPS; Curl will use the scheme offered by the server. - The `wget` transport already supports HTTPS. - -} diff --git a/changelog.d/pr-10103 b/changelog.d/pr-10103 deleted file mode 100644 index 3e68cf38d3c..00000000000 --- a/changelog.d/pr-10103 +++ /dev/null @@ -1,14 +0,0 @@ -synopsis: Enhance error detection for cabal root project files, including broken symlinks - -packages: cabal-install - -prs: #10103 - -issues: #9937 - -description: { - -- Added proper detection and reporting for issues with cabal root project files. Previously, these files were silently ignored if they were broken symlinks. Now, `cabal` will exit -with an error in such case. - -} diff --git a/changelog.d/pr-10115 b/changelog.d/pr-10115 deleted file mode 100644 index ce288c105c1..00000000000 --- a/changelog.d/pr-10115 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Let cabal init remember chosen language within current session -packages: cabal-install -prs: #10115 -issues: #10096 - -description: { - -When cabal init asks for a language, the last choice will be used as the new default for the current session. - -} \ No newline at end of file diff --git a/changelog.d/pr-10122 b/changelog.d/pr-10122 deleted file mode 100644 index 7e9fbe10d47..00000000000 --- a/changelog.d/pr-10122 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Clarify error message when pkg-config is not found -packages: cabal-install-solver -prs: #10122 - -description: { - -- The error message when pkg-config is not found or querying it fails will no -longer incorrectly claim that the package is missing in the database. - -} diff --git a/changelog.d/pr-10128 b/changelog.d/pr-10128 deleted file mode 100644 index 8c7cc45d204..00000000000 --- a/changelog.d/pr-10128 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Add flag ignore-build-tools -packages: Cabal -prs: #10128 - -description: { - -- Adds flag --ignore-build-tools which allows a user to ignore the tool - dependencies declared in build-tool-depends. For general use, this flag - should never be needed, but it may be useful for packagers. - -} - diff --git a/changelog.d/pr-10217 b/changelog.d/pr-10217 deleted file mode 100644 index 8e520bab27e..00000000000 --- a/changelog.d/pr-10217 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Do not try to build dynamic executables on Windows -packages: Cabal -prs: #10217 - -description: { - -- Cabal will now exit with a descriptive error message instead of attempting to - build a dynamic executable on Windows. - -} diff --git a/changelog.d/pr-10240 b/changelog.d/pr-10240 deleted file mode 100644 index 9bd05100ab7..00000000000 --- a/changelog.d/pr-10240 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Filter out dinitial-unique and dunique-increment from package hash -packages: cabal-install -prs: #10122 - -description: { - -`-dinitial-unique` and `-dunique-increment` are now filtered out when computing the -store hash of a package. - -These options shouldn't affect the output of the package and hence -shouldn't affect the store hash of a package. - -} diff --git a/changelog.d/pr-10245 b/changelog.d/pr-10245 deleted file mode 100644 index 2ed3690720a..00000000000 --- a/changelog.d/pr-10245 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Add MultilineStrings extension -packages: Cabal-syntax -prs: #10245 -description: { - -- adds support for the `MultilineStrings` language extension (GHC proposal #637) - -} diff --git a/changelog.d/pr-10261 b/changelog.d/pr-10261 deleted file mode 100644 index adcae60fd88..00000000000 --- a/changelog.d/pr-10261 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Warn about git:// protocol -packages: cabal-install -prs: #10261 - -description: { - -`cabal check` will warn about insecure git:// protocol in `source-repository`. - -See [Git Book](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#_the_cons_4) -for an explanation. - -} diff --git a/changelog.d/pr-8717 b/changelog.d/pr-8717 deleted file mode 100644 index b0ac7e09388..00000000000 --- a/changelog.d/pr-8717 +++ /dev/null @@ -1,25 +0,0 @@ -synopsis: Always pass `ghc-options` to GHC -packages: Cabal -prs: #8717 -issues: - -description: { - -Previously, options set in the package field `ghc-options` would not be passed -to GHC during the link phase for shared objects (where multiple `.o` or -`.dyn_o` files are merged into a single object file). This made it impossible -to use `ghc-options` to use a different linker by setting (for example) -`ghc-options: -optl-fuse-ld=mold -optlm-fuse-ld=mold`; the options would be -dropped in the link phase, falling back to the default linker. - -It was possible to work around this by duplicating the `ghc-options` to -`ghc-shared-options`, which _are_ passed in the shared link phase, but that had -the (undocumented and unfortunate) side-effect of disabling the GHC -`-dynamic-too` flag, effectively doubling compilation times when -`ghc-shared-options` are set. - -Now, `ghc-options` are combined with `ghc-shared-options` (to accurately -reflect the documentation on this feature) and the fact that -`ghc-shared-options` disables `-dynamic-too` is documented. - -} diff --git a/changelog.d/pr-9177 b/changelog.d/pr-9177 deleted file mode 100644 index 6b1eb227350..00000000000 --- a/changelog.d/pr-9177 +++ /dev/null @@ -1,31 +0,0 @@ -synopsis: Enable recompilation avoidance during Haddock generation -packages: cabal-install -prs: #9177 -issues: #9175 - -description: { - -* Haddock no longer writes compilation files by default, so we do not need to - pass tmp dirs for `-hidir`, `-stubdir`, and `-odir` via `--optghc`. Indeed, we - do not *want* to do so, since it results in recompilation for every invocation - of Haddock via Cabal. We now stop this from happening for Haddock versions - 2.28 and greater, since that is when Hi Haddock was introduced. - -* We no longer define the `__HADDOCK_VERSION__` macro when invoking GHC through - Haddock, since doing so essentially guarantees recompilation during - documentation generation. We audited all uses of `__HADDOCK_VERSION__` in - hackage, ensuring there was a reasonable path forward to migrate away from - using `__HADDOCK_VERSION__` for each, while generating the same documentation - as it did before. - If you are a user of `__HADDOCK_VERSION__`, please take a look at the - discussion in https://github.com/haskell/cabal/pull/9177 and reach out to us - if your use case is not covered. - -* Rename the `--haddock-lib` flag to `--haddock-resources-dir` (and - `haddock-lib:` cabal.project field to `haddock-resources-dir:`), and add this - flag to the users guide since it was missing an entry. - -* `documentation: true` or `--enable-documentation` now implies `-haddock` for - GHC. - -} diff --git a/changelog.d/pr-9551 b/changelog.d/pr-9551 deleted file mode 100644 index 5116234a653..00000000000 --- a/changelog.d/pr-9551 +++ /dev/null @@ -1,19 +0,0 @@ -synopsis: Introduce SetupHooks -packages: Cabal -prs: #9551 -description: { - Introduction of a new build type: Hooks. - This build type, intended as replacement to the Custom build type, integrates - better with the rest of the ecosystem (`cabal-install`, Haskell Language Server). - - The motivation and full design of this new build-type are specified in the - Haskell Foundation Tech Proposal - [Replacing the Cabal Custom build-type](https://github.com/haskellfoundation/tech-proposals/pull/60). - - Package authors willing to use this feature should declare `build-type: Hooks` - in their `.cabal` file, declare a custom-setup stanza with a dependency on the - `Cabal-hooks` package, and define a module `SetupHooks` that exports a value - `setupHooks :: SetupHooks`, using the API exported by `Distribution.Simple.SetupHooks` - from the `Cabal-hooks` package. Refer to the Haddock documentation of - `Distribution.Simple.SetupHooks` for example usage. -} diff --git a/changelog.d/pr-9740 b/changelog.d/pr-9740 deleted file mode 100644 index c5a3b9a173e..00000000000 --- a/changelog.d/pr-9740 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Add language extension NamedDefaults -packages: Cabal-syntax -prs: #9740 - -description: { - -- adds support for the `NamedDefaults` language extension (GHC proposal #409) - -} diff --git a/changelog.d/pr-9821 b/changelog.d/pr-9821 deleted file mode 100644 index bc3e9dcae50..00000000000 --- a/changelog.d/pr-9821 +++ /dev/null @@ -1,21 +0,0 @@ -synopsis: `haddock-project` support for subcomponents -packages: cabal-install -prs: #9821 -issues: -significance: significant - -description: { - -- `haddock-project` handles sublibraries, test suites and benchmarks. -- `haddock` receives `--package-name` flag whcih allows to set names of - components which are included in the main `index.html` file. -- added `--use-unicode` flag to `haddock` and `haddock-project` commands. -- The directory structure of `./dist-newstyle` has changed. `haddock` - subcommand will install `package:sublib` component in a directory - `package/sublib` under `l/sublib/doc/html/`. This is important for - `haddock-project` command and in the future might will be useful for hackage - support of sublibraries. See - https://github.com/haskell/cabal/pull/9821#discussion_r1548557115. - -} - diff --git a/changelog.d/pr-9969 b/changelog.d/pr-9969 deleted file mode 100644 index 17a60b88e99..00000000000 --- a/changelog.d/pr-9969 +++ /dev/null @@ -1,18 +0,0 @@ -synopsis: Configure build-type in terms of Hooks -packages: Cabal cabal-install -prs: #9969 - -description: { - -The `build-type: Configure` is now implemented in terms of `build-type: Hooks` -rather than in terms of `build-type: Custom`. This moves the `Configure` -build-type away from the `Custom` issues. Eventually, `build-type: Hooks` will -no longer imply packages are built in legacy-fallback mode. Now, when that -happens, `Configure` will also stop implying `legacy-fallback`. - -The observable aspect of this change is `runConfigureScript` now having a -different type, and `autoconfSetupHooks` being exposed `Distribution.Simple`. -The former is motivated by internal implementation details, while the latter -provides the `SetupHooks` value for the `Configure` build type, which can be -consumed by other `Hooks` clients (e.g. eventually HLS). -} diff --git a/doc/cabal-commands.rst b/doc/cabal-commands.rst index c1987afbfd8..4215bd29678 100644 --- a/doc/cabal-commands.rst +++ b/doc/cabal-commands.rst @@ -285,68 +285,6 @@ cabal preferences. It is very useful when you are e.g. first configuring Note how ``--augment`` syntax follows ``cabal user-config diff`` output. -cabal path -^^^^^^^^^^ - -``cabal path`` allows to query for paths used by ``cabal``. -For example, it allows to query for the directories of the cache, store, -installed binaries, and so on. - -:: - - $ whoami - alice - - $ cabal path - compiler-flavour: ghc - compiler-id: ghc-9.8.2 - compiler-path: /home/alice/.ghcup/bin/ghc - cache-home: /home/alice/.cabal - remote-repo-cache: /home/alice/.cabal/packages - logs-dir: /home/alice/.cabal/logs - store-dir: /home/alice/.cabal/store - config-file: /home/alice/.cabal/config - installdir: /home/alice/.cabal/bin - -Or using the json output: - -:: - - $ cabal path --output-format=json | jq - -.. code-block:: json - - { - "cabal-version": "3.13.0.0", - "compiler": { - "flavour": "ghc", - "id": "ghc-9.8.2", - "path": "/home/alice/.ghcup/bin/ghc" - }, - "cache-home": "/home/alice/.cabal", - "remote-repo-cache": "/home/alice/.cabal/packages", - "logs-dir": "/home/alice/.cabal/logs", - "store-dir": "/home/alice/.cabal/store", - "config-file": "/home/alice/.cabal/config", - "installdir": "/home/alice/.cabal/bin" - } - -If ``cabal path`` is passed a single option naming a path, then that -path will be printed *without* any label: - -:: - - $ cabal path --installdir - /home/alice/.cabal/bin - -While this interface is intended to be used for scripting, it is an experimental command. -Scripting example: - -:: - - $ ls $(cabal path --installdir) - ... - .. _command-group-database: Package database commands @@ -734,6 +672,68 @@ Examples: be used without arguments, in that case major version bumps are ignored for all packages. +cabal path +^^^^^^^^^^ + +``cabal path`` allows to query for paths used by ``cabal``. +For example, it allows to query for the directories of the cache, store, +installed binaries, and so on. + +:: + + $ whoami + alice + + $ cabal path + compiler-flavour: ghc + compiler-id: ghc-9.8.2 + compiler-path: /home/alice/.ghcup/bin/ghc + cache-home: /home/alice/.cabal + remote-repo-cache: /home/alice/.cabal/packages + logs-dir: /home/alice/.cabal/logs + store-dir: /home/alice/.cabal/store + config-file: /home/alice/.cabal/config + installdir: /home/alice/.cabal/bin + +Or using the json output: + +:: + + $ cabal path --output-format=json | jq + +.. code-block:: json + + { + "cabal-version": "3.13.0.0", + "compiler": { + "flavour": "ghc", + "id": "ghc-9.8.2", + "path": "/home/alice/.ghcup/bin/ghc" + }, + "cache-home": "/home/alice/.cabal", + "remote-repo-cache": "/home/alice/.cabal/packages", + "logs-dir": "/home/alice/.cabal/logs", + "store-dir": "/home/alice/.cabal/store", + "config-file": "/home/alice/.cabal/config", + "installdir": "/home/alice/.cabal/bin" + } + +If ``cabal path`` is passed a single option naming a path, then that +path will be printed *without* any label: + +:: + + $ cabal path --installdir + /home/alice/.cabal/bin + +While this interface is intended to be used for scripting, it is an experimental command. +Scripting example: + +:: + + $ ls $(cabal path --installdir) + ... + .. _command-group-build: Project building and installing @@ -1390,7 +1390,10 @@ A list of all warnings with their constructor: - ``unknown-arch``: unknown architecture in condition. - ``unknown-compiler``: unknown compiler in condition. - ``missing-bounds-important``: missing upper bounds for important dependencies (``base``, and for ``custom-setup`` ``Cabal`` too). -- ``missing-upper-bounds``: missing upper bound in dependency (excluding test-suites and benchmarks). +- ``missing-upper-bounds``: missing upper bound in dependency [#dep-excl]_. +- ``le-upper-bounds``: less than or equals (<=) constraint on upper bound in dependency [#dep-excl]_. +- ``tz-upper-bounds``: trailing zero (\*.0) upper bound in dependency [#dep-excl]_. +- ``gt-lower-bounds``: greater than (>) constraint on lower bound in dependency [#dep-excl]_. - ``suspicious-flag``: troublesome flag name (e.g. starting with a dash). - ``unused-flag``: unused user flags. - ``non-ascii``: non-ASCII characters in custom field. @@ -1416,6 +1419,36 @@ A list of all warnings with their constructor: - ``no-docs``: missing expected documentation files (changelog). - ``doc-place``: documentation files listed in ``extra-source-files`` instead of ``extra-doc-files``. +.. [#dep-excl] In dependencies excluding test-suites and benchmarks. + +.. note:: + + ``cabal check`` warns on subexpressions (individual version constraints) of + a version range that are of the form, ``> version``, ``<= version``, ``<= + version.0[...0]``. These are considered suspicious because they are likely + to be mistakes. Guidelines for individual version constraints within + version ranges and examples of mistakes when not following these are: + + "A lower bound should be inclusive." + + Asking for ``base > 4.11`` when you actually want ``base >= 4.12`` is an + example of making this mistake. Versions make a dense space, so there + are infinitely many versions that are ``> 4.11`` and ``< 4.12``. + + "An upper bound should be exclusive." + + Asking for ``base <= 4.19.1.0`` when the last published version is + ``base-4.19.1.0`` is an example of making this mistake. This blocks + patch releases that should always be fine according to the PVP. The + correct minor bound is ``base < 4.19.2``. + + "An upper bound should not have trailing zeros." + + Asking for ``base < 4.20.0.0`` when you meant allow any ``base-4.19.*`` + version is an example of making this mistake. In fact, ``base-4.20`` and + ``base-4.20.0`` are not excluded by the bound. The correct bound is ``< + 4.20``. + .. _cabal-sdist: cabal sdist diff --git a/doc/cabal-package-description-file.rst b/doc/cabal-package-description-file.rst index 6ae467b4774..1aed08d5172 100644 --- a/doc/cabal-package-description-file.rst +++ b/doc/cabal-package-description-file.rst @@ -1028,12 +1028,32 @@ build information fields (see the section on `build information`_). .. pkg-field:: main-is: filename (required) - The name of the ``.hs`` or ``.lhs`` file containing the ``Main`` - module. Note that it is the ``.hs`` filename that must be listed, - even if that file is generated using a preprocessor. The source file - must be relative to one of the directories listed in - :pkg-field:`hs-source-dirs`. Further, while the name of the file may - vary, the module itself must be named ``Main``. + By convention, a Haskell program must have a module called ``Main`` which + exports an IO action named ``main``. When the program is executed, the + action is performed. This field specifies the name of the ``.hs`` or + ``.lhs`` source file containing that module. It is the ``.hs`` filename that + must be listed, even if that file is generated using a preprocessor. The + file must be relative to one of the directories listed in + :pkg-field:`hs-source-dirs`. + + Further, while the name of the source file may vary, if the convention is + being followed, the module itself must be named ``Main`` and export + ``main``. + + However, GHC's ``-main-is`` option can be used to change the name of the + relevant IO action. For example, if source file ``MyMainSourceFile.hs`` + contains a module named ``MyMainModule`` exporting ``myMainFunc`` and that + is to be the relevant IO action, you can specify: + + :: + + executable my-app + main-is: MyMainSourceFile.hs + ghc-options: -main-is MyMainModule.myMainFunc + build-depends: + base + default-language: Haskell2010 + Starting with ``cabal-version: 1.18`` this field supports specifying a C, C++, or objC source file as the main entry point. @@ -1090,7 +1110,7 @@ field. even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in :pkg-field:`hs-source-dirs`. This field is analogous to the ``main-is`` field - of an executable section. + of an executable section; see that documentation for further information. Test suites using the ``detailed-0.9`` interface are modules exporting the symbol ``tests :: IO [Test]``. The ``Test`` type is exported by the @@ -1249,8 +1269,8 @@ standard output and error channels. even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in :pkg-field:`hs-source-dirs`. This field is analogous to the ``main-is`` - field of an executable section. Further, while the name of the file may - vary, the module itself must be named ``Main``. + field of an executable section; see that documentation for further + information. Example: """"""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/doc/conf.py b/doc/conf.py index 6f70381427d..bf606f1fb0d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -13,7 +13,7 @@ sys.path.insert(0, os.path.abspath('.')) import cabaldomain -version = "3.13.0.0" +version = "3.14.2.0" extensions = [ 'sphinx.ext.extlinks', diff --git a/doc/config.rst b/doc/config.rst index 36a53f958b0..2ee635a3d4f 100644 --- a/doc/config.rst +++ b/doc/config.rst @@ -200,6 +200,10 @@ repository. ``package-name-version.tar.gz`` files in the directory, and will use optional corresponding ``package-name-version.cabal`` files as new revisions. +.. note:: + On Windows systems, the URL must start directly with the absolute path as in + ``url: file+noindex:C:/absolute/path/to/directory``. + For example, if ``/absolute/path/to/directory`` looks like :: diff --git a/doc/file-format-changelog.rst b/doc/file-format-changelog.rst index e57eb2508fc..174cb3c3189 100644 --- a/doc/file-format-changelog.rst +++ b/doc/file-format-changelog.rst @@ -25,6 +25,8 @@ relative to the respective preceding *published* version. * Added field ``extra-files`` for specifying extra files to be included in ``sdist`` without adding any other semantics (cf. ``extra-source-files`` is tracked by ``cabal build``). +* License fields use identifiers from SPDX License List version + ``3.25 2024-08-19``. ``cabal-version: 3.12`` ----------------------- diff --git a/editors/vim/syntax/cabal.vim b/editors/vim/syntax/cabal.vim index db08e8e0d92..2e578307a7e 100644 --- a/editors/vim/syntax/cabal.vim +++ b/editors/vim/syntax/cabal.vim @@ -232,6 +232,7 @@ syn keyword cabalExtension contained \ NullaryTypeClasses \ NumDecimals \ NumericUnderscores + \ OrPatterns \ OverlappingInstances \ OverloadedLabels \ OverloadedLists @@ -362,6 +363,7 @@ syn keyword cabalExtension contained \ NoMonoLocalBinds \ NoMonoPatBinds \ NoMonomorphismRestriction + \ NoMultilineStrings \ NoMultiParamTypeClasses \ NoMultiWayIf \ NoNPlusKPatterns @@ -379,6 +381,7 @@ syn keyword cabalExtension contained \ NoOverloadedLists \ NoOverloadedRecordDot \ NoOverloadedStrings + \ NoOrPatterns \ NoPackageImports \ NoParallelArrays \ NoParallelListComp diff --git a/license-list-data/exceptions-3.25.json b/license-list-data/exceptions-3.25.json new file mode 100644 index 00000000000..9d20ee4866a --- /dev/null +++ b/license-list-data/exceptions-3.25.json @@ -0,0 +1,836 @@ +{ + "licenseListVersion": "3.25.0", + "exceptions": [ + { + "reference": "./389-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./389-exception.html", + "referenceNumber": 53, + "name": "389 Directory Server Exception", + "licenseExceptionId": "389-exception", + "seeAlso": [ + "http://directory.fedoraproject.org/wiki/GPL_Exception_License_Text", + "https://web.archive.org/web/20080828121337/http://directory.fedoraproject.org/wiki/GPL_Exception_License_Text" + ] + }, + { + "reference": "./Asterisk-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Asterisk-exception.html", + "referenceNumber": 60, + "name": "Asterisk exception", + "licenseExceptionId": "Asterisk-exception", + "seeAlso": [ + "https://github.com/asterisk/libpri/blob/7f91151e6bd10957c746c031c1f4a030e8146e9a/pri.c#L22", + "https://github.com/asterisk/libss7/blob/03e81bcd0d28ff25d4c77c78351ddadc82ff5c3f/ss7.c#L24" + ] + }, + { + "reference": "./Asterisk-linking-protocols-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Asterisk-linking-protocols-exception.html", + "referenceNumber": 24, + "name": "Asterisk linking protocols exception", + "licenseExceptionId": "Asterisk-linking-protocols-exception", + "seeAlso": [ + "https://github.com/asterisk/asterisk/blob/115d7c01e32ccf4566a99e9d74e2b88830985a0b/LICENSE#L27" + ] + }, + { + "reference": "./Autoconf-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-2.0.html", + "referenceNumber": 72, + "name": "Autoconf exception 2.0", + "licenseExceptionId": "Autoconf-exception-2.0", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html", + "http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.gz" + ] + }, + { + "reference": "./Autoconf-exception-3.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-3.0.html", + "referenceNumber": 17, + "name": "Autoconf exception 3.0", + "licenseExceptionId": "Autoconf-exception-3.0", + "seeAlso": [ + "http://www.gnu.org/licenses/autoconf-exception-3.0.html" + ] + }, + { + "reference": "./Autoconf-exception-generic.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-generic.html", + "referenceNumber": 48, + "name": "Autoconf generic exception", + "licenseExceptionId": "Autoconf-exception-generic", + "seeAlso": [ + "https://launchpad.net/ubuntu/precise/+source/xmltooling/+copyright", + "https://tracker.debian.org/media/packages/s/sipwitch/copyright-1.9.15-3", + "https://opensource.apple.com/source/launchd/launchd-258.1/launchd/compile.auto.html", + "https://git.savannah.gnu.org/gitweb/?p\u003dgnulib.git;a\u003dblob;f\u003dgnulib-tool;h\u003d029a8cf377ad8d8f2d9e54061bf2f20496ad2eef;hb\u003d73c74ba0197e6566da6882c87b1adee63e24d75c#l407" + ] + }, + { + "reference": "./Autoconf-exception-generic-3.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-generic-3.0.html", + "referenceNumber": 64, + "name": "Autoconf generic exception for GPL-3.0", + "licenseExceptionId": "Autoconf-exception-generic-3.0", + "seeAlso": [ + "https://src.fedoraproject.org/rpms/redhat-rpm-config/blob/rawhide/f/config.guess" + ] + }, + { + "reference": "./Autoconf-exception-macro.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Autoconf-exception-macro.html", + "referenceNumber": 51, + "name": "Autoconf macro exception", + "licenseExceptionId": "Autoconf-exception-macro", + "seeAlso": [ + "https://github.com/freedesktop/xorg-macros/blob/39f07f7db58ebbf3dcb64a2bf9098ed5cf3d1223/xorg-macros.m4.in", + "https://www.gnu.org/software/autoconf-archive/ax_pthread.html", + "https://launchpad.net/ubuntu/precise/+source/xmltooling/+copyright" + ] + }, + { + "reference": "./Bison-exception-1.24.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Bison-exception-1.24.html", + "referenceNumber": 59, + "name": "Bison exception 1.24", + "licenseExceptionId": "Bison-exception-1.24", + "seeAlso": [ + "https://github.com/arineng/rwhoisd/blob/master/rwhoisd/mkdb/y.tab.c#L180" + ] + }, + { + "reference": "./Bison-exception-2.2.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Bison-exception-2.2.html", + "referenceNumber": 21, + "name": "Bison exception 2.2", + "licenseExceptionId": "Bison-exception-2.2", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" + ] + }, + { + "reference": "./Bootloader-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Bootloader-exception.html", + "referenceNumber": 40, + "name": "Bootloader Distribution Exception", + "licenseExceptionId": "Bootloader-exception", + "seeAlso": [ + "https://github.com/pyinstaller/pyinstaller/blob/develop/COPYING.txt" + ] + }, + { + "reference": "./Classpath-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Classpath-exception-2.0.html", + "referenceNumber": 34, + "name": "Classpath exception 2.0", + "licenseExceptionId": "Classpath-exception-2.0", + "seeAlso": [ + "http://www.gnu.org/software/classpath/license.html", + "https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception" + ] + }, + { + "reference": "./CLISP-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./CLISP-exception-2.0.html", + "referenceNumber": 71, + "name": "CLISP exception 2.0", + "licenseExceptionId": "CLISP-exception-2.0", + "seeAlso": [ + "http://sourceforge.net/p/clisp/clisp/ci/default/tree/COPYRIGHT" + ] + }, + { + "reference": "./cryptsetup-OpenSSL-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./cryptsetup-OpenSSL-exception.html", + "referenceNumber": 5, + "name": "cryptsetup OpenSSL exception", + "licenseExceptionId": "cryptsetup-OpenSSL-exception", + "seeAlso": [ + "https://gitlab.com/cryptsetup/cryptsetup/-/blob/main/COPYING", + "https://gitlab.nic.cz/datovka/datovka/-/blob/develop/COPYING", + "https://github.com/nbs-system/naxsi/blob/951123ad456bdf5ac94e8d8819342fe3d49bc002/naxsi_src/naxsi_raw.c", + "http://web.mit.edu/jgross/arch/amd64_deb60/bin/mosh", + "https://sourceforge.net/p/linux-ima/ima-evm-utils/ci/master/tree/src/evmctl.c#l30" + ] + }, + { + "reference": "./DigiRule-FOSS-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./DigiRule-FOSS-exception.html", + "referenceNumber": 66, + "name": "DigiRule FOSS License Exception", + "licenseExceptionId": "DigiRule-FOSS-exception", + "seeAlso": [ + "http://www.digirulesolutions.com/drupal/foss" + ] + }, + { + "reference": "./eCos-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./eCos-exception-2.0.html", + "referenceNumber": 35, + "name": "eCos exception 2.0", + "licenseExceptionId": "eCos-exception-2.0", + "seeAlso": [ + "http://ecos.sourceware.org/license-overview.html" + ] + }, + { + "reference": "./erlang-otp-linking-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./erlang-otp-linking-exception.html", + "referenceNumber": 46, + "name": "Erlang/OTP Linking Exception", + "licenseExceptionId": "erlang-otp-linking-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs", + "https://erlang.org/pipermail/erlang-questions/2012-May/066355.html", + "https://gitea.osmocom.org/erlang/osmo_ss7/src/commit/2286c1b8738d715950026650bf53f19a69d6ed0e/src/ss7_links.erl#L20" + ] + }, + { + "reference": "./Fawkes-Runtime-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Fawkes-Runtime-exception.html", + "referenceNumber": 23, + "name": "Fawkes Runtime Exception", + "licenseExceptionId": "Fawkes-Runtime-exception", + "seeAlso": [ + "http://www.fawkesrobotics.org/about/license/" + ] + }, + { + "reference": "./FLTK-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./FLTK-exception.html", + "referenceNumber": 9, + "name": "FLTK exception", + "licenseExceptionId": "FLTK-exception", + "seeAlso": [ + "http://www.fltk.org/COPYING.php" + ] + }, + { + "reference": "./fmt-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./fmt-exception.html", + "referenceNumber": 69, + "name": "fmt exception", + "licenseExceptionId": "fmt-exception", + "seeAlso": [ + "https://github.com/fmtlib/fmt/blob/master/LICENSE", + "https://github.com/fmtlib/fmt/blob/2eb363297b24cd71a68ccfb20ff755430f17e60f/LICENSE#L22C1-L27C62" + ] + }, + { + "reference": "./Font-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Font-exception-2.0.html", + "referenceNumber": 19, + "name": "Font exception 2.0", + "licenseExceptionId": "Font-exception-2.0", + "seeAlso": [ + "http://www.gnu.org/licenses/gpl-faq.html#FontException" + ] + }, + { + "reference": "./freertos-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./freertos-exception-2.0.html", + "referenceNumber": 54, + "name": "FreeRTOS Exception 2.0", + "licenseExceptionId": "freertos-exception-2.0", + "seeAlso": [ + "https://web.archive.org/web/20060809182744/http://www.freertos.org/a00114.html" + ] + }, + { + "reference": "./GCC-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GCC-exception-2.0.html", + "referenceNumber": 14, + "name": "GCC Runtime Library exception 2.0", + "licenseExceptionId": "GCC-exception-2.0", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10", + "https://sourceware.org/git/?p\u003dglibc.git;a\u003dblob;f\u003dcsu/abi-note.c;h\u003dc2ec208e94fbe91f63d3c375bd254b884695d190;hb\u003dHEAD" + ] + }, + { + "reference": "./GCC-exception-2.0-note.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GCC-exception-2.0-note.html", + "referenceNumber": 55, + "name": "GCC Runtime Library exception 2.0 - note variant", + "licenseExceptionId": "GCC-exception-2.0-note", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dglibc.git;a\u003dblob;f\u003dsysdeps/x86_64/start.S" + ] + }, + { + "reference": "./GCC-exception-3.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GCC-exception-3.1.html", + "referenceNumber": 6, + "name": "GCC Runtime Library exception 3.1", + "licenseExceptionId": "GCC-exception-3.1", + "seeAlso": [ + "http://www.gnu.org/licenses/gcc-exception-3.1.html" + ] + }, + { + "reference": "./Gmsh-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Gmsh-exception.html", + "referenceNumber": 58, + "name": "Gmsh exception\u003e", + "licenseExceptionId": "Gmsh-exception", + "seeAlso": [ + "https://gitlab.onelab.info/gmsh/gmsh/-/raw/master/LICENSE.txt" + ] + }, + { + "reference": "./GNAT-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GNAT-exception.html", + "referenceNumber": 26, + "name": "GNAT exception", + "licenseExceptionId": "GNAT-exception", + "seeAlso": [ + "https://github.com/AdaCore/florist/blob/master/libsrc/posix-configurable_file_limits.adb" + ] + }, + { + "reference": "./GNOME-examples-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GNOME-examples-exception.html", + "referenceNumber": 12, + "name": "GNOME examples exception", + "licenseExceptionId": "GNOME-examples-exception", + "seeAlso": [ + "https://gitlab.gnome.org/Archive/gnome-devel-docs/-/blob/master/platform-demos/C/legal.xml?ref_type\u003dheads", + "http://meldmerge.org/help/" + ] + }, + { + "reference": "./GNU-compiler-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GNU-compiler-exception.html", + "referenceNumber": 18, + "name": "GNU Compiler Exception", + "licenseExceptionId": "GNU-compiler-exception", + "seeAlso": [ + "https://sourceware.org/git?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dlibiberty/unlink-if-ordinary.c;h\u003de49f2f2f67bfdb10d6b2bd579b0e01cad0fd708e;hb\u003dHEAD#l19" + ] + }, + { + "reference": "./gnu-javamail-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./gnu-javamail-exception.html", + "referenceNumber": 43, + "name": "GNU JavaMail exception", + "licenseExceptionId": "gnu-javamail-exception", + "seeAlso": [ + "http://www.gnu.org/software/classpathx/javamail/javamail.html" + ] + }, + { + "reference": "./GPL-3.0-interface-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GPL-3.0-interface-exception.html", + "referenceNumber": 28, + "name": "GPL-3.0 Interface Exception", + "licenseExceptionId": "GPL-3.0-interface-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.en.html#LinkingOverControlledInterface" + ] + }, + { + "reference": "./GPL-3.0-linking-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GPL-3.0-linking-exception.html", + "referenceNumber": 45, + "name": "GPL-3.0 Linking Exception", + "licenseExceptionId": "GPL-3.0-linking-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs" + ] + }, + { + "reference": "./GPL-3.0-linking-source-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GPL-3.0-linking-source-exception.html", + "referenceNumber": 39, + "name": "GPL-3.0 Linking Exception (with Corresponding Source)", + "licenseExceptionId": "GPL-3.0-linking-source-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs", + "https://github.com/mirror/wget/blob/master/src/http.c#L20" + ] + }, + { + "reference": "./GPL-CC-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GPL-CC-1.0.html", + "referenceNumber": 27, + "name": "GPL Cooperation Commitment 1.0", + "licenseExceptionId": "GPL-CC-1.0", + "seeAlso": [ + "https://github.com/gplcc/gplcc/blob/master/Project/COMMITMENT", + "https://gplcc.github.io/gplcc/Project/README-PROJECT.html" + ] + }, + { + "reference": "./GStreamer-exception-2005.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GStreamer-exception-2005.html", + "referenceNumber": 63, + "name": "GStreamer Exception (2005)", + "licenseExceptionId": "GStreamer-exception-2005", + "seeAlso": [ + "https://gstreamer.freedesktop.org/documentation/frequently-asked-questions/licensing.html?gi-language\u003dc#licensing-of-applications-using-gstreamer" + ] + }, + { + "reference": "./GStreamer-exception-2008.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./GStreamer-exception-2008.html", + "referenceNumber": 30, + "name": "GStreamer Exception (2008)", + "licenseExceptionId": "GStreamer-exception-2008", + "seeAlso": [ + "https://gstreamer.freedesktop.org/documentation/frequently-asked-questions/licensing.html?gi-language\u003dc#licensing-of-applications-using-gstreamer" + ] + }, + { + "reference": "./i2p-gpl-java-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./i2p-gpl-java-exception.html", + "referenceNumber": 36, + "name": "i2p GPL+Java Exception", + "licenseExceptionId": "i2p-gpl-java-exception", + "seeAlso": [ + "http://geti2p.net/en/get-involved/develop/licenses#java_exception" + ] + }, + { + "reference": "./KiCad-libraries-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./KiCad-libraries-exception.html", + "referenceNumber": 10, + "name": "KiCad Libraries Exception", + "licenseExceptionId": "KiCad-libraries-exception", + "seeAlso": [ + "https://www.kicad.org/libraries/license/" + ] + }, + { + "reference": "./LGPL-3.0-linking-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./LGPL-3.0-linking-exception.html", + "referenceNumber": 31, + "name": "LGPL-3.0 Linking Exception", + "licenseExceptionId": "LGPL-3.0-linking-exception", + "seeAlso": [ + "https://raw.githubusercontent.com/go-xmlpath/xmlpath/v2/LICENSE", + "https://github.com/goamz/goamz/blob/master/LICENSE", + "https://github.com/juju/errors/blob/master/LICENSE" + ] + }, + { + "reference": "./libpri-OpenH323-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./libpri-OpenH323-exception.html", + "referenceNumber": 15, + "name": "libpri OpenH323 exception", + "licenseExceptionId": "libpri-OpenH323-exception", + "seeAlso": [ + "https://github.com/asterisk/libpri/blob/1.6.0/README#L19-L22" + ] + }, + { + "reference": "./Libtool-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Libtool-exception.html", + "referenceNumber": 20, + "name": "Libtool Exception", + "licenseExceptionId": "Libtool-exception", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/libtool.git/tree/m4/libtool.m4", + "https://git.savannah.gnu.org/cgit/libtool.git/tree/libltdl/lt__alloc.c#n15" + ] + }, + { + "reference": "./Linux-syscall-note.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Linux-syscall-note.html", + "referenceNumber": 52, + "name": "Linux Syscall Note", + "licenseExceptionId": "Linux-syscall-note", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/COPYING" + ] + }, + { + "reference": "./LLGPL.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./LLGPL.html", + "referenceNumber": 37, + "name": "LLGPL Preamble", + "licenseExceptionId": "LLGPL", + "seeAlso": [ + "http://opensource.franz.com/preamble.html" + ] + }, + { + "reference": "./LLVM-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./LLVM-exception.html", + "referenceNumber": 1, + "name": "LLVM Exception", + "licenseExceptionId": "LLVM-exception", + "seeAlso": [ + "http://llvm.org/foundation/relicensing/LICENSE.txt" + ] + }, + { + "reference": "./LZMA-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./LZMA-exception.html", + "referenceNumber": 61, + "name": "LZMA exception", + "licenseExceptionId": "LZMA-exception", + "seeAlso": [ + "http://nsis.sourceforge.net/Docs/AppendixI.html#I.6" + ] + }, + { + "reference": "./mif-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./mif-exception.html", + "referenceNumber": 7, + "name": "Macros and Inline Functions Exception", + "licenseExceptionId": "mif-exception", + "seeAlso": [ + "http://www.scs.stanford.edu/histar/src/lib/cppsup/exception", + "http://dev.bertos.org/doxygen/", + "https://www.threadingbuildingblocks.org/licensing" + ] + }, + { + "reference": "./Nokia-Qt-exception-1.1.json", + "isDeprecatedLicenseId": true, + "detailsUrl": "./Nokia-Qt-exception-1.1.html", + "referenceNumber": 13, + "name": "Nokia Qt LGPL exception 1.1", + "licenseExceptionId": "Nokia-Qt-exception-1.1", + "seeAlso": [ + "https://www.keepassx.org/dev/projects/keepassx/repository/revisions/b8dfb9cc4d5133e0f09cd7533d15a4f1c19a40f2/entry/LICENSE.NOKIA-LGPL-EXCEPTION" + ] + }, + { + "reference": "./OCaml-LGPL-linking-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./OCaml-LGPL-linking-exception.html", + "referenceNumber": 2, + "name": "OCaml LGPL Linking Exception", + "licenseExceptionId": "OCaml-LGPL-linking-exception", + "seeAlso": [ + "https://caml.inria.fr/ocaml/license.en.html" + ] + }, + { + "reference": "./OCCT-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./OCCT-exception-1.0.html", + "referenceNumber": 49, + "name": "Open CASCADE Exception 1.0", + "licenseExceptionId": "OCCT-exception-1.0", + "seeAlso": [ + "http://www.opencascade.com/content/licensing" + ] + }, + { + "reference": "./OpenJDK-assembly-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./OpenJDK-assembly-exception-1.0.html", + "referenceNumber": 44, + "name": "OpenJDK Assembly exception 1.0", + "licenseExceptionId": "OpenJDK-assembly-exception-1.0", + "seeAlso": [ + "http://openjdk.java.net/legal/assembly-exception.html" + ] + }, + { + "reference": "./openvpn-openssl-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./openvpn-openssl-exception.html", + "referenceNumber": 29, + "name": "OpenVPN OpenSSL Exception", + "licenseExceptionId": "openvpn-openssl-exception", + "seeAlso": [ + "http://openvpn.net/index.php/license.html", + "https://github.com/psycopg/psycopg2/blob/2_9_3/LICENSE#L14" + ] + }, + { + "reference": "./PCRE2-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./PCRE2-exception.html", + "referenceNumber": 8, + "name": "PCRE2 exception", + "licenseExceptionId": "PCRE2-exception", + "seeAlso": [ + "https://www.pcre.org/licence.txt" + ] + }, + { + "reference": "./PS-or-PDF-font-exception-20170817.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./PS-or-PDF-font-exception-20170817.html", + "referenceNumber": 16, + "name": "PS/PDF font exception (2017-08-17)", + "licenseExceptionId": "PS-or-PDF-font-exception-20170817", + "seeAlso": [ + "https://github.com/ArtifexSoftware/urw-base35-fonts/blob/65962e27febc3883a17e651cdb23e783668c996f/LICENSE" + ] + }, + { + "reference": "./QPL-1.0-INRIA-2004-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./QPL-1.0-INRIA-2004-exception.html", + "referenceNumber": 68, + "name": "INRIA QPL 1.0 2004 variant exception", + "licenseExceptionId": "QPL-1.0-INRIA-2004-exception", + "seeAlso": [ + "https://git.frama-c.com/pub/frama-c/-/blob/master/licenses/Q_MODIFIED_LICENSE", + "https://github.com/maranget/hevea/blob/master/LICENSE" + ] + }, + { + "reference": "./Qt-GPL-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Qt-GPL-exception-1.0.html", + "referenceNumber": 50, + "name": "Qt GPL exception 1.0", + "licenseExceptionId": "Qt-GPL-exception-1.0", + "seeAlso": [ + "http://code.qt.io/cgit/qt/qtbase.git/tree/LICENSE.GPL3-EXCEPT" + ] + }, + { + "reference": "./Qt-LGPL-exception-1.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Qt-LGPL-exception-1.1.html", + "referenceNumber": 38, + "name": "Qt LGPL exception 1.1", + "licenseExceptionId": "Qt-LGPL-exception-1.1", + "seeAlso": [ + "http://code.qt.io/cgit/qt/qtbase.git/tree/LGPL_EXCEPTION.txt" + ] + }, + { + "reference": "./Qwt-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Qwt-exception-1.0.html", + "referenceNumber": 25, + "name": "Qwt exception 1.0", + "licenseExceptionId": "Qwt-exception-1.0", + "seeAlso": [ + "http://qwt.sourceforge.net/qwtlicense.html" + ] + }, + { + "reference": "./romic-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./romic-exception.html", + "referenceNumber": 22, + "name": "Romic Exception", + "licenseExceptionId": "romic-exception", + "seeAlso": [ + "https://web.archive.org/web/20210124015834/http://mo.morsi.org/blog/2009/08/13/lesser_affero_gplv3/", + "https://sourceforge.net/p/romic/code/ci/3ab2856180cf0d8b007609af53154cf092efc58f/tree/COPYING", + "https://github.com/moll/node-mitm/blob/bbf24b8bd7596dc6e091e625363161ce91984fc7/LICENSE#L8-L11", + "https://github.com/zenbones/SmallMind/blob/3c62b5995fe7f27c453f140ff9b60560a0893f2a/COPYRIGHT#L25-L30", + "https://github.com/CubeArtisan/cubeartisan/blob/2c6ab53455237b88a3ea07be02a838a135c4ab79/LICENSE.LESSER#L10-L15", + "https://github.com/savearray2/py.js/blob/b781273c08c8afa89f4954de4ecf42ec01429bae/README.md#license" + ] + }, + { + "reference": "./RRDtool-FLOSS-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./RRDtool-FLOSS-exception-2.0.html", + "referenceNumber": 4, + "name": "RRDtool FLOSS exception 2.0", + "licenseExceptionId": "RRDtool-FLOSS-exception-2.0", + "seeAlso": [ + "https://github.com/oetiker/rrdtool-1.x/blob/master/COPYRIGHT#L25-L90", + "https://oss.oetiker.ch/rrdtool/license.en.html" + ] + }, + { + "reference": "./SANE-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./SANE-exception.html", + "referenceNumber": 11, + "name": "SANE Exception", + "licenseExceptionId": "SANE-exception", + "seeAlso": [ + "https://github.com/alexpevzner/sane-airscan/blob/master/LICENSE", + "https://gitlab.com/sane-project/backends/-/blob/master/sanei/sanei_pp.c?ref_type\u003dheads", + "https://gitlab.com/sane-project/frontends/-/blob/master/sanei/sanei_codec_ascii.c?ref_type\u003dheads" + ] + }, + { + "reference": "./SHL-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./SHL-2.0.html", + "referenceNumber": 56, + "name": "Solderpad Hardware License v2.0", + "licenseExceptionId": "SHL-2.0", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-2.0/" + ] + }, + { + "reference": "./SHL-2.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./SHL-2.1.html", + "referenceNumber": 65, + "name": "Solderpad Hardware License v2.1", + "licenseExceptionId": "SHL-2.1", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-2.1/" + ] + }, + { + "reference": "./stunnel-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./stunnel-exception.html", + "referenceNumber": 70, + "name": "stunnel Exception", + "licenseExceptionId": "stunnel-exception", + "seeAlso": [ + "https://github.com/mtrojnar/stunnel/blob/master/COPYING.md" + ] + }, + { + "reference": "./SWI-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./SWI-exception.html", + "referenceNumber": 41, + "name": "SWI exception", + "licenseExceptionId": "SWI-exception", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-clpqr/blob/bfa80b9270274f0800120d5b8e6fef42ac2dc6a5/clpqr/class.pl" + ] + }, + { + "reference": "./Swift-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Swift-exception.html", + "referenceNumber": 33, + "name": "Swift Exception", + "licenseExceptionId": "Swift-exception", + "seeAlso": [ + "https://swift.org/LICENSE.txt", + "https://github.com/apple/swift-package-manager/blob/7ab2275f447a5eb37497ed63a9340f8a6d1e488b/LICENSE.txt#L205" + ] + }, + { + "reference": "./Texinfo-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Texinfo-exception.html", + "referenceNumber": 67, + "name": "Texinfo exception", + "licenseExceptionId": "Texinfo-exception", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/automake.git/tree/lib/texinfo.tex?h\u003dv1.16.5#n23" + ] + }, + { + "reference": "./u-boot-exception-2.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./u-boot-exception-2.0.html", + "referenceNumber": 3, + "name": "U-Boot exception 2.0", + "licenseExceptionId": "u-boot-exception-2.0", + "seeAlso": [ + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003dLicenses/Exceptions" + ] + }, + { + "reference": "./UBDL-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./UBDL-exception.html", + "referenceNumber": 62, + "name": "Unmodified Binary Distribution exception", + "licenseExceptionId": "UBDL-exception", + "seeAlso": [ + "https://github.com/ipxe/ipxe/blob/master/COPYING.UBDL" + ] + }, + { + "reference": "./Universal-FOSS-exception-1.0.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./Universal-FOSS-exception-1.0.html", + "referenceNumber": 42, + "name": "Universal FOSS Exception, Version 1.0", + "licenseExceptionId": "Universal-FOSS-exception-1.0", + "seeAlso": [ + "https://oss.oracle.com/licenses/universal-foss-exception/" + ] + }, + { + "reference": "./vsftpd-openssl-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./vsftpd-openssl-exception.html", + "referenceNumber": 32, + "name": "vsftpd OpenSSL exception", + "licenseExceptionId": "vsftpd-openssl-exception", + "seeAlso": [ + "https://git.stg.centos.org/source-git/vsftpd/blob/f727873674d9c9cd7afcae6677aa782eb54c8362/f/LICENSE", + "https://launchpad.net/debian/squeeze/+source/vsftpd/+copyright", + "https://github.com/richardcochran/vsftpd/blob/master/COPYING" + ] + }, + { + "reference": "./WxWindows-exception-3.1.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./WxWindows-exception-3.1.html", + "referenceNumber": 57, + "name": "WxWindows Library Exception 3.1", + "licenseExceptionId": "WxWindows-exception-3.1", + "seeAlso": [ + "http://www.opensource.org/licenses/WXwindows" + ] + }, + { + "reference": "./x11vnc-openssl-exception.json", + "isDeprecatedLicenseId": false, + "detailsUrl": "./x11vnc-openssl-exception.html", + "referenceNumber": 47, + "name": "x11vnc OpenSSL Exception", + "licenseExceptionId": "x11vnc-openssl-exception", + "seeAlso": [ + "https://github.com/LibVNC/x11vnc/blob/master/src/8to24.c#L22" + ] + } + ], + "releaseDate": "2024-08-19" +} diff --git a/license-list-data/licenses-3.25.json b/license-list-data/licenses-3.25.json new file mode 100644 index 00000000000..5db03b48941 --- /dev/null +++ b/license-list-data/licenses-3.25.json @@ -0,0 +1,8360 @@ +{ + "licenseListVersion": "3.25.0", + "licenses": [ + { + "reference": "https://spdx.org/licenses/0BSD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/0BSD.json", + "referenceNumber": 582, + "name": "BSD Zero Clause License", + "licenseId": "0BSD", + "seeAlso": [ + "http://landley.net/toybox/license.html", + "https://opensource.org/licenses/0BSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/3D-Slicer-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/3D-Slicer-1.0.json", + "referenceNumber": 466, + "name": "3D Slicer License v1.0", + "licenseId": "3D-Slicer-1.0", + "seeAlso": [ + "https://slicer.org/LICENSE", + "https://github.com/Slicer/Slicer/blob/main/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AAL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AAL.json", + "referenceNumber": 252, + "name": "Attribution Assurance License", + "licenseId": "AAL", + "seeAlso": [ + "https://opensource.org/licenses/attribution" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Abstyles.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Abstyles.json", + "referenceNumber": 456, + "name": "Abstyles License", + "licenseId": "Abstyles", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Abstyles" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AdaCore-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AdaCore-doc.json", + "referenceNumber": 355, + "name": "AdaCore Doc License", + "licenseId": "AdaCore-doc", + "seeAlso": [ + "https://github.com/AdaCore/xmlada/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst", + "https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-2006.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-2006.json", + "referenceNumber": 128, + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Display-PostScript.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Display-PostScript.json", + "referenceNumber": 433, + "name": "Adobe Display PostScript License", + "licenseId": "Adobe-Display-PostScript", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L752" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Glyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Glyph.json", + "referenceNumber": 125, + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Adobe-Utopia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Adobe-Utopia.json", + "referenceNumber": 495, + "name": "Adobe Utopia Font License", + "licenseId": "Adobe-Utopia", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ADSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ADSL.json", + "referenceNumber": 560, + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.1.json", + "referenceNumber": 14, + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-1.2.json", + "referenceNumber": 622, + "name": "Academic Free License v1.2", + "licenseId": "AFL-1.2", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.0.json", + "referenceNumber": 559, + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "seeAlso": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-2.1.json", + "referenceNumber": 570, + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AFL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AFL-3.0.json", + "referenceNumber": 332, + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", + "seeAlso": [ + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Afmparse.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Afmparse.json", + "referenceNumber": 163, + "name": "Afmparse License", + "licenseId": "Afmparse", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Afmparse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0.json", + "referenceNumber": 657, + "name": "Affero General Public License v1.0", + "licenseId": "AGPL-1.0", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-only.json", + "referenceNumber": 142, + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-1.0-or-later.json", + "referenceNumber": 155, + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0.json", + "referenceNumber": 70, + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-only.json", + "referenceNumber": 330, + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/AGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AGPL-3.0-or-later.json", + "referenceNumber": 366, + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Aladdin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Aladdin.json", + "referenceNumber": 557, + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", + "seeAlso": [ + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/AMD-newlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMD-newlib.json", + "referenceNumber": 340, + "name": "AMD newlib License", + "licenseId": "AMD-newlib", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/sys/a29khif/_close.S;h\u003d04f52ae00de1dafbd9055ad8d73c5c697a3aae7f;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMDPLPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMDPLPA.json", + "referenceNumber": 467, + "name": "AMD\u0027s plpa_map.c License", + "licenseId": "AMDPLPA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AML.json", + "referenceNumber": 299, + "name": "Apple MIT License", + "licenseId": "AML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AML-glslang.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AML-glslang.json", + "referenceNumber": 567, + "name": "AML glslang variant License", + "licenseId": "AML-glslang", + "seeAlso": [ + "https://github.com/KhronosGroup/glslang/blob/main/LICENSE.txt#L949", + "https://docs.omniverse.nvidia.com/install-guide/latest/common/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/AMPAS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/AMPAS.json", + "referenceNumber": 414, + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD.json", + "referenceNumber": 460, + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ANTLR-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ANTLR-PD-fallback.json", + "referenceNumber": 65, + "name": "ANTLR Software Rights Notice with license fallback", + "licenseId": "ANTLR-PD-fallback", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/any-OSI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/any-OSI.json", + "referenceNumber": 310, + "name": "Any OSI License", + "licenseId": "any-OSI", + "seeAlso": [ + "https://metacpan.org/pod/Exporter::Tidy#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Apache-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.0.json", + "referenceNumber": 250, + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-1.0" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Apache-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-1.1.json", + "referenceNumber": 288, + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "seeAlso": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Apache-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Apache-2.0.json", + "referenceNumber": 143, + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", + "seeAlso": [ + "https://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/APAFML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APAFML.json", + "referenceNumber": 636, + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APL-1.0.json", + "referenceNumber": 85, + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/APL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/App-s2p.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/App-s2p.json", + "referenceNumber": 238, + "name": "App::s2p License", + "licenseId": "App-s2p", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/App-s2p" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.0.json", + "referenceNumber": 335, + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/APSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.1.json", + "referenceNumber": 308, + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", + "seeAlso": [ + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-1.2.json", + "referenceNumber": 280, + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", + "seeAlso": [ + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/APSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/APSL-2.0.json", + "referenceNumber": 592, + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "seeAlso": [ + "http://www.opensource.apple.com/license/apsl/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Arphic-1999.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Arphic-1999.json", + "referenceNumber": 32, + "name": "Arphic Public License", + "licenseId": "Arphic-1999", + "seeAlso": [ + "http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0.json", + "referenceNumber": 138, + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-cl8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-cl8.json", + "referenceNumber": 353, + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-1.0-Perl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-1.0-Perl.json", + "referenceNumber": 660, + "name": "Artistic License 1.0 (Perl)", + "licenseId": "Artistic-1.0-Perl", + "seeAlso": [ + "http://dev.perl.org/licenses/artistic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Artistic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Artistic-2.0.json", + "referenceNumber": 277, + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "seeAlso": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://www.perlfoundation.org/artistic-license-20.html", + "https://opensource.org/licenses/artistic-license-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json", + "referenceNumber": 166, + "name": "ASWF Digital Assets License version 1.0", + "licenseId": "ASWF-Digital-Assets-1.0", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json", + "referenceNumber": 29, + "name": "ASWF Digital Assets License 1.1", + "licenseId": "ASWF-Digital-Assets-1.1", + "seeAlso": [ + "https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Baekmuk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Baekmuk.json", + "referenceNumber": 380, + "name": "Baekmuk License", + "licenseId": "Baekmuk", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Baekmuk?rd\u003dLicensing/Baekmuk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bahyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bahyph.json", + "referenceNumber": 368, + "name": "Bahyph License", + "licenseId": "Bahyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Barr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Barr.json", + "referenceNumber": 195, + "name": "Barr License", + "licenseId": "Barr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Barr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bcrypt-Solar-Designer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bcrypt-Solar-Designer.json", + "referenceNumber": 478, + "name": "bcrypt Solar Designer License", + "licenseId": "bcrypt-Solar-Designer", + "seeAlso": [ + "https://github.com/bcrypt-ruby/bcrypt-ruby/blob/master/ext/mri/crypt_blowfish.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Beerware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Beerware.json", + "referenceNumber": 616, + "name": "Beerware License", + "licenseId": "Beerware", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Charter.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Charter.json", + "referenceNumber": 455, + "name": "Bitstream Charter Font License", + "licenseId": "Bitstream-Charter", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Charter#License_Text", + "https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Bitstream-Vera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Bitstream-Vera.json", + "referenceNumber": 370, + "name": "Bitstream Vera Font License", + "licenseId": "Bitstream-Vera", + "seeAlso": [ + "https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/", + "https://docubrain.com/sites/default/files/licenses/bitstream-vera.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.0.json", + "referenceNumber": 106, + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "seeAlso": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BitTorrent-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BitTorrent-1.1.json", + "referenceNumber": 541, + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/blessing.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/blessing.json", + "referenceNumber": 359, + "name": "SQLite Blessing", + "licenseId": "blessing", + "seeAlso": [ + "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", + "https://sqlite.org/src/artifact/df5091916dbb40e6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BlueOak-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BlueOak-1.0.0.json", + "referenceNumber": 606, + "name": "Blue Oak Model License 1.0.0", + "licenseId": "BlueOak-1.0.0", + "seeAlso": [ + "https://blueoakcouncil.org/license/1.0.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Boehm-GC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Boehm-GC.json", + "referenceNumber": 127, + "name": "Boehm-Demers-Weiser GC License", + "licenseId": "Boehm-GC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)", + "https://github.com/uim/libgcroots/blob/master/COPYING", + "https://github.com/ivmai/libatomic_ops/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Borceux.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Borceux.json", + "referenceNumber": 571, + "name": "Borceux license", + "licenseId": "Borceux", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Borceux" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-2-Clause.json", + "referenceNumber": 416, + "name": "Brian Gladman 2-Clause License", + "licenseId": "Brian-Gladman-2-Clause", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L140-L156", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Brian-Gladman-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Brian-Gladman-3-Clause.json", + "referenceNumber": 290, + "name": "Brian Gladman 3-Clause License", + "licenseId": "Brian-Gladman-3-Clause", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-1-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-1-Clause.json", + "referenceNumber": 419, + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "seeAlso": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause.json", + "referenceNumber": 229, + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-2-Clause" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Darwin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Darwin.json", + "referenceNumber": 296, + "name": "BSD 2-Clause - Ian Darwin variant", + "licenseId": "BSD-2-Clause-Darwin", + "seeAlso": [ + "https://github.com/file/file/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-first-lines.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-first-lines.json", + "referenceNumber": 217, + "name": "BSD 2-Clause - first lines requirement", + "licenseId": "BSD-2-Clause-first-lines", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L664-L690", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "referenceNumber": 564, + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json", + "referenceNumber": 376, + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", + "seeAlso": [ + "http://www.netbsd.org/about/redistribution.html#default" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Patent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Patent.json", + "referenceNumber": 4, + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", + "seeAlso": [ + "https://opensource.org/licenses/BSDplusPatent" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-2-Clause-Views.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-2-Clause-Views.json", + "referenceNumber": 514, + "name": "BSD 2-Clause with views sentence", + "licenseId": "BSD-2-Clause-Views", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html", + "https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh", + "https://github.com/protegeproject/protege/blob/master/license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause.json", + "referenceNumber": 584, + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-3-Clause", + "https://www.eclipse.org/org/documents/edl-v10.php" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-acpica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-acpica.json", + "referenceNumber": 341, + "name": "BSD 3-Clause acpica variant", + "licenseId": "BSD-3-Clause-acpica", + "seeAlso": [ + "https://github.com/acpica/acpica/blob/master/source/common/acfileio.c#L119" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Attribution.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Attribution.json", + "referenceNumber": 71, + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Clear.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Clear.json", + "referenceNumber": 253, + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "seeAlso": [ + "http://labs.metacarta.com/license-explanation.html#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-flex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-flex.json", + "referenceNumber": 52, + "name": "BSD 3-Clause Flex variant", + "licenseId": "BSD-3-Clause-flex", + "seeAlso": [ + "https://github.com/westes/flex/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-HP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-HP.json", + "referenceNumber": 215, + "name": "Hewlett-Packard BSD variant license", + "licenseId": "BSD-3-Clause-HP", + "seeAlso": [ + "https://github.com/zdohnal/hplip/blob/master/COPYING#L939" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-LBNL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-LBNL.json", + "referenceNumber": 301, + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Modification.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Modification.json", + "referenceNumber": 47, + "name": "BSD 3-Clause Modification", + "licenseId": "BSD-3-Clause-Modification", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json", + "referenceNumber": 615, + "name": "BSD 3-Clause No Military License", + "licenseId": "BSD-3-Clause-No-Military-License", + "seeAlso": [ + "https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE", + "https://github.com/greymass/swift-eosio/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", + "referenceNumber": 647, + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", + "seeAlso": [ + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", + "referenceNumber": 377, + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "seeAlso": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", + "referenceNumber": 54, + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "seeAlso": [ + "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", + "referenceNumber": 633, + "name": "BSD 3-Clause Open MPI variant", + "licenseId": "BSD-3-Clause-Open-MPI", + "seeAlso": [ + "https://www.open-mpi.org/community/license.php", + "http://www.netlib.org/lapack/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-3-Clause-Sun.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-3-Clause-Sun.json", + "referenceNumber": 270, + "name": "BSD 3-Clause Sun Microsystems", + "licenseId": "BSD-3-Clause-Sun", + "seeAlso": [ + "https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause.json", + "referenceNumber": 470, + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "licenseId": "BSD-4-Clause", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BSD_4Clause" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-Shortened.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-Shortened.json", + "referenceNumber": 220, + "name": "BSD 4 Clause Shortened", + "licenseId": "BSD-4-Clause-Shortened", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4-Clause-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4-Clause-UC.json", + "referenceNumber": 175, + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "seeAlso": [ + "http://www.freebsd.org/copyright/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3RENO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3RENO.json", + "referenceNumber": 361, + "name": "BSD 4.3 RENO License", + "licenseId": "BSD-4.3RENO", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dlibiberty/strcasecmp.c;h\u003d131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb\u003dHEAD", + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-4.3TAHOE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-4.3TAHOE.json", + "referenceNumber": 46, + "name": "BSD 4.3 TAHOE License", + "licenseId": "BSD-4.3TAHOE", + "seeAlso": [ + "https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15", + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n1788" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json", + "referenceNumber": 297, + "name": "BSD Advertising Acknowledgement License", + "licenseId": "BSD-Advertising-Acknowledgement", + "seeAlso": [ + "https://github.com/python-excel/xlrd/blob/master/LICENSE#L33" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json", + "referenceNumber": 86, + "name": "BSD with Attribution and HPND disclaimer", + "licenseId": "BSD-Attribution-HPND-disclaimer", + "seeAlso": [ + "https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Inferno-Nettverk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Inferno-Nettverk.json", + "referenceNumber": 89, + "name": "BSD-Inferno-Nettverk", + "licenseId": "BSD-Inferno-Nettverk", + "seeAlso": [ + "https://www.inet.no/dante/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Protection.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Protection.json", + "referenceNumber": 394, + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Source-beginning-file.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Source-beginning-file.json", + "referenceNumber": 378, + "name": "BSD Source Code Attribution - beginning of file variant", + "licenseId": "BSD-Source-beginning-file", + "seeAlso": [ + "https://github.com/lattera/freebsd/blob/master/sys/cam/cam.c#L4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Source-Code.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Source-Code.json", + "referenceNumber": 605, + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", + "seeAlso": [ + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics.json", + "referenceNumber": 327, + "name": "Systemics BSD variant license", + "licenseId": "BSD-Systemics", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSD-Systemics-W3Works.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSD-Systemics-W3Works.json", + "referenceNumber": 427, + "name": "Systemics W3Works BSD variant license", + "licenseId": "BSD-Systemics-W3Works", + "seeAlso": [ + "https://metacpan.org/release/DPARIS/Crypt-Blowfish-2.14/source/COPYRIGHT#L7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/BSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BSL-1.0.json", + "referenceNumber": 334, + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "seeAlso": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/BUSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/BUSL-1.1.json", + "referenceNumber": 285, + "name": "Business Source License 1.1", + "licenseId": "BUSL-1.1", + "seeAlso": [ + "https://mariadb.com/bsl11/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.5.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.5.json", + "referenceNumber": 574, + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "seeAlso": [ + "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/bzip2-1.0.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/bzip2-1.0.6.json", + "referenceNumber": 534, + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", + "https://sourceware.org/cgit/valgrind/tree/mpi/libmpiwrap.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/C-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/C-UDA-1.0.json", + "referenceNumber": 162, + "name": "Computational Use of Data Agreement v1.0", + "licenseId": "C-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md", + "https://cdla.dev/computational-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0.json", + "referenceNumber": 99, + "name": "Cryptographic Autonomy License 1.0", + "licenseId": "CAL-1.0", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", + "referenceNumber": 333, + "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + "licenseId": "CAL-1.0-Combined-Work-Exception", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Caldera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera.json", + "referenceNumber": 528, + "name": "Caldera License", + "licenseId": "Caldera", + "seeAlso": [ + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Caldera-no-preamble.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Caldera-no-preamble.json", + "referenceNumber": 233, + "name": "Caldera License (without preamble)", + "licenseId": "Caldera-no-preamble", + "seeAlso": [ + "https://github.com/apache/apr/blob/trunk/LICENSE#L298C6-L298C29" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Catharon.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Catharon.json", + "referenceNumber": 337, + "name": "Catharon License", + "licenseId": "Catharon", + "seeAlso": [ + "https://github.com/scummvm/scummvm/blob/v2.8.0/LICENSES/CatharonLicense.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CATOSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CATOSL-1.1.json", + "referenceNumber": 134, + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/CATOSL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-1.0.json", + "referenceNumber": 415, + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.0.json", + "referenceNumber": 428, + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5.json", + "referenceNumber": 573, + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-2.5-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-2.5-AU.json", + "referenceNumber": 388, + "name": "Creative Commons Attribution 2.5 Australia", + "licenseId": "CC-BY-2.5-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0.json", + "referenceNumber": 132, + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AT.json", + "referenceNumber": 25, + "name": "Creative Commons Attribution 3.0 Austria", + "licenseId": "CC-BY-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-AU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-AU.json", + "referenceNumber": 392, + "name": "Creative Commons Attribution 3.0 Australia", + "licenseId": "CC-BY-3.0-AU", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/au/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-DE.json", + "referenceNumber": 21, + "name": "Creative Commons Attribution 3.0 Germany", + "licenseId": "CC-BY-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-IGO.json", + "referenceNumber": 596, + "name": "Creative Commons Attribution 3.0 IGO", + "licenseId": "CC-BY-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-NL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-NL.json", + "referenceNumber": 157, + "name": "Creative Commons Attribution 3.0 Netherlands", + "licenseId": "CC-BY-3.0-NL", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/nl/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-3.0-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-3.0-US.json", + "referenceNumber": 395, + "name": "Creative Commons Attribution 3.0 United States", + "licenseId": "CC-BY-3.0-US", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/us/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-4.0.json", + "referenceNumber": 435, + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-1.0.json", + "referenceNumber": 641, + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.0.json", + "referenceNumber": 91, + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "licenseId": "CC-BY-NC-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-2.5.json", + "referenceNumber": 465, + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0.json", + "referenceNumber": 234, + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "licenseId": "CC-BY-NC-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json", + "referenceNumber": 354, + "name": "Creative Commons Attribution Non Commercial 3.0 Germany", + "licenseId": "CC-BY-NC-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-4.0.json", + "referenceNumber": 53, + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json", + "referenceNumber": 88, + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "referenceNumber": 426, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json", + "referenceNumber": 441, + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json", + "referenceNumber": 304, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json", + "referenceNumber": 121, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", + "licenseId": "CC-BY-NC-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json", + "referenceNumber": 171, + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", + "licenseId": "CC-BY-NC-ND-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json", + "referenceNumber": 183, + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json", + "referenceNumber": 501, + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json", + "referenceNumber": 358, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json", + "referenceNumber": 260, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany", + "licenseId": "CC-BY-NC-SA-2.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json", + "referenceNumber": 158, + "name": "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", + "licenseId": "CC-BY-NC-SA-2.0-FR", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json", + "referenceNumber": 33, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-NC-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json", + "referenceNumber": 222, + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json", + "referenceNumber": 255, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json", + "referenceNumber": 525, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", + "licenseId": "CC-BY-NC-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json", + "referenceNumber": 244, + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", + "licenseId": "CC-BY-NC-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json", + "referenceNumber": 513, + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-1.0.json", + "referenceNumber": 474, + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "licenseId": "CC-BY-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.0.json", + "referenceNumber": 356, + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-2.5.json", + "referenceNumber": 259, + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0.json", + "referenceNumber": 527, + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json", + "referenceNumber": 214, + "name": "Creative Commons Attribution No Derivatives 3.0 Germany", + "licenseId": "CC-BY-ND-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-ND-4.0.json", + "referenceNumber": 481, + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-1.0.json", + "referenceNumber": 588, + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0.json", + "referenceNumber": 180, + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json", + "referenceNumber": 385, + "name": "Creative Commons Attribution Share Alike 2.0 England and Wales", + "licenseId": "CC-BY-SA-2.0-UK", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json", + "referenceNumber": 17, + "name": "Creative Commons Attribution Share Alike 2.1 Japan", + "licenseId": "CC-BY-SA-2.1-JP", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-2.5.json", + "referenceNumber": 607, + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0.json", + "referenceNumber": 26, + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json", + "referenceNumber": 398, + "name": "Creative Commons Attribution Share Alike 3.0 Austria", + "licenseId": "CC-BY-SA-3.0-AT", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/at/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json", + "referenceNumber": 120, + "name": "Creative Commons Attribution Share Alike 3.0 Germany", + "licenseId": "CC-BY-SA-3.0-DE", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/de/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json", + "referenceNumber": 519, + "name": "Creative Commons Attribution-ShareAlike 3.0 IGO", + "licenseId": "CC-BY-SA-3.0-IGO", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/igo/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC-BY-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-BY-SA-4.0.json", + "referenceNumber": 13, + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/4.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CC-PDDC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC-PDDC.json", + "referenceNumber": 169, + "name": "Creative Commons Public Domain Dedication and Certification", + "licenseId": "CC-PDDC", + "seeAlso": [ + "https://creativecommons.org/licenses/publicdomain/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CC0-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CC0-1.0.json", + "referenceNumber": 491, + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", + "seeAlso": [ + "https://creativecommons.org/publicdomain/zero/1.0/legalcode" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.0.json", + "referenceNumber": 185, + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/cddl1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CDDL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDDL-1.1.json", + "referenceNumber": 476, + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "seeAlso": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDL-1.0.json", + "referenceNumber": 305, + "name": "Common Documentation License 1.0", + "licenseId": "CDL-1.0", + "seeAlso": [ + "http://www.opensource.apple.com/cdl/", + "https://fedoraproject.org/wiki/Licensing/Common_Documentation_License", + "https://www.gnu.org/licenses/license-list.html#ACDL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-1.0.json", + "referenceNumber": 386, + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "seeAlso": [ + "https://cdla.io/permissive-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Permissive-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Permissive-2.0.json", + "referenceNumber": 590, + "name": "Community Data License Agreement Permissive 2.0", + "licenseId": "CDLA-Permissive-2.0", + "seeAlso": [ + "https://cdla.dev/permissive-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CDLA-Sharing-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CDLA-Sharing-1.0.json", + "referenceNumber": 190, + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "seeAlso": [ + "https://cdla.io/sharing-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.0.json", + "referenceNumber": 625, + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-1.1.json", + "referenceNumber": 326, + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.0.json", + "referenceNumber": 463, + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-2.1.json", + "referenceNumber": 170, + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-B.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-B.json", + "referenceNumber": 196, + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CECILL-C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CECILL-C.json", + "referenceNumber": 178, + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.1.json", + "referenceNumber": 148, + "name": "CERN Open Hardware Licence v1.1", + "licenseId": "CERN-OHL-1.1", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-1.2.json", + "referenceNumber": 651, + "name": "CERN Open Hardware Licence v1.2", + "licenseId": "CERN-OHL-1.2", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-P-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-P-2.0.json", + "referenceNumber": 543, + "name": "CERN Open Hardware Licence Version 2 - Permissive", + "licenseId": "CERN-OHL-P-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-S-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-S-2.0.json", + "referenceNumber": 396, + "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + "licenseId": "CERN-OHL-S-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CERN-OHL-W-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CERN-OHL-W-2.0.json", + "referenceNumber": 614, + "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + "licenseId": "CERN-OHL-W-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CFITSIO.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CFITSIO.json", + "referenceNumber": 568, + "name": "CFITSIO License", + "licenseId": "CFITSIO", + "seeAlso": [ + "https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html", + "https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/check-cvs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/check-cvs.json", + "referenceNumber": 324, + "name": "check-cvs License", + "licenseId": "check-cvs", + "seeAlso": [ + "http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision\u003d1.1.4.3\u0026view\u003dmarkup\u0026pathrev\u003dcvs1-11-23#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/checkmk.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/checkmk.json", + "referenceNumber": 464, + "name": "Checkmk License", + "licenseId": "checkmk", + "seeAlso": [ + "https://github.com/libcheck/check/blob/master/checkmk/checkmk.in" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ClArtistic.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ClArtistic.json", + "referenceNumber": 230, + "name": "Clarified Artistic License", + "licenseId": "ClArtistic", + "seeAlso": [ + "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "http://www.ncftp.com/ncftp/doc/LICENSE.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Clips.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Clips.json", + "referenceNumber": 424, + "name": "Clips License", + "licenseId": "Clips", + "seeAlso": [ + "https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach.json", + "referenceNumber": 73, + "name": "CMU Mach License", + "licenseId": "CMU-Mach", + "seeAlso": [ + "https://www.cs.cmu.edu/~410/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CMU-Mach-nodoc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CMU-Mach-nodoc.json", + "referenceNumber": 8, + "name": "CMU Mach - no notices-in-documentation variant", + "licenseId": "CMU-Mach-nodoc", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L718-L728", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Jython.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Jython.json", + "referenceNumber": 293, + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "seeAlso": [ + "http://www.jython.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python.json", + "referenceNumber": 402, + "name": "CNRI Python License", + "licenseId": "CNRI-Python", + "seeAlso": [ + "https://opensource.org/licenses/CNRI-Python" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", + "referenceNumber": 224, + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "seeAlso": [ + "http://www.python.org/download/releases/1.6.1/download_win/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/COIL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/COIL-1.0.json", + "referenceNumber": 345, + "name": "Copyfree Open Innovation License", + "licenseId": "COIL-1.0", + "seeAlso": [ + "https://coil.apotheon.org/plaintext/01.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Community-Spec-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Community-Spec-1.0.json", + "referenceNumber": 56, + "name": "Community Specification License 1.0", + "licenseId": "Community-Spec-1.0", + "seeAlso": [ + "https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Condor-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Condor-1.1.json", + "referenceNumber": 77, + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", + "seeAlso": [ + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.0.json", + "referenceNumber": 322, + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/copyleft-next-0.3.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/copyleft-next-0.3.1.json", + "referenceNumber": 403, + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Cornell-Lossless-JPEG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cornell-Lossless-JPEG.json", + "referenceNumber": 98, + "name": "Cornell Lossless JPEG License", + "licenseId": "Cornell-Lossless-JPEG", + "seeAlso": [ + "https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16", + "https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h", + "https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CPAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPAL-1.0.json", + "referenceNumber": 548, + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPAL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPL-1.0.json", + "referenceNumber": 114, + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/CPOL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CPOL-1.02.json", + "referenceNumber": 6, + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "seeAlso": [ + "http://www.codeproject.com/info/cpol10.aspx" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Cronyx.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cronyx.json", + "referenceNumber": 649, + "name": "Cronyx License", + "licenseId": "Cronyx", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Crossword.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Crossword.json", + "referenceNumber": 593, + "name": "Crossword License", + "licenseId": "Crossword", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Crossword" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CrystalStacker.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CrystalStacker.json", + "referenceNumber": 241, + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/CUA-OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/CUA-OPL-1.0.json", + "referenceNumber": 409, + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CUA-OPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Cube.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Cube.json", + "referenceNumber": 141, + "name": "Cube License", + "licenseId": "Cube", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Cube" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/curl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/curl.json", + "referenceNumber": 602, + "name": "curl License", + "licenseId": "curl", + "seeAlso": [ + "https://github.com/bagder/curl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/cve-tou.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/cve-tou.json", + "referenceNumber": 656, + "name": "Common Vulnerability Enumeration ToU License", + "licenseId": "cve-tou", + "seeAlso": [ + "https://www.cve.org/Legal/TermsOfUse" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/D-FSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/D-FSL-1.0.json", + "referenceNumber": 116, + "name": "Deutsche Freie Software Lizenz", + "licenseId": "D-FSL-1.0", + "seeAlso": [ + "http://www.dipp.nrw.de/d-fsl/lizenzen/", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DEC-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DEC-3-Clause.json", + "referenceNumber": 512, + "name": "DEC 3-Clause License", + "licenseId": "DEC-3-Clause", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L239" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/diffmark.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/diffmark.json", + "referenceNumber": 480, + "name": "diffmark license", + "licenseId": "diffmark", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/diffmark" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-BY-2.0.json", + "referenceNumber": 84, + "name": "Data licence Germany – attribution – version 2.0", + "licenseId": "DL-DE-BY-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/by-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DL-DE-ZERO-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DL-DE-ZERO-2.0.json", + "referenceNumber": 522, + "name": "Data licence Germany – zero – version 2.0", + "licenseId": "DL-DE-ZERO-2.0", + "seeAlso": [ + "https://www.govdata.de/dl-de/zero-2-0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DOC.json", + "referenceNumber": 646, + "name": "DOC License", + "licenseId": "DOC", + "seeAlso": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-Schema.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-Schema.json", + "referenceNumber": 153, + "name": "DocBook Schema License", + "licenseId": "DocBook-Schema", + "seeAlso": [ + "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/assembly/schema/docbook51b7.rnc" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DocBook-XML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DocBook-XML.json", + "referenceNumber": 493, + "name": "DocBook XML License", + "licenseId": "DocBook-XML", + "seeAlso": [ + "https://github.com/docbook/xslt10-stylesheets/blob/efd62655c11cc8773708df7a843613fa1e932bf8/xsl/COPYING#L27" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Dotseqn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Dotseqn.json", + "referenceNumber": 533, + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.0.json", + "referenceNumber": 410, + "name": "Detection Rule License 1.0", + "licenseId": "DRL-1.0", + "seeAlso": [ + "https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DRL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DRL-1.1.json", + "referenceNumber": 268, + "name": "Detection Rule License 1.1", + "licenseId": "DRL-1.1", + "seeAlso": [ + "https://github.com/SigmaHQ/Detection-Rule-License/blob/6ec7fbde6101d101b5b5d1fcb8f9b69fbc76c04a/LICENSE.Detection.Rules.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/DSDP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/DSDP.json", + "referenceNumber": 164, + "name": "DSDP License", + "licenseId": "DSDP", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/DSDP" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dtoa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dtoa.json", + "referenceNumber": 263, + "name": "David M. Gay dtoa License", + "licenseId": "dtoa", + "seeAlso": [ + "https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c", + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/stdlib/mprec.h;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/dvipdfm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/dvipdfm.json", + "referenceNumber": 61, + "name": "dvipdfm License", + "licenseId": "dvipdfm", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/dvipdfm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ECL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-1.0.json", + "referenceNumber": 264, + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ECL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ECL-2.0.json", + "referenceNumber": 363, + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eCos-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/eCos-2.0.json", + "referenceNumber": 298, + "name": "eCos license version 2.0", + "licenseId": "eCos-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/ecos-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-1.0.json", + "referenceNumber": 137, + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EFL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EFL-2.0.json", + "referenceNumber": 447, + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/eGenix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/eGenix.json", + "referenceNumber": 348, + "name": "eGenix.com Public License 1.1.0", + "licenseId": "eGenix", + "seeAlso": [ + "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Elastic-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Elastic-2.0.json", + "referenceNumber": 404, + "name": "Elastic License 2.0", + "licenseId": "Elastic-2.0", + "seeAlso": [ + "https://www.elastic.co/licensing/elastic-license", + "https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Entessa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Entessa.json", + "referenceNumber": 198, + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "seeAlso": [ + "https://opensource.org/licenses/Entessa" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/EPICS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPICS.json", + "referenceNumber": 532, + "name": "EPICS Open License", + "licenseId": "EPICS", + "seeAlso": [ + "https://epics.anl.gov/license/open.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-1.0.json", + "referenceNumber": 115, + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "seeAlso": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EPL-2.0.json", + "referenceNumber": 282, + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", + "seeAlso": [ + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ErlPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ErlPL-1.1.json", + "referenceNumber": 530, + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "seeAlso": [ + "http://www.erlang.org/EPLICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/etalab-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/etalab-2.0.json", + "referenceNumber": 129, + "name": "Etalab Open License 2.0", + "licenseId": "etalab-2.0", + "seeAlso": [ + "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUDatagrid.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUDatagrid.json", + "referenceNumber": 393, + "name": "EU DataGrid Software License", + "licenseId": "EUDatagrid", + "seeAlso": [ + "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "https://opensource.org/licenses/EUDatagrid" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.0.json", + "referenceNumber": 389, + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "seeAlso": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.1.json", + "referenceNumber": 503, + "name": "European Union Public License 1.1", + "licenseId": "EUPL-1.1", + "seeAlso": [ + "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", + "https://opensource.org/licenses/EUPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/EUPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/EUPL-1.2.json", + "referenceNumber": 12, + "name": "European Union Public License 1.2", + "licenseId": "EUPL-1.2", + "seeAlso": [ + "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt", + "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", + "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863", + "https://opensource.org/licenses/EUPL-1.2" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Eurosym.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Eurosym.json", + "referenceNumber": 621, + "name": "Eurosym License", + "licenseId": "Eurosym", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Fair.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Fair.json", + "referenceNumber": 258, + "name": "Fair License", + "licenseId": "Fair", + "seeAlso": [ + "https://web.archive.org/web/20150926120323/http://fairlicense.org/", + "https://opensource.org/licenses/Fair" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FBM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FBM.json", + "referenceNumber": 626, + "name": "Fuzzy Bitmap License", + "licenseId": "FBM", + "seeAlso": [ + "https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FDK-AAC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FDK-AAC.json", + "referenceNumber": 344, + "name": "Fraunhofer FDK AAC Codec Library", + "licenseId": "FDK-AAC", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FDK-AAC", + "https://directory.fsf.org/wiki/License:Fdk" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ferguson-Twofish.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ferguson-Twofish.json", + "referenceNumber": 362, + "name": "Ferguson Twofish License", + "licenseId": "Ferguson-Twofish", + "seeAlso": [ + "https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Frameworx-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Frameworx-1.0.json", + "referenceNumber": 188, + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Frameworx-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/FreeBSD-DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeBSD-DOC.json", + "referenceNumber": 151, + "name": "FreeBSD Documentation License", + "licenseId": "FreeBSD-DOC", + "seeAlso": [ + "https://www.freebsd.org/copyright/freebsd-doc-license/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FreeImage.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FreeImage.json", + "referenceNumber": 232, + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "seeAlso": [ + "http://freeimage.sourceforge.net/freeimage-license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFAP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP.json", + "referenceNumber": 436, + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "seeAlso": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFAP-no-warranty-disclaimer.json", + "referenceNumber": 547, + "name": "FSF All Permissive License (without Warranty)", + "licenseId": "FSFAP-no-warranty-disclaimer", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/wget.git/tree/util/trunc.c?h\u003dv1.21.3\u0026id\u003d40747a11e44ced5a8ac628a41f879ced3e2ebce9#n6" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFUL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFUL.json", + "referenceNumber": 2, + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLR.json", + "referenceNumber": 508, + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FSFULLRWD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FSFULLRWD.json", + "referenceNumber": 640, + "name": "FSF Unlimited License (With License Retention and Warranty Disclaimer)", + "licenseId": "FSFULLRWD", + "seeAlso": [ + "https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/FTL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/FTL.json", + "referenceNumber": 249, + "name": "Freetype Project License", + "licenseId": "FTL", + "seeAlso": [ + "http://freetype.fis.uniroma2.it/FTL.TXT", + "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT", + "http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Furuseth.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Furuseth.json", + "referenceNumber": 273, + "name": "Furuseth License", + "licenseId": "Furuseth", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type\u003dheads#L39-51" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/fwlw.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/fwlw.json", + "referenceNumber": 50, + "name": "fwlw License", + "licenseId": "fwlw", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GCR-docs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GCR-docs.json", + "referenceNumber": 272, + "name": "Gnome GCR Documentation License", + "licenseId": "GCR-docs", + "seeAlso": [ + "https://github.com/GNOME/gcr/blob/master/docs/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GD.json", + "referenceNumber": 624, + "name": "GD License", + "licenseId": "GD", + "seeAlso": [ + "https://libgd.github.io/manuals/2.3.0/files/license-txt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1.json", + "referenceNumber": 177, + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-only.json", + "referenceNumber": 216, + "name": "GNU Free Documentation License v1.1 only - invariants", + "licenseId": "GFDL-1.1-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json", + "referenceNumber": 57, + "name": "GNU Free Documentation License v1.1 or later - invariants", + "licenseId": "GFDL-1.1-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json", + "referenceNumber": 38, + "name": "GNU Free Documentation License v1.1 only - no invariants", + "licenseId": "GFDL-1.1-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json", + "referenceNumber": 289, + "name": "GNU Free Documentation License v1.1 or later - no invariants", + "licenseId": "GFDL-1.1-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-only.json", + "referenceNumber": 654, + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.1-or-later.json", + "referenceNumber": 569, + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2.json", + "referenceNumber": 235, + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-only.json", + "referenceNumber": 461, + "name": "GNU Free Documentation License v1.2 only - invariants", + "licenseId": "GFDL-1.2-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json", + "referenceNumber": 391, + "name": "GNU Free Documentation License v1.2 or later - invariants", + "licenseId": "GFDL-1.2-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json", + "referenceNumber": 187, + "name": "GNU Free Documentation License v1.2 only - no invariants", + "licenseId": "GFDL-1.2-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json", + "referenceNumber": 240, + "name": "GNU Free Documentation License v1.2 or later - no invariants", + "licenseId": "GFDL-1.2-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-only.json", + "referenceNumber": 302, + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.2-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.2-or-later.json", + "referenceNumber": 562, + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3.json", + "referenceNumber": 60, + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-only.json", + "referenceNumber": 184, + "name": "GNU Free Documentation License v1.3 only - invariants", + "licenseId": "GFDL-1.3-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json", + "referenceNumber": 346, + "name": "GNU Free Documentation License v1.3 or later - invariants", + "licenseId": "GFDL-1.3-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json", + "referenceNumber": 59, + "name": "GNU Free Documentation License v1.3 only - no invariants", + "licenseId": "GFDL-1.3-no-invariants-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json", + "referenceNumber": 281, + "name": "GNU Free Documentation License v1.3 or later - no invariants", + "licenseId": "GFDL-1.3-no-invariants-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-only.json", + "referenceNumber": 642, + "name": "GNU Free Documentation License v1.3 only", + "licenseId": "GFDL-1.3-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GFDL-1.3-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GFDL-1.3-or-later.json", + "referenceNumber": 494, + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Giftware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Giftware.json", + "referenceNumber": 618, + "name": "Giftware License", + "licenseId": "Giftware", + "seeAlso": [ + "http://liballeg.org/license.html#allegro-4-the-giftware-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GL2PS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GL2PS.json", + "referenceNumber": 231, + "name": "GL2PS License", + "licenseId": "GL2PS", + "seeAlso": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glide.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glide.json", + "referenceNumber": 620, + "name": "3dfx Glide License", + "licenseId": "Glide", + "seeAlso": [ + "http://www.users.on.net/~triforce/glidexp/COPYING.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Glulxe.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Glulxe.json", + "referenceNumber": 429, + "name": "Glulxe License", + "licenseId": "Glulxe", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GLWTPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GLWTPL.json", + "referenceNumber": 154, + "name": "Good Luck With That Public License", + "licenseId": "GLWTPL", + "seeAlso": [ + "https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gnuplot.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gnuplot.json", + "referenceNumber": 271, + "name": "gnuplot License", + "licenseId": "gnuplot", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0.json", + "referenceNumber": 365, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0+.json", + "referenceNumber": 66, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-only.json", + "referenceNumber": 563, + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-1.0-or-later.json", + "referenceNumber": 558, + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0.json", + "referenceNumber": 613, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0+.json", + "referenceNumber": 83, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-only.json", + "referenceNumber": 483, + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-or-later.json", + "referenceNumber": 349, + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", + "referenceNumber": 475, + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json", + "referenceNumber": 492, + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", + "referenceNumber": 144, + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "seeAlso": [ + "https://www.gnu.org/software/classpath/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-font-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-font-exception.json", + "referenceNumber": 579, + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", + "referenceNumber": 449, + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0.json", + "referenceNumber": 434, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0+.json", + "referenceNumber": 586, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-only.json", + "referenceNumber": 42, + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-or-later.json", + "referenceNumber": 269, + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", + "referenceNumber": 200, + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", + "referenceNumber": 546, + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Graphics-Gems.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Graphics-Gems.json", + "referenceNumber": 437, + "name": "Graphics Gems License", + "licenseId": "Graphics-Gems", + "seeAlso": [ + "https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gSOAP-1.3b.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gSOAP-1.3b.json", + "referenceNumber": 658, + "name": "gSOAP Public License v1.3b", + "licenseId": "gSOAP-1.3b", + "seeAlso": [ + "http://www.cs.fsu.edu/~engelen/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/gtkbook.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/gtkbook.json", + "referenceNumber": 397, + "name": "gtkbook License", + "licenseId": "gtkbook", + "seeAlso": [ + "https://github.com/slogan621/gtkbook", + "https://github.com/oetiker/rrdtool-1.x/blob/master/src/plbasename.c#L8-L11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Gutmann.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Gutmann.json", + "referenceNumber": 103, + "name": "Gutmann License", + "licenseId": "Gutmann", + "seeAlso": [ + "https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HaskellReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HaskellReport.json", + "referenceNumber": 357, + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/hdparm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/hdparm.json", + "referenceNumber": 351, + "name": "hdparm License", + "licenseId": "hdparm", + "seeAlso": [ + "https://github.com/Distrotech/hdparm/blob/4517550db29a91420fb2b020349523b1b4512df2/LICENSE.TXT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HIDAPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HIDAPI.json", + "referenceNumber": 318, + "name": "HIDAPI License", + "licenseId": "HIDAPI", + "seeAlso": [ + "https://github.com/signal11/hidapi/blob/master/LICENSE-orig.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Hippocratic-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Hippocratic-2.1.json", + "referenceNumber": 425, + "name": "Hippocratic License 2.1", + "licenseId": "Hippocratic-2.1", + "seeAlso": [ + "https://firstdonoharm.dev/version/2/1/license.html", + "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HP-1986.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1986.json", + "referenceNumber": 477, + "name": "Hewlett-Packard 1986 License", + "licenseId": "HP-1986", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/hppa/memchr.S;h\u003d1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb\u003dHEAD#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HP-1989.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HP-1989.json", + "referenceNumber": 653, + "name": "Hewlett-Packard 1989 License", + "licenseId": "HP-1989", + "seeAlso": [ + "https://github.com/bleargh45/Data-UUID/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND.json", + "referenceNumber": 75, + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "seeAlso": [ + "https://opensource.org/licenses/HPND", + "http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/HPND-DEC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-DEC.json", + "referenceNumber": 597, + "name": "Historical Permission Notice and Disclaimer - DEC variant", + "licenseId": "HPND-DEC", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type\u003dheads#L69" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-doc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc.json", + "referenceNumber": 384, + "name": "Historical Permission Notice and Disclaimer - documentation variant", + "licenseId": "HPND-doc", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L185-197", + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L70-77" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-doc-sell.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-doc-sell.json", + "referenceNumber": 648, + "name": "Historical Permission Notice and Disclaimer - documentation sell variant", + "licenseId": "HPND-doc-sell", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type\u003dheads#L108-117", + "https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type\u003dheads#L153-162" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US.json", + "referenceNumber": 551, + "name": "HPND with US Government export control warning", + "licenseId": "HPND-export-US", + "seeAlso": [ + "https://www.kermitproject.org/ck90.html#source" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-acknowledgement.json", + "referenceNumber": 661, + "name": "HPND with US Government export control warning and acknowledgment", + "licenseId": "HPND-export-US-acknowledgement", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L831-L852", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export-US-modify.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export-US-modify.json", + "referenceNumber": 119, + "name": "HPND with US Government export control warning and modification rqmt", + "licenseId": "HPND-export-US-modify", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182", + "https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-export2-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-export2-US.json", + "referenceNumber": 450, + "name": "HPND with US Government export control and 2 disclaimers", + "licenseId": "HPND-export2-US", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L111-L133", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Fenneberg-Livingston.json", + "referenceNumber": 643, + "name": "Historical Permission Notice and Disclaimer - Fenneberg-Livingston variant", + "licenseId": "HPND-Fenneberg-Livingston", + "seeAlso": [ + "https://github.com/FreeRADIUS/freeradius-client/blob/master/COPYRIGHT#L32", + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L34" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-INRIA-IMAG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-INRIA-IMAG.json", + "referenceNumber": 583, + "name": "Historical Permission Notice and Disclaimer - INRIA-IMAG variant", + "licenseId": "HPND-INRIA-IMAG", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/ipv6cp.c#L75-L83" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Intel.json", + "referenceNumber": 20, + "name": "Historical Permission Notice and Disclaimer - Intel variant", + "licenseId": "HPND-Intel", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/machine/i960/memcpy.S;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Kevlin-Henney.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Kevlin-Henney.json", + "referenceNumber": 637, + "name": "Historical Permission Notice and Disclaimer - Kevlin Henney variant", + "licenseId": "HPND-Kevlin-Henney", + "seeAlso": [ + "https://github.com/mruby/mruby/blob/83d12f8d52522cdb7c8cc46fad34821359f453e6/mrbgems/mruby-dir/src/Win/dirent.c#L127-L140" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Markus-Kuhn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Markus-Kuhn.json", + "referenceNumber": 172, + "name": "Historical Permission Notice and Disclaimer - Markus Kuhn variant", + "licenseId": "HPND-Markus-Kuhn", + "seeAlso": [ + "https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c", + "https://sourceware.org/git/?p\u003dbinutils-gdb.git;a\u003dblob;f\u003dreadline/readline/support/wcwidth.c;h\u003d0f5ec995796f4813abbcf4972aec0378ab74722a;hb\u003dHEAD#l55" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-merchantability-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-merchantability-variant.json", + "referenceNumber": 572, + "name": "Historical Permission Notice and Disclaimer - merchantability variant", + "licenseId": "HPND-merchantability-variant", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/misc/fini.c;hb\u003dHEAD" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-MIT-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-MIT-disclaimer.json", + "referenceNumber": 609, + "name": "Historical Permission Notice and Disclaimer with MIT disclaimer", + "licenseId": "HPND-MIT-disclaimer", + "seeAlso": [ + "https://metacpan.org/release/NLNETLABS/Net-DNS-SEC-1.22/source/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Netrek.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Netrek.json", + "referenceNumber": 126, + "name": "Historical Permission Notice and Disclaimer - Netrek variant", + "licenseId": "HPND-Netrek", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-Pbmplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-Pbmplus.json", + "referenceNumber": 242, + "name": "Historical Permission Notice and Disclaimer - Pbmplus variant", + "licenseId": "HPND-Pbmplus", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-MIT-disclaimer-xserver.json", + "referenceNumber": 160, + "name": "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer", + "licenseId": "HPND-sell-MIT-disclaimer-xserver", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/COPYING?ref_type\u003dheads#L1781" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-regexpr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-regexpr.json", + "referenceNumber": 44, + "name": "Historical Permission Notice and Disclaimer - sell regexpr variant", + "licenseId": "HPND-sell-regexpr", + "seeAlso": [ + "https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type\u003dheads#L245" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant.json", + "referenceNumber": 485, + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json", + "referenceNumber": 430, + "name": "HPND sell variant with MIT disclaimer", + "licenseId": "HPND-sell-variant-MIT-disclaimer", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer-rev.json", + "referenceNumber": 10, + "name": "HPND sell variant with MIT disclaimer - reverse", + "licenseId": "HPND-sell-variant-MIT-disclaimer-rev", + "seeAlso": [ + "https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/dynlist.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC.json", + "referenceNumber": 423, + "name": "Historical Permission Notice and Disclaimer - University of California variant", + "licenseId": "HPND-UC", + "seeAlso": [ + "https://core.tcl-lang.org/tk/file?name\u003dcompat/unistd.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HPND-UC-export-US.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HPND-UC-export-US.json", + "referenceNumber": 82, + "name": "Historical Permission Notice and Disclaimer - University of California, US export warning", + "licenseId": "HPND-UC-export-US", + "seeAlso": [ + "https://github.com/RTimothyEdwards/magic/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/HTMLTIDY.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/HTMLTIDY.json", + "referenceNumber": 439, + "name": "HTML Tidy License", + "licenseId": "HTMLTIDY", + "seeAlso": [ + "https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IBM-pibs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IBM-pibs.json", + "referenceNumber": 604, + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", + "seeAlso": [ + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ICU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ICU.json", + "referenceNumber": 375, + "name": "ICU License", + "licenseId": "ICU", + "seeAlso": [ + "http://source.icu-project.org/repos/icu/icu/trunk/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/IEC-Code-Components-EULA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IEC-Code-Components-EULA.json", + "referenceNumber": 18, + "name": "IEC Code Components End-user licence agreement", + "licenseId": "IEC-Code-Components-EULA", + "seeAlso": [ + "https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf", + "https://www.iec.ch/CCv1", + "https://www.iec.ch/copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IJG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG.json", + "referenceNumber": 374, + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "seeAlso": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/IJG-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IJG-short.json", + "referenceNumber": 152, + "name": "Independent JPEG Group License - short", + "licenseId": "IJG-short", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ImageMagick.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ImageMagick.json", + "referenceNumber": 608, + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "seeAlso": [ + "http://www.imagemagick.org/script/license.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/iMatix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/iMatix.json", + "referenceNumber": 645, + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "seeAlso": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Imlib2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Imlib2.json", + "referenceNumber": 96, + "name": "Imlib2 License", + "licenseId": "Imlib2", + "seeAlso": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Info-ZIP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Info-ZIP.json", + "referenceNumber": 451, + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "seeAlso": [ + "http://www.info-zip.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Inner-Net-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Inner-Net-2.0.json", + "referenceNumber": 58, + "name": "Inner Net License v2.0", + "licenseId": "Inner-Net-2.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Inner_Net_License", + "https://sourceware.org/git/?p\u003dglibc.git;a\u003dblob;f\u003dLICENSES;h\u003d530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb\u003dHEAD#l207" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Intel.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel.json", + "referenceNumber": 316, + "name": "Intel Open Source License", + "licenseId": "Intel", + "seeAlso": [ + "https://opensource.org/licenses/Intel" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Intel-ACPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Intel-ACPI.json", + "referenceNumber": 309, + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Interbase-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Interbase-1.0.json", + "referenceNumber": 665, + "name": "Interbase Public License v1.0", + "licenseId": "Interbase-1.0", + "seeAlso": [ + "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/IPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPA.json", + "referenceNumber": 237, + "name": "IPA Font License", + "licenseId": "IPA", + "seeAlso": [ + "https://opensource.org/licenses/IPA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/IPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/IPL-1.0.json", + "referenceNumber": 443, + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/IPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ISC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC.json", + "referenceNumber": 131, + "name": "ISC License", + "licenseId": "ISC", + "seeAlso": [ + "https://www.isc.org/licenses/", + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ISC-Veillard.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ISC-Veillard.json", + "referenceNumber": 554, + "name": "ISC Veillard variant", + "licenseId": "ISC-Veillard", + "seeAlso": [ + "https://raw.githubusercontent.com/GNOME/libxml2/4c2e7c651f6c2f0d1a74f350cbda95f7df3e7017/hash.c", + "https://github.com/GNOME/libxml2/blob/master/dict.c", + "https://sourceforge.net/p/ctrio/git/ci/master/tree/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Jam.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Jam.json", + "referenceNumber": 338, + "name": "Jam License", + "licenseId": "Jam", + "seeAlso": [ + "https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html", + "https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/JasPer-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JasPer-2.0.json", + "referenceNumber": 591, + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "seeAlso": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPL-image.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPL-image.json", + "referenceNumber": 343, + "name": "JPL Image Use Policy", + "licenseId": "JPL-image", + "seeAlso": [ + "https://www.jpl.nasa.gov/jpl-image-use-policy" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JPNIC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JPNIC.json", + "referenceNumber": 117, + "name": "Japan Network Information Center License", + "licenseId": "JPNIC", + "seeAlso": [ + "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/JSON.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/JSON.json", + "referenceNumber": 174, + "name": "JSON License", + "licenseId": "JSON", + "seeAlso": [ + "http://www.json.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Kastrup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kastrup.json", + "referenceNumber": 181, + "name": "Kastrup License", + "licenseId": "Kastrup", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Kazlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Kazlib.json", + "referenceNumber": 197, + "name": "Kazlib License", + "licenseId": "Kazlib", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id\u003d0062df360c2d17d57f6af19b0e444c51feb99036" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Knuth-CTAN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Knuth-CTAN.json", + "referenceNumber": 22, + "name": "Knuth CTAN License", + "licenseId": "Knuth-CTAN", + "seeAlso": [ + "https://ctan.org/license/knuth" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.2.json", + "referenceNumber": 261, + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", + "seeAlso": [ + "http://artlibre.org/licence/lal/licence-art-libre-12/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LAL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LAL-1.3.json", + "referenceNumber": 526, + "name": "Licence Art Libre 1.3", + "licenseId": "LAL-1.3", + "seeAlso": [ + "https://artlibre.org/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e.json", + "referenceNumber": 3, + "name": "Latex2e License", + "licenseId": "Latex2e", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Latex2e-translated-notice.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Latex2e-translated-notice.json", + "referenceNumber": 104, + "name": "Latex2e with translated notice permission", + "licenseId": "Latex2e-translated-notice", + "seeAlso": [ + "https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id\u003da74c6b4ee49397cf330b333da1042bffa60ed14f#n74" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Leptonica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Leptonica.json", + "referenceNumber": 221, + "name": "Leptonica License", + "licenseId": "Leptonica", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0.json", + "referenceNumber": 81, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0+.json", + "referenceNumber": 265, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-only.json", + "referenceNumber": 517, + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.0-or-later.json", + "referenceNumber": 458, + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1.json", + "referenceNumber": 659, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1+.json", + "referenceNumber": 69, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-only.json", + "referenceNumber": 524, + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-2.1-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-2.1-or-later.json", + "referenceNumber": 336, + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0.json", + "referenceNumber": 381, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0+.json", + "referenceNumber": 303, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-only.json", + "referenceNumber": 225, + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPL-3.0-or-later.json", + "referenceNumber": 411, + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://www.gnu.org/licenses/lgpl+gpl-3.0.txt", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LGPLLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LGPLLR.json", + "referenceNumber": 87, + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "seeAlso": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Libpng.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Libpng.json", + "referenceNumber": 531, + "name": "libpng License", + "licenseId": "Libpng", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libpng-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libpng-2.0.json", + "referenceNumber": 149, + "name": "PNG Reference Library version 2", + "licenseId": "libpng-2.0", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libselinux-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libselinux-1.0.json", + "referenceNumber": 320, + "name": "libselinux public domain notice", + "licenseId": "libselinux-1.0", + "seeAlso": [ + "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libtiff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libtiff.json", + "referenceNumber": 24, + "name": "libtiff License", + "licenseId": "libtiff", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/libtiff" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/libutil-David-Nugent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/libutil-David-Nugent.json", + "referenceNumber": 662, + "name": "libutil David Nugent License", + "licenseId": "libutil-David-Nugent", + "seeAlso": [ + "http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3", + "https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-P-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-P-1.1.json", + "referenceNumber": 150, + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "seeAlso": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-R-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-R-1.1.json", + "referenceNumber": 203, + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json", + "referenceNumber": 314, + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-1-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-1-para.json", + "referenceNumber": 577, + "name": "Linux man-pages - 1 paragraph", + "licenseId": "Linux-man-pages-1-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft.json", + "referenceNumber": 213, + "name": "Linux man-pages Copyleft", + "licenseId": "Linux-man-pages-copyleft", + "seeAlso": [ + "https://www.kernel.org/doc/man-pages/licenses.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json", + "referenceNumber": 352, + "name": "Linux man-pages Copyleft - 2 paragraphs", + "licenseId": "Linux-man-pages-copyleft-2-para", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5", + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json", + "referenceNumber": 186, + "name": "Linux man-pages Copyleft Variant", + "licenseId": "Linux-man-pages-copyleft-var", + "seeAlso": [ + "https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Linux-OpenIB.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Linux-OpenIB.json", + "referenceNumber": 278, + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LOOP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LOOP.json", + "referenceNumber": 521, + "name": "Common Lisp LOOP License", + "licenseId": "LOOP", + "seeAlso": [ + "https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp", + "http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h\u003dVersion_2_6_13pre", + "https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp", + "https://github.com/cl-adams/adams/blob/master/LICENSE.md", + "https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp", + "https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPD-document.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPD-document.json", + "referenceNumber": 561, + "name": "LPD Documentation License", + "licenseId": "LPD-document", + "seeAlso": [ + "https://github.com/Cyan4973/xxHash/blob/dev/doc/xxhash_spec.md", + "https://www.ietf.org/rfc/rfc1952.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.0.json", + "referenceNumber": 267, + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/LPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/LPL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPL-1.02.json", + "referenceNumber": 122, + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", + "seeAlso": [ + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.0.json", + "referenceNumber": 133, + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.1.json", + "referenceNumber": 284, + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.2.json", + "referenceNumber": 407, + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3a.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3a.json", + "referenceNumber": 510, + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/LPPL-1.3c.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LPPL-1.3c.json", + "referenceNumber": 300, + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/lsof.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/lsof.json", + "referenceNumber": 76, + "name": "lsof License", + "licenseId": "lsof", + "seeAlso": [ + "https://github.com/lsof-org/lsof/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json", + "referenceNumber": 383, + "name": "Lucida Bitmap Fonts License", + "licenseId": "Lucida-Bitmap-Fonts", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json", + "referenceNumber": 239, + "name": "LZMA SDK License (versions 9.11 to 9.20)", + "licenseId": "LZMA-SDK-9.11-to-9.20", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/LZMA-SDK-9.22.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/LZMA-SDK-9.22.json", + "referenceNumber": 600, + "name": "LZMA SDK License (versions 9.22 and beyond)", + "licenseId": "LZMA-SDK-9.22", + "seeAlso": [ + "https://www.7-zip.org/sdk.html", + "https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause.json", + "referenceNumber": 540, + "name": "Mackerras 3-Clause License", + "licenseId": "Mackerras-3-Clause", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/chap_ms.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mackerras-3-Clause-acknowledgment.json", + "referenceNumber": 176, + "name": "Mackerras 3-Clause - acknowledgment variant", + "licenseId": "Mackerras-3-Clause-acknowledgment", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/auth.c#L6-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/magaz.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/magaz.json", + "referenceNumber": 93, + "name": "magaz License", + "licenseId": "magaz", + "seeAlso": [ + "https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mailprio.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mailprio.json", + "referenceNumber": 292, + "name": "mailprio License", + "licenseId": "mailprio", + "seeAlso": [ + "https://fossies.org/linux/sendmail/contrib/mailprio" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MakeIndex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MakeIndex.json", + "referenceNumber": 552, + "name": "MakeIndex License", + "licenseId": "MakeIndex", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MakeIndex" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Martin-Birgmeier.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Martin-Birgmeier.json", + "referenceNumber": 364, + "name": "Martin Birgmeier License", + "licenseId": "Martin-Birgmeier", + "seeAlso": [ + "https://github.com/Perl/perl5/blob/blead/util.c#L6136" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/McPhee-slideshow.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/McPhee-slideshow.json", + "referenceNumber": 511, + "name": "McPhee Slideshow License", + "licenseId": "McPhee-slideshow", + "seeAlso": [ + "https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/metamail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/metamail.json", + "referenceNumber": 325, + "name": "metamail License", + "licenseId": "metamail", + "seeAlso": [ + "https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Minpack.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Minpack.json", + "referenceNumber": 634, + "name": "Minpack License", + "licenseId": "Minpack", + "seeAlso": [ + "http://www.netlib.org/minpack/disclaimer", + "https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MirOS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MirOS.json", + "referenceNumber": 202, + "name": "The MirOS Licence", + "licenseId": "MirOS", + "seeAlso": [ + "https://opensource.org/licenses/MirOS" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT.json", + "referenceNumber": 601, + "name": "MIT License", + "licenseId": "MIT", + "seeAlso": [ + "https://opensource.org/license/mit/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MIT-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-0.json", + "referenceNumber": 587, + "name": "MIT No Attribution", + "licenseId": "MIT-0", + "seeAlso": [ + "https://github.com/aws/mit-0", + "https://romanrm.net/mit-zero", + "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-advertising.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-advertising.json", + "referenceNumber": 39, + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-CMU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-CMU.json", + "referenceNumber": 36, + "name": "CMU License", + "licenseId": "MIT-CMU", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", + "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-enna.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-enna.json", + "referenceNumber": 207, + "name": "enna License", + "licenseId": "MIT-enna", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#enna" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-feh.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-feh.json", + "referenceNumber": 146, + "name": "feh License", + "licenseId": "MIT-feh", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#feh" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Festival.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Festival.json", + "referenceNumber": 431, + "name": "MIT Festival Variant", + "licenseId": "MIT-Festival", + "seeAlso": [ + "https://github.com/festvox/flite/blob/master/COPYING", + "https://github.com/festvox/speech_tools/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Khronos-old.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Khronos-old.json", + "referenceNumber": 68, + "name": "MIT Khronos - old variant", + "licenseId": "MIT-Khronos-old", + "seeAlso": [ + "https://github.com/KhronosGroup/SPIRV-Cross/blob/main/LICENSES/LicenseRef-KhronosFreeUse.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Modern-Variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Modern-Variant.json", + "referenceNumber": 92, + "name": "MIT License Modern Variant", + "licenseId": "MIT-Modern-Variant", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants", + "https://ptolemy.berkeley.edu/copyright.htm", + "https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MIT-open-group.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-open-group.json", + "referenceNumber": 520, + "name": "MIT Open Group variant", + "licenseId": "MIT-open-group", + "seeAlso": [ + "https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING", + "https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-testregex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-testregex.json", + "referenceNumber": 578, + "name": "MIT testregex Variant", + "licenseId": "MIT-testregex", + "seeAlso": [ + "https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MIT-Wu.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MIT-Wu.json", + "referenceNumber": 156, + "name": "MIT Tom Wu Variant", + "licenseId": "MIT-Wu", + "seeAlso": [ + "https://github.com/chromium/octane/blob/master/crypto.js" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MITNFA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MITNFA.json", + "referenceNumber": 650, + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MITNFA" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MMIXware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MMIXware.json", + "referenceNumber": 444, + "name": "MMIXware License", + "licenseId": "MMIXware", + "seeAlso": [ + "https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Motosoto.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Motosoto.json", + "referenceNumber": 31, + "name": "Motosoto License", + "licenseId": "Motosoto", + "seeAlso": [ + "https://opensource.org/licenses/Motosoto" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MPEG-SSG.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPEG-SSG.json", + "referenceNumber": 323, + "name": "MPEG Software Simulation", + "licenseId": "MPEG-SSG", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpi-permissive.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpi-permissive.json", + "referenceNumber": 459, + "name": "mpi Permissive License", + "licenseId": "mpi-permissive", + "seeAlso": [ + "https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl\u003d19#L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/mpich2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mpich2.json", + "referenceNumber": 448, + "name": "mpich2 License", + "licenseId": "mpich2", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.0.json", + "referenceNumber": 248, + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/MPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-1.1.json", + "referenceNumber": 219, + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0.json", + "referenceNumber": 147, + "name": "Mozilla Public License 2.0", + "licenseId": "MPL-2.0", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", + "referenceNumber": 529, + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "seeAlso": [ + "https://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/mplus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/mplus.json", + "referenceNumber": 553, + "name": "mplus Font License", + "licenseId": "mplus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:Mplus?rd\u003dLicensing/mplus" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-LPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-LPL.json", + "referenceNumber": 412, + "name": "Microsoft Limited Public License", + "licenseId": "MS-LPL", + "seeAlso": [ + "https://www.openhub.net/licenses/mslpl", + "https://github.com/gabegundy/atlserver/blob/master/License.txt", + "https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MS-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-PL.json", + "referenceNumber": 360, + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MS-RL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MS-RL.json", + "referenceNumber": 212, + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/MTLL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MTLL.json", + "referenceNumber": 610, + "name": "Matrix Template Library License", + "licenseId": "MTLL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-1.0.json", + "referenceNumber": 236, + "name": "Mulan Permissive Software License, Version 1", + "licenseId": "MulanPSL-1.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL/", + "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/MulanPSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/MulanPSL-2.0.json", + "referenceNumber": 523, + "name": "Mulan Permissive Software License, Version 2", + "licenseId": "MulanPSL-2.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL2" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Multics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Multics.json", + "referenceNumber": 462, + "name": "Multics License", + "licenseId": "Multics", + "seeAlso": [ + "https://opensource.org/licenses/Multics" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Mup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Mup.json", + "referenceNumber": 515, + "name": "Mup License", + "licenseId": "Mup", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Mup" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NAIST-2003.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NAIST-2003.json", + "referenceNumber": 118, + "name": "Nara Institute of Science and Technology License (2003)", + "licenseId": "NAIST-2003", + "seeAlso": [ + "https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text", + "https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NASA-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NASA-1.3.json", + "referenceNumber": 488, + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "seeAlso": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Naumen.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Naumen.json", + "referenceNumber": 400, + "name": "Naumen Public License", + "licenseId": "Naumen", + "seeAlso": [ + "https://opensource.org/licenses/Naumen" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NBPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NBPL-1.0.json", + "referenceNumber": 168, + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCBI-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCBI-PD.json", + "referenceNumber": 599, + "name": "NCBI Public Domain Notice", + "licenseId": "NCBI-PD", + "seeAlso": [ + "https://github.com/ncbi/sra-tools/blob/e8e5b6af4edc460156ad9ce5902d0779cffbf685/LICENSE", + "https://github.com/ncbi/datasets/blob/0ea4cd16b61e5b799d9cc55aecfa016d6c9bd2bf/LICENSE.md", + "https://github.com/ncbi/gprobe/blob/de64d30fee8b4c4013094d7d3139ea89b5dd1ace/LICENSE", + "https://github.com/ncbi/egapx/blob/08930b9dec0c69b2d1a05e5153c7b95ef0a3eb0f/LICENSE", + "https://github.com/ncbi/datasets/blob/master/LICENSE.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCGL-UK-2.0.json", + "referenceNumber": 130, + "name": "Non-Commercial Government Licence", + "licenseId": "NCGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCL.json", + "referenceNumber": 516, + "name": "NCL Source Code License", + "licenseId": "NCL", + "seeAlso": [ + "https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/src/modules/module-filter-chain/pffft.c?ref_type\u003dheads#L1-52" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NCSA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NCSA.json", + "referenceNumber": 652, + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "seeAlso": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Net-SNMP.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Net-SNMP.json", + "referenceNumber": 469, + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", + "seeAlso": [ + "http://net-snmp.sourceforge.net/about/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NetCDF.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NetCDF.json", + "referenceNumber": 189, + "name": "NetCDF license", + "licenseId": "NetCDF", + "seeAlso": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Newsletr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Newsletr.json", + "referenceNumber": 499, + "name": "Newsletr License", + "licenseId": "Newsletr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NGPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NGPL.json", + "referenceNumber": 167, + "name": "Nethack General Public License", + "licenseId": "NGPL", + "seeAlso": [ + "https://opensource.org/licenses/NGPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NICTA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NICTA-1.0.json", + "referenceNumber": 486, + "name": "NICTA Public Software License, Version 1.0", + "licenseId": "NICTA-1.0", + "seeAlso": [ + "https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD.json", + "referenceNumber": 194, + "name": "NIST Public Domain Notice", + "licenseId": "NIST-PD", + "seeAlso": [ + "https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt", + "https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-PD-fallback.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-PD-fallback.json", + "referenceNumber": 223, + "name": "NIST Public Domain Notice with license fallback", + "licenseId": "NIST-PD-fallback", + "seeAlso": [ + "https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE", + "https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NIST-Software.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NIST-Software.json", + "referenceNumber": 251, + "name": "NIST Software License", + "licenseId": "NIST-Software", + "seeAlso": [ + "https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-1.0.json", + "referenceNumber": 294, + "name": "Norwegian Licence for Open Government Data (NLOD) 1.0", + "licenseId": "NLOD-1.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLOD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLOD-2.0.json", + "referenceNumber": 566, + "name": "Norwegian Licence for Open Government Data (NLOD) 2.0", + "licenseId": "NLOD-2.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NLPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NLPL.json", + "referenceNumber": 367, + "name": "No Limit Public License", + "licenseId": "NLPL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/NLPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nokia.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Nokia.json", + "referenceNumber": 145, + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "seeAlso": [ + "https://opensource.org/licenses/nokia" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NOSL.json", + "referenceNumber": 254, + "name": "Netizen Open Source License", + "licenseId": "NOSL", + "seeAlso": [ + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Noweb.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Noweb.json", + "referenceNumber": 30, + "name": "Noweb License", + "licenseId": "Noweb", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Noweb" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.0.json", + "referenceNumber": 211, + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPL-1.1.json", + "referenceNumber": 595, + "name": "Netscape Public License v1.1", + "licenseId": "NPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.1/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/NPOSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NPOSL-3.0.json", + "referenceNumber": 664, + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", + "seeAlso": [ + "https://opensource.org/licenses/NOSL3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NRL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NRL.json", + "referenceNumber": 113, + "name": "NRL License", + "licenseId": "NRL", + "seeAlso": [ + "http://web.mit.edu/network/isakmp/nrllicense.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/NTP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP.json", + "referenceNumber": 390, + "name": "NTP License", + "licenseId": "NTP", + "seeAlso": [ + "https://opensource.org/licenses/NTP" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/NTP-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/NTP-0.json", + "referenceNumber": 64, + "name": "NTP No Attribution", + "licenseId": "NTP-0", + "seeAlso": [ + "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Nunit.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/Nunit.json", + "referenceNumber": 27, + "name": "Nunit License", + "licenseId": "Nunit", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Nunit" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/O-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/O-UDA-1.0.json", + "referenceNumber": 161, + "name": "Open Use of Data Agreement v1.0", + "licenseId": "O-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md", + "https://cdla.dev/open-use-of-data-agreement-v1-0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OAR.json", + "referenceNumber": 100, + "name": "OAR License", + "licenseId": "OAR", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dnewlib-cygwin.git;a\u003dblob;f\u003dnewlib/libc/string/strsignal.c;hb\u003dHEAD#l35" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCCT-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCCT-PL.json", + "referenceNumber": 408, + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "seeAlso": [ + "http://www.opencascade.com/content/occt-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OCLC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OCLC-2.0.json", + "referenceNumber": 468, + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "seeAlso": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ODbL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODbL-1.0.json", + "referenceNumber": 611, + "name": "Open Data Commons Open Database License v1.0", + "licenseId": "ODbL-1.0", + "seeAlso": [ + "http://www.opendatacommons.org/licenses/odbl/1.0/", + "https://opendatacommons.org/licenses/odbl/1-0/" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ODC-By-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ODC-By-1.0.json", + "referenceNumber": 15, + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", + "seeAlso": [ + "https://opendatacommons.org/licenses/by/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFFIS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFFIS.json", + "referenceNumber": 418, + "name": "OFFIS License", + "licenseId": "OFFIS", + "seeAlso": [ + "https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0.json", + "referenceNumber": 603, + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-no-RFN.json", + "referenceNumber": 545, + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "licenseId": "OFL-1.0-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.0-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.0-RFN.json", + "referenceNumber": 446, + "name": "SIL Open Font License 1.0 with Reserved Font Name", + "licenseId": "OFL-1.0-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1.json", + "referenceNumber": 0, + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-no-RFN.json", + "referenceNumber": 110, + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "licenseId": "OFL-1.1-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OFL-1.1-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OFL-1.1-RFN.json", + "referenceNumber": 90, + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "licenseId": "OFL-1.1-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OGC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGC-1.0.json", + "referenceNumber": 504, + "name": "OGC Software License, Version 1.0", + "licenseId": "OGC-1.0", + "seeAlso": [ + "https://www.ogc.org/ogc/software/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGDL-Taiwan-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGDL-Taiwan-1.0.json", + "referenceNumber": 23, + "name": "Taiwan Open Government Data License, version 1.0", + "licenseId": "OGDL-Taiwan-1.0", + "seeAlso": [ + "https://data.gov.tw/license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-Canada-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-Canada-2.0.json", + "referenceNumber": 40, + "name": "Open Government Licence - Canada", + "licenseId": "OGL-Canada-2.0", + "seeAlso": [ + "https://open.canada.ca/en/open-government-licence-canada" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-1.0.json", + "referenceNumber": 497, + "name": "Open Government Licence v1.0", + "licenseId": "OGL-UK-1.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-2.0.json", + "referenceNumber": 556, + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGL-UK-3.0.json", + "referenceNumber": 585, + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OGTSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OGTSL.json", + "referenceNumber": 97, + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "seeAlso": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.1.json", + "referenceNumber": 420, + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.2.json", + "referenceNumber": 487, + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.3.json", + "referenceNumber": 627, + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-1.4.json", + "referenceNumber": 45, + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.json", + "referenceNumber": 537, + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.0.1.json", + "referenceNumber": 179, + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.1.json", + "referenceNumber": 342, + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.json", + "referenceNumber": 347, + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.1.json", + "referenceNumber": 208, + "name": "Open LDAP Public License v2.2.1", + "licenseId": "OLDAP-2.2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.2.2.json", + "referenceNumber": 312, + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.3.json", + "referenceNumber": 276, + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.4.json", + "referenceNumber": 108, + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.5.json", + "referenceNumber": 518, + "name": "Open LDAP Public License v2.5", + "licenseId": "OLDAP-2.5", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.6.json", + "referenceNumber": 275, + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.7.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.7.json", + "referenceNumber": 79, + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OLDAP-2.8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLDAP-2.8.json", + "referenceNumber": 72, + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", + "seeAlso": [ + "http://www.openldap.org/software/release/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OLFL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OLFL-1.3.json", + "referenceNumber": 204, + "name": "Open Logistics Foundation License Version 1.3", + "licenseId": "OLFL-1.3", + "seeAlso": [ + "https://openlogisticsfoundation.org/licenses/", + "https://opensource.org/license/olfl-1-3/" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OML.json", + "referenceNumber": 505, + "name": "Open Market License", + "licenseId": "OML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenPBS-2.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenPBS-2.3.json", + "referenceNumber": 159, + "name": "OpenPBS v2.3 Software License", + "licenseId": "OpenPBS-2.3", + "seeAlso": [ + "https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt", + "https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenSSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL.json", + "referenceNumber": 445, + "name": "OpenSSL License", + "licenseId": "OpenSSL", + "seeAlso": [ + "http://www.openssl.org/source/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OpenSSL-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenSSL-standalone.json", + "referenceNumber": 635, + "name": "OpenSSL License - standalone", + "licenseId": "OpenSSL-standalone", + "seeAlso": [ + "https://library.netapp.com/ecm/ecm_download_file/ECMP1196395", + "https://hstechdocs.helpsystems.com/manuals/globalscape/archive/cuteftp6/open_ssl_license_agreement.htm" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OpenVision.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OpenVision.json", + "referenceNumber": 589, + "name": "OpenVision License", + "licenseId": "OpenVision", + "seeAlso": [ + "https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L66-L98", + "https://web.mit.edu/kerberos/krb5-1.21/doc/mitK5license.html", + "https://fedoraproject.org/wiki/Licensing:MIT#OpenVision_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-1.0.json", + "referenceNumber": 80, + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", + "seeAlso": [ + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/OPL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPL-UK-3.0.json", + "referenceNumber": 19, + "name": "United Kingdom Open Parliament Licence v3.0", + "licenseId": "OPL-UK-3.0", + "seeAlso": [ + "https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OPUBL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OPUBL-1.0.json", + "referenceNumber": 266, + "name": "Open Publication License v1.0", + "licenseId": "OPUBL-1.0", + "seeAlso": [ + "http://opencontent.org/openpub/", + "https://www.debian.org/opl", + "https://www.ctan.org/license/opl" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/OSET-PL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSET-PL-2.1.json", + "referenceNumber": 307, + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "seeAlso": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/OSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.0.json", + "referenceNumber": 306, + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/OSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-1.1.json", + "referenceNumber": 111, + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.0.json", + "referenceNumber": 457, + "name": "Open Software License 2.0", + "licenseId": "OSL-2.0", + "seeAlso": [ + "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-2.1.json", + "referenceNumber": 247, + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", + "seeAlso": [ + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/OSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/OSL-3.0.json", + "referenceNumber": 432, + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "seeAlso": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/PADL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PADL.json", + "referenceNumber": 43, + "name": "PADL License", + "licenseId": "PADL", + "seeAlso": [ + "https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type\u003dheads#L19-23" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-6.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-6.0.0.json", + "referenceNumber": 49, + "name": "The Parity Public License 6.0.0", + "licenseId": "Parity-6.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/6.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Parity-7.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Parity-7.0.0.json", + "referenceNumber": 482, + "name": "The Parity Public License 7.0.0", + "licenseId": "Parity-7.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/7.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PDDL-1.0.json", + "referenceNumber": 210, + "name": "Open Data Commons Public Domain Dedication \u0026 License 1.0", + "licenseId": "PDDL-1.0", + "seeAlso": [ + "http://opendatacommons.org/licenses/pddl/1.0/", + "https://opendatacommons.org/licenses/pddl/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PHP-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.0.json", + "referenceNumber": 580, + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", + "seeAlso": [ + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PHP-3.01.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PHP-3.01.json", + "referenceNumber": 594, + "name": "PHP License v3.01", + "licenseId": "PHP-3.01", + "seeAlso": [ + "http://www.php.net/license/3_01.txt" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Pixar.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Pixar.json", + "referenceNumber": 619, + "name": "Pixar License", + "licenseId": "Pixar", + "seeAlso": [ + "https://github.com/PixarAnimationStudios/OpenSubdiv/raw/v3_5_0/LICENSE.txt", + "https://graphics.pixar.com/opensubdiv/docs/license.html", + "https://github.com/PixarAnimationStudios/OpenSubdiv/blob/v3_5_0/opensubdiv/version.cpp#L2-L22" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/pkgconf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pkgconf.json", + "referenceNumber": 16, + "name": "pkgconf License", + "licenseId": "pkgconf", + "seeAlso": [ + "https://github.com/pkgconf/pkgconf/blob/master/cli/main.c#L8" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Plexus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Plexus.json", + "referenceNumber": 442, + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/pnmstitch.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/pnmstitch.json", + "referenceNumber": 502, + "name": "pnmstitch License", + "licenseId": "pnmstitch", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", + "referenceNumber": 575, + "name": "PolyForm Noncommercial License 1.0.0", + "licenseId": "PolyForm-Noncommercial-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/noncommercial/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", + "referenceNumber": 9, + "name": "PolyForm Small Business License 1.0.0", + "licenseId": "PolyForm-Small-Business-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/small-business/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/PostgreSQL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PostgreSQL.json", + "referenceNumber": 94, + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", + "seeAlso": [ + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/PPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PPL.json", + "referenceNumber": 454, + "name": "Peer Production License", + "licenseId": "PPL", + "seeAlso": [ + "https://wiki.p2pfoundation.net/Peer_Production_License", + "http://www.networkcultures.org/_uploads/%233notebook_telekommunist.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/PSF-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/PSF-2.0.json", + "referenceNumber": 62, + "name": "Python Software Foundation License 2.0", + "licenseId": "PSF-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psfrag.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psfrag.json", + "referenceNumber": 279, + "name": "psfrag License", + "licenseId": "psfrag", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psfrag" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/psutils.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/psutils.json", + "referenceNumber": 387, + "name": "psutils License", + "licenseId": "psutils", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psutils" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.json", + "referenceNumber": 498, + "name": "Python License 2.0", + "licenseId": "Python-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Python-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Python-2.0.1.json", + "referenceNumber": 453, + "name": "Python License 2.0.1", + "licenseId": "Python-2.0.1", + "seeAlso": [ + "https://www.python.org/download/releases/2.0.1/license/", + "https://docs.python.org/3/license.html", + "https://github.com/python/cpython/blob/main/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/python-ldap.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/python-ldap.json", + "referenceNumber": 422, + "name": "Python ldap License", + "licenseId": "python-ldap", + "seeAlso": [ + "https://github.com/python-ldap/python-ldap/blob/main/LICENCE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Qhull.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Qhull.json", + "referenceNumber": 123, + "name": "Qhull License", + "licenseId": "Qhull", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Qhull" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0.json", + "referenceNumber": 329, + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "seeAlso": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0", + "https://doc.qt.io/archives/3.3/license.html" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json", + "referenceNumber": 479, + "name": "Q Public License 1.0 - INRIA 2004 variant", + "licenseId": "QPL-1.0-INRIA-2004", + "seeAlso": [ + "https://github.com/maranget/hevea/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/radvd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/radvd.json", + "referenceNumber": 182, + "name": "radvd License", + "licenseId": "radvd", + "seeAlso": [ + "https://github.com/radvd-project/radvd/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Rdisc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Rdisc.json", + "referenceNumber": 101, + "name": "Rdisc License", + "licenseId": "Rdisc", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RHeCos-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RHeCos-1.1.json", + "referenceNumber": 373, + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", + "seeAlso": [ + "http://ecos.sourceware.org/old-license.html" + ], + "isOsiApproved": false, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/RPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.1.json", + "referenceNumber": 369, + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/RPL-1.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPL-1.5.json", + "referenceNumber": 102, + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.5" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/RPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RPSL-1.0.json", + "referenceNumber": 663, + "name": "RealNetworks Public Source License v1.0", + "licenseId": "RPSL-1.0", + "seeAlso": [ + "https://helixcommunity.org/content/rpsl", + "https://opensource.org/licenses/RPSL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/RSA-MD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSA-MD.json", + "referenceNumber": 139, + "name": "RSA Message-Digest License", + "licenseId": "RSA-MD", + "seeAlso": [ + "http://www.faqs.org/rfcs/rfc1321.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/RSCPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/RSCPL.json", + "referenceNumber": 405, + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", + "seeAlso": [ + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Ruby.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby.json", + "referenceNumber": 192, + "name": "Ruby License", + "licenseId": "Ruby", + "seeAlso": [ + "https://www.ruby-lang.org/en/about/license.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Ruby-pty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ruby-pty.json", + "referenceNumber": 473, + "name": "Ruby pty extension license", + "licenseId": "Ruby-pty", + "seeAlso": [ + "https://github.com/ruby/ruby/blob/9f6deaa6888a423720b4b127b5314f0ad26cc2e6/ext/pty/pty.c#L775-L786", + "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-ef5fa30838d6d0cecad9e675cc50b24628cfe2cb277c346053fafcc36c91c204", + "https://github.com/ruby/ruby/commit/0a64817fb80016030c03518fb9459f63c11605ea#diff-fedf217c1ce44bda01f0a678d3ff8b198bed478754d699c527a698ad933979a0" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD.json", + "referenceNumber": 205, + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SAX-PD-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SAX-PD-2.0.json", + "referenceNumber": 209, + "name": "Sax Public Domain Notice 2.0", + "licenseId": "SAX-PD-2.0", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Saxpath.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Saxpath.json", + "referenceNumber": 67, + "name": "Saxpath License", + "licenseId": "Saxpath", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SCEA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SCEA.json", + "referenceNumber": 617, + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "seeAlso": [ + "http://research.scea.com/scea_shared_source_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SchemeReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SchemeReport.json", + "referenceNumber": 472, + "name": "Scheme Language Report License", + "licenseId": "SchemeReport", + "seeAlso": [], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail.json", + "referenceNumber": 135, + "name": "Sendmail License", + "licenseId": "Sendmail", + "seeAlso": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sendmail-8.23.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sendmail-8.23.json", + "referenceNumber": 226, + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "seeAlso": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.0.json", + "referenceNumber": 631, + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-1.1.json", + "referenceNumber": 48, + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGI-B-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-B-2.0.json", + "referenceNumber": 193, + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SGI-OpenGL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGI-OpenGL.json", + "referenceNumber": 565, + "name": "SGI OpenGL License", + "licenseId": "SGI-OpenGL", + "seeAlso": [ + "https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type\u003dheads" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SGP4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SGP4.json", + "referenceNumber": 291, + "name": "SGP4 Permission Notice", + "licenseId": "SGP4", + "seeAlso": [ + "https://celestrak.org/publications/AIAA/2006-6753/faq.php" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.5.json", + "referenceNumber": 623, + "name": "Solderpad Hardware License v0.5", + "licenseId": "SHL-0.5", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.5/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SHL-0.51.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SHL-0.51.json", + "referenceNumber": 34, + "name": "Solderpad Hardware License, Version 0.51", + "licenseId": "SHL-0.51", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.51/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SimPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SimPL-2.0.json", + "referenceNumber": 630, + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/SimPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/SISSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL.json", + "referenceNumber": 655, + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "seeAlso": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SISSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SISSL-1.2.json", + "referenceNumber": 401, + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "seeAlso": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SL.json", + "referenceNumber": 632, + "name": "SL License", + "licenseId": "SL", + "seeAlso": [ + "https://github.com/mtoyoda/sl/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sleepycat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sleepycat.json", + "referenceNumber": 283, + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "seeAlso": [ + "https://opensource.org/licenses/Sleepycat" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SMLNJ.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMLNJ.json", + "referenceNumber": 413, + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SMPPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SMPPL.json", + "referenceNumber": 321, + "name": "Secure Messaging Protocol Public License", + "licenseId": "SMPPL", + "seeAlso": [ + "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SNIA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SNIA.json", + "referenceNumber": 41, + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/snprintf.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/snprintf.json", + "referenceNumber": 507, + "name": "snprintf License", + "licenseId": "snprintf", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/softSurfer.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/softSurfer.json", + "referenceNumber": 496, + "name": "softSurfer License", + "licenseId": "softSurfer", + "seeAlso": [ + "https://github.com/mm2/Little-CMS/blob/master/src/cmssm.c#L207", + "https://fedoraproject.org/wiki/Licensing/softSurfer" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Soundex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Soundex.json", + "referenceNumber": 1, + "name": "Soundex License", + "licenseId": "Soundex", + "seeAlso": [ + "https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-86.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-86.json", + "referenceNumber": 257, + "name": "Spencer License 86", + "licenseId": "Spencer-86", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-94.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-94.json", + "referenceNumber": 228, + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Spencer-99.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Spencer-99.json", + "referenceNumber": 287, + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "seeAlso": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SPL-1.0.json", + "referenceNumber": 576, + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/SPL-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ssh-keyscan.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ssh-keyscan.json", + "referenceNumber": 78, + "name": "ssh-keyscan License", + "licenseId": "ssh-keyscan", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-OpenSSH.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-OpenSSH.json", + "referenceNumber": 536, + "name": "SSH OpenSSH license", + "licenseId": "SSH-OpenSSH", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSH-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSH-short.json", + "referenceNumber": 438, + "name": "SSH short notice", + "licenseId": "SSH-short", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", + "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSLeay-standalone.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSLeay-standalone.json", + "referenceNumber": 421, + "name": "SSLeay License - standalone", + "licenseId": "SSLeay-standalone", + "seeAlso": [ + "https://www.tq-group.com/filedownloads/files/software-license-conditions/OriginalSSLeay/OriginalSSLeay.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SSPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SSPL-1.0.json", + "referenceNumber": 295, + "name": "Server Side Public License, v 1", + "licenseId": "SSPL-1.0", + "seeAlso": [ + "https://www.mongodb.com/licensing/server-side-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/StandardML-NJ.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/StandardML-NJ.json", + "referenceNumber": 201, + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/SugarCRM-1.1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SugarCRM-1.1.3.json", + "referenceNumber": 11, + "name": "SugarCRM Public License v1.1.3", + "licenseId": "SugarCRM-1.1.3", + "seeAlso": [ + "http://www.sugarcrm.com/crm/SPL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP.json", + "referenceNumber": 313, + "name": "Sun PPP License", + "licenseId": "Sun-PPP", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/pppd/eap.c#L7-L16" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Sun-PPP-2000.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Sun-PPP-2000.json", + "referenceNumber": 489, + "name": "Sun PPP License (2000)", + "licenseId": "Sun-PPP-2000", + "seeAlso": [ + "https://github.com/ppp-project/ppp/blob/master/modules/ppp_ahdlc.c#L7-L19" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SunPro.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SunPro.json", + "referenceNumber": 440, + "name": "SunPro License", + "licenseId": "SunPro", + "seeAlso": [ + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c", + "https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/SWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/SWL.json", + "referenceNumber": 331, + "name": "Scheme Widget Library (SWL) Software License Agreement", + "licenseId": "SWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SWL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/swrule.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/swrule.json", + "referenceNumber": 206, + "name": "swrule License", + "licenseId": "swrule", + "seeAlso": [ + "https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Symlinks.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Symlinks.json", + "referenceNumber": 136, + "name": "Symlinks License", + "licenseId": "Symlinks", + "seeAlso": [ + "https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TAPR-OHL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TAPR-OHL-1.0.json", + "referenceNumber": 317, + "name": "TAPR Open Hardware License v1.0", + "licenseId": "TAPR-OHL-1.0", + "seeAlso": [ + "https://www.tapr.org/OHL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCL.json", + "referenceNumber": 644, + "name": "TCL/TK License", + "licenseId": "TCL", + "seeAlso": [ + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TCP-wrappers.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TCP-wrappers.json", + "referenceNumber": 245, + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "seeAlso": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TermReadKey.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TermReadKey.json", + "referenceNumber": 37, + "name": "TermReadKey License", + "licenseId": "TermReadKey", + "seeAlso": [ + "https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TGPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TGPPL-1.0.json", + "referenceNumber": 112, + "name": "Transitive Grace Period Public Licence 1.0", + "licenseId": "TGPPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TGPPL", + "https://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/COPYING.TGPPL.rst" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/threeparttable.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/threeparttable.json", + "referenceNumber": 319, + "name": "threeparttable License", + "licenseId": "threeparttable", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Threeparttable" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TMate.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TMate.json", + "referenceNumber": 509, + "name": "TMate Open Source License", + "licenseId": "TMate", + "seeAlso": [ + "http://svnkit.com/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TORQUE-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TORQUE-1.1.json", + "referenceNumber": 105, + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TOSL.json", + "referenceNumber": 107, + "name": "Trusster Open Source License", + "licenseId": "TOSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TOSL" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TPDL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPDL.json", + "referenceNumber": 124, + "name": "Time::ParseDate License", + "licenseId": "TPDL", + "seeAlso": [ + "https://metacpan.org/pod/Time::ParseDate#LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TPL-1.0.json", + "referenceNumber": 490, + "name": "THOR Public License 1.0", + "licenseId": "TPL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:ThorPublicLicense" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTWL.json", + "referenceNumber": 35, + "name": "Text-Tabs+Wrap License", + "licenseId": "TTWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TTWL", + "https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TTYP0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TTYP0.json", + "referenceNumber": 542, + "name": "TTYP0 License", + "licenseId": "TTYP0", + "seeAlso": [ + "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-1.0.json", + "referenceNumber": 372, + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", + "seeAlso": [ + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/TU-Berlin-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/TU-Berlin-2.0.json", + "referenceNumber": 246, + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", + "seeAlso": [ + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Ubuntu-font-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Ubuntu-font-1.0.json", + "referenceNumber": 191, + "name": "Ubuntu Font Licence v1.0", + "licenseId": "Ubuntu-font-1.0", + "seeAlso": [ + "https://ubuntu.com/legal/font-licence", + "https://assets.ubuntu.com/v1/81e5605d-ubuntu-font-licence-1.0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCAR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCAR.json", + "referenceNumber": 452, + "name": "UCAR License", + "licenseId": "UCAR", + "seeAlso": [ + "https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UCL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UCL-1.0.json", + "referenceNumber": 550, + "name": "Upstream Compatibility License v1.0", + "licenseId": "UCL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UCL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/ulem.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ulem.json", + "referenceNumber": 399, + "name": "ulem License", + "licenseId": "ulem", + "seeAlso": [ + "https://mirrors.ctan.org/macros/latex/contrib/ulem/README" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UMich-Merit.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UMich-Merit.json", + "referenceNumber": 581, + "name": "Michigan/Merit Networks License", + "licenseId": "UMich-Merit", + "seeAlso": [ + "https://github.com/radcli/radcli/blob/master/COPYRIGHT#L64" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-3.0.json", + "referenceNumber": 262, + "name": "Unicode License v3", + "licenseId": "Unicode-3.0", + "seeAlso": [ + "https://www.unicode.org/license.txt" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2015.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2015.json", + "referenceNumber": 328, + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "seeAlso": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unicode-DFS-2016.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-DFS-2016.json", + "referenceNumber": 484, + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "seeAlso": [ + "https://www.unicode.org/license.txt", + "http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/Unicode-TOU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unicode-TOU.json", + "referenceNumber": 628, + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "seeAlso": [ + "http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html", + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/UnixCrypt.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UnixCrypt.json", + "referenceNumber": 95, + "name": "UnixCrypt License", + "licenseId": "UnixCrypt", + "seeAlso": [ + "https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70", + "https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html", + "https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Unlicense.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Unlicense.json", + "referenceNumber": 218, + "name": "The Unlicense", + "licenseId": "Unlicense", + "seeAlso": [ + "https://unlicense.org/" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/UPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/UPL-1.0.json", + "referenceNumber": 5, + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UPL" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/URT-RLE.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/URT-RLE.json", + "referenceNumber": 165, + "name": "Utah Raster Toolkit Run Length Encoded License", + "licenseId": "URT-RLE", + "seeAlso": [ + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c", + "https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Vim.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Vim.json", + "referenceNumber": 549, + "name": "Vim License", + "licenseId": "Vim", + "seeAlso": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/VOSTROM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VOSTROM.json", + "referenceNumber": 544, + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/VOSTROM" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/VSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/VSL-1.0.json", + "referenceNumber": 109, + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/VSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/W3C.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C.json", + "referenceNumber": 28, + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/W3C-19980720.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-19980720.json", + "referenceNumber": 629, + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/W3C-20150513.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/W3C-20150513.json", + "referenceNumber": 315, + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "seeAlso": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", + "https://www.w3.org/copyright/software-license-2015/", + "https://www.w3.org/copyright/software-license-2023/" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/w3m.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/w3m.json", + "referenceNumber": 379, + "name": "w3m License", + "licenseId": "w3m", + "seeAlso": [ + "https://github.com/tats/w3m/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Watcom-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Watcom-1.0.json", + "referenceNumber": 612, + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Watcom-1.0" + ], + "isOsiApproved": true, + "isFsfLibre": false + }, + { + "reference": "https://spdx.org/licenses/Widget-Workshop.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Widget-Workshop.json", + "referenceNumber": 256, + "name": "Widget Workshop License", + "licenseId": "Widget-Workshop", + "seeAlso": [ + "https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Wsuipa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Wsuipa.json", + "referenceNumber": 199, + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/WTFPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/WTFPL.json", + "referenceNumber": 173, + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "seeAlso": [ + "http://www.wtfpl.net/about/", + "http://sam.zoy.org/wtfpl/COPYING" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/wxWindows.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "https://spdx.org/licenses/wxWindows.json", + "referenceNumber": 350, + "name": "wxWindows Library License", + "licenseId": "wxWindows", + "seeAlso": [ + "https://opensource.org/licenses/WXwindows" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/X11.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11.json", + "referenceNumber": 274, + "name": "X11 License", + "licenseId": "X11", + "seeAlso": [ + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/X11-distribute-modifications-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-distribute-modifications-variant.json", + "referenceNumber": 286, + "name": "X11 License Distribution Modification Variant", + "licenseId": "X11-distribute-modifications-variant", + "seeAlso": [ + "https://github.com/mirror/ncurses/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/X11-swapped.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/X11-swapped.json", + "referenceNumber": 7, + "name": "X11 swapped final paragraphs", + "licenseId": "X11-swapped", + "seeAlso": [ + "https://github.com/fedeinthemix/chez-srfi/blob/master/srfi/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xdebug-1.03.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xdebug-1.03.json", + "referenceNumber": 471, + "name": "Xdebug License v 1.03", + "licenseId": "Xdebug-1.03", + "seeAlso": [ + "https://github.com/xdebug/xdebug/blob/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xerox.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xerox.json", + "referenceNumber": 417, + "name": "Xerox License", + "licenseId": "Xerox", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xerox" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xfig.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xfig.json", + "referenceNumber": 63, + "name": "Xfig License", + "licenseId": "Xfig", + "seeAlso": [ + "https://github.com/Distrotech/transfig/blob/master/transfig/transfig.c", + "https://fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant", + "https://sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XFree86-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XFree86-1.1.json", + "referenceNumber": 311, + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", + "seeAlso": [ + "http://www.xfree86.org/current/LICENSE4.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/xinetd.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xinetd.json", + "referenceNumber": 406, + "name": "xinetd License", + "licenseId": "xinetd", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xkeyboard-config-Zinoviev.json", + "referenceNumber": 55, + "name": "xkeyboard-config Zinoviev License", + "licenseId": "xkeyboard-config-Zinoviev", + "seeAlso": [ + "https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/COPYING?ref_type\u003dheads#L178" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xlock.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xlock.json", + "referenceNumber": 140, + "name": "xlock License", + "licenseId": "xlock", + "seeAlso": [ + "https://fossies.org/linux/tiff/contrib/ras/ras2tif.c" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Xnet.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Xnet.json", + "referenceNumber": 639, + "name": "X.Net License", + "licenseId": "Xnet", + "seeAlso": [ + "https://opensource.org/licenses/Xnet" + ], + "isOsiApproved": true + }, + { + "reference": "https://spdx.org/licenses/xpp.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xpp.json", + "referenceNumber": 243, + "name": "XPP License", + "licenseId": "xpp", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/xpp" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/XSkat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/XSkat.json", + "referenceNumber": 535, + "name": "XSkat License", + "licenseId": "XSkat", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/xzoom.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/xzoom.json", + "referenceNumber": 339, + "name": "xzoom License", + "licenseId": "xzoom", + "seeAlso": [ + "https://metadata.ftp-master.debian.org/changelogs//main/x/xzoom/xzoom_0.3-27_copyright" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.0.json", + "referenceNumber": 506, + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/YPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/YPL-1.1.json", + "referenceNumber": 538, + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zed.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zed.json", + "referenceNumber": 500, + "name": "Zed License", + "licenseId": "Zed", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Zed" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zeeff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zeeff.json", + "referenceNumber": 382, + "name": "Zeeff License", + "licenseId": "Zeeff", + "seeAlso": [ + "ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zend-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zend-2.0.json", + "referenceNumber": 51, + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "seeAlso": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.3.json", + "referenceNumber": 555, + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "seeAlso": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + ], + "isOsiApproved": false, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/Zimbra-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zimbra-1.4.json", + "referenceNumber": 227, + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", + "seeAlso": [ + "http://www.zimbra.com/legal/zimbra-public-license-1-4" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/Zlib.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/Zlib.json", + "referenceNumber": 74, + "name": "zlib License", + "licenseId": "Zlib", + "seeAlso": [ + "http://www.zlib.net/zlib_license.html", + "https://opensource.org/licenses/Zlib" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/zlib-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/zlib-acknowledgement.json", + "referenceNumber": 371, + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-1.1.json", + "referenceNumber": 598, + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-1.1" + ], + "isOsiApproved": false + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.0.json", + "referenceNumber": 539, + "name": "Zope Public License 2.0", + "licenseId": "ZPL-2.0", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-2.0", + "https://opensource.org/licenses/ZPL-2.0" + ], + "isOsiApproved": true, + "isFsfLibre": true + }, + { + "reference": "https://spdx.org/licenses/ZPL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "https://spdx.org/licenses/ZPL-2.1.json", + "referenceNumber": 638, + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "seeAlso": [ + "http://old.zope.org/Resources/ZPL/" + ], + "isOsiApproved": true, + "isFsfLibre": true + } + ], + "releaseDate": "2024-08-19" +} diff --git a/project-cabal/ghc-latest.config b/project-cabal/ghc-latest.config index 24810b986a4..96042ad583b 100644 --- a/project-cabal/ghc-latest.config +++ b/project-cabal/ghc-latest.config @@ -10,15 +10,15 @@ -- when upgrading to a newer GHC if impl(ghc >= 9.12.0) allow-newer: - --windns:*, rere:*, tree-diff:*, uuid-types:*, these:*, hashable:*, assoc:*, semialign:*, indexed-traversable-instances:*, indexed-traversable:*, OneTuple:*, scientific:*, time-compat:*, text-short:*, integer-conversion:*, generically:*, data-fix:*, binary:* + --windns:*, rere:*, tree-diff:*, uuid-types:*, these:*, assoc:*, semialign:*, indexed-traversable-instances:*, indexed-traversable:*, OneTuple:*, scientific:*, time-compat:*, text-short:*, integer-conversion:*, generically:*, data-fix:*, binary:* -- Artem, 2024-04-21: I started and then gave up... *:base, *:template-haskell, text-short, *:deepseq, *:bytestring, *:ghc-prim - repository head.hackage.ghc.haskell.org - url: https://ghc.gitlab.haskell.org/head.hackage/ - secure: True - key-threshold: 3 - root-keys: - 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329 - 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d - f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89 +-- repository head.hackage.ghc.haskell.org +-- url: https://ghc.gitlab.haskell.org/head.hackage/ +-- secure: True +-- key-threshold: 3 +-- root-keys: +-- 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329 +-- 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d +-- f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89 diff --git a/release-notes/Cabal-3.14.0.0.md b/release-notes/Cabal-3.14.0.0.md new file mode 100644 index 00000000000..e8bbc987257 --- /dev/null +++ b/release-notes/Cabal-3.14.0.0.md @@ -0,0 +1,161 @@ +Cabal and Cabal-syntax 3.14.0.0 changelog and release notes +--- + + +### Significant changes + +- Neutral field to add files to sdist [#8817](https://github.com/haskell/cabal/issues/8817) [#10107](https://github.com/haskell/cabal/pull/10107) + + Adds the `extra-files` field to the cabal file specification. This is like + the other `extra-*` fields in that it is copied with the `sdist` command, + except there are no other semantics. Compare to: + + * `extra-source-files`: Tracked by `cabal build`. + + * `extra-doc-files`: Copied by Haddock to the html directory. + +### Other changes + +- Include package version when passing `--promised-dependency` flag [#10166](https://github.com/haskell/cabal/issues/10166) [#10248](https://github.com/haskell/cabal/pull/10248) + + The `--promised-dependency` flag now expects an argument in the format + + ``` + NAME-VER[:COMPONENT_NAME]=CID + ``` + + rather than + + ``` + NAME[:COMPONENT_NAME]=CID + ``` + +- Add support for building profiled dynamic way [#4816](https://github.com/haskell/cabal/issues/4816) [#9900](https://github.com/haskell/cabal/pull/9900) + + Add support for profiled dynamic way + + New options for `cabal.project` and `./Setup` interface: + + * `profiling-shared`: Enable building profiling dynamic way + * Passing `--enable-profiling` and `--enable-executable-dynamic` builds + profiled dynamic executables. + + Support for using `profiling-shared` is guarded behind a constraint + which ensures you are using `Cabal >= 3.13`. + + In the cabal file: + + * `ghc-prof-shared-options`, for passing options when building in + profiling dynamic way + +- Working directory support for `Cabal` [#9702](https://github.com/haskell/cabal/issues/9702) [#9718](https://github.com/haskell/cabal/pull/9718) + + The `Cabal` library is now able to handle a passed-in working directory, instead + of always relying on the current working directory of the parent process. + + In order to achieve this, the `SymbolicPath` abstraction was fleshed out, and + all fields of `PackageDescription` that, if relative, should be interpreted + with respect to e.g. the package root, use `SymbolicPath` instead of `FilePath`. + + This means that many library functions in `Cabal` take an extra argument of type + `Maybe (SymbolicPath CWD (Dir "Package"))`, which is an optional (relative or + absolute) path to the package root (if relative, relative to the current working + directory). In addition, many functions that used to manipulate `FilePath`s now + manipulate `SymbolicPath`s, require explicit conversion using e.g. `getSymbolicPath`. + + To illustrate with file searching, the `Cabal` library defines: + + ```haskell + findFileCwd + :: forall dir1 dir2 file + . Verbosity + -> Maybe (SymbolicPath CWD (Dir dir1)) + + -> [SymbolicPath dir1 (Dir dir2)] + + -> RelativePath dir2 File + + -> IO (SymbolicPath dir1 File) + ``` + + See Note [Symbolic paths] in `Distribution.Utils.Path` for further information + on the design of this API. + +- Add `MultilineStrings` extension (GHC proposal #637) [#10245](https://github.com/haskell/cabal/pull/10245) + +- Add `NamedDefaults` extension (GHC proposal #409) [#9740](https://github.com/haskell/cabal/pull/9740) + +- Add `OrPatterns` extension (GHC proposal #958) [#10339](https://github.com/haskell/cabal/pull/10339) + + +- Add flag `--ignore-build-tools` [#10128](https://github.com/haskell/cabal/pull/10128) + + - Adds flag `--ignore-build-tools` which allows a user to ignore the tool + dependencies declared in `build-tool-depends`. For general use, this flag + should never be needed, but it may be useful for packagers. + +- Do not try to build dynamic executables on Windows [#10217](https://github.com/haskell/cabal/pull/10217) + + - Cabal will now exit with a descriptive error message instead of attempting to + build a dynamic executable on Windows. + +- Always pass `ghc-options` to GHC [#8717](https://github.com/haskell/cabal/pull/8717) + + Previously, options set in the package field `ghc-options` would not be passed + to GHC during the link phase for shared objects (where multiple `.o` or + `.dyn_o` files are merged into a single object file). This made it impossible + to use `ghc-options` to use a different linker by setting (for example) + `ghc-options: -optl-fuse-ld=mold -optlm-fuse-ld=mold`; the options would be + dropped in the link phase, falling back to the default linker. + + It was possible to work around this by duplicating the `ghc-options` to + `ghc-shared-options`, which _are_ passed in the shared link phase, but that had + the undocumented and unfortunate side-effect of disabling the GHC + `-dynamic-too` flag, effectively doubling compilation times when + `ghc-shared-options` are set. + + Now, `ghc-options` are combined with `ghc-shared-options` (to accurately + reflect the documentation on this feature) and the fact that + `ghc-shared-options` disables `-dynamic-too` is documented. + +- Introduce `SetupHooks` [#9551](https://github.com/haskell/cabal/pull/9551) + + Introduction of a new build type: `Hooks`. + This build type, intended to eventually replace the `Custom` build type, integrates + better with the rest of the ecosystem (`cabal-install`, Haskell Language Server). + + The motivation and full design of this new build-type are specified in the + Haskell Foundation Tech Proposal + [Replacing the Cabal Custom build-type](https://github.com/haskellfoundation/tech-proposals/pull/60). + + Package authors willing to use this feature should declare `cabal-version: 3.14` and `build-type: Hooks` + in their `.cabal` file, declare a `custom-setup` stanza with a dependency on the + `Cabal-hooks` package, and define a module `SetupHooks` that exports a value + `setupHooks :: SetupHooks`, using the API exported by `Distribution.Simple.SetupHooks` + from the `Cabal-hooks` package. Refer to the Haddock documentation of + `Distribution.Simple.SetupHooks` for example usage. + +- Redefine `build-type: Configure` in terms of `Hooks` [#9969](https://github.com/haskell/cabal/pull/9969) + + The `build-type: Configure` is now implemented in terms of `build-type: Hooks` + rather than in terms of `build-type: Custom`. This moves the `Configure` + build-type away from the `Custom` issues. Eventually, `build-type: Hooks` will + no longer imply packages are built in legacy-fallback mode. When that + happens, `Configure` will also stop implying `legacy-fallback`. + + The observable aspect of this change is `runConfigureScript` now having a + different type, and `autoconfSetupHooks` being exposed by `Distribution.Simple`. + The former is motivated by internal implementation details, while the latter + provides the `SetupHooks` value for the `Configure` build type, which can be + consumed by other `Hooks` clients (e.g. eventually HLS). + +- Cabal can issue a number of error messages referencing "Setup configure", + but it simply references "configure" which could mean any of three + things (Setup configure, the package's "configure" script, or "cabal + configure"). This has recently caught out even Cabal devs. Clarify these + messages. [#9476](https://github.com/haskell/cabal/pull/9476) + +- Update the SPDX License List to version 3.25 + + The LicenseId and LicenseExceptionId types are updated to reflect the SPDX + License List version 3.25 (2024-08-19). diff --git a/release-notes/Cabal-3.14.1.0.md b/release-notes/Cabal-3.14.1.0.md new file mode 100644 index 00000000000..3f8ccdb8dfc --- /dev/null +++ b/release-notes/Cabal-3.14.1.0.md @@ -0,0 +1,40 @@ +## Cabal and Cabal-syntax 3.14.1.0 changelog + +### Significant changes + +- Fix build ways for modules in executables [#10418](https://github.com/haskell/cabal/issues/10418) [#10419](https://github.com/haskell/cabal/pull/10419) + + - Modules belonging to executables were being built in too many ways. For instance, if you + had configured to build profiled library files then your executable modules would also + be built profiled. Which was a regression in behaviour since `Cabal-3.12`. + +- Fix `./setup install` command [#10416](https://github.com/haskell/cabal/issues/10416) [#10417](https://github.com/haskell/cabal/pull/10417) + + - `./setup install` was failing with a `fromFlag NoFlag` error. It is now fixed. + +### Other changes + +- Add new options from ghc 9.12 [#10468](https://github.com/haskell/cabal/pull/10468) + + - ghc 9.12 adds several new command line options, divided between + `LANGUAGE`s (already added), warnings, new preprocessor control options, + and compilation control options. Two options needed to be added to the + list of options requiring `Int` parameters. + + The new options, excluding warning and language options, are: + + * `-fexpose-overloaded-unfoldings` + * `-fmax-forced-spec-args=N` + * `-fno-expose-overloaded-unfoldings` + * `-fno-object-determinism` + * `-fobject-determinism` + * `-fwrite-if-compression=N` + * `-optCmmP…` + * `-optJSP…` + * `-pgmCmmP` + * `-pgmJSP` + + As they all affect compilation and store hashes, the only necessary + change was to list the two numeric options so they will be parsed + correctly. To the best of our understanding, `-pgm*` and `-opt*` + options are already handled as a group. diff --git a/release-notes/Cabal-3.14.1.1.md b/release-notes/Cabal-3.14.1.1.md new file mode 100644 index 00000000000..451573ff9a4 --- /dev/null +++ b/release-notes/Cabal-3.14.1.1.md @@ -0,0 +1,6 @@ +Cabal and Cabal-syntax 3.14.1.1 changelog and release notes +--- + +### Significant changes + +- Support for GHC 9.12 [10671](https://github.com/haskell/cabal/pull/10671) diff --git a/release-notes/Cabal-3.14.2.0.md b/release-notes/Cabal-3.14.2.0.md new file mode 100644 index 00000000000..3b700eb3542 --- /dev/null +++ b/release-notes/Cabal-3.14.2.0.md @@ -0,0 +1,60 @@ +Cabal and Cabal-syntax 3.14.2.0 changelog and release notes +--- + +### Significant changes + +- GHC arguments are no longer swallowed by enabling documentation [#10782](https://github.com/haskell/cabal/issues/10782) [#10783](https://github.com/haskell/cabal/pull/10783) + + Arguments to GHC are now properly concatenated with `-haddock` if documentation is enabled. + +- Honour the `-working-dir` flag when executing testsuite executables. [#10704](https://github.com/haskell/cabal/issues/10704) [#10725](https://github.com/haskell/cabal/pull/10725) + + Honour the `-working-dir` flag when executing testsuite executables. This fixes a + regression in Cabal-3.14.0.0. + +- Fix duplicate environment variables in test and benchmark runs [#10718](https://github.com/haskell/cabal/issues/10718) [#10827](https://github.com/haskell/cabal/pull/10827) + + Cabal no longer creates duplicate environment variables when running test + suites, benchmarks, or internal executables. Previously, when setting up the + environment for these processes, Cabal would append the overridden environment + to the existing environment, creating duplicates of the same variable. + +- Set `_datadir` to an absolute path when running tests [#10717](https://github.com/haskell/cabal/issues/10717) [#10828](https://github.com/haskell/cabal/pull/10828) + + Fix a regression where `_datadir` was set to a relative path. This + caused issues when running testsuites which changed the working directory and + accessed datafiles. + +### Other changes + +- Remove descriptions for sandbox in replCommand [#10482](https://github.com/haskell/cabal/issues/10482) [#10493](https://github.com/haskell/cabal/pull/10493) + + Text provided by `Setup.hs repl --help` contained outdated information concerning sandbox, which have now been removed. + +- Adds more version range checks to `cabal check`. [#9806](https://github.com/haskell/cabal/issues/9806) [#10554](https://github.com/haskell/cabal/pull/10554) + + For dependencies, warns about and checks that version range bounds for: + + - lower bounds are inclusive, don't use (>) + - upper bounds are exclusive, don't use (<=) + - upper bounds don't have trailing zeros, don't end with (*.0). + +- OpenBSD `--strip-unneeded` sometimes strips too much [#10616](https://github.com/haskell/cabal/pull/10616) + + OpenBSD's `--strip-unneeded` thinks some symbols are unneeded that are in fact + needed when C bits are involved, so suppress its use. + + Taken from the OpenBSD ports repo (https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/ghc/patches/patch-libraries_Cabal_Cabal_Distribution_Simple_Program_Strip_hs); + brought to our attention by maerwald. + + +- Suppress ghc-pkg warnings emitted when an empty packages is being registered [#9997](https://github.com/haskell/cabal/pull/9997) + + When a package contains a library that has no modules, `./Setup register` + tries to register the library with fields `haddock-interfaces:` and + `haddock-html:` pointing at non-existent files or directories, and `ghc-pkg + register` warns about them. + + To suppress the warnings prevent these fields from being generated when + there are no modules. + diff --git a/release-notes/cabal-install-3.14.0.0.md b/release-notes/cabal-install-3.14.0.0.md new file mode 100644 index 00000000000..3a890db9acc --- /dev/null +++ b/release-notes/cabal-install-3.14.0.0.md @@ -0,0 +1,141 @@ +cabal-install 3.14.0.0 changelog and release notes. +--- + + +### Significant changes + +- `haddock-project` support for subcomponents [#9821](https://github.com/haskell/cabal/pull/9821) + + - `haddock-project` handles sublibraries, test suites and benchmarks. + - `haddock` receives `--package-name` flag which allows to set names of + components which are included in the main `index.html` file. + - added `--use-unicode` flag to `haddock` and `haddock-project` commands. + - The directory structure of `./dist-newstyle` has changed. `haddock` + subcommand will install `package:sublib` component in a directory + `package/sublib` under `l/sublib/doc/html/`. This is important for + `haddock-project` command and in the future might will be useful for hackage + support of sublibraries. See + https://github.com/haskell/cabal/pull/9821#discussion_r1548557115. + +- Redefine `build-type: Configure` in terms of `Hooks` [#9969](https://github.com/haskell/cabal/pull/9969) + + The `build-type: Configure` is now implemented in terms of `build-type: Hooks` + rather than in terms of `build-type: Custom`. This moves the `Configure` + build-type away from the `Custom` issues. Eventually, `build-type: Hooks` will + no longer imply packages are built in legacy-fallback mode. When that + happens, `Configure` will also stop implying `legacy-fallback`. + + The observable aspect of this change is `runConfigureScript` now having a + different type, and `autoconfSetupHooks` being exposed from `Distribution.Simple`. + The former is motivated by internal implementation details, while the latter + provides the `SetupHooks` value for the `Configure` build type, which can be + consumed by other `Hooks` clients (e.g. eventually HLS). + +### Other changes + +- Add support for building profiled dynamic way [#4816](https://github.com/haskell/cabal/issues/4816) [#9900](https://github.com/haskell/cabal/pull/9900) + + + New options for `cabal.project` and `./Setup` interface: + + * `profiling-shared`: Enable building profiling dynamic way + * Passing `--enable-profiling` and `--enable-executable-dynamic` builds + profiled dynamic executables. + + Support for using `profiling-shared` is guarded behind a constraint + which ensures you are using `Cabal >= 3.13`. + + In the `.cabal` file: + + * `ghc-prof-shared-options`, for passing options when building in + profiling dynamic way + +- Fix interaction of `--*-shared` and `--*-executable-dynamic` options. [#10050](https://github.com/haskell/cabal/issues/10050) [#9900](https://github.com/haskell/cabal/pull/9900) + + If you explicitly request `--disable-shared` it should disable the building of + a shared library and override any automatic ways this option is turned on. + + Passing `--enable-executable-dynamic` turns on `--enable-shared` if the option is + not specified explicitly. + + Before this patch, writing `--disable-shared` on its own would not disable the building of shared libraries. Writing `--disable-shared` and `--disable-executable-dynamic` would disable shared library + creation (despite `--disable-executable-dynamic` being the default). + + Now: + + * If you specify `--enable-shared` then shared objects are built. + * If you specify `--disabled-shared` then shared objects are not built. + * If you don't explicitly specify whether you want to build shared libraries then + * `--enable-executable-dynamic` will automatically turn on building shared libraries + * `--enable-executable-dynamic --enable-profiling` will automatically turn on building + shared profiling libraries (if supported by your compiler). + +- `curl` transport now supports Basic authentication [#10089](https://github.com/haskell/cabal/pull/10089) + + - The `curl` HTTP transport previously only supported the HTTP Digest + authentication scheme. Basic authentication is now supported + when using HTTPS; Curl will use the scheme offered by the server. + The `wget` transport already supports HTTPS. + +- Enhance error detection for cabal root project files, including broken symlinks [#9937](https://github.com/haskell/cabal/issues/9937) [#10103](https://github.com/haskell/cabal/pull/10103) + + - Added proper detection and reporting for issues with cabal root project files. Previously, these files were silently ignored if they were broken symlinks. Now, `cabal` will exit + with an error in such case. + +- Let cabal init remember chosen language within current session [#10096](https://github.com/haskell/cabal/issues/10096) [#10115](https://github.com/haskell/cabal/pull/10115) + + When `cabal init` asks for a language, the last choice made will be used as the new default for the current prompt. + +- Filter out `-dinitial-unique` and `-dunique-increment` from package hash [#10122](https://github.com/haskell/cabal/pull/10122) + + `-dinitial-unique` and `-dunique-increment` are now filtered out when computing the + store hash of a package. + + These options shouldn't affect the output of the package and hence + shouldn't affect the store hash of a package. + +- Warn about `git://` protocol [#10261](https://github.com/haskell/cabal/pull/10261) + + `cabal check` will warn about the insecure (and no longer supported by GitHub or Gitlab, among others) `git://` protocol in `source-repository`. + + See [Git Book](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#_the_cons_4) + for an explanation. + +- Enable recompilation avoidance during Haddock generation [#9175](https://github.com/haskell/cabal/issues/9175) [#9177](https://github.com/haskell/cabal/pull/9177) + + * Haddock no longer writes compilation files by default, so we do not need to + pass tmp dirs for `-hidir`, `-stubdir`, and `-odir` via `--optghc`. Indeed, we + do not *want* to do so, since it results in recompilation for every invocation + of Haddock via Cabal. We now stop this from happening for Haddock versions + 2.28 and greater, since that is when Hi Haddock was introduced. + + * We no longer define the `__HADDOCK_VERSION__` macro when invoking GHC through + Haddock, since doing so essentially guarantees recompilation during + documentation generation. We audited all uses of `__HADDOCK_VERSION__` in + hackage, ensuring there was a reasonable path forward to migrate away from + using `__HADDOCK_VERSION__` for each, while generating the same documentation + as it did before. + If you are a user of `__HADDOCK_VERSION__`, please take a look at the + discussion in https://github.com/haskell/cabal/pull/9177 and reach out to us + if your use case is not covered. + + * Rename the `--haddock-lib` flag to `--haddock-resources-dir` (and + `haddock-lib:` cabal.project field to `haddock-resources-dir:`), and add this + flag to the users guide since it was missing an entry. + + * `documentation: true` or `--enable-documentation` now implies `-haddock` for + GHC. + +- Bug fix - Don't pass `--coverage-for` for non-dependency libs of testsuite [#10046](https://github.com/haskell/cabal/issues/10046) [#10250](https://github.com/haskell/cabal/pull/10250) + +- Added `--all` and `--haddock-all` switches to `haddock-project` subcommand [#10051](https://github.com/haskell/cabal/issues/10051) [#10163](https://github.com/haskell/cabal/pull/10163) + +- Clarify error message when `pkg-config` is not found [#10122](https://github.com/haskell/cabal/pull/10122) + + - The error message when `pkg-config` is not found or querying it fails will no + longer incorrectly claim that the package is missing in the database. + +- Update the SPDX License List to version 3.25 + + The LicenseId and LicenseExceptionId types are updated to reflect the SPDX + License List version 3.25 (2024-08-19). diff --git a/release-notes/cabal-install-3.14.1.0.md b/release-notes/cabal-install-3.14.1.0.md new file mode 100644 index 00000000000..a0da01b2593 --- /dev/null +++ b/release-notes/cabal-install-3.14.1.0.md @@ -0,0 +1,16 @@ +## cabal-install and cabal-install-solver 3.14.1.0 changelog + +- Fix a bug that causes `cabal init` to crash if `git` is not installed [#8478](https://github.com/haskell/cabal/issues/8478) [#10484](https://github.com/haskell/cabal/issues/10484) [#10486](https://github.com/haskell/cabal/pull/10486) + + - `cabal init` tries to use `git config` to guess the user's name and email. + It no longer crashes if there is no executable named `git` on `$PATH`. + +- Print out which project file we are using with the default verbosity [#8519](https://github.com/haskell/cabal/issues/8519) [#10507](https://github.com/haskell/cabal/pull/10507) + + - Many people have been burnt by cabal catching stray project files located up + the directory tree. This change tries to protect them at the expense of + producing more output by default. In particular, before this change, you could + see which project file is in use by supplying `-v` (the verbose mode), and + after the change we print this information with the default verbosity. + Changing the behaviour of cabal is out of scope of this change, and will + hopefully be done in the future versions (see #9353 for a way forward). diff --git a/release-notes/cabal-install-3.14.1.1.md b/release-notes/cabal-install-3.14.1.1.md new file mode 100644 index 00000000000..594bcb701ca --- /dev/null +++ b/release-notes/cabal-install-3.14.1.1.md @@ -0,0 +1,5 @@ +## cabal-install 3.14.1.1 changelog + +### Significant changes + +- Support for GHC 9.12 [10671](https://github.com/haskell/cabal/pull/10671) diff --git a/release-notes/cabal-install-3.14.2.0.md b/release-notes/cabal-install-3.14.2.0.md new file mode 100644 index 00000000000..2e8ea041d6d --- /dev/null +++ b/release-notes/cabal-install-3.14.2.0.md @@ -0,0 +1,103 @@ +## cabal-install and cabal-install-solver 3.14.2.0 changelog + +### Significant changes + +- Honour `extra-prog-path` from the the global configuration [#9800](https://github.com/haskell/cabal/issues/9800) [#10826](https://github.com/haskell/cabal/pull/10826) + + The initial configuration of programs was done without the `extra-prog-path` from the global cabal configuration. This meant that in some cases, some executables were not found. In particular this manifested as Windows users who didn't add the MSYS2 paths to the global PATH couldn't make use of `pkg-config`. + +- Fix regression where `build-tool-depends` is not used [#10633](https://github.com/haskell/cabal/issues/10633) [#10692](https://github.com/haskell/cabal/issues/10692) [#10731](https://github.com/haskell/cabal/pull/10731) + + Fixes a regression from 3.14.1.0 where a globally found executable would be found + rather than a dependency specified with `build-tool-depends`. + +- Fix `cabal repl --enable-multi-repl` when only specifying some targets from a package. [#10775](https://github.com/haskell/cabal/issues/10775) [#10841](https://github.com/haskell/cabal/pull/10841) + + Fix a bug `cabal repl --enable-multi-repl` where the repl would fail to start if you + only specified some targets to be loaded. + In particular, if you are using internal libraries you may be affected by this bug. + +### Other changes + +- Fix `file+noindex` URI usage on Windows [#10703](https://github.com/haskell/cabal/issues/10703) [#10728](https://github.com/haskell/cabal/pull/10728) [#10746](https://github.com/haskell/cabal/pull/10746) + + `file+noindex` repositories in Windows systems must use the format + `file+noindex:C:/path/to/repo`. This is the only syntax for DOS paths fully + supported by the `network-uri` package, which Cabal uses to interpret URIs in + repository stanzas. + +- Create `noindex.cache` file if missing [#9891](https://github.com/haskell/cabal/issues/9891) [#10730](https://github.com/haskell/cabal/pull/10730) + + Local+noindex repositories will have their `noindex.cache` file created the first time they are accessed. + +- Fix regression where 'build' folder was created in CWD when running a standlone script. [#10772](https://github.com/haskell/cabal/issues/10772) [#10800](https://github.com/haskell/cabal/pull/10800) + + Fix a regression where the `build` folder was created in the current directory + when running a standalone script. + +- Fix duplicate environment variables in test and benchmark runs [#10718](https://github.com/haskell/cabal/issues/10718) [#10827](https://github.com/haskell/cabal/pull/10827) + + Cabal no longer creates duplicate environment variables when running test + suites, benchmarks, or internal executables. Previously, when setting up the + environment for these processes, Cabal would append the overridden environment + to the existing environment, creating duplicates of the same variable. + +- Deduplicate the "using configuration from" message [#10546](https://github.com/haskell/cabal/pull/10546) + + Deduplicates and sorts the list of configuration files and URIs printed with the + "using configuration from" message. This message is shown when there's a build + failure. We can trigger that message by using a non-existant package in the + project, "no-pkg-dir". + + If an import is repeated in a `.project` or `.config` file it only imported once + but if the same import is made from an imported file then it was being repeated + in the message. Additional problems were not showing the project first and + mixing configuration files and URIs together. + + * Before the fix: + + ``` + $ ~/.ghcup/bin/cabal-3.12.1.0 build all --dry-run + When using configuration from: + - a-very-extra.config + - an-extra.config + - cabal.project + - https://www.stackage.org/lts-21.25/cabal.config + - https://www.stackage.org/lts-21.25/cabal.config + - https://www.stackage.org/lts-21.25/cabal.config + - z-empty.config + The following errors occurred: + - The package location 'no-pkg-dir' does not exist. + ``` + + * After the fix: + + ``` + $ cabal build all --dry-run + When using configuration from: + - cabal.project + - a-very-extra.config + - an-extra.config + - z-empty.config + - https://www.stackage.org/lts-21.25/cabal.config + The following errors occurred: + - The package location 'no-pkg-dir' does not exist. + ``` +- Add a custom `Ord` instance for `ProjectConfigPath` ([#10546](https://github.com/haskell/cabal/pull/10546)) + + The instance sorts URIs after local + file paths and longer file paths after shorter ones as measured by the number of + path segments. If still equal, then sorting is lexical. The project itself, a + single element root path, compared to any of the configuration paths it imports, + should always sort first. Comparing one project root path against another is + done lexically. + +### Unresolved Issues + +- Using the short git hashes in source-repository-package will no longer work [#10605](https://github.com/haskell/cabal/issues/10605) + + It has always been assumed, but not checked, that you will specify the + tag of a repository package using an unambiguous hash. If you encounter this + problem then replace your short hash with a full long hash for a backward and forward + compatible fix. + diff --git a/scripts/release/create-release-metadata-for-ghcup.sh b/scripts/release/create-release-metadata-for-ghcup.sh index c8683c2b85c..6cf3415ce75 100755 --- a/scripts/release/create-release-metadata-for-ghcup.sh +++ b/scripts/release/create-release-metadata-for-ghcup.sh @@ -26,49 +26,42 @@ cat < /dev/stdout viTags: - Latest viChangeLog: https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-$RELEASE.md - viPostInstall: *cabal-${RELEASE//./}-post-install + # uncomment viPostInstall if the release needs a post-install message + # viPostInstall: &cabal-${RELEASE//./}-post-install | viArch: A_64: Linux_UnknownLinux: unknown_versioning: &cabal-${RELEASE//./}-64 - dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz - dlSubdir: cabal-install-$RELEASE - dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz" | awk '{ print $1 }') + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-alpine3_12.tar.xz" | awk '{ print $1 }') Linux_Alpine: - unknown_versioning: &cabal-${RELEASE//./}-64 + unknown_versioning: *cabal-${RELEASE//./}-64 Linux_CentOS: unknown_versioning: &cabal-${RELEASE//./}-64-centos7 - dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz - dlSubdir: cabal-install-$RELEASE - dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }') + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-centos7.tar.xz" | awk '{ print $1 }') Linux_Debian: - ' ( >= 9 && < 10)': &cabal-${RELEASE//./}-64-debian + '( >= 9 && < 10)': &cabal-${RELEASE//./}-64-debian dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb9.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb9.tar.xz" | awk '{ print $1 }') - ' ( == 10 && < 11)': + '( == 10 && < 11)': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb10.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb10.tar.xz" | awk '{ print $1 }') - ' ( >= 11)': + '( >= 11)': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-deb11.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-deb11.tar.xz" | awk '{ print $1 }') - unknown_versioning: &cabal-${RELEASE//./}-64-debian + unknown_versioning: *cabal-${RELEASE//./}-64-debian Linux_Fedora: '>= 33': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-fedora33.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-fedora33.tar.xz" | awk '{ print $1 }') - unknown_versioning: &cabal-${RELEASE//./}-64-centos7 + unknown_versioning: *cabal-${RELEASE//./}-64-centos7 Linux_Ubuntu: '< 20': &cabal-${RELEASE//./}-64-ubuntu18 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-ubuntu18_04.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-ubuntu18_04.tar.xz" | awk '{ print $1 }') '>= 20': &cabal-${RELEASE//./}-64-ubuntu20 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-linux-ubuntu20_04.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-linux-ubuntu20_04.tar.xz" | awk '{ print $1 }') unknown_versioning: *cabal-${RELEASE//./}-64-ubuntu18 Linux_Mint: @@ -78,48 +71,44 @@ cat < /dev/stdout Darwin: unknown_versioning: dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-darwin.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-darwin.tar.xz" | awk '{ print $1 }') Windows: unknown_versioning: dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-windows.zip - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-windows.zip" | awk '{ print $1 }') FreeBSD: unknown_versioning: - dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-freebsd.tar.xz - dlSubdir: cabal-install-$RELEASE - dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-freebsd.tar.xz" | awk '{ print $1 }') + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-x86_64-freebsd-14.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-x86_64-freebsd-14.tar.xz" | awk '{ print $1 }') A_32: Linux_UnknownLinux: unknown_versioning: &cabal-${RELEASE//./}-32 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-i386-linux-alpine3_12.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-i386-linux-alpine3_12.tar.xz" | awk '{ print $1 }') Linux_Alpine: unknown_versioning: *cabal-${RELEASE//./}-32 Linux_Debian: '( >= 9 )': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-i386-linux-deb9.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-i386-linux-deb9.tar.xz" | awk '{ print $1 }') unknown_versioning: *cabal-${RELEASE//./}-32 A_ARM64: Darwin: unknown_versioning: dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-darwin.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-darwin.tar.xz" | awk '{ print $1 }') Linux_Debian: - '( >= 10 && < 11)': &cabal-31020-arm64 + '( >= 10 && < 11)': &cabal-${RELEASE//./}-arm64 dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-deb10.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-deb10.tar.xz" | awk '{ print $1 }') '( >= 11)': dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-deb11.tar.xz - dlSubdir: cabal-install-$RELEASE dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-deb11.tar.xz" | awk '{ print $1 }') unknown_versioning: *cabal-${RELEASE//./}-arm64 + Linux_Alpine: + unknown_versioning: + dlUri: https://downloads.haskell.org/~cabal/cabal-install-$RELEASE/cabal-install-$RELEASE-aarch64-linux-alpine3_18.tar.xz + dlHash: $(sha256sum "cabal-install-$RELEASE-aarch64-linux-alpine3_18.tar.xz" | awk '{ print $1 }') Linux_UnknownLinux: unknown_versioning: *cabal-${RELEASE//./}-arm64 EOF diff --git a/solver-benchmarks/solver-benchmarks.cabal b/solver-benchmarks/solver-benchmarks.cabal index 42ebd616f9a..bb92f0c6329 100644 --- a/solver-benchmarks/solver-benchmarks.cabal +++ b/solver-benchmarks/solver-benchmarks.cabal @@ -31,7 +31,7 @@ library base, bytestring, containers, - Cabal-syntax ^>= 3.13, + Cabal-syntax ^>= 3.14, directory, filepath, optparse-applicative, diff --git a/templates/SPDX.LicenseExceptionId.template.hs b/templates/SPDX.LicenseExceptionId.template.hs index c2fcd1462b9..0ef6787416b 100644 --- a/templates/SPDX.LicenseExceptionId.template.hs +++ b/templates/SPDX.LicenseExceptionId.template.hs @@ -29,10 +29,10 @@ import qualified Text.PrettyPrint as Disp -- LicenseExceptionId ------------------------------------------------------------------------------- --- | SPDX License Exceptions identifiers list v3.23 +-- | SPDX License Exceptions identifiers list v3.25 data LicenseExceptionId {{ licenseIds }} - deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable, Data, Generic) + deriving (Eq, Ord, Enum, Bounded, Show, Read, Data, Generic) instance Binary LicenseExceptionId where put = Binary.putWord8 . fromIntegral . fromEnum @@ -101,6 +101,9 @@ licenseExceptionIdList LicenseListVersion_3_16 = licenseExceptionIdList LicenseListVersion_3_23 = {{licenseList_perv.v_3_23}} ++ bulkOfLicenses +licenseExceptionIdList LicenseListVersion_3_25 = +{{licenseList_perv.v_3_25}} + ++ bulkOfLicenses -- | Create a 'LicenseExceptionId' from a 'String'. mkLicenseExceptionId :: LicenseListVersion -> String -> Maybe LicenseExceptionId @@ -111,6 +114,7 @@ mkLicenseExceptionId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9 mkLicenseExceptionId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10 mkLicenseExceptionId LicenseListVersion_3_16 s = Map.lookup s stringLookup_3_16 mkLicenseExceptionId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23 +mkLicenseExceptionId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25 stringLookup_3_0 :: Map String LicenseExceptionId stringLookup_3_0 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $ @@ -140,6 +144,10 @@ stringLookup_3_23 :: Map String LicenseExceptionId stringLookup_3_23 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $ licenseExceptionIdList LicenseListVersion_3_23 +stringLookup_3_25 :: Map String LicenseExceptionId +stringLookup_3_25 = Map.fromList $ map (\i -> (licenseExceptionId i, i)) $ + licenseExceptionIdList LicenseListVersion_3_25 + -- | License exceptions in all SPDX License lists bulkOfLicenses :: [LicenseExceptionId] bulkOfLicenses = diff --git a/templates/SPDX.LicenseId.template.hs b/templates/SPDX.LicenseId.template.hs index 6ee2bf6ede3..be48789fdc3 100644 --- a/templates/SPDX.LicenseId.template.hs +++ b/templates/SPDX.LicenseId.template.hs @@ -32,10 +32,10 @@ import qualified Text.PrettyPrint as Disp -- LicenseId ------------------------------------------------------------------------------- --- | SPDX License identifiers list v3.23 +-- | SPDX License identifiers list v3.25 data LicenseId {{ licenseIds }} - deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable, Data) + deriving (Eq, Ord, Enum, Bounded, Show, Read, Data) instance Binary LicenseId where -- Word16 is encoded in big endianess @@ -178,6 +178,9 @@ licenseIdList LicenseListVersion_3_16 = licenseIdList LicenseListVersion_3_23 = {{licenseList_perv.v_3_23}} ++ bulkOfLicenses +licenseIdList LicenseListVersion_3_25 = +{{licenseList_perv.v_3_25}} + ++ bulkOfLicenses -- | Create a 'LicenseId' from a 'String'. mkLicenseId :: LicenseListVersion -> String -> Maybe LicenseId @@ -188,6 +191,7 @@ mkLicenseId LicenseListVersion_3_9 s = Map.lookup s stringLookup_3_9 mkLicenseId LicenseListVersion_3_10 s = Map.lookup s stringLookup_3_10 mkLicenseId LicenseListVersion_3_16 s = Map.lookup s stringLookup_3_16 mkLicenseId LicenseListVersion_3_23 s = Map.lookup s stringLookup_3_23 +mkLicenseId LicenseListVersion_3_25 s = Map.lookup s stringLookup_3_25 stringLookup_3_0 :: Map String LicenseId stringLookup_3_0 = Map.fromList $ map (\i -> (licenseId i, i)) $ @@ -217,6 +221,10 @@ stringLookup_3_23 :: Map String LicenseId stringLookup_3_23 = Map.fromList $ map (\i -> (licenseId i, i)) $ licenseIdList LicenseListVersion_3_23 +stringLookup_3_25 :: Map String LicenseId +stringLookup_3_25 = Map.fromList $ map (\i -> (licenseId i, i)) $ + licenseIdList LicenseListVersion_3_25 + -- | Licenses in all SPDX License lists bulkOfLicenses :: [LicenseId] bulkOfLicenses =