1 #!/usr/bin/env nix-shell
2 #!nix-shell -i bash -p nix jq common-updater-scripts
6 nixpkgs
="$(git rev-parse --show-toplevel || (printf 'Could not find root of nixpkgs repo\nAre we running from within the nixpkgs git repo?\n' >&2; exit 1))"
9 sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
13 nix
--extra-experimental-features nix-command
eval --json --impure -f "$nixpkgs" "$1" | jq
-r .
17 (nix
--extra-experimental-features nix-command build
--impure --argstr nixpkgs
"$nixpkgs" --argstr attr
"$1" --expr '{ nixpkgs, attr }: let pkgs = import nixpkgs {}; in with pkgs.lib; (getAttrFromPath (splitString "." attr) pkgs).overrideAttrs (attrs: { outputHash = fakeHash; })' --no-link 2>&1 >/dev
/null |
tail -n3 |
grep -F got
: | cut
-d: -f2- | stripwhitespace
) 2>/dev
/null || true
21 path
="$(nix --extra-experimental-features nix-command eval --json --impure -f "$nixpkgs" "$1.meta.position
" | jq -r . | cut -d: -f1)"
22 outpath
="$(nix --extra-experimental-features nix-command eval --json --impure --expr "builtins.fetchGit
\"$nixpkgs\"")"
24 if [ -n "$outpath" ]; then
25 path
="${path/$(echo "$outpath" | jq -r .)/$nixpkgs}"
31 attr
="${UPDATE_NIX_ATTR_PATH:-sonic-pi}"
32 version
="$(cd "$nixpkgs" && list-git-tags --pname="$
(nixeval
"$attr".pname
)" --attr-path="$attr" | grep '^v' | sed -e 's|^v||' | sort -V | tail -n1)"
34 pkgpath
="$(findpath "$attr")"
36 updated
="$(cd "$nixpkgs" && update-source-version "$attr" "$version" --file="$pkgpath" --print-changes | jq -r length)"
38 if [ "$updated" -eq 0 ]; then
39 echo 'update.sh: Package version not updated, nothing to do.'
43 curhash
="$(nixeval "$attr.mixFodDeps.outputHash
")"
44 newhash
="$(vendorhash "$attr.mixFodDeps
")"
46 if [ -n "$newhash" ] && [ "$curhash" != "$newhash" ]; then
47 sed -i -e "s|\"$curhash\"|\"$newhash\"|" "$pkgpath"
49 echo 'update.sh: New vendorHash same as old vendorHash, nothing to do.'