summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid McFarland <corngood@gmail.com>2022-10-16 17:47:23 -0300
committerDavid McFarland <corngood@gmail.com>2023-06-24 19:13:16 -0300
commitee8ba995a746b317d94abcbaeb877f200e1cd37b (patch)
tree482ff75071c310176271c148af57de75057a78ed
parent9c16cea2bbd0b8e172bec49382d1e35861892263 (diff)
downloadnixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.tar
nixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.tar.gz
nixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.tar.bz2
nixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.tar.lz
nixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.tar.xz
nixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.tar.zst
nixpkgs-ee8ba995a746b317d94abcbaeb877f200e1cd37b.zip
buildDotnetModule: make fetch-deps find output path automatically
-rw-r--r--doc/languages-frameworks/dotnet.section.md2
-rw-r--r--maintainers/scripts/update-dotnet-lockfiles.nix72
-rwxr-xr-xpkgs/applications/blockchains/nbxplorer/util/update-common.sh5
-rwxr-xr-xpkgs/applications/emulators/ryujinx/updater.sh4
-rw-r--r--pkgs/applications/graphics/pinta/default.nix1
-rwxr-xr-xpkgs/applications/misc/ArchiSteamFarm/update.sh4
-rwxr-xr-xpkgs/applications/version-management/git-credential-manager/update.sh3
-rwxr-xr-xpkgs/development/tools/continuous-integration/github-runner/update.sh2
-rwxr-xr-xpkgs/development/tools/marksman/update.sh2
-rwxr-xr-xpkgs/development/tools/omnisharp-roslyn/updater.sh4
-rwxr-xr-xpkgs/games/osu-lazer/update.sh4
-rwxr-xr-xpkgs/games/space-station-14-launcher/update.sh4
-rwxr-xr-xpkgs/servers/jackett/updater.sh4
-rwxr-xr-xpkgs/servers/jellyfin/update.sh6
-rwxr-xr-xpkgs/servers/nosql/eventstore/updater.sh4
-rwxr-xr-xpkgs/tools/X11/opentabletdriver/update.sh4
-rwxr-xr-xpkgs/tools/backup/discordchatexporter-cli/updater.sh4
-rwxr-xr-xpkgs/tools/misc/depotdownloader/update.sh3
18 files changed, 89 insertions, 43 deletions
diff --git a/doc/languages-frameworks/dotnet.section.md b/doc/languages-frameworks/dotnet.section.md
index 5b94c3d7dc2..246490d67d2 100644
--- a/doc/languages-frameworks/dotnet.section.md
+++ b/doc/languages-frameworks/dotnet.section.md
@@ -123,7 +123,7 @@ To package Dotnet applications, you can use `buildDotnetModule`. This has simila
 * `dotnetPackFlags` can be used to pass flags to `dotnet pack`. Used only if `packNupkg` is set to `true`.
 * `dotnetFlags` can be used to pass flags to all of the above phases.
 
