summary refs log tree commit diff
path: root/pkgs/development/tools/packer/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/packer/default.nix')
-rw-r--r--pkgs/development/tools/packer/default.nix54
1 files changed, 36 insertions, 18 deletions
diff --git a/pkgs/development/tools/packer/default.nix b/pkgs/development/tools/packer/default.nix
index 716b489d3d7..fc8ef5ff964 100644
--- a/pkgs/development/tools/packer/default.nix
+++ b/pkgs/development/tools/packer/default.nix
@@ -1,35 +1,53 @@
-{ stdenv, lib, go, gox, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+{ stdenv, lib, go, gox, goPackages, fetchFromGitHub
+, fetchgit, fetchhg, fetchbzr, fetchsvn }:
 
 stdenv.mkDerivation rec {
-  name = "packer-0.8.6";
+  name = "packer-${version}";
+  version = "0.10.1";
 
   src = import ./deps.nix {
-    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+    inherit stdenv lib go gox goPackages fetchgit fetchhg fetchbzr fetchsvn;
   };
 
-  buildInputs = [ go gox ];
+  buildInputs = [ go gox goPackages.tools ];
 
-  installPhase = ''
-    export GOPATH=$src
-    XC_ARCH=$(go env GOARCH)
-    XC_OS=$(go env GOOS)
+  configurePhase = ''
+    export GOPATH=$PWD/share/go
+    export XC_ARCH=$(go env GOARCH)
+    export XC_OS=$(go env GOOS)
 
-    mkdir -p $out/bin
+    mkdir $GOPATH/bin
+
+    cd $GOPATH/src/github.com/mitchellh/packer
+
+    # Don't fetch the deps
+    substituteInPlace "Makefile" --replace ': deps' ':'
+
+    # Avoid using git
+    sed \
+      -e "s|GITBRANCH:=.*||" \
+      -e "s|GITSHA:=.*|GITSHA=${src.rev}|" \
+      -i Makefile
+    sed \
+      -e "s|GIT_COMMIT=.*|GIT_COMMIT=${src.rev}|" \
+      -e "s|GIT_DIRTY=.*|GIT_DIRTY=|" \
+      -i "scripts/build.sh"
+  '';
+
+  buildPhase = ''
+    make generate releasebin
+  '';
 
-    cd $src/src/github.com/mitchellh/packer
-    gox \
-        -os="''${XC_OS}" \
-        -arch="''${XC_ARCH}" \
-        -output "$out/bin/packer-{{.Dir}}" \
-        ./...
-    mv $out/bin/packer{*packer*,}
+  installPhase = ''
+    mkdir -p $out/bin
+    mv bin/* $out/bin
   '';
 
   meta = with stdenv.lib; {
     description = "A tool for creating identical machine images for multiple platforms from a single source configuration";
-    homepage    = "http://www.packer.io";
+    homepage    = http://www.packer.io;
     license     = licenses.mpl20;
-    maintainers = with maintainers; [ cstrahan ];
+    maintainers = with maintainers; [ cstrahan zimbatm ];
     platforms   = platforms.unix;
   };
 }