about summary refs log tree commit diff
path: root/pkgs/build-support/upstream-updater/update-upstream-data.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/upstream-updater/update-upstream-data.sh')
-rwxr-xr-xpkgs/build-support/upstream-updater/update-upstream-data.sh43
1 files changed, 33 insertions, 10 deletions
diff --git a/pkgs/build-support/upstream-updater/update-upstream-data.sh b/pkgs/build-support/upstream-updater/update-upstream-data.sh
index 4aad91fdac2b..b07e867fda97 100755
--- a/pkgs/build-support/upstream-updater/update-upstream-data.sh
+++ b/pkgs/build-support/upstream-updater/update-upstream-data.sh
@@ -1,13 +1,18 @@
 #! /bin/sh
 
+set -x
+
 own_dir="$(cd "$(dirname "$0")"; sh -c pwd)"
 
+source "$own_dir/snippets.sh"
+
 main_file="$1"
 main_dir="$(cd "$(dirname "$main_file")" ; sh -c pwd)"
 file_name="$(basename "$main_file")"
 defs_file="$main_dir"/src-info-for-"$file_name"
 src_file="$main_dir"/src-for-"$file_name"
-new_src_file="$main_dir"/updated-src-for-"$file_name"
+# OK, [vcs] revert is always possible
+new_src_file="$main_dir"/src-for-"$file_name"
 
 forcedUrl="$2"
 
@@ -23,8 +28,12 @@ getAttr () {
 
 if [ -z "$forcedUrl" ] ; then
     freshUrl="$("$own_dir"/urls-from-page.sh "$(getAttr downloadPage)" |
-      egrep "$(getAttr sourceRegexp '.*[.]tar[.].*')" | 
-      sh -c "$(getAttr choiceCommand 'head -1')")"
+      eval "egrep \"$(getAttr sourceRegexp '.*[.]tar[.].*')\"" | 
+      eval "$(getAttr choiceCommand 'head -1')")"
+
+    if ! egrep ':' freshUrl ; then 
+	    freshUrl="$(dirname "$(getAttr downloadPage).")/$freshUrl"
+    fi
 
     echo "Found download link: $freshUrl" >&2
 else
@@ -37,21 +46,35 @@ if [ x"$freshUrl" = x"$(cat "$src_defs_dir"/advertisedUrl)" ]; then
 fi
 
 version="$(echo "$freshUrl" | 
-  sed -re "$(getAttr versionExtractorSedScript \
-    's/.*-([0-9.]+)[.].*/\1/')")"
+  eval "sed -re \"$(getAttr versionExtractorSedScript \
+    's/.*-([0-9.]+)[.].*/\1/')\"")"
 
 mirrorUrl="$(echo "$freshUrl" | 
-  sed -r -e "$(getAttr versionReferenceCreator \
-    's/-([0-9.]+)[.]/-${version}./')" |
-  sed -r -e "$(getAttr mirrorSedScript)")"
+  eval "sed -r -e \"$(getAttr versionReferenceCreator \
+    's/-([0-9.]+)[.]/-${version}./')\"" |
+  eval "sed -r -e \"$(getAttr mirrorSedScript)\"")"
 
 hash=$(nix-prefetch-url "$freshUrl")
 
+baseName="$(getAttr baseName 'unnamed-package')"
+name="$baseName-$version"
+
+advertisedUrl="$freshUrl"
+url="$mirrorUrl"
+
+extraAssignments=""
+for i in $(getAttr extraVars ''); do
+  eval "$(getAttr "eval_$i" 'i=""')"
+  extraAssignments="$extraAssignments $i=\"$(eval echo \"\$$i\")\";"
+done
+
 cat << EOF > "$new_src_file"
 rec {
-  advertisedUrl="$freshUrl";
+  advertisedUrl="$advertisedUrl";
   version = "$version";
-  url="$mirrorUrl";
+  url="$url";
   hash = "$hash";
+  name = "$name";
+  $extraAssignments
 }
 EOF