Merge branch 'master' into staging

This commit is contained in:
Jan Malakhovski
2018-09-08 22:08:32 +00:00
311 changed files with 8379 additions and 3004 deletions

View File

@@ -75,7 +75,7 @@ stdenv.mkDerivation {
preferLocalBuild = true;
inherit cc libc_bin libc_dev libc_lib bintools coreutils_bin;
shell = getBin shell + stdenv.lib.optionalString (stdenv ? shellPath) stdenv.shellPath;
shell = getBin shell + shell.shellPath or "";
gnugrep_bin = if nativeTools then "" else gnugrep;
inherit targetPrefix infixSalt;

View File

@@ -22,8 +22,8 @@ assert null == lib.findFirst (c: "/"==c) null (lib.stringToCharacters repository
assert null == lib.findFirst (c: "/"==c) null (lib.stringToCharacters imageName);
let
# Abuse `builtins.toPath` to collapse possible double slashes
repoTag0 = builtins.toString (builtins.toPath "/${stripScheme registry}/${repository}/${imageName}");
# Abuse paths to collapse possible double slashes
repoTag0 = builtins.toString (/. + "/${stripScheme registry}/${repository}/${imageName}");
repoTag1 = lib.removePrefix "/" repoTag0;
layers = builtins.map stripNixStore imageLayers;

View File

@@ -0,0 +1,127 @@
{ stdenv, fetchurl, 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 = fetchurl {
url = "https://skarnet.org/software/${pname}/${pname}-${version}.tar.gz";
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;
};
}