-When packaging a new application, you need to fetch its dependencies. You can run `nix-build -A package.fetch-deps` to generate a script that will build a lockfile for you. After running the script you should have the location of the generated lockfile printed to the console, which can be copied to a stable directory. Then set `nugetDeps = ./deps.nix` and you're ready to build the derivation.
+When packaging a new application, you need to fetch its dependencies. Create an empty `deps.nix`, set `nugetDeps = ./deps.nix`, then run `nix-build -A package.fetch-deps` to generate a script that will build the lockfile for you.
 
 Here is an example `default.nix`, using some of the previously discussed arguments:
 ```nix
diff --git a/maintainers/scripts/update-dotnet-lockfiles.nix b/maintainers/scripts/update-dotnet-lockfiles.nix
new file mode 100644
index 00000000000..22ceff1ffa9
--- /dev/null
+++ b/maintainers/scripts/update-dotnet-lockfiles.nix
@@ -0,0 +1,72 @@
+/*
+  To run:
+
+      nix-shell maintainers/scripts/update-dotnet-lockfiles.nix
+
+  This script finds all the derivations in nixpkgs that have a 'fetch-deps'
+  attribute, and runs all of them sequentially. This is useful to test changes
+  to 'fetch-deps', 'nuget-to-nix', or other changes to the dotnet build
+  infrastructure. Regular updates should be done through the individual packages
+  update scripts.
+ */
+let
+  pkgs = import ../.. {};
+
+  inherit (pkgs) lib;
+
+  packagesWith = cond: pkgs:
+    let
+      packagesWithInner = attrs:
+        lib.unique (
+          lib.concatLists (
+            lib.mapAttrsToList (name: elem:
+              let
+                result = builtins.tryEval elem;
+              in
+                if result.success then
+                  let
+                    value = result.value;
+                  in
+                    if lib.isDerivation value then
+                      lib.optional (cond value) value
+                    else
+                      if lib.isAttrs value && (value.recurseForDerivations or false || value.recurseForRelease or false) then
+                        packagesWithInner value
+                      else []
+                else []) attrs));
+    in
+      packagesWithInner pkgs;
+
+  packages =
+    packagesWith (pkgs: pkgs ? fetch-deps) pkgs;
+
+  helpText = ''
+    Please run:
+
+        % nix-shell maintainers/scripts/update-dotnet-lockfiles.nix
+  '';
+
+  fetchScripts = map (p: p.fetch-deps) packages;
+
+in pkgs.stdenv.mkDerivation {
+  name = "nixpkgs-update-dotnet-lockfiles";
+  buildCommand = ''
+    echo ""
+    echo "----------------------------------------------------------------"
+    echo ""
+    echo "Not possible to update packages using \`nix-build\`"
+    echo ""
+    echo "${helpText}"
+    echo "----------------------------------------------------------------"
+    exit 1
+  '';
+  shellHook = ''
+    unset shellHook # do not contaminate nested shells
+    set -e
+    for x in $fetchScripts; do
+      $x
+    done
+    exit
+  '';
+  inherit fetchScripts;
+}
diff --git a/pkgs/applications/blockchains/nbxplorer/util/update-common.sh b/pkgs/applications/blockchains/nbxplorer/util/update-common.sh
index 6346c2fa9f4..1354588a754 100755
--- a/pkgs/applications/blockchains/nbxplorer/util/update-common.sh
+++ b/pkgs/applications/blockchains/nbxplorer/util/update-common.sh
@@ -9,7 +9,6 @@ set -euo pipefail
 trap 'echo "Error at ${BASH_SOURCE[0]}:$LINENO"' ERR
 
 pkgName=$1
-depsFile=$2
 
 : ${getVersionFromTags:=}
 : ${refetch:=}
@@ -41,7 +40,7 @@ fi
 if [[ $newVersion == $oldVersion && ! $refetch ]]; then
   echo "nixpkgs already has the latest version $newVersion"
   echo "Run this script with env var refetch=1 to re-verify the content hash via GPG"
-  echo "and to recreate $(basename "$depsFile"). This is useful for reviewing a version update."
+  echo "and to recreate deps.nix. This is useful for reviewing a version update."
   exit 0
 fi
 
@@ -74,4 +73,4 @@ fi
 echo
 
 # Create deps file
-$(nix-build "$nixpkgs" -A $pkgName.fetch-deps --no-out-link) "$depsFile"
+$(nix-build "$nixpkgs" -A $pkgName.fetch-deps --no-out-link)
diff --git a/pkgs/applications/emulators/ryujinx/updater.sh b/pkgs/applications/emulators/ryujinx/updater.sh
index 5827271138d..3aae3943aa5 100755
--- a/pkgs/applications/emulators/ryujinx/updater.sh
+++ b/pkgs/applications/emulators/ryujinx/updater.sh
@@ -3,8 +3,6 @@
 set -euo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-DEPS_FILE="$(realpath "./deps.nix")"
-
 # provide a github token so you don't get rate limited
 # if you use gh cli you can use:
 #     `export GITHUB_TOKEN="$(cat ~/.config/gh/config.yml | yq '.hosts."github.com".oauth_token' -r)"`
@@ -75,4 +73,4 @@ fi
 
 echo "building Nuget lockfile"
 
-$(nix-build -A ryujinx.fetch-deps --no-out-link) "$DEPS_FILE"
+$(nix-build -A ryujinx.fetch-deps --no-out-link)
diff --git a/pkgs/applications/graphics/pinta/default.nix b/pkgs/applications/graphics/pinta/default.nix
index f38a9a9dcfe..2f523813a24 100644
--- a/pkgs/applications/graphics/pinta/default.nix
+++ b/pkgs/applications/graphics/pinta/default.nix
@@ -26,7 +26,6 @@ buildDotnetModule rec {
   # How-to update deps:
   # $ nix-build -A pinta.fetch-deps
   # $ ./result
-  # $ cp /tmp/Pinta-deps.nix ./pkgs/applications/graphics/pinta/deps.nix
   # TODO: create update script
   nugetDeps = ./deps.nix;
 
diff --git a/pkgs/applications/misc/ArchiSteamFarm/update.sh b/pkgs/applications/misc/ArchiSteamFarm/update.sh
index 857474c483e..9d034a60065 100755
--- a/pkgs/applications/misc/ArchiSteamFarm/update.sh
+++ b/pkgs/applications/misc/ArchiSteamFarm/update.sh
@@ -3,8 +3,6 @@
 set -euo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath ./deps.nix)"
-
 new_version="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/JustArchiNET/ArchiSteamFarm/releases" | jq -r  'map(select(.prerelease == false)) | .[0].tag_name')"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
 
@@ -22,7 +20,7 @@ if [[ "${1:-}" != "--deps-only" ]]; then
     update-source-version ArchiSteamFarm "$new_version"
 fi
 
-$(nix-build -A ArchiSteamFarm.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A ArchiSteamFarm.fetch-deps --no-out-link)
 
 popd
 "$asf_path/web-ui/update.sh"
diff --git a/pkgs/applications/version-management/git-credential-manager/update.sh b/pkgs/applications/version-management/git-credential-manager/update.sh
index e1a03f296f1..a24eed3f271 100755
--- a/pkgs/applications/version-management/git-credential-manager/update.sh
+++ b/pkgs/applications/version-management/git-credential-manager/update.sh
@@ -20,5 +20,4 @@ hash="$(nix-prefetch ./.)"
 sed -i -Ee "s/hash = \"sha256-[A-Za-z0-9=]{44}\"/hash = \"${hash}\"/" default.nix
 
 
-nugetDeps="$(realpath ./deps.nix)"
-$(nix-build ../../../.. -A git-credential-manager.fetch-deps --no-out-link) "$nugetDeps"
+$(nix-build ../../../.. -A git-credential-manager.fetch-deps --no-out-link)
diff --git a/pkgs/development/tools/continuous-integration/github-runner/update.sh b/pkgs/development/tools/continuous-integration/github-runner/update.sh
index 3ebbfa9f507..26b54bf6ac0 100755
--- a/pkgs/development/tools/continuous-integration/github-runner/update.sh
+++ b/pkgs/development/tools/continuous-integration/github-runner/update.sh
@@ -15,5 +15,5 @@ if [[ "$latestVersion" == "$currentVersion" ]]; then
 fi
 
 update-source-version github-runner "$latestVersion"
-$(nix-build -A github-runner.fetch-deps --no-out-link) "$(dirname "$BASH_SOURCE")/deps.nix"
+$(nix-build -A github-runner.fetch-deps --no-out-link)
 
diff --git a/pkgs/development/tools/marksman/update.sh b/pkgs/development/tools/marksman/update.sh
index 0f4a416e7df..b17097e683c 100755
--- a/pkgs/development/tools/marksman/update.sh
+++ b/pkgs/development/tools/marksman/update.sh
@@ -15,4 +15,4 @@ fi
 
 update-source-version marksman "$version"
 
-$(nix-build -A marksman.fetch-deps --no-out-link) "$(dirname -- "${BASH_SOURCE[0]}")/deps.nix"
+$(nix-build -A marksman.fetch-deps --no-out-link)
diff --git a/pkgs/development/tools/omnisharp-roslyn/updater.sh b/pkgs/development/tools/omnisharp-roslyn/updater.sh
index 1007c77fe2f..10868fbd099 100755
--- a/pkgs/development/tools/omnisharp-roslyn/updater.sh
+++ b/pkgs/development/tools/omnisharp-roslyn/updater.sh
@@ -6,8 +6,6 @@ set -euo pipefail
 
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl -s "https://api.github.com/repos/OmniSharp/omnisharp-roslyn/releases?per_page=1" | jq -r '.[0].name')"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
 
@@ -19,4 +17,4 @@ fi
 cd ../../../..
 update-source-version omnisharp-roslyn "${new_version//v}"
 
-$(nix-build -A omnisharp-roslyn.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A omnisharp-roslyn.fetch-deps --no-out-link)
diff --git a/pkgs/games/osu-lazer/update.sh b/pkgs/games/osu-lazer/update.sh
index 1ecca32d54a..8e9849db1e1 100755
--- a/pkgs/games/osu-lazer/update.sh
+++ b/pkgs/games/osu-lazer/update.sh
@@ -3,8 +3,6 @@
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl -s "https://api.github.com/repos/ppy/osu/releases?per_page=1" | jq -r '.[0].name')"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
 if [[ "$new_version" == "$old_version" ]]; then
@@ -18,4 +16,4 @@ if [[ "$1" != "--deps-only" ]]; then
     update-source-version osu-lazer "$new_version"
 fi
 
-$(nix-build . -A osu-lazer.fetch-deps --no-out-link) "$deps_file"
+$(nix-build . -A osu-lazer.fetch-deps --no-out-link)
diff --git a/pkgs/games/space-station-14-launcher/update.sh b/pkgs/games/space-station-14-launcher/update.sh
index 8cfab508b0c..6e8b337d384 100755
--- a/pkgs/games/space-station-14-launcher/update.sh
+++ b/pkgs/games/space-station-14-launcher/update.sh
@@ -3,8 +3,6 @@
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl -s "https://api.github.com/repos/space-wizards/SS14.Launcher/releases?per_page=1" | jq -r '.[0].tag_name' | sed 's/v//')"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./space-station-14-launcher.nix)"
 
@@ -15,4 +13,4 @@ fi
 
 cd ../../..
 update-source-version space-station-14-launcher.unwrapped "$new_version"
-$(nix-build -A space-station-14-launcher.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A space-station-14-launcher.fetch-deps --no-out-link)
diff --git a/pkgs/servers/jackett/updater.sh b/pkgs/servers/jackett/updater.sh
index d39452d2afc..1714565edd4 100755
--- a/pkgs/servers/jackett/updater.sh
+++ b/pkgs/servers/jackett/updater.sh
@@ -3,8 +3,6 @@
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl -s "https://api.github.com/repos/jackett/jackett/releases?per_page=1" | jq -r '.[0].name')"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
 
@@ -15,4 +13,4 @@ fi
 
 cd ../../..
 update-source-version jackett "${new_version//v}"
-$(nix-build -A jackett.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A jackett.fetch-deps --no-out-link)
diff --git a/pkgs/servers/jellyfin/update.sh b/pkgs/servers/jellyfin/update.sh
index bbced42742c..918b68940ca 100755
--- a/pkgs/servers/jellyfin/update.sh
+++ b/pkgs/servers/jellyfin/update.sh
@@ -11,10 +11,6 @@ if [[ "$currentVersion" == "$latestVersion" ]]; then
   exit 0
 fi
 
-pushd "$(dirname "${BASH_SOURCE[0]}")"
-nugetDepsFile=$(realpath ./nuget-deps.nix)
-popd
-
 update-source-version jellyfin "$latestVersion"
 
-$(nix-build . -A jellyfin.fetch-deps --no-out-link) "$nugetDepsFile"
+$(nix-build . -A jellyfin.fetch-deps --no-out-link)
diff --git a/pkgs/servers/nosql/eventstore/updater.sh b/pkgs/servers/nosql/eventstore/updater.sh
index 85be2c8aa8c..77c2f733e5f 100755
--- a/pkgs/servers/nosql/eventstore/updater.sh
+++ b/pkgs/servers/nosql/eventstore/updater.sh
@@ -6,8 +6,6 @@ set -euo pipefail
 
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl -s "https://api.github.com/repos/EventStore/EventStore/releases/latest" | jq -r '.name')"
 new_version="${new_version#oss-v}"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
@@ -20,4 +18,4 @@ fi
 cd ../../../..
 update-source-version eventstore "${new_version//v}"
 
-$(nix-build -A eventstore.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A eventstore.fetch-deps --no-out-link)
diff --git a/pkgs/tools/X11/opentabletdriver/update.sh b/pkgs/tools/X11/opentabletdriver/update.sh
index 322350415e7..665f5ac526a 100755
--- a/pkgs/tools/X11/opentabletdriver/update.sh
+++ b/pkgs/tools/X11/opentabletdriver/update.sh
@@ -3,8 +3,6 @@
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/OpenTabletDriver/OpenTabletDriver/releases" | jq -r  'map(select(.prerelease == false)) | .[0].tag_name' | cut -c2-)"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
 
@@ -23,4 +21,4 @@ sed -i ./default.nix -re "s|\"$oldDebSha256\"|\"$newDebSha256\"|"
 
 pushd ../../../..
 update-source-version opentabletdriver "$new_version"
-$(nix-build -A opentabletdriver.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A opentabletdriver.fetch-deps --no-out-link)
diff --git a/pkgs/tools/backup/discordchatexporter-cli/updater.sh b/pkgs/tools/backup/discordchatexporter-cli/updater.sh
index 6628cceaa95..cc81761b93d 100755
--- a/pkgs/tools/backup/discordchatexporter-cli/updater.sh
+++ b/pkgs/tools/backup/discordchatexporter-cli/updater.sh
@@ -3,8 +3,6 @@
 set -eo pipefail
 cd "$(dirname "${BASH_SOURCE[0]}")"
 
-deps_file="$(realpath "./deps.nix")"
-
 new_version="$(curl -s "https://api.github.com/repos/tyrrrz/DiscordChatExporter/releases?per_page=1" | jq -r '.[0].name')"
 old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)"
 if [[ "$new_version" == "$old_version" ]]; then
@@ -14,4 +12,4 @@ fi
 
 cd ../../../..
 update-source-version discordchatexporter-cli "$new_version"
-$(nix-build -A discordchatexporter-cli.fetch-deps --no-out-link) "$deps_file"
+$(nix-build -A discordchatexporter-cli.fetch-deps --no-out-link)
diff --git a/pkgs/tools/misc/depotdownloader/update.sh b/pkgs/tools/misc/depotdownloader/update.sh
index 9e6efdfceaa..2adbb6037a9 100755
--- a/pkgs/tools/misc/depotdownloader/update.sh
+++ b/pkgs/tools/misc/depotdownloader/update.sh
@@ -3,7 +3,6 @@
 
 set -eou pipefail
 
-depsFile="$(realpath "$(dirname "${BASH_SOURCE[0]}")/deps.nix")"
 currentVersion="$(nix eval --raw -f . depotdownloader.version)"
 latestVersion="$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/SteamRE/DepotDownloader/releases?per_page=1" \
     | jq -r '.[].name' | cut -d' ' -f2)"
@@ -14,4 +13,4 @@ if [[ "$currentVersion" = "$latestVersion" ]]; then
 fi
 
 update-source-version depotdownloader "$latestVersion"
-$(nix-build -A depotdownloader.fetch-deps --no-out-link) "$depsFile"
+$(nix-build -A depotdownloader.fetch-deps --no-out-link)