summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/build-support/builder-defs/builder-defs.nix6
-rwxr-xr-xpkgs/build-support/fetchgit/nix-prefetch-git2
-rw-r--r--pkgs/build-support/upstream-updater/design.txt1
-rwxr-xr-xpkgs/build-support/upstream-updater/update-upstream-data.sh101
-rw-r--r--pkgs/os-specific/linux/aufs2/default.nix40
-rw-r--r--pkgs/os-specific/linux/aufs2/src-for-default.nix9
-rw-r--r--pkgs/os-specific/linux/aufs2/src-info-for-default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix4
8 files changed, 131 insertions, 38 deletions
diff --git a/pkgs/build-support/builder-defs/builder-defs.nix b/pkgs/build-support/builder-defs/builder-defs.nix
index e4bf4c148c4..859d18cb424 100644
--- a/pkgs/build-support/builder-defs/builder-defs.nix
+++ b/pkgs/build-support/builder-defs/builder-defs.nix
@@ -526,4 +526,10 @@ let inherit (builtins) head tail trace; in
      url = srcInfo.url;
      sha256 = srcInfo.hash;
    };
+
+   fetchGitFromSrcInfo = srcInfo: fetchgit {
+     url = srcInfo.url;
+     rev = srcInfo.rev;
+     sha256 = srcInfo.hash;
+   };
 }) // args
diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git
index 29b3472596d..d14f13bfa11 100755
--- a/pkgs/build-support/fetchgit/nix-prefetch-git
+++ b/pkgs/build-support/fetchgit/nix-prefetch-git
@@ -42,6 +42,8 @@ if test -z "$finalPath"; then
       echo $tmpFile
       git checkout $rev
     fi
+    # Allow doing additional processing before .git removal
+    eval "$NIX_PREFETCH_GIT_CHECKOUT_HOOK"
     find $tmpFile -name .git\* | xargs rm -rf
 
     # Compute the hash.
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
diff --git a/pkgs/os-specific/linux/aufs2/default.nix b/pkgs/os-specific/linux/aufs2/default.nix
new file mode 100644
index 00000000000..6f97f7eff05
--- /dev/null
+++ b/pkgs/os-specific/linux/aufs2/default.nix
@@ -0,0 +1,40 @@
+{stdenv, fetchgit, kernel}:
+
+let s = import ./src-for-default.nix; in
+
+stdenv.mkDerivation {
+  name = "${s.name}-${kernel.version}";
+
+  src = fetchgit {
+    inherit (s) url rev;
+    sha256 = s.hash;
+  };
+
+  buildPhase = ''
+    kernelVersion=$(cd ${kernel}/lib/modules && ls)
+    kernelBuild=$(echo ${kernel}/lib/modules/$kernelVersion/source)
+    tar xvfj ${kernel.src}
+    kernelSource=$(echo $(pwd)/linux-*)
+    cp -prd $kernelBuild/* $kernelSource
+
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$PWD/include"
+  
+    make KDIR=$kernelSource aufs.ko
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    cp util/aulchown $out/bin
+
+    ensureDir $out/share/man/man5
+    cp util/aufs.5 $out/share/man/man5
+
+    ensureDir $out/lib/modules/$kernelVersion/misc
+    cp aufs.ko $out/lib/modules/$kernelVersion/misc
+  '';
+
+  meta = {
+    description = "Another Unionfs implementation for Linux - second generation";
+    homepage = http://aufs.sourceforge.net/;
+  };
+}
diff --git a/pkgs/os-specific/linux/aufs2/src-for-default.nix b/pkgs/os-specific/linux/aufs2/src-for-default.nix
new file mode 100644
index 00000000000..3744d6f2e89
--- /dev/null
+++ b/pkgs/os-specific/linux/aufs2/src-for-default.nix
@@ -0,0 +1,9 @@
+rec {
+   version="4c023a5ec2703cfea465b7ecd6f16b3ef156e5d5";
+   name="aufs2-4c023a5ec2703cfea465b7ecd6f16b3ef156e5d5";
+   hash="8858eb487db24e9cf524d9428a3fdf8861ee366ddf22f41b446f52490a92da2b";
+   rev="4c023a5ec2703cfea465b7ecd6f16b3ef156e5d5";
+   url="http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git";
+  
+  
+}
diff --git a/pkgs/os-specific/linux/aufs2/src-info-for-default.nix b/pkgs/os-specific/linux/aufs2/src-info-for-default.nix
new file mode 100644
index 00000000000..0e753c3b399
--- /dev/null
+++ b/pkgs/os-specific/linux/aufs2/src-info-for-default.nix
@@ -0,0 +1,6 @@
+{
+  repoUrl = "http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git";
+  rev = "origin/aufs2";
+  baseName="aufs2";
+  method="fetchgit";
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 86466dee402..b99f56d9968 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5298,6 +5298,10 @@ let
       inherit fetchurl stdenv kernel;
     };
 
+    aufs2 = import ../os-specific/linux/aufs2 {
+      inherit fetchgit stdenv kernel;
+    };
+
     exmap = import ../os-specific/linux/exmap {
       inherit fetchurl stdenv kernel boost pcre pkgconfig;
       inherit (gtkLibs) gtkmm;