diff options
author | Nicolas Pierron <nicolas.b.pierron@gmail.com> | 2009-11-21 17:50:00 +0000 |
---|---|---|
committer | Nicolas Pierron <nicolas.b.pierron@gmail.com> | 2009-11-21 17:50:00 +0000 |
commit | 00efa9c2dd8b397a09b3123dd2d720798bc28433 (patch) | |
tree | 8c606fbd974515d13f7917a8c29c0e12f79adddd /maintainers/scripts/dep-licenses.sh | |
parent | 86f8f47d870346ddbb593582d354327e6ff01237 (diff) | |
download | nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.tar nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.tar.gz nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.tar.bz2 nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.tar.lz nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.tar.xz nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.tar.zst nixlib-00efa9c2dd8b397a09b3123dd2d720798bc28433.zip |
* Add a script to retrieve licenses of the current derivation and of all
its dependencies. To make it works, you need to change the default stdenv as documented in the error message. ./maintainers/scripts/dep-licenses.sh <attribute name> svn path=/nixpkgs/trunk/; revision=18508
Diffstat (limited to 'maintainers/scripts/dep-licenses.sh')
-rwxr-xr-x | maintainers/scripts/dep-licenses.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/maintainers/scripts/dep-licenses.sh b/maintainers/scripts/dep-licenses.sh new file mode 100755 index 000000000000..48c1efdeebc5 --- /dev/null +++ b/maintainers/scripts/dep-licenses.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +attr=$1 + +: ${NIXPKGS=/etc/nixos/nixpkgs} + +tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX) + +exitHandler() { + exitCode=$? + rm -rf "$tmp" + exit $exitCode +} + +trap "exitHandler" EXIT + +# fetch the trace and the drvPath of the attribute. +nix-instantiate $NIXPKGS -A $attr --show-trace > "$tmp/drvPath" 2> "$tmp/trace" || { + cat 1>&2 - "$tmp/trace" <<EOF +An error occured while evaluating $attr. +EOF + exit 1 +} + +# generate a sed script based on the trace output. +sed ' + \,@:.*:@, { + # \1 *.drv file + # \2 License terms + s,.*@:drv:\(.*\):\(.*\):@.*,s!\1!\1: \2!; t;, + s!Str(\\\"\([^,]*\)\\\",\[\])!\1!g + b + } + d +' "$tmp/trace" > "$tmp/filter.sed" + +if test $(wc -l "$tmp/filter.sed" | sed 's/ .*//') == 0; then + echo 1>&2 " +No derivation mentionned in the stack trace. Either your derivation does +not use stdenv.mkDerivation or you forgot to use the stdenv adapter named +traceDrvLicenses. + +- defaultStdenv = allStdenvs.stdenv; ++ defaultStdenv = traceDrvLicenses allStdenvs.stdenv; +" + exit 1 +fi + + +# remove all dependencies which are using stdenv.mkDerivation +echo ' +d +' >> "$tmp/filter.sed" + +nix-store -q --tree $(cat "$tmp/drvPath") | sed -f "$tmp/filter.sed" + +exit 0; |