eventstore: Fix create-deps.sh script and update dependencies
The old version of the script tried to parse the output of the dotnet tool, but apparently, that output changed and thus the list of dependencies was empty.
This commit is contained in:
parent
be738c1590
commit
80cf9cd7ee
2 changed files with 577 additions and 412 deletions
114
pkgs/servers/nosql/eventstore/create-deps.sh
Normal file → Executable file
114
pkgs/servers/nosql/eventstore/create-deps.sh
Normal file → Executable file
|
@ -1,34 +1,98 @@
|
|||
# 1. create a log with `dotnet restore -v m MyPackage.sln > mypackage-restore.log
|
||||
# 2. then call ./create-deps.sh mypackage-restore.log
|
||||
#! /usr/bin/env nix-shell
|
||||
#! nix-shell -i bash -p dotnet-sdk_5 jq xmlstarlet curl nixpkgs-fmt
|
||||
set -euo pipefail
|
||||
|
||||
urlbase="https://www.nuget.org/api/v2/package"
|
||||
cat << EOL
|
||||
{ fetchurl }: let
|
||||
# Run this script to generate deps.nix
|
||||
|
||||
# TODO: consolidate with other dotnet deps generation scripts by which
|
||||
# this script is inspired:
|
||||
# - pkgs/servers/nosql/eventstore/create-deps.sh
|
||||
# - pkgs/development/dotnet-modules/python-language-server/create_deps.sh
|
||||
# - pkgs/misc/emulators/ryujinx/updater.sh
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
|
||||
deps_file="$(realpath "./deps.nix")"
|
||||
|
||||
exec 2>&1 6> "$deps_file"
|
||||
|
||||
store_src="$( nix-build ../../../.. -A eventstore.src --no-out-link )"
|
||||
src="$(mktemp -d)"
|
||||
cp -rT "$store_src" "$src"
|
||||
chmod -R +w "$src"
|
||||
pushd "$src"
|
||||
|
||||
URLBASE="https://www.nuget.org/api/v2/package"
|
||||
|
||||
DEPS_HEADER="
|
||||
{ fetchurl }:
|
||||
let
|
||||
nugetUrlBase = \"$URLBASE\";
|
||||
fetchNuGet = { name, version, sha256 }: fetchurl {
|
||||
inherit sha256;
|
||||
url = "$urlbase/\${name}/\${version}";
|
||||
url = \"\${nugetUrlBase}/\${name}/\${version}\";
|
||||
};
|
||||
in ["
|
||||
|
||||
in [
|
||||
EOL
|
||||
IFS=''
|
||||
while read line; do
|
||||
if echo $line | grep -q "Installing "; then
|
||||
name=$(echo $line | sed -r 's/ Installing ([^ ]+) (.+)./\1/')
|
||||
version=$(echo $line | sed -r 's/ Installing ([^ ]+) (.+)./\2/')
|
||||
sha256=$(nix-prefetch-url "$urlbase/$name/$version" 2>/dev/null)
|
||||
cat << EOL
|
||||
DEPS_FOOTER="]"
|
||||
|
||||
DEPS_TEMPLATE="
|
||||
(fetchNuGet {
|
||||
name = "$name";
|
||||
version = "$version";
|
||||
sha256 = "$sha256";
|
||||
})
|
||||
EOL
|
||||
fi
|
||||
done < $1
|
||||
cat << EOL
|
||||
name = \"%s\";
|
||||
version = \"%s\";
|
||||
sha256 = \"%s\";
|
||||
})"
|
||||
|
||||
]
|
||||
EOL
|
||||
tmpdir="$(mktemp -d -p "$(pwd)")" # must be under source root
|
||||
trap 'rm -rf "$tmpdir"' EXIT
|
||||
|
||||
HOME="$tmpdir" dotnet restore --packages "$tmpdir"/.nuget/packages \
|
||||
--no-cache --force --runtime linux-x64 \
|
||||
src/EventStore.sln >&2
|
||||
|
||||
mapfile -t repos < <(
|
||||
xmlstarlet sel -t -v 'configuration/packageSources/add/@value' -n NuGet.config "$tmpdir"/.nuget/NuGet/NuGet.Config |
|
||||
while IFS= read index
|
||||
do
|
||||
curl --compressed -fsL "$index" | \
|
||||
jq -r '.resources[] | select(."@type" == "PackageBaseAddress/3.0.0")."@id"'
|
||||
done
|
||||
)
|
||||
|
||||
echo $DEPS_HEADER >&6
|
||||
|
||||
cd "$tmpdir/.nuget/packages"
|
||||
for package in *
|
||||
do
|
||||
cd "$package"
|
||||
for version in *
|
||||
do
|
||||
found=false
|
||||
for repo in "${repos[@]}"
|
||||
do
|
||||
url="$repo$package/$version/$package.$version.nupkg"
|
||||
if curl -fsL "$url" -o /dev/null
|
||||
then
|
||||
found=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if ! $found
|
||||
then
|
||||
echo "couldn't find $package $version" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sha256=$(nix-prefetch-url "$url" 2>/dev/null)
|
||||
|
||||
printf "$DEPS_TEMPLATE" $package $version $sha256 >&6
|
||||
done
|
||||
cd ..
|
||||
done
|
||||
|
||||
echo $DEPS_FOOTER >&6
|
||||
|
||||
exec 6>&-
|
||||
|
||||
nixpkgs-fmt "$deps_file"
|
||||
|
|
873
pkgs/servers/nosql/eventstore/deps.nix
generated
873
pkgs/servers/nosql/eventstore/deps.nix
generated
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue