about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorPatrick Mahoney <pat@polycrystal.org>2014-11-28 13:10:37 -0600
committerPatrick Mahoney <pat@polycrystal.org>2014-11-28 13:10:37 -0600
commitcf5f282940c9ac07533ef602e2ea415e1a5ed517 (patch)
tree3195d77badf3e6557f58ad42ed506b22bf1a4494 /pkgs
parentc37611f3e5a35ecfa349362d432708176e1c6fb5 (diff)
downloadnixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.tar
nixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.tar.gz
nixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.tar.bz2
nixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.tar.lz
nixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.tar.xz
nixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.tar.zst
nixlib-cf5f282940c9ac07533ef602e2ea415e1a5ed517.zip
Consolidate conf-compile steps for skarnet.org pkgs.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/skalibs/default.nix33
-rw-r--r--pkgs/development/tools/build-managers/skarnet/default.nix21
-rw-r--r--pkgs/development/tools/build-managers/skarnet/setup-hook.sh42
-rw-r--r--pkgs/os-specific/linux/s6-linux-utils/default.nix34
-rw-r--r--pkgs/servers/s6/default.nix34
-rw-r--r--pkgs/tools/misc/execline/default.nix35
-rw-r--r--pkgs/tools/misc/s6-portable-utils/default.nix32
-rw-r--r--pkgs/tools/networking/s6-dns/default.nix34
-rw-r--r--pkgs/tools/networking/s6-networking/default.nix34
-rw-r--r--pkgs/top-level/all-packages.nix2
10 files changed, 104 insertions, 197 deletions
diff --git a/pkgs/development/libraries/skalibs/default.nix b/pkgs/development/libraries/skalibs/default.nix
index ba8dcc812e83..55c69b137e52 100644
--- a/pkgs/development/libraries/skalibs/default.nix
+++ b/pkgs/development/libraries/skalibs/default.nix
@@ -1,10 +1,14 @@
-{stdenv, fetchurl}:
+{ stdenv
+, skarnetConfCompile
+, fetchurl
+}:
 
 let
 
   version = "1.6.0.0";
 
 in stdenv.mkDerivation rec {
+
   name = "skalibs-${version}";
 
   src = fetchurl {
@@ -17,32 +21,7 @@ in stdenv.mkDerivation rec {
   # See http://skarnet.org/cgi-bin/archive.cgi?1:mss:75:201405:pkmodhckjklemogbplje
   patches = [ ./getpeereid.patch ];
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"     > conf-defaultpath
-    printf "$out/etc"     > conf-etc
-    printf "$out/bin"     > conf-install-command
-    printf "$out/include" > conf-install-include
-    printf "$out/libexec" > conf-install-libexec
-    printf "$out/lib"     > conf-install-library
-    printf "$out/lib"     > conf-install-library.so
-    printf "$out/sysdeps" > conf-install-sysdeps
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-    touch flag-forcedevr
-
-    popd
-  '';
-
-  preBuild = ''
-    patchShebangs src/sys
-  '';
+  buildInputs = [ skarnetConfCompile ];
 
   preInstall = ''
     mkdir -p "$out/etc"
diff --git a/pkgs/development/tools/build-managers/skarnet/default.nix b/pkgs/development/tools/build-managers/skarnet/default.nix
new file mode 100644
index 000000000000..5490fcabef96
--- /dev/null
+++ b/pkgs/development/tools/build-managers/skarnet/default.nix
@@ -0,0 +1,21 @@
+{ stdenv }:
+
+let
+
+  version = "2014-11-28";
+
+in stdenv.mkDerivation {
+
+  name = "skarnet-conf-compile-${version}";
+
+  phases = [ "fixupPhase" ];
+
+  setupHook = ./setup-hook.sh;
+
+  meta = {
+    homepage = http://www.skarnet.org/software/conf-compile.html;
+    description = "Support for configuring skarnet.org packages for nix builds";
+    platforms = stdenv.lib.platforms.all;
+  };
+
+}
diff --git a/pkgs/development/tools/build-managers/skarnet/setup-hook.sh b/pkgs/development/tools/build-managers/skarnet/setup-hook.sh
new file mode 100644
index 000000000000..1c5c7efd4085
--- /dev/null
+++ b/pkgs/development/tools/build-managers/skarnet/setup-hook.sh
@@ -0,0 +1,42 @@
+# Packages from skarnet.org use a unique build system. These functions
+# assist with some common configuration and shebang patching.
+
+skarnetConfigure() {
+  runHook preConfigure
+
+  pushd conf-compile >/dev/null
+
+  # paths
+  > conf-defaultpath         printf "$out/bin"
+  > conf-etc                 printf "$out/etc"
+  > conf-install-command     printf "$out/bin"
+  > conf-install-include     printf "$out/include"
+  > conf-install-libexec     printf "$out/libexec"
+  > conf-install-library     printf "$out/lib"
+  > conf-install-library.so  printf "$out/lib"
+  > conf-install-sysdeps     printf "$out/sysdeps"
+
+  # let nix builder strip things, cross-platform
+  truncate --size 0 conf-stripbins conf-striplibs
+
+  rm -f flag-slashpackage
+  touch flag-allstatic
+  touch flag-forcedevr          # only used for skalibs
+
+  # build inputs
+  truncate --size 0 import path-include path-library
+  for input in $nativeBuildInputs; do
+    [[ -a "$input/sysdeps" ]] && >> import       printf "$input/sysdeps"
+    [[ -a "$input/include" ]] && >> path-include printf "$input/include"
+    [[ -a "$input/lib" ]]     && >> path-library printf "$input/lib"
+  done
+
+  popd >/dev/null
+
+  # patch various scripts to use stdenv shell
+  patchShebangs src/sys
+
+  runHook postConfigure
+}
+
+export configurePhase=skarnetConfigure
diff --git a/pkgs/os-specific/linux/s6-linux-utils/default.nix b/pkgs/os-specific/linux/s6-linux-utils/default.nix
index a50400e492a8..b7a546a3ea06 100644
--- a/pkgs/os-specific/linux/s6-linux-utils/default.nix
+++ b/pkgs/os-specific/linux/s6-linux-utils/default.nix
@@ -1,4 +1,8 @@
-{ stdenv, fetchurl, skalibs }:
+{ stdenv
+, fetchurl
+, skalibs
+, skarnetConfCompile
+}:
 
 let
 
@@ -13,36 +17,10 @@ in stdenv.mkDerivation rec {
     sha256 = "1s17g03z5hfpiz32g001g5wyamyvn9l36fr2csk3k7r0jkqfnl0d";
   };
 
-  buildInputs = [ skalibs ];
+  buildInputs = [ skalibs skarnetConfCompile ];
 
   sourceRoot = "admin/${name}";
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"           > conf-install-command
-    printf "$out/include"       > conf-install-include
-    printf "$out/lib"           > conf-install-library
-    printf "$out/lib"           > conf-install-library.so
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    printf "${skalibs}/sysdeps"      > import
-    printf "%s" "${skalibs}/include" > path-include
-    printf "%s" "${skalibs}/lib"     > path-library
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-
-    popd
-  '';
-
-  preBuild = ''
-    patchShebangs src/sys
-  '';
-
   meta = {
     homepage = http://www.skarnet.org/software/s6-linux-utils/;
     description = "A set of minimalistic Linux-specific system utilities";
diff --git a/pkgs/servers/s6/default.nix b/pkgs/servers/s6/default.nix
index 039128e9df4c..491dc625cf21 100644
--- a/pkgs/servers/s6/default.nix
+++ b/pkgs/servers/s6/default.nix
@@ -1,4 +1,9 @@
-{stdenv, fetchurl, skalibs, execline}:
+{ stdenv
+, execline
+, fetchurl
+, skalibs
+, skarnetConfCompile
+}:
 
 let
 
@@ -13,38 +18,13 @@ in stdenv.mkDerivation rec {
     sha256 = "0djxdd3d3mlp63sjqqs0ilf8p68m86c1s98d82fl0kgaaibpsikp";
   };
 
-  buildInputs = [ skalibs execline ];
+  buildInputs = [ skalibs execline skarnetConfCompile ];
 
   sourceRoot = "admin/${name}";
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"           > conf-install-command
-    printf "$out/include"       > conf-install-include
-    printf "$out/lib"           > conf-install-library
-    printf "$out/lib"           > conf-install-library.so
-    printf "$out/sysdeps"       > conf-install-sysdeps
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    printf "${skalibs}/sysdeps" > import
-    printf "%s\n%s" "${skalibs}/include" "${execline}/include" > path-include
-    printf "%s\n%s" "${skalibs}/lib"     "${execline}/lib"     > path-library
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-
-    popd
-  '';
-
   preBuild = ''
     substituteInPlace "src/daemontools-extras/s6-log.c" \
       --replace '"execlineb"' '"${execline}/bin/execlineb"'
-
-    patchShebangs src/sys
   '';
 
   meta = {
diff --git a/pkgs/tools/misc/execline/default.nix b/pkgs/tools/misc/execline/default.nix
index 8462ca0e9c69..6bfb1852f870 100644
--- a/pkgs/tools/misc/execline/default.nix
+++ b/pkgs/tools/misc/execline/default.nix
@@ -1,4 +1,8 @@
-{stdenv, fetchurl, skalibs}:
+{ stdenv
+, fetchurl
+, skalibs
+, skarnetConfCompile
+}:
 
 let
 
@@ -13,37 +17,10 @@ in stdenv.mkDerivation rec {
     sha256 = "1br3qzif166kbp4k813ljbyq058p7mfsp2lj88n8vi4dmj935nzg";
   };
 
-  buildInputs = [ skalibs ];
+  buildInputs = [ skalibs skarnetConfCompile ];
 
   sourceRoot = "admin/${name}";
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"     > conf-install-command
-    printf "$out/include" > conf-install-include
-    printf "$out/lib"     > conf-install-library
-    printf "$out/lib"     > conf-install-library.so
-    printf "$out/sysdeps" > conf-install-sysdeps
-
-    printf "${skalibs}/sysdeps" > import
-    printf "${skalibs}/include" > path-include
-    printf "${skalibs}/lib"     > path-library
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-
-    popd
-  '';
-
-  preBuild = ''
-    patchShebangs src/sys
-  '';
-
   meta = {
     homepage = http://skarnet.org/software/execline/;
     description = "A small scripting language, to be used in place of a shell in non-interactive scripts";
diff --git a/pkgs/tools/misc/s6-portable-utils/default.nix b/pkgs/tools/misc/s6-portable-utils/default.nix
index 8da10b7eb582..650886351e6b 100644
--- a/pkgs/tools/misc/s6-portable-utils/default.nix
+++ b/pkgs/tools/misc/s6-portable-utils/default.nix
@@ -1,4 +1,8 @@
-{ stdenv, fetchurl, skalibs }:
+{ stdenv
+, fetchurl
+, skalibs
+, skarnetConfCompile
+}:
 
 let
 
@@ -13,34 +17,10 @@ in stdenv.mkDerivation rec {
     sha256 = "040nmls7qbgw8yn502lym4kgqh5zxr2ks734bqajpi2ricnasvhl";
   };
 
-  buildInputs = [ skalibs ];
+  buildInputs = [ skalibs skarnetConfCompile ];
 
   sourceRoot = "admin/${name}";
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"           > conf-install-command
-    printf "$out/libexec"       > conf-install-libexec
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    printf "${skalibs}/sysdeps"      > import
-    printf "%s" "${skalibs}/include" > path-include
-    printf "%s" "${skalibs}/lib"     > path-library
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-
-    popd
-  '';
-
-  preBuild = ''
-    patchShebangs src/sys
-  '';
-
   preInstall = ''
     mkdir -p "$out/libexec"
   '';
diff --git a/pkgs/tools/networking/s6-dns/default.nix b/pkgs/tools/networking/s6-dns/default.nix
index 881bb7dd32f4..16467e84a1e7 100644
--- a/pkgs/tools/networking/s6-dns/default.nix
+++ b/pkgs/tools/networking/s6-dns/default.nix
@@ -1,4 +1,8 @@
-{ stdenv, fetchurl, skalibs }:
+{ stdenv
+, fetchurl
+, skalibs
+, skarnetConfCompile
+}:
 
 let
 
@@ -13,36 +17,10 @@ in stdenv.mkDerivation rec {
     sha256 = "1r82l5fnz2rrwm5wq2sldqp74lk9fifr0d8hyq98xdyh24hish68";
   };
 
-  buildInputs = [ skalibs ];
+  buildInputs = [ skalibs skarnetConfCompile ];
 
   sourceRoot = "web/${name}";
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"           > conf-install-command
-    printf "$out/include"       > conf-install-include
-    printf "$out/lib"           > conf-install-library
-    printf "$out/lib"           > conf-install-library.so
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    printf "${skalibs}/sysdeps"      > import
-    printf "%s" "${skalibs}/include" > path-include
-    printf "%s" "${skalibs}/lib"     > path-library
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-
-    popd
-  '';
-
-  preBuild = ''
-    patchShebangs src/sys
-  '';
-
   meta = {
     homepage = http://www.skarnet.org/software/s6-dns/;
     description = "A suite of DNS client programs and libraries for Unix systems";
diff --git a/pkgs/tools/networking/s6-networking/default.nix b/pkgs/tools/networking/s6-networking/default.nix
index 5faa2af8ba11..a4482bb71c3f 100644
--- a/pkgs/tools/networking/s6-networking/default.nix
+++ b/pkgs/tools/networking/s6-networking/default.nix
@@ -3,6 +3,7 @@
 , fetchurl
 , s6Dns
 , skalibs
+, skarnetConfCompile
 }:
 
 let
@@ -18,41 +19,10 @@ in stdenv.mkDerivation rec {
     sha256 = "1np9m2j1i2450mbcjvpbb56kv3wc2fbyvmv2a039q61j2lk6vjz7";
   };
 
-  buildInputs = [ skalibs s6Dns execline ];
+  buildInputs = [ skalibs s6Dns execline skarnetConfCompile ];
 
   sourceRoot = "net/${name}";
 
-  configurePhase = ''
-    pushd conf-compile
-
-    printf "$out/bin"           > conf-install-command
-    printf "$out/include"       > conf-install-include
-    printf "$out/lib"           > conf-install-library
-    printf "$out/lib"           > conf-install-library.so
-
-    # let nix builder strip things, cross-platform
-    truncate --size 0 conf-stripbins
-    truncate --size 0 conf-striplibs
-
-    printf "${skalibs}/sysdeps"      > import
-
-    rm -f path-include
-    rm -f path-library
-    for dep in "${execline}" "${s6Dns}" "${skalibs}"; do
-      printf "%s\n" "$dep/include" >> path-include
-      printf "%s\n" "$dep/lib"     >> path-library
-    done
-
-    rm -f flag-slashpackage
-    touch flag-allstatic
-
-    popd
-  '';
-
-  preBuild = ''
-    patchShebangs src/sys
-  '';
-
   meta = {
     homepage = http://www.skarnet.org/software/s6-networking/;
     description = "A suite of small networking utilities for Unix systems";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3b27e447009d..e31bd7ed737a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6831,6 +6831,8 @@ let
 
   skalibs = callPackage ../development/libraries/skalibs { };
 
+  skarnetConfCompile = callPackage ../development/tools/build-managers/skarnet { };
+
   slang = callPackage ../development/libraries/slang { };
 
   slibGuile = callPackage ../development/libraries/slib {