summary refs log tree commit diff
path: root/pkgs/build-support/upstream-updater
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2009-09-08 09:35:21 +0000
committerMichael Raskin <7c6f434c@mail.ru>2009-09-08 09:35:21 +0000
commitedd56d707a3bb29309d3b41c80a7dbd50eafea71 (patch)
treef2468881fac848dccbbb825580bad38083610dd2 /pkgs/build-support/upstream-updater
parent9121ae7fb869311af97a05f618b981f0d00a6518 (diff)
downloadnixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.tar
nixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.tar.gz
nixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.tar.bz2
nixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.tar.lz
nixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.tar.xz
nixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.tar.zst
nixpkgs-edd56d707a3bb29309d3b41c80a7dbd50eafea71.zip
Update source updater to support fetchgit; add aufs2 using that method. Unfortunately, AUFS2 seems to require some strict conditions on kernel options and version..
svn path=/nixpkgs/trunk/; revision=16983
Diffstat (limited to 'pkgs/build-support/upstream-updater')
-rw-r--r--pkgs/build-support/upstream-updater/design.txt1
-rwxr-xr-xpkgs/build-support/upstream-updater/update-upstream-data.sh101
2 files changed, 64 insertions, 38 deletions
diff --git a/pkgs/build-support/upstream-updater/design.txt b/pkgs/build-support/upstream-updater/design.txt
index 407f9e5bc1b..128be89d207 100644
--- a/pkgs/build-support/upstream-updater/design.txt
+++ b/pkgs/build-support/upstream-updater/design.txt
@@ -12,6 +12,7 @@ Attributes:
 src-info-for-file.nix:
 
 downloadPage
+rev (for repos)
 baseName (default = unnamed-package)
 sourceRegexp (default = '.*[.]tar[.].*')
 choiceCommand (default = 'head -1')
diff --git a/pkgs/build-support/upstream-updater/update-upstream-data.sh b/pkgs/build-support/upstream-updater/update-upstream-data.sh
index b07e867fda9..b81a0da4840 100755
--- a/pkgs/build-support/upstream-updater/update-upstream-data.sh
+++ b/pkgs/build-support/upstream-updater/update-upstream-data.sh
@@ -26,55 +26,80 @@ getAttr () {
     echo "$data"
 }
 
-if [ -z "$forcedUrl" ] ; then
-    freshUrl="$("$own_dir"/urls-from-page.sh "$(getAttr downloadPage)" |
-      eval "egrep \"$(getAttr sourceRegexp '.*[.]tar[.].*')\"" | 
-      eval "$(getAttr choiceCommand 'head -1')")"
-
-    if ! egrep ':' freshUrl ; then 
-	    freshUrl="$(dirname "$(getAttr downloadPage).")/$freshUrl"
+method="$(getAttr method fetchurl)"
+baseName="$(getAttr baseName 'unnamed-package')"
+commonPrefetchVars=" version name hash"
+
+prefetchClause=""
+[ fetchurl = "$method" ] && {
+    if [ -z "$forcedUrl" ] ; then
+        freshUrl="$("$own_dir"/urls-from-page.sh "$(getAttr downloadPage)" |
+          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
+        freshUrl="$forcedUrl"
     fi
+    
+    version="$(echo "$freshUrl" | 
+      eval "sed -re \"$(getAttr versionExtractorSedScript \
+        's/.*-([0-9.]+)[.].*/\1/')\"")"
+    
+    mirrorUrl="$(echo "$freshUrl" | 
+      eval "sed -r -e \"$(getAttr versionReferenceCreator \
+        's/-([0-9.]+)[.]/-${version}./')\"" |
+      eval "sed -r -e \"$(getAttr mirrorSedScript)\"")"
+    
+    name="$baseName-$version"
+    
+    advertisedUrl="$freshUrl"
+    url="$mirrorUrl"
+    
+    if [ x"$freshUrl" = x"$(cat "$src_defs_dir"/advertisedUrl)" ]; then
+        echo "Source link not changed" >&2
+        exit
+    fi
+    hash=$(nix-prefetch-url "$freshUrl")
 
-    echo "Found download link: $freshUrl" >&2
-else
-    freshUrl="$forcedUrl"
-fi
-
-if [ x"$freshUrl" = x"$(cat "$src_defs_dir"/advertisedUrl)" ]; then
-    echo "Source link not changed" >&2
-    exit
-fi
-
-version="$(echo "$freshUrl" | 
-  eval "sed -re \"$(getAttr versionExtractorSedScript \
-    's/.*-([0-9.]+)[.].*/\1/')\"")"
-
-mirrorUrl="$(echo "$freshUrl" | 
-  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"
+    prefetchVars="url advertisedUrl";
+}
+[ "fetchgit" = "$method" ] && {
+    repoUrl="$(getAttr repoUrl)"
+    export NIX_PREFETCH_GIT_CHECKOUT_HOOK="
+        cat .git/HEAD
+    "
+    export NIX_HASH_ALGO=sha256
+    rev="$(getAttr rev '')";
+    rev_and_hash="$("$own_dir"/../fetchgit/nix-prefetch-git "$repoUrl" "$rev" | tail -2)"
+
+    rev="$(echo "$rev_and_hash" | head -1)"
+    url="$repoUrl";
+    hash="$(echo "$rev_and_hash" | tail -1)"
+    version="$rev"
+    name="$baseName-$version"
+
+    prefetchVars="rev url";
+}
 
-advertisedUrl="$freshUrl"
-url="$mirrorUrl"
+prefetchAssignments="";
+for i in $commonPrefetchVars $prefetchVars; do
+  prefetchAssignments="$prefetchAssignments $i=\"$(eval echo \"\$$i\")\";$(echo -e '\n  ')"
+done;
 
 extraAssignments=""
 for i in $(getAttr extraVars ''); do
   eval "$(getAttr "eval_$i" 'i=""')"
-  extraAssignments="$extraAssignments $i=\"$(eval echo \"\$$i\")\";"
+  extraAssignments="$extraAssignments $i=\"$(eval echo \"\$$i\")\";$(echo -e '\n  ')"
 done
 
 cat << EOF > "$new_src_file"
 rec {
-  advertisedUrl="$advertisedUrl";
-  version = "$version";
-  url="$url";
-  hash = "$hash";
-  name = "$name";
+  $prefetchAssignments
   $extraAssignments
 }
 EOF