3
0
Fork 0
forked from mirrors/nixpkgs

Merge branch 'staging' into master

This commit is contained in:
Daiderd Jordan 2017-07-08 22:21:32 +02:00
commit 980346592c
No known key found for this signature in database
GPG key ID: D02435D05B810C96
34 changed files with 247 additions and 102 deletions

View file

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
inherit name; inherit name;
srcs = [ src robtkSrc ]; srcs = [ src robtkSrc ];
sourceRoot = "sisco.lv2-${src.rev}-src"; sourceRoot = src.name;
buildInputs = [ pkgconfig lv2 pango cairo libjack2 mesa ]; buildInputs = [ pkgconfig lv2 pango cairo libjack2 mesa ];

View file

@ -10,6 +10,7 @@
, zlib ? null, extraPackages ? [], extraBuildCommands ? "" , zlib ? null, extraPackages ? [], extraBuildCommands ? ""
, dyld ? null # TODO: should this be a setup-hook on dyld? , dyld ? null # TODO: should this be a setup-hook on dyld?
, isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null , isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null
, buildPackages ? {}, hostPlatform, targetPlatform
, runCommand ? null , runCommand ? null
}: }:
@ -121,6 +122,17 @@ let
null) null)
else ""; else "";
expand-response-params = if buildPackages.stdenv.cc or null != null && buildPackages.stdenv.cc != "/dev/null"
then buildPackages.stdenv.mkDerivation {
name = "expand-response-params";
src = ./expand-response-params.c;
buildCommand = ''
# Work around "stdenv-darwin-boot-2 is not allowed to refer to path /nix/store/...-expand-response-params.c"
cp "$src" expand-response-params.c
"$CC" -std=c99 -O3 -o "$out" expand-response-params.c
'';
} else "";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -369,11 +381,13 @@ stdenv.mkDerivation {
+ '' + ''
substituteAll ${preWrap ./add-flags.sh} $out/nix-support/add-flags.sh substituteAll ${preWrap ./add-flags.sh} $out/nix-support/add-flags.sh
substituteAll ${preWrap ./add-hardening.sh} $out/nix-support/add-hardening.sh substituteAll ${preWrap ./add-hardening.sh} $out/nix-support/add-hardening.sh
cp -p ${preWrap ./utils.sh} $out/nix-support/utils.sh substituteAll ${preWrap ./utils.sh} $out/nix-support/utils.sh
'' ''
+ extraBuildCommands; + extraBuildCommands;
inherit dynamicLinker; inherit dynamicLinker expand-response-params;
expandResponseParams = expand-response-params; # for substitution in utils.sh
crossAttrs = { crossAttrs = {
shell = shell.crossDrv + shell.crossDrv.shellPath; shell = shell.crossDrv + shell.crossDrv.shellPath;

View file

@ -0,0 +1,84 @@
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct { char *data; size_t len, cap; } String;
void resize(String *s, size_t len) {
s->len = len;
if (s->cap < s->len) {
s->cap = s->len * 2;
s->data = (char *)realloc(s->data, s->cap);
assert(s->data);
}
}
void append(String *s, const char *data, size_t len) {
resize(s, s->len + len);
memcpy(s->data + s->len - len, data, len);
}
typedef enum { space = 0, other = 1, backslash = 2, apostrophe = 3, quotation_mark = 4 } CharClass;
typedef enum { outside, unq, unq_esc, sq, sq_esc, dq, dq_esc } State;
// current State -> CharClass -> next State
const State transitions[][5] = {
[outside] = {outside, unq, unq_esc, sq, dq},
[unq] = {outside, unq, unq_esc, sq, dq},
[unq_esc] = {unq, unq, unq, unq, unq},
[sq] = {sq, sq, sq_esc, unq, sq},
[sq_esc] = {sq, sq, sq, sq, sq},
[dq] = {dq, dq, dq_esc, dq, unq},
[dq_esc] = {dq, dq, dq, dq, dq},
};
CharClass charClass(int c) {
return c == '\\' ? backslash : c == '\'' ? apostrophe : c == '"' ? quotation_mark :
isspace(c) ? space : other;
}
// expandArg writes NULL-terminated expansions of `arg', a NULL-terminated
// string, to stdout. If arg does not begin with `@' or does not refer to a
// file, it is written as is. Otherwise the contents of the file are
// recursively expanded. On unexpected EOF in malformed response files an
// incomplete final argument is written, even if it is empty, to parse like GCC.
void expandArg(String *arg) {
FILE *f;
if (arg->data[0] != '@' || !(f = fopen(&arg->data[1], "r"))) {
fwrite(arg->data, 1, arg->len, stdout);
return;
}
resize(arg, 0);
State cur = outside;
int c;
do {
c = fgetc(f);
State next = transitions[cur][charClass(c)];
if ((cur == unq && next == outside) || (cur != outside && c == EOF)) {
append(arg, "", 1);
expandArg(arg);
resize(arg, 0);
} else if (cur == unq_esc || cur == sq_esc || cur == dq_esc ||
(cur == outside ? next == unq : cur == next)) {
char s = c;
append(arg, &s, 1);
}
cur = next;
} while (c != EOF);
fclose(f);
}
int main(int argc, char **argv) {
String arg = { 0 };
while (*++argv) {
resize(&arg, 0);
append(&arg, *argv, strlen(*argv) + 1);
expandArg(&arg);
}
free(arg.data);
return EXIT_SUCCESS;
}

View file

@ -23,52 +23,18 @@ badPath() {
"${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP" "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP"
} }
# @args.rsp parser.
# Char classes: space, other, backslash, single quote, double quote.
# States: 0 - outside, 1/2 - unquoted arg/slash, 3/4 - 'arg'/slash, 5/6 - "arg"/slash.
# State transitions:
rspT=(01235 01235 11111 33413 33333 55651 55555)
# Push (a) arg or (c) char on transition:
rspP[10]=a rspP[01]=c rspP[11]=c rspP[21]=c rspP[33]=c rspP[43]=c rspP[55]=c rspP[65]=c
rspParse() {
rsp=()
local state=0
local arg=''
local c
while read -r -N1 c; do
local cls=1
case "$c" in
' ' | $'\t' | $'\r' | $'\n') cls=0 ;;
'\') cls=2 ;;
"'") cls=3 ;;
'"') cls=4 ;;
esac
local nextstates="${rspT[$state]}"
local nextstate="${nextstates:$cls:1}"
case "${rspP[$state$nextstate]}" in
'c') arg+="$c" ;;
'a') rsp+=("$arg"); arg='' ;;
esac
state="$nextstate"
done
if [ "$state" -ne 0 ]; then
rsp+=("$arg")
fi
}
expandResponseParams() { expandResponseParams() {
params=() params=("$@")
while [ $# -gt 0 ]; do local arg
local p="$1" for arg in "$@"; do
shift if [[ "$arg" == @* ]]; then
if [ "${p:0:1}" = '@' -a -e "${p:1}" ]; then if [ -n "@expandResponseParams@" ]; then
rspParse <"${p:1}" readarray -d '' params < <("@expandResponseParams@" "$@")
set -- "${rsp[@]}" "$@" return 0
else else
params+=("$p") echo "Response files aren't supported during bootstrapping" >&2
return 1
fi
fi fi
done done
} }

View file

@ -1,21 +1,9 @@
{stdenv, git, cacert}: let {stdenv, git, cacert, gitRepoToName}:
urlToName = url: rev: let
inherit (stdenv.lib) removeSuffix splitString last;
base = last (splitString ":" (baseNameOf (removeSuffix "/" url)));
matched = builtins.match "(.*).git" base;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null
then "-${short}"
else "";
in "${if matched == null then base else builtins.head matched}${appendShort}";
in
{ url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? deepClone { url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? deepClone
, fetchSubmodules ? true, deepClone ? false , fetchSubmodules ? true, deepClone ? false
, branchName ? null , branchName ? null
, name ? urlToName url rev , name ? gitRepoToName url rev
, # Shell code executed after the file has been fetched , # Shell code executed after the file has been fetched
# successfully. This can do things like check or transform the file. # successfully. This can do things like check or transform the file.
postFetch ? "" postFetch ? ""

View file

@ -0,0 +1,14 @@
{ lib }:
urlOrRepo: rev: let
inherit (lib) removeSuffix splitString last;
base = last (splitString ":" (baseNameOf (removeSuffix "/" urlOrRepo)));
matched = builtins.match "(.*).git" base;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null
then "-${short}"
else "";
in "${if matched == null then base else builtins.head matched}${appendShort}"

View file

@ -283,8 +283,8 @@ _clone_user_rev() {
if test -z "$(echo "$rev" | tr -d 0123456789abcdef)"; then if test -z "$(echo "$rev" | tr -d 0123456789abcdef)"; then
clone "$dir" "$url" "$rev" "" 1>&2 clone "$dir" "$url" "$rev" "" 1>&2
else else
echo 1>&2 "Bad commit hash or bad reference." # if revision is not hexadecimal it might be a tag
exit 1 clone "$dir" "$url" "" "refs/tags/$rev" 1>&2
fi;; fi;;
esac esac

View file

@ -9,7 +9,7 @@ let
name = "clang-${version}"; name = "clang-${version}";
unpackPhase = '' unpackPhase = ''
unpackFile ${fetch "cfe" "12n99m60aa680cir3ql56s1jsv6lp61hq4w9rabf4c6vpn7gi9ff"} unpackFile ${fetch "cfe" "16vnv3msnvx33dydd17k2cq0icndi1a06bg5vcxkrhjjb1rqlwv1"}
mv cfe-${version}* clang mv cfe-${version}* clang
sourceRoot=$PWD/clang sourceRoot=$PWD/clang
unpackFile ${clang-tools-extra_src} unpackFile ${clang-tools-extra_src}

View file

@ -2,7 +2,7 @@
let let
callPackage = newScope (self // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); callPackage = newScope (self // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
release_version = "4.0.0"; release_version = "4.0.1";
version = release_version; # differentiating these is important for rc's version = release_version; # differentiating these is important for rc's
fetch = name: sha256: fetchurl { fetch = name: sha256: fetchurl {
@ -10,8 +10,8 @@ let
inherit sha256; inherit sha256;
}; };
compiler-rt_src = fetch "compiler-rt" "059ipqq27gd928ay06f1ck3vw6y5h5z4zd766x8k0k7jpqimpwnk"; compiler-rt_src = fetch "compiler-rt" "0h5lpv1z554szi4r4blbskhwrkd78ir50v3ng8xvk1s86fa7gj53";
clang-tools-extra_src = fetch "clang-tools-extra" "16bwckgcxfn56mbqjlxi7fxja0zm9hjfa6s3ncm3dz98n5zd7ds1"; clang-tools-extra_src = fetch "clang-tools-extra" "1dhmp7ccfpr42bmvk3kp37ngjpf3a9m5d4kkpsn7d00hzi7fdl9m";
# Add man output without introducing extra dependencies. # Add man output without introducing extra dependencies.
overrideManOutput = drv: overrideManOutput = drv:

View file

@ -3,7 +3,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "libc++-${version}"; name = "libc++-${version}";
src = fetch "libcxx" "15ngfcjc3pjakpwfq7d4n546jj0rgfdv5rpb1qv9xgv9mp236kag"; src = fetch "libcxx" "0k6cmjcxnp2pyl8xwy1wkyyckkmdrjddim94yf1gzjbjy9qi22jj";
postUnpack = '' postUnpack = ''
unpackFile ${libcxxabi.src} unpackFile ${libcxxabi.src}

View file

@ -3,7 +3,7 @@
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libc++abi-${version}"; name = "libc++abi-${version}";
src = fetch "libcxxabi" "1n416kv27anabg9jsw6331r28ic30xk46p381lx2vbb2jrhwpafw"; src = fetch "libcxxabi" "0cqvzallxh0nwiijsf6i4d5ds9m5ijfzywg7376ncv50i64if24g";
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = stdenv.lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD) libunwind; buildInputs = stdenv.lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD) libunwind;

View file

@ -10,7 +10,7 @@
stdenv.mkDerivation { stdenv.mkDerivation {
name = "lld-${version}"; name = "lld-${version}";
src = fetch "lld" "00km1qawk146pyjqa6aphcdzgkzrmg6cgk0ikg4661ffp5bn9q1k"; src = fetch "lld" "1v9nkpr158j4yd4zmi6rpnfxkp78r1fapr8wji9s6v176gji1kk3";
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ llvm ]; buildInputs = [ llvm ];

View file

@ -17,7 +17,7 @@
stdenv.mkDerivation { stdenv.mkDerivation {
name = "lldb-${version}"; name = "lldb-${version}";
src = fetch "lldb" "0g83hbw1r4gd0z8hlph9i34xs6dlcc69vz3h2bqwkhb2qq2qzg9d"; src = fetch "lldb" "0yy43a27zx3r51b6gkv3v2mdiqcq3mf0ngki47ya0i30v3gx4cl4";
patches = [ ./lldb-libedit.patch ]; patches = [ ./lldb-libedit.patch ];
postPatch = '' postPatch = ''

View file

@ -22,7 +22,7 @@
}: }:
let let
src = fetch "llvm" "1giklnw71wzsgbqg9wb5x7dxnbj39m6zpfvskvzvhwvfz4fm244d"; src = fetch "llvm" "0l9bf7kdwhlj0kq1hawpyxhna1062z3h7qcz2y8nfl9dz2qksy6s";
shlib = if stdenv.isDarwin then "dylib" else "so"; shlib = if stdenv.isDarwin then "dylib" else "so";
# Used when creating a version-suffixed symlink of libLLVM.dylib # Used when creating a version-suffixed symlink of libLLVM.dylib
@ -64,13 +64,6 @@ in stdenv.mkDerivation rec {
+ stdenv.lib.optionalString (enableSharedLibraries) '' + stdenv.lib.optionalString (enableSharedLibraries) ''
substitute '${./llvm-outputs.patch}' ./llvm-outputs.patch --subst-var lib substitute '${./llvm-outputs.patch}' ./llvm-outputs.patch --subst-var lib
patch -p1 < ./llvm-outputs.patch patch -p1 < ./llvm-outputs.patch
''
# Remove broken tests: (https://bugs.llvm.org//show_bug.cgi?id=31610)
+ ''
rm test/CodeGen/AMDGPU/invalid-opencl-version-metadata1.ll
rm test/CodeGen/AMDGPU/invalid-opencl-version-metadata2.ll
rm test/CodeGen/AMDGPU/invalid-opencl-version-metadata3.ll
rm test/CodeGen/AMDGPU/runtime-metadata.ll
''; '';
# hacky fix: created binaries need to be run before installation # hacky fix: created binaries need to be run before installation

View file

@ -10,7 +10,7 @@
stdenv.mkDerivation { stdenv.mkDerivation {
name = "openmp-${version}"; name = "openmp-${version}";
src = fetch "openmp" "09kf41zgv551fnv628kqhlwgqkd2bkiwii9gqi6q12djgdddhmfv"; src = fetch "openmp" "195dykamd39yhi5az7nqj3ksqhb3wq30l93jnfkxl0061qbknsgc";
nativeBuildInputs = [ cmake perl ]; nativeBuildInputs = [ cmake perl ];
buildInputs = [ llvm ]; buildInputs = [ llvm ];

View file

@ -59,7 +59,7 @@ let
srcs = [ rubySrc rubygemsSrc ]; srcs = [ rubySrc rubygemsSrc ];
sourceRoot = sourceRoot =
if useRailsExpress then if useRailsExpress then
"ruby-${tag}-src" rubySrc.name
else else
unpackdir rubySrc; unpackdir rubySrc;

View file

@ -26,6 +26,7 @@ in stdenv.mkDerivation rec {
# FIXME: might be nice to put different APIs in different outputs # FIXME: might be nice to put different APIs in different outputs
# (e.g. libaws-cpp-sdk-s3.so in output "s3"). # (e.g. libaws-cpp-sdk-s3.so in output "s3").
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
separateDebugInfo = stdenv.isLinux;
buildInputs = [ cmake curl ]; buildInputs = [ cmake curl ];

View file

@ -14,6 +14,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
outputs = [ "out" "dev" "doc" ]; outputs = [ "out" "dev" "doc" ];
separateDebugInfo = stdenv.isLinux;
configureFlags = configureFlags =
[ "--enable-cplusplus" ] [ "--enable-cplusplus" ]

View file

@ -68,7 +68,8 @@ stdenv.mkDerivation ({
++ lib.optionals stdenv.isi686 [ ++ lib.optionals stdenv.isi686 [
./fix-i686-memchr.patch ./fix-i686-memchr.patch
./i686-fix-vectorized-strcspn.patch ./i686-fix-vectorized-strcspn.patch
]; ]
++ lib.optional stdenv.isx86_64 ./fix-x64-abi.patch;
postPatch = postPatch =
# Needed for glibc to build with the gnumake 3.82 # Needed for glibc to build with the gnumake 3.82

View file

@ -0,0 +1,35 @@
From 3288c6da64add3b4561b8c10fff522027caea01c Mon Sep 17 00:00:00 2001
From: Nicholas Miell <nmiell@gmail.com>
Date: Sat, 17 Jun 2017 18:21:07 -0700
Subject: [PATCH] Align the stack on entry to __tls_get_addr()
Old versions of gcc (4 & 5) didn't align the stack according to the
AMD64 psABI when calling __tls_get_addr(). Apparently new versions of
gcc (7) got much more aggressive about vectorizing and generating MOVAPS
instructions, which means old binaries built with the buggy versions of
gcc are much more likely to crash when using versions of glibc built
using gcc 7.
For example, a large number of Linux games built using the Unity game
engine and available for purchase on Steam.
---
elf/dl-tls.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 5aba33b3fa..3f3cb917de 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -827,6 +827,10 @@ rtld_hidden_proto (__tls_get_addr)
rtld_hidden_def (__tls_get_addr)
#endif
+#ifdef __x86_64__
+/* Old versions of gcc didn't align the stack. */
+__attribute__((force_align_arg_pointer))
+#endif
/* The generic dynamic and local dynamic model cannot be used in
statically linked applications. */
void *
--
2.13.0

View file

@ -1,11 +1,11 @@
{ callPackage, fetchurl, ... } @ args: { callPackage, fetchurl, ... } @ args:
callPackage ./generic.nix (args // rec { callPackage ./generic.nix (args // rec {
version = "3.5.13"; version = "3.5.14";
src = fetchurl { src = fetchurl {
url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-${version}.tar.xz"; url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-${version}.tar.xz";
sha256 = "15ihq6p0hnnhs8cnjrkj40dmlcaa1jjg8xg0g2ydbnlqs454ixbr"; sha256 = "1nhv0mf3apz65ljh335l8xds7wpn08ywljkrvws08apljbn2v8aa";
}; };
# Skip two tests introduced in 3.5.11. Probable reasons of failure: # Skip two tests introduced in 3.5.11. Probable reasons of failure:

View file

@ -9,6 +9,7 @@ stdenv.mkDerivation rec {
}; };
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
separateDebugInfo = stdenv.isLinux;
enableParallelBuilding = true; enableParallelBuilding = true;

View file

@ -46,9 +46,6 @@ stdenv.mkDerivation rec {
buildInputs = lib.optional (mouseSupport && stdenv.isLinux) gpm; buildInputs = lib.optional (mouseSupport && stdenv.isLinux) gpm;
preConfigure = '' preConfigure = ''
# These paths end up in the default lookup chain.
export TERMINFO_DIRS=/etc/terminfo
export PKG_CONFIG_LIBDIR="$dev/lib/pkgconfig" export PKG_CONFIG_LIBDIR="$dev/lib/pkgconfig"
mkdir -p "$PKG_CONFIG_LIBDIR" mkdir -p "$PKG_CONFIG_LIBDIR"
configureFlagsArray+=( configureFlagsArray+=(

View file

@ -29,6 +29,7 @@ let
outputs = [ "bin" "dev" "out" "man" ]; outputs = [ "bin" "dev" "out" "man" ];
setOutputFlags = false; setOutputFlags = false;
separateDebugInfo = stdenv.isLinux;
nativeBuildInputs = [ perl ]; nativeBuildInputs = [ perl ];
buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders; buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders;

View file

@ -11,6 +11,7 @@ stdenv.mkDerivation {
}; };
outputs = [ "bin" "dev" "out" ]; outputs = [ "bin" "dev" "out" ];
separateDebugInfo = stdenv.isLinux;
buildInputs = lib.optionals interactive [ readline ncurses ]; buildInputs = lib.optionals interactive [ readline ncurses ];

View file

@ -6,7 +6,9 @@
, stdenv , stdenv
, coreutils , coreutils
, gnugrep , gnugrep
, hostPlatform, targetPlatform , buildPackages
, hostPlatform
, targetPlatform
}: }:
/* As of this writing, known-good prefix/arch/simulator triples: /* As of this writing, known-good prefix/arch/simulator triples:
@ -29,7 +31,7 @@ let
sdk = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhone${sdkType}.platform/Developer/SDKs/iPhone${sdkType}${sdkVer}.sdk"; sdk = "/Applications/Xcode.app/Contents/Developer/Platforms/iPhone${sdkType}.platform/Developer/SDKs/iPhone${sdkType}${sdkVer}.sdk";
in (import ../../../build-support/cc-wrapper { in (import ../../../build-support/cc-wrapper {
inherit stdenv coreutils gnugrep runCommand; inherit stdenv coreutils gnugrep runCommand buildPackages;
nativeTools = false; nativeTools = false;
nativeLibc = false; nativeLibc = false;
inherit binutils; inherit binutils;

View file

@ -10,7 +10,7 @@ let
sha256 = "1vmbrw686f41n6xfjphfshn96vl07ynvnsyjdw9yfn9bfnldcjcq"; sha256 = "1vmbrw686f41n6xfjphfshn96vl07ynvnsyjdw9yfn9bfnldcjcq";
}; };
srcRoot = "pfixtools-${pfixtoolsSrc.rev}-src"; srcRoot = pfixtoolsSrc.name;
libCommonSrc = fetchFromGitHub { libCommonSrc = fetchFromGitHub {
owner = "Fruneau"; owner = "Fruneau";

View file

@ -54,14 +54,17 @@ in rec {
__sandboxProfile = binShClosure + libSystemProfile; __sandboxProfile = binShClosure + libSystemProfile;
}; };
stageFun = step: last: {shell ? "${bootstrapTools}/bin/sh", stageFun = step: last: {shell ? "${bootstrapTools}/bin/bash",
overrides ? (self: super: {}), overrides ? (self: super: {}),
extraPreHook ? "", extraPreHook ? "",
extraBuildInputs, extraBuildInputs,
allowedRequisites ? null}: allowedRequisites ? null}:
let let
thisStdenv = import ../generic { thisStdenv = import ../generic {
inherit config shell extraBuildInputs allowedRequisites; inherit config shell extraBuildInputs;
allowedRequisites = if allowedRequisites == null then null else allowedRequisites ++ [
thisStdenv.cc.expand-response-params
];
name = "stdenv-darwin-boot-${toString step}"; name = "stdenv-darwin-boot-${toString step}";
@ -77,12 +80,17 @@ in rec {
nativeTools = true; nativeTools = true;
nativePrefix = bootstrapTools; nativePrefix = bootstrapTools;
nativeLibc = false; nativeLibc = false;
buildPackages = lib.optionalAttrs (last ? stdenv) {
inherit (last) stdenv;
};
hostPlatform = localSystem;
targetPlatform = localSystem;
libc = last.pkgs.darwin.Libsystem; libc = last.pkgs.darwin.Libsystem;
isClang = true; isClang = true;
cc = { name = "clang-9.9.9"; outPath = bootstrapTools; }; cc = { name = "clang-9.9.9"; outPath = bootstrapTools; };
}; };
preHook = stage0.stdenv.lib.optionalString (shell == "${bootstrapTools}/bin/sh") '' preHook = stage0.stdenv.lib.optionalString (shell == "${bootstrapTools}/bin/bash") ''
# Don't patch #!/interpreter because it leads to retained # Don't patch #!/interpreter because it leads to retained
# dependencies on the bootstrapTools in the final stdenv. # dependencies on the bootstrapTools in the final stdenv.
dontPatchShebangs=1 dontPatchShebangs=1
@ -294,6 +302,11 @@ in rec {
inherit shell; inherit shell;
nativeTools = false; nativeTools = false;
nativeLibc = false; nativeLibc = false;
buildPackages = {
inherit (prevStage) stdenv;
};
hostPlatform = localSystem;
targetPlatform = localSystem;
inherit (pkgs) coreutils binutils gnugrep; inherit (pkgs) coreutils binutils gnugrep;
inherit (pkgs.darwin) dyld; inherit (pkgs.darwin) dyld;
cc = pkgs.llvmPackages.clang-unwrapped; cc = pkgs.llvmPackages.clang-unwrapped;
@ -314,6 +327,7 @@ in rec {
gzip ncurses.out ncurses.dev ncurses.man gnused bash gawk gzip ncurses.out ncurses.dev ncurses.man gnused bash gawk
gnugrep llvmPackages.clang-unwrapped patch pcre.out binutils-raw.out gnugrep llvmPackages.clang-unwrapped patch pcre.out binutils-raw.out
binutils-raw.dev binutils gettext binutils-raw.dev binutils gettext
cc.expand-response-params
]) ++ (with pkgs.darwin; [ ]) ++ (with pkgs.darwin; [
dyld Libsystem CF cctools ICU libiconv locale dyld Libsystem CF cctools ICU libiconv locale
]); ]);

View file

@ -76,6 +76,11 @@ let
else lib.makeOverridable (import ../../build-support/cc-wrapper) { else lib.makeOverridable (import ../../build-support/cc-wrapper) {
nativeTools = false; nativeTools = false;
nativeLibc = false; nativeLibc = false;
buildPackages = lib.optionalAttrs (prevStage ? stdenv) {
inherit (prevStage) stdenv;
};
hostPlatform = localSystem;
targetPlatform = localSystem;
cc = prevStage.gcc-unwrapped; cc = prevStage.gcc-unwrapped;
isGNU = true; isGNU = true;
libc = prevStage.glibc; libc = prevStage.glibc;
@ -236,6 +241,11 @@ in
nativeTools = false; nativeTools = false;
nativeLibc = false; nativeLibc = false;
isGNU = true; isGNU = true;
buildPackages = {
inherit (prevStage) stdenv;
};
hostPlatform = localSystem;
targetPlatform = localSystem;
cc = prevStage.gcc-unwrapped; cc = prevStage.gcc-unwrapped;
libc = self.glibc; libc = self.glibc;
inherit (self) stdenv binutils coreutils gnugrep; inherit (self) stdenv binutils coreutils gnugrep;

View file

@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
}; };
outputs = [ "bin" "dev" "out" "man" "devdoc" ]; outputs = [ "bin" "dev" "out" "man" "devdoc" ];
separateDebugInfo = stdenv.isLinux;
enableParallelBuilding = true; enableParallelBuilding = true;

View file

@ -8,7 +8,7 @@ let
sha256 = "1cxxzhm36civ6vjdgrk7mfmlzkih44kdii6l2xgy4r434s8rzcpn"; sha256 = "1cxxzhm36civ6vjdgrk7mfmlzkih44kdii6l2xgy4r434s8rzcpn";
}; };
srcRoot = "eMail-${eMailSrc.rev}-src"; srcRoot = eMailSrc.name;
dlibSrc = fetchFromGitHub { dlibSrc = fetchFromGitHub {
owner = "deanproxy"; owner = "deanproxy";

View file

@ -57,8 +57,11 @@ stdenv.mkDerivation rec {
# Remove example output with (random?) colors and creation date # Remove example output with (random?) colors and creation date
# to avoid non-determinism in the output. # to avoid non-determinism in the output.
postInstall = '' postInstall = ''
rm $doc/share/doc/groff/examples/hdtbl/*color*ps rm "$doc"/share/doc/groff/examples/hdtbl/*color*ps
find $doc/share/doc/groff/ -type f -print0 | xargs -0 sed -i -e 's/%%CreationDate: .*//' find "$doc"/share/doc/groff/ -type f -print0 | xargs -0 sed -i -e 's/%%CreationDate: .*//'
for f in 'man.local' 'mdoc.local'; do
cat '${./site.tmac}' >>"$out/share/groff/site-tmac/$f"
done
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View file

@ -0,0 +1,16 @@
.
.if n \{\
. \" Character translations for non-keyboard
. \" characters - to make them searchable
. if '\*[.T]'utf8' \{\
. char \- \N'45'
. char - \N'45'
. char ' \N'39'
. char \' \N'39'
. \}
.
. \" Shut off SGR by default (groff colors)
. \" Require GROFF_SGR envvar defined to turn it on
. if '\V[GROFF_SGR]'' \
. output x X tty: sgr 0
.\}

View file

@ -185,8 +185,10 @@ with pkgs;
fetchzip = callPackage ../build-support/fetchzip { }; fetchzip = callPackage ../build-support/fetchzip { };
gitRepoToName = callPackage ../build-support/fetchgit/gitrepotoname.nix { };
fetchFromGitHub = { fetchFromGitHub = {
owner, repo, rev, name ? "${repo}-${rev}-src", owner, repo, rev, name ? gitRepoToName repo rev,
fetchSubmodules ? false, private ? false, fetchSubmodules ? false, private ? false,
githubBase ? "github.com", varPrefix ? null, githubBase ? "github.com", varPrefix ? null,
... # For hash agility ... # For hash agility
@ -223,7 +225,7 @@ with pkgs;
} // passthruAttrs) // { inherit rev; }; } // passthruAttrs) // { inherit rev; };
fetchFromBitbucket = { fetchFromBitbucket = {
owner, repo, rev, name ? "${repo}-${rev}-src", owner, repo, rev, name ? gitRepoToName repo rev,
... # For hash agility ... # For hash agility
}@args: fetchzip ({ }@args: fetchzip ({
inherit name; inherit name;
@ -234,7 +236,7 @@ with pkgs;
# cgit example, snapshot support is optional in cgit # cgit example, snapshot support is optional in cgit
fetchFromSavannah = { fetchFromSavannah = {
repo, rev, name ? "${repo}-${rev}-src", repo, rev, name ? gitRepoToName repo rev,
... # For hash agility ... # For hash agility
}@args: fetchzip ({ }@args: fetchzip ({
inherit name; inherit name;
@ -244,7 +246,7 @@ with pkgs;
# gitlab example # gitlab example
fetchFromGitLab = { fetchFromGitLab = {
owner, repo, rev, name ? "${repo}-${rev}-src", owner, repo, rev, name ? gitRepoToName repo rev,
... # For hash agility ... # For hash agility
}@args: fetchzip ({ }@args: fetchzip ({
inherit name; inherit name;
@ -254,7 +256,7 @@ with pkgs;
# gitweb example, snapshot support is optional in gitweb # gitweb example, snapshot support is optional in gitweb
fetchFromRepoOrCz = { fetchFromRepoOrCz = {
repo, rev, name ? "${repo}-${rev}-src", repo, rev, name ? gitRepoToName repo rev,
... # For hash agility ... # For hash agility
}@args: fetchzip ({ }@args: fetchzip ({
inherit name; inherit name;