diff --git a/pkgs/build-support/skaware/build-skaware-package.nix b/pkgs/build-support/skaware/build-skaware-package.nix new file mode 100644 index 000000000000..5f6951cb25fa --- /dev/null +++ b/pkgs/build-support/skaware/build-skaware-package.nix @@ -0,0 +1,128 @@ +{ stdenv, fetchgit, writeScript, file }: +let lib = stdenv.lib; +in { + # : string + pname + # : string +, version + # : string +, sha256 + # : string +, description + # : list Platform +, platforms ? lib.platforms.all + # : list string +, outputs ? [ "bin" "lib" "dev" "doc" "out" ] + # TODO(Profpatsch): automatically infer most of these + # : list string +, configureFlags + # mostly for moving and deleting files from the build directory + # : lines +, postInstall + # : list Maintainer +, maintainers ? [] + + +}: + +let + + # File globs that can always be deleted + commonNoiseFiles = [ + ".gitignore" + "Makefile" + "INSTALL" + "configure" + "patch-for-solaris" + "src/**/*" + "tools/**/*" + "package/**/*" + "config.mak" + ]; + + # File globs that should be moved to $doc + commonMetaFiles = [ + "COPYING" + "AUTHORS" + "NEWS" + "CHANGELOG" + "README" + "README.*" + ]; + + globWith = stdenv.lib.concatMapStringsSep "\n"; + rmNoise = globWith (f: + ''rm -rf ${f}'') commonNoiseFiles; + mvMeta = globWith + (f: ''mv ${f} "$DOCDIR" 2>/dev/null || true'') + commonMetaFiles; + + # Move & remove actions, taking the package doc directory + commonFileActions = writeScript "common-file-actions.sh" '' + #!${stdenv.shell} + set -e + DOCDIR="$1" + shopt -s globstar extglob nullglob + ${rmNoise} + mkdir -p "$DOCDIR" + ${mvMeta} + ''; + + +in stdenv.mkDerivation { + name = "${pname}-${version}"; + + src = fetchgit { + url = "git://git.skarnet.org/${pname}"; + rev = "refs/tags/v${version}"; + inherit sha256; + }; + + inherit outputs; + + dontDisableStatic = true; + enableParallelBuilding = true; + + configureFlags = configureFlags ++ [ + "--enable-absolute-paths" + (if stdenv.isDarwin + then "--disable-shared" + else "--enable-shared") + ] + # On darwin, the target triplet from -dumpmachine includes version number, + # but skarnet.org software uses the triplet to test binary compatibility. + # Explicitly setting target ensures code can be compiled against a skalibs + # binary built on a different version of darwin. + # http://www.skarnet.org/cgi-bin/archive.cgi?1:mss:623:heiodchokfjdkonfhdph + ++ (lib.optional stdenv.isDarwin + "--build=${stdenv.hostPlatform.system}"); + + # TODO(Profpatsch): ensure that there is always a $doc output! + postInstall = '' + echo "Cleaning & moving common files" + mkdir -p $doc/share/doc/${pname} + ${commonFileActions} $doc/share/doc/${pname} + + ${postInstall} + ''; + + postFixup = '' + echo "Checking for remaining source files" + rem=$(find -mindepth 1 -xtype f -print0 \ + | tee $TMP/remaining-files) + if [[ "$rem" != "" ]]; then + echo "ERROR: These files should be either moved or deleted:" + cat $TMP/remaining-files | xargs -0 ${file}/bin/file + exit 1 + fi + ''; + + meta = { + homepage = "https://skarnet.org/software/${pname}/"; + inherit description platforms; + license = stdenv.lib.licenses.isc; + maintainers = with lib.maintainers; + [ pmahoney Profpatsch ] ++ maintainers; + }; + +} diff --git a/pkgs/development/libraries/skalibs/default.nix b/pkgs/development/libraries/skalibs/default.nix index 85b1b060700f..98977381f0f1 100644 --- a/pkgs/development/libraries/skalibs/default.nix +++ b/pkgs/development/libraries/skalibs/default.nix @@ -1,51 +1,30 @@ -{ stdenv, fetchgit }: +{ stdenv, skawarePackages }: -let +with skawarePackages; +buildPackage { + pname = "skalibs"; version = "2.7.0.0"; + sha256 = "068pkbl91mi35amlhv491dwrbzyfifrlxijss0g2vf693xvx6lxm"; -in stdenv.mkDerivation rec { - - name = "skalibs-${version}"; - - src = fetchgit { - url = "git://git.skarnet.org/skalibs"; - rev = "refs/tags/v${version}"; - sha256 = "068pkbl91mi35amlhv491dwrbzyfifrlxijss0g2vf693xvx6lxm"; - }; + description = "A set of general-purpose C programming libraries"; outputs = [ "lib" "dev" "doc" "out" ]; - dontDisableStatic = true; - - enableParallelBuilding = true; - configureFlags = [ - "--enable-force-devr" # assume /dev/random works + # assume /dev/random works + "--enable-force-devr" "--libdir=\${lib}/lib" "--dynlibdir=\${lib}/lib" "--includedir=\${dev}/include" "--sysdepdir=\${lib}/lib/skalibs/sysdeps" - ] - ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ]) - # On darwin, the target triplet from -dumpmachine includes version number, but - # skarnet.org software uses the triplet to test binary compatibility. - # Explicitly setting target ensures code can be compiled against a skalibs - # binary built on a different version of darwin. - # http://www.skarnet.org/cgi-bin/archive.cgi?1:mss:623:heiodchokfjdkonfhdph - ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + ]; postInstall = '' - mkdir -p $doc/share/doc/skalibs + rm -rf sysdeps.cfg + rm libskarnet.* + mv doc $doc/share/doc/skalibs/html ''; - meta = { - homepage = http://skarnet.org/software/skalibs/; - description = "A set of general-purpose C programming libraries"; - platforms = stdenv.lib.platforms.all; - license = stdenv.lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/os-specific/linux/s6-linux-utils/default.nix b/pkgs/os-specific/linux/s6-linux-utils/default.nix index 1c07dd6f0544..95dd3736c040 100644 --- a/pkgs/os-specific/linux/s6-linux-utils/default.nix +++ b/pkgs/os-specific/linux/s6-linux-utils/default.nix @@ -1,25 +1,19 @@ -{ stdenv, fetchurl, skalibs }: +{ stdenv, skawarePackages }: -let +with skawarePackages; +buildPackage { + pname = "s6-linux-utils"; version = "2.5.0.0"; + sha256 = "0wbxwki2alyym6dm44s5ajp9ndw6sgrqvizkznz71c30i0dlxrnf"; -in stdenv.mkDerivation rec { - - name = "s6-linux-utils-${version}"; - - src = fetchurl { - url = "https://www.skarnet.org/software/s6-linux-utils/${name}.tar.gz"; - sha256 = "04q2z71dkzahd2ppga2zikclz2qk014c23gm7rigqxjc8rs1amvq"; - }; + description = "A set of minimalistic Linux-specific system utilities"; + platforms = stdenv.lib.platforms.linux; outputs = [ "bin" "dev" "doc" "out" ]; - dontDisableStatic = true; - # TODO: nsss support configureFlags = [ - "--enable-absolute-paths" "--bindir=\${bin}/bin" "--includedir=\${dev}/include" "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps" @@ -29,16 +23,10 @@ in stdenv.mkDerivation rec { ]; postInstall = '' - mkdir -p $doc/share/doc/s6-networking/ - mv doc $doc/share/doc/s6-networking/html + # remove all s6 executables from build directory + rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable) + + mv doc $doc/share/doc/s6-linux-utils/html ''; - meta = { - homepage = http://www.skarnet.org/software/s6-linux-utils/; - description = "A set of minimalistic Linux-specific system utilities"; - platforms = stdenv.lib.platforms.linux; - license = stdenv.lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/tools/misc/execline/default.nix b/pkgs/tools/misc/execline/default.nix index 70301cc89e62..00faab0a66f8 100644 --- a/pkgs/tools/misc/execline/default.nix +++ b/pkgs/tools/misc/execline/default.nix @@ -1,28 +1,18 @@ -{ stdenv, fetchgit, skalibs }: +{ stdenv, skawarePackages }: -let +with skawarePackages; +buildPackage { + pname = "execline"; version = "2.5.0.1"; + sha256 = "0d4gvixz7xja03hnwc2bf13xrgh1jq27ij4m1jlrpgrzhfpqz37q"; -in stdenv.mkDerivation rec { - - name = "execline-${version}"; - - src = fetchgit { - url = "git://git.skarnet.org/execline"; - rev = "refs/tags/v${version}"; - sha256 = "0d4gvixz7xja03hnwc2bf13xrgh1jq27ij4m1jlrpgrzhfpqz37q"; - }; + description = "A small scripting language, to be used in place of a shell in non-interactive scripts"; outputs = [ "bin" "lib" "dev" "doc" "out" ]; - dontDisableStatic = true; - - enableParallelBuilding = true; - # TODO: nsss support configureFlags = [ - "--enable-absolute-paths" "--libdir=\${lib}/lib" "--dynlibdir=\${lib}/lib" "--bindir=\${bin}/bin" @@ -31,22 +21,15 @@ in stdenv.mkDerivation rec { "--with-include=${skalibs.dev}/include" "--with-lib=${skalibs.lib}/lib" "--with-dynlib=${skalibs.lib}/lib" - ] - ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ]) - ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + ]; postInstall = '' - mkdir -p $doc/share/doc/execline + # remove all execline executables from build directory + rm $(find -type f -mindepth 1 -maxdepth 1 -executable) + rm libexecline.* + mv doc $doc/share/doc/execline/html mv examples $doc/share/doc/execline/examples ''; - meta = { - homepage = http://skarnet.org/software/execline/; - description = "A small scripting language, to be used in place of a shell in non-interactive scripts"; - platforms = stdenv.lib.platforms.all; - license = stdenv.lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/tools/misc/s6-portable-utils/default.nix b/pkgs/tools/misc/s6-portable-utils/default.nix index c11bd13c799a..04874dedc6e6 100644 --- a/pkgs/tools/misc/s6-portable-utils/default.nix +++ b/pkgs/tools/misc/s6-portable-utils/default.nix @@ -1,47 +1,35 @@ -{ stdenv, fetchurl, skalibs }: +{ stdenv, skawarePackages }: -with stdenv.lib; +with skawarePackages; -stdenv.mkDerivation rec { - name = "s6-portable-utils-${version}"; +let + pname = "s6-portable-utils"; + +in buildPackage { + pname = pname; version = "2.2.1.2"; + sha256 = "1zfanja5mbyafmzw28dlx1bb3fixa7lidbs62sxf849ly3z0zqp2"; - src = fetchurl { - url = "https://www.skarnet.org/software/s6-portable-utils/${name}.tar.gz"; - sha256 = "0if77z07rfygd1yk9d2abxkdbx3dg52vcjhb20isb8kvqxhkg8ih"; - }; + description = "A set of tiny general Unix utilities optimized for simplicity and small size"; outputs = [ "bin" "dev" "doc" "out" ]; - dontDisableStatic = true; - configureFlags = [ - "--enable-absolute-paths" "--bindir=\${bin}/bin" "--includedir=\${dev}/include" "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps" "--with-include=${skalibs.dev}/include" "--with-lib=${skalibs.lib}/lib" "--with-dynlib=${skalibs.lib}/lib" - ] - # On darwin, the target triplet from -dumpmachine includes version number, but - # skarnet.org software uses the triplet to test binary compatibility. - # Explicitly setting target ensures code can be compiled against a skalibs - # binary built on a different version of darwin. - # http://www.skarnet.org/cgi-bin/archive.cgi?1:mss:623:heiodchokfjdkonfhdph - ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + ]; postInstall = '' - mkdir -p $doc/share/doc/s6-portable-utils/ - mv doc $doc/share/doc/s6-portable-utils/html + # remove all s6 executables from build directory + rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable) + rm seekablepipe + + mv doc $doc/share/doc/${pname}/html ''; - meta = { - homepage = http://www.skarnet.org/software/s6-portable-utils/; - description = "A set of tiny general Unix utilities optimized for simplicity and small size"; - platforms = platforms.all; - license = licenses.isc; - maintainers = with maintainers; [ pmahoney Profpatsch ]; - }; } diff --git a/pkgs/tools/networking/s6-dns/default.nix b/pkgs/tools/networking/s6-dns/default.nix index ee669b8f9282..6d514d56ed39 100644 --- a/pkgs/tools/networking/s6-dns/default.nix +++ b/pkgs/tools/networking/s6-dns/default.nix @@ -1,27 +1,17 @@ -{ stdenv, fetchgit, skalibs }: +{ stdenv, skawarePackages }: -let +with skawarePackages; +buildPackage { + pname = "s6-dns"; version = "2.3.0.1"; + sha256 = "0flxkrnff2c28514k2nxv2y41k38pbiwd8dxlqaxgs2cl27i0ggb"; -in stdenv.mkDerivation rec { - - name = "s6-dns-${version}"; - - src = fetchgit { - url = "git://git.skarnet.org/s6-dns"; - rev = "refs/tags/v${version}"; - sha256 = "0flxkrnff2c28514k2nxv2y41k38pbiwd8dxlqaxgs2cl27i0ggb"; - }; + description = "A suite of DNS client programs and libraries for Unix systems"; outputs = [ "bin" "lib" "dev" "doc" "out" ]; - dontDisableStatic = true; - - enableParallelBuilding = true; - configureFlags = [ - "--enable-absolute-paths" "--libdir=\${lib}/lib" "--libexecdir=\${lib}/libexec" "--dynlibdir=\${lib}/lib" @@ -31,21 +21,15 @@ in stdenv.mkDerivation rec { "--with-include=${skalibs.dev}/include" "--with-lib=${skalibs.lib}/lib" "--with-dynlib=${skalibs.lib}/lib" - ] - ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ]) - ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + ]; postInstall = '' - mkdir -p $doc/share/doc/s6-dns/ + # remove all s6-dns executables from build directory + rm $(find -type f -mindepth 1 -maxdepth 1 -executable) + rm libs6dns.* + rm libskadns.* + mv doc $doc/share/doc/s6-dns/html ''; - meta = { - homepage = http://www.skarnet.org/software/s6-dns/; - description = "A suite of DNS client programs and libraries for Unix systems"; - platforms = stdenv.lib.platforms.all; - license = stdenv.lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/tools/networking/s6-networking/default.nix b/pkgs/tools/networking/s6-networking/default.nix index d96cff167d90..032287ece835 100644 --- a/pkgs/tools/networking/s6-networking/default.nix +++ b/pkgs/tools/networking/s6-networking/default.nix @@ -1,4 +1,4 @@ -{ stdenv, execline, fetchgit, s6, s6-dns, skalibs +{ stdenv, skawarePackages # Whether to build the TLS/SSL tools and what library to use # acceptable values: "libressl", false @@ -6,11 +6,9 @@ , sslSupport ? "libressl" , libressl }: +with skawarePackages; let inherit (stdenv) lib; - - version = "2.3.0.3"; - sslSupportEnabled = sslSupport != false; sslLibs = { "libressl" = libressl; @@ -19,25 +17,18 @@ let in assert sslSupportEnabled -> sslLibs ? ${sslSupport}; -stdenv.mkDerivation rec { - name = "s6-networking-${version}"; +buildPackage { + pname = "s6-networking"; + version = "2.3.0.3"; + sha256 = "06kv2l31ch0zw538bpivgnwymb056x5hpmqafglffgkbq3izp7wc"; - src = fetchgit { - url = "git://git.skarnet.org/s6-networking"; - rev = "refs/tags/v${version}"; - sha256 = "06kv2l31ch0zw538bpivgnwymb056x5hpmqafglffgkbq3izp7wc"; - }; + description = "A suite of small networking utilities for Unix systems"; outputs = [ "bin" "lib" "dev" "doc" "out" ]; - dontDisableStatic = true; - - enableParallelBuilding = true; - # TODO: nsss support configureFlags = [ - "--enable-absolute-paths" "--libdir=\${lib}/lib" "--libexecdir=\${lib}/libexec" "--dynlibdir=\${lib}/lib" @@ -61,20 +52,16 @@ stdenv.mkDerivation rec { "--enable-ssl=${sslSupport}" "--with-include=${lib.getDev sslLibs.${sslSupport}}/include" "--with-lib=${lib.getLib sslLibs.${sslSupport}}/lib" - ]) - ++ (lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + "--with-dynlib=${lib.getLib sslLibs.${sslSupport}}/lib" + ]); postInstall = '' - mkdir -p $doc/share/doc/s6-networking/ + # remove all s6 executables from build directory + rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable) + rm minidentd + rm libs6net.* libstls.* + mv doc $doc/share/doc/s6-networking/html ''; - meta = { - homepage = http://www.skarnet.org/software/s6-networking/; - description = "A suite of small networking utilities for Unix systems"; - platforms = lib.platforms.all; - license = lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/tools/system/s6-rc/default.nix b/pkgs/tools/system/s6-rc/default.nix index b5cfa8ea4425..3edb0c0fb608 100644 --- a/pkgs/tools/system/s6-rc/default.nix +++ b/pkgs/tools/system/s6-rc/default.nix @@ -1,27 +1,18 @@ -{ stdenv, execline, fetchgit, skalibs, s6 }: +{ stdenv, skawarePackages }: -let +with skawarePackages; +buildPackage { + pname = "s6-rc"; version = "0.4.1.0"; + sha256 = "1as7jhlp4cvh1bzvcli1hk1pbdzkac8gys1h379blymfy8hmp805"; -in stdenv.mkDerivation rec { - - name = "s6-rc-${version}"; - - src = fetchgit { - url = "git://git.skarnet.org/s6-rc"; - rev = "refs/tags/v${version}"; - sha256 = "1as7jhlp4cvh1bzvcli1hk1pbdzkac8gys1h379blymfy8hmp805"; - }; + description = "A service manager for s6-based systems"; + platforms = stdenv.lib.platforms.linux; outputs = [ "bin" "lib" "dev" "doc" "out" ]; - dontDisableStatic = true; - - enableParallelBuilding = true; - configureFlags = [ - "--enable-absolute-paths" "--libdir=\${lib}/lib" "--libexecdir=\${lib}/libexec" "--dynlibdir=\${lib}/lib" @@ -37,22 +28,15 @@ in stdenv.mkDerivation rec { "--with-dynlib=${skalibs.lib}/lib" "--with-dynlib=${execline.lib}/lib" "--with-dynlib=${s6.out}/lib" - ] - ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ]) - ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + ]; postInstall = '' - mkdir -p $doc/share/doc/s6-rc/ + # remove all s6 executables from build directory + rm $(find -name "s6-rc-*" -type f -mindepth 1 -maxdepth 1 -executable) + rm s6-rc libs6rc.* + mv doc $doc/share/doc/s6-rc/html mv examples $doc/share/doc/s6-rc/examples ''; - meta = { - homepage = http://skarnet.org/software/s6-rc/; - description = "A service manager for s6-based systems"; - platforms = stdenv.lib.platforms.linux; - license = stdenv.lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/tools/system/s6/default.nix b/pkgs/tools/system/s6/default.nix index 85140bce1ec9..f459c6242606 100644 --- a/pkgs/tools/system/s6/default.nix +++ b/pkgs/tools/system/s6/default.nix @@ -1,32 +1,21 @@ -{ stdenv, execline, fetchgit, skalibs }: +{ stdenv, skawarePackages }: -let +with skawarePackages; +buildPackage { + pname = "s6"; version = "2.7.2.0"; + sha256 = "07j4is7kxkynschwbf83q5rw1872kg3ij2vhxyfp3bg71k5pw1az"; -in stdenv.mkDerivation rec { - - name = "s6-${version}"; - - src = fetchgit { - url = "git://git.skarnet.org/s6"; - rev = "refs/tags/v${version}"; - sha256 = "07j4is7kxkynschwbf83q5rw1872kg3ij2vhxyfp3bg71k5pw1az"; - }; + description = "skarnet.org's small & secure supervision software suite"; # NOTE lib: cannot split lib from bin at the moment, # since some parts of lib depend on executables in bin. # (the `*_startf` functions in `libs6`) - outputs = [ /*"bin" "lib"*/ "out" "dev" "doc" ]; - dontDisableStatic = true; - - enableParallelBuilding = true; - # TODO: nsss support configureFlags = [ - "--enable-absolute-paths" "--libdir=\${out}/lib" "--libexecdir=\${out}/libexec" "--dynlibdir=\${out}/lib" @@ -39,22 +28,15 @@ in stdenv.mkDerivation rec { "--with-lib=${execline.lib}/lib" "--with-dynlib=${skalibs.lib}/lib" "--with-dynlib=${execline.lib}/lib" - ] - ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ]) - ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}"); + ]; postInstall = '' - mkdir -p $doc/share/doc/s6/ + # remove all s6 executables from build directory + rm $(find -type f -mindepth 1 -maxdepth 1 -executable) + rm libs6.* + mv doc $doc/share/doc/s6/html mv examples $doc/share/doc/s6/examples ''; - meta = { - homepage = http://www.skarnet.org/software/s6/; - description = "skarnet.org's small & secure supervision software suite"; - platforms = stdenv.lib.platforms.all; - license = stdenv.lib.licenses.isc; - maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ]; - }; - } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index dccad6918ca5..7d5e65e4d4bc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12006,6 +12006,8 @@ with pkgs; skalibs = skawarePackages.skalibs; skawarePackages = recurseIntoAttrs { + buildPackage = callPackage ../build-support/skaware/build-skaware-package.nix { }; + skalibs = callPackage ../development/libraries/skalibs { }; execline = callPackage ../tools/misc/execline { };