diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/blockchains/nbxplorer/util')
-rwxr-xr-x | nixpkgs/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh | 45 | ||||
-rwxr-xr-x | nixpkgs/pkgs/applications/blockchains/nbxplorer/util/update-common.sh | 51 |
2 files changed, 96 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh b/nixpkgs/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh new file mode 100755 index 000000000000..1402d1cd1eb8 --- /dev/null +++ b/nixpkgs/pkgs/applications/blockchains/nbxplorer/util/create-deps.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p dotnet-sdk_3 +set -euo pipefail + +# Writes deps for dotnet package in $pkgSrc to $depsFile. +# Expects $pkgSrc to contain a single .sln file. + +pkgSrc=$1 +depsFile=$2 + +sln=$(cd "$pkgSrc"; find * -maxdepth 0 -name '*.sln' | head -1) +[[ $sln ]] || { echo "No .sln file in $pkgSrc" ; exit 1; } + +tmpdir=$(mktemp -d /tmp/$pkgName-src.XXX) +echo "Using tmp dir: $tmpdir" +cp -rT "$pkgSrc" "$tmpdir" +chmod -R +w "$tmpdir" + +pushd "$tmpdir" > /dev/null +mkdir home +echo "Running dotnet restore for $sln" +HOME=home DOTNET_CLI_TELEMETRY_OPTOUT=1 \ + dotnet restore -v normal --no-cache "$sln" > restore_log + +echo "{ fetchNuGet }: [" > "$depsFile" +while read pkgSpec; do + { read name; read version; } < <( + # Ignore build version part: 1.0.0-beta2+77df2220 -> 1.0.0-beta2 + sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkgSpec" + ) + sha256=$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkgSpec")"/*.nupkg) + cat >> "$depsFile" <<EOF + (fetchNuGet { + name = "$name"; + version = "$version"; + sha256 = "$sha256"; + }) +EOF +done < <(find home/.nuget/packages -name '*.nuspec' | LC_ALL=C sort) +echo "]" >> "$depsFile" + +echo "Created $depsFile" + +popd > /dev/null +rm -r $tmpdir diff --git a/nixpkgs/pkgs/applications/blockchains/nbxplorer/util/update-common.sh b/nixpkgs/pkgs/applications/blockchains/nbxplorer/util/update-common.sh new file mode 100755 index 000000000000..c69168ccbbb1 --- /dev/null +++ b/nixpkgs/pkgs/applications/blockchains/nbxplorer/util/update-common.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p coreutils curl jq common-updater-scripts dotnet-sdk_3 +set -euo pipefail + +# This script uses the following env vars: +# getVersionFromTags +# onlyCreateDeps + +pkgName=$1 +depsFile=$2 + +: ${getVersionFromTags:=} +: ${onlyCreateDeps:=} + +scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd) +nixpkgs=$(realpath "$scriptDir"/../../../../..) + +evalNixpkgs() { + nix eval --raw "(with import \"$nixpkgs\" {}; $1)" +} + +getRepo() { + url=$(evalNixpkgs $pkgName.src.meta.homepage) + echo $(basename $(dirname $url))/$(basename $url) +} + +getLatestVersionTag() { + "$nixpkgs"/pkgs/common-updater/scripts/list-git-tags https://github.com/$(getRepo) 2>/dev/null \ + | sort -V | tail -1 | sed 's|^v||' +} + +if [[ ! $onlyCreateDeps ]]; then + oldVersion=$(evalNixpkgs "$pkgName.version") + if [[ $getVersionFromTags ]]; then + newVersion=$(getLatestVersionTag) + else + newVersion=$(curl -s "https://api.github.com/repos/$(getRepo)/releases" | jq -r '.[0].name') + fi + + if [[ $newVersion == $oldVersion ]]; then + echo "nixpkgs already has the latest version $newVersion" + echo "Run this script with env var onlyCreateDeps=1 to recreate "$(basename "$depsFile") + exit 0 + else + echo "Updating $pkgName: $oldVersion -> $newVersion" + (cd "$nixpkgs" && update-source-version "$pkgName" "$newVersion") + fi +fi + +storeSrc="$(nix-build "$nixpkgs" -A $pkgName.src --no-out-link)" +. "$scriptDir"/create-deps.sh "$storeSrc" "$depsFile" |