forked from mirrors/nixpkgs
Merge branch 'staging' into master
This commit is contained in:
commit
980346592c
|
@ -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 ];
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
84
pkgs/build-support/cc-wrapper/expand-response-params.c
Normal file
84
pkgs/build-support/cc-wrapper/expand-response-params.c
Normal 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;
|
||||||
|
}
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 ? ""
|
||||||
|
|
14
pkgs/build-support/fetchgit/gitrepotoname.nix
Normal file
14
pkgs/build-support/fetchgit/gitrepotoname.nix
Normal 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}"
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 ];
|
||||||
|
|
|
@ -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 = ''
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 ];
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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 ];
|
||||||
|
|
||||||
|
|
|
@ -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" ]
|
||||||
|
|
|
@ -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
|
||||||
|
|
35
pkgs/development/libraries/glibc/fix-x64-abi.patch
Normal file
35
pkgs/development/libraries/glibc/fix-x64-abi.patch
Normal 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
|
|
@ -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:
|
||||||
|
|
|
@ -9,6 +9,7 @@ stdenv.mkDerivation rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = [ "out" "dev" ];
|
outputs = [ "out" "dev" ];
|
||||||
|
separateDebugInfo = stdenv.isLinux;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
|
|
@ -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+=(
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 ];
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
|
|
|
@ -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; {
|
||||||
|
|
16
pkgs/tools/text/groff/site.tmac
Normal file
16
pkgs/tools/text/groff/site.tmac
Normal 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
|
||||||
|
.\}
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue