diff options
-rw-r--r-- | pkgs/build-support/builder-defs/builder-defs.nix | 6 | ||||
-rwxr-xr-x | pkgs/build-support/fetchgit/nix-prefetch-git | 2 | ||||
-rw-r--r-- | pkgs/build-support/upstream-updater/design.txt | 1 | ||||
-rwxr-xr-x | pkgs/build-support/upstream-updater/update-upstream-data.sh | 101 | ||||
-rw-r--r-- | pkgs/os-specific/linux/aufs2/default.nix | 40 | ||||
-rw-r--r-- | pkgs/os-specific/linux/aufs2/src-for-default.nix | 9 | ||||
-rw-r--r-- | pkgs/os-specific/linux/aufs2/src-info-for-default.nix | 6 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 4 |
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; |