about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/build-managers/tup
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/build-managers/tup')
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/tup/default.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/build-managers/tup/default.nix b/nixpkgs/pkgs/development/tools/build-managers/tup/default.nix
new file mode 100644
index 000000000000..709528b2ad30
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/tup/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchFromGitHub, fuse, pkgconfig, pcre }:
+
+stdenv.mkDerivation rec {
+  pname = "tup";
+  version = "0.7.8";
+
+  src = fetchFromGitHub {
+    owner = "gittup";
+    repo = "tup";
+    rev = "v${version}";
+    sha256 = "07dmz712zbs5kayf98kywp7blssgh0y2gc1623jbsynmqwi77mcb";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ fuse pcre ];
+
+  configurePhase = ''
+    sed -i 's/`git describe`/v${version}/g' src/tup/link.sh
+    sed -i 's/pcre-confg/pkg-config pcre/g' Tupfile Tuprules.tup
+  '';
+
+  # Regular tup builds require fusermount to have suid, which nix cannot
+  # currently provide in a build environment, so we bootstrap and use 'tup
+  # generate' instead
+  buildPhase = ''
+    ./build.sh
+    ./build/tup init
+    ./build/tup generate script.sh
+    ./script.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp tup $out/bin/
+
+    mkdir -p $out/share/man/man1
+    cp tup.1 $out/share/man/man1/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A fast, file-based build system";
+    longDescription = ''
+      Tup is a file-based build system for Linux, OSX, and Windows. It inputs a list
+      of file changes and a directed acyclic graph (DAG), then processes the DAG to
+      execute the appropriate commands required to update dependent files. Updates are
+      performed with very little overhead since tup implements powerful build
+      algorithms to avoid doing unnecessary work. This means you can stay focused on
+      your project rather than on your build system.
+    '';
+    homepage = "http://gittup.org/tup/";
+    license = licenses.gpl2;
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}