Merge pull request #201755 from lilyinstarlight/fix/sonic-pi-inputs-qa
sonic-pi: add updateScript and add ruby to nativeBuildInputs
This commit is contained in:
commit
09c509a507
|
@ -63,6 +63,7 @@ stdenv.mkDerivation rec {
|
||||||
copyDesktopItems
|
copyDesktopItems
|
||||||
cmake
|
cmake
|
||||||
pkg-config
|
pkg-config
|
||||||
|
ruby
|
||||||
erlang
|
erlang
|
||||||
elixir
|
elixir
|
||||||
beamPackages.hex
|
beamPackages.hex
|
||||||
|
@ -94,7 +95,6 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
parallel
|
parallel
|
||||||
ruby
|
|
||||||
supercollider-with-sc3-plugins
|
supercollider-with-sc3-plugins
|
||||||
jack2
|
jack2
|
||||||
];
|
];
|
||||||
|
@ -216,6 +216,8 @@ stdenv.mkDerivation rec {
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
passthru.updateScript = ./update.sh;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "https://sonic-pi.net/";
|
homepage = "https://sonic-pi.net/";
|
||||||
description = "Free live coding synth for everyone originally designed to support computing and music lessons within schools";
|
description = "Free live coding synth for everyone originally designed to support computing and music lessons within schools";
|
||||||
|
|
50
pkgs/applications/audio/sonic-pi/update.sh
Executable file
50
pkgs/applications/audio/sonic-pi/update.sh
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p nix jq common-updater-scripts
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
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))"
|
||||||
|
|
||||||
|
stripwhitespace() {
|
||||||
|
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'
|
||||||
|
}
|
||||||
|
|
||||||
|
nixeval() {
|
||||||
|
nix --extra-experimental-features nix-command eval --json --impure -f "$nixpkgs" "$1" | jq -r .
|
||||||
|
}
|
||||||
|
|
||||||
|
vendorhash() {
|
||||||
|
(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
|
||||||
|
}
|
||||||
|
|
||||||
|
findpath() {
|
||||||
|
path="$(nix --extra-experimental-features nix-command eval --json --impure -f "$nixpkgs" "$1.meta.position" | jq -r . | cut -d: -f1)"
|
||||||
|
outpath="$(nix --extra-experimental-features nix-command eval --json --impure --expr "builtins.fetchGit \"$nixpkgs\"")"
|
||||||
|
|
||||||
|
if [ -n "$outpath" ]; then
|
||||||
|
path="${path/$(echo "$outpath" | jq -r .)/$nixpkgs}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$path"
|
||||||
|
}
|
||||||
|
|
||||||
|
attr="${UPDATE_NIX_ATTR_PATH:-sonic-pi}"
|
||||||
|
version="$(cd "$nixpkgs" && list-git-tags --pname="$(nixeval "$attr".pname)" --attr-path="$attr" | grep '^v' | sed -e 's|^v||' | sort -V | tail -n1)"
|
||||||
|
|
||||||
|
pkgpath="$(findpath "$attr")"
|
||||||
|
|
||||||
|
updated="$(cd "$nixpkgs" && update-source-version "$attr" "$version" --file="$pkgpath" --print-changes | jq -r length)"
|
||||||
|
|
||||||
|
if [ "$updated" -eq 0 ]; then
|
||||||
|
echo 'update.sh: Package version not updated, nothing to do.'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
curhash="$(nixeval "$attr.mixFodDeps.outputHash")"
|
||||||
|
newhash="$(vendorhash "$attr.mixFodDeps")"
|
||||||
|
|
||||||
|
if [ -n "$newhash" ] && [ "$curhash" != "$newhash" ]; then
|
||||||
|
sed -i -e "s|\"$curhash\"|\"$newhash\"|" "$pkgpath"
|
||||||
|
else
|
||||||
|
echo 'update.sh: New vendorHash same as old vendorHash, nothing to do.'
|
||||||
|
fi
|
Loading…
Reference in a new issue