diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2019-06-25 18:06:43 +0200 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2019-06-25 18:06:43 +0200 |
commit | 07d1d3ed68d914fae46f7c84f85733553ef4e0f8 (patch) | |
tree | eaec814170899dd3742ae24cb4a03e7578d12aa2 /pkgs/build-support | |
parent | 52829801b7e342521f471840169b4be50aed1471 (diff) | |
parent | 5b4b6b6c24e2756bf5d98eb03974637cd193c076 (diff) | |
download | nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.tar nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.tar.gz nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.tar.bz2 nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.tar.lz nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.tar.xz nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.tar.zst nixlib-07d1d3ed68d914fae46f7c84f85733553ef4e0f8.zip |
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 10 | ||||
-rwxr-xr-x | pkgs/build-support/fetchgit/nix-prefetch-git | 47 | ||||
-rw-r--r-- | pkgs/build-support/libredirect/libredirect.c | 13 | ||||
-rw-r--r-- | pkgs/build-support/mkshell/default.nix | 13 | ||||
-rw-r--r-- | pkgs/build-support/nix-prefetch-github/default.nix | 5 |
5 files changed, 60 insertions, 28 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index b0840192ecec..1004a7ce3f92 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -34,8 +34,10 @@ in stdenv.mkDerivation (fBuildAttrs // { # https://github.com/bazelbuild/bazel/blob/9323c57607d37f9c949b60e293b573584906da46/src/main/cpp/startup_options.cc#L123-L124 # # On macOS Bazel will use the system installed Xcode or CLT toolchain instead of the one in the PATH unless we pass BAZEL_USE_CPP_ONLY_TOOLCHAIN - # - BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 USER=homeless-shelter bazel --output_base="$bazelOut" --output_user_root="$bazelUserRoot" fetch $bazelFlags $bazelTarget + + # We disable multithreading for the fetching phase since it can lead to timeouts with many dependencies/threads: + # https://github.com/bazelbuild/bazel/issues/6502 + BAZEL_USE_CPP_ONLY_TOOLCHAIN=1 USER=homeless-shelter bazel --output_base="$bazelOut" --output_user_root="$bazelUserRoot" fetch --loading_phase_threads=1 $bazelFlags $bazelTarget runHook postBuild ''; @@ -59,7 +61,9 @@ in stdenv.mkDerivation (fBuildAttrs // { # Patching symlinks to remove build directory reference find $bazelOut/external -type l | while read symlink; do - ln -sf $(readlink "$symlink" | sed "s,$NIX_BUILD_TOP,NIX_BUILD_TOP,") "$symlink" + new_target="$(readlink "$symlink" | sed "s,$NIX_BUILD_TOP,NIX_BUILD_TOP,")" + rm "$symlink" + ln -sf "$new_target" "$symlink" done cp -r $bazelOut/external $out diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git index c681be8e4c35..b447911ab8d3 100755 --- a/pkgs/build-support/fetchgit/nix-prefetch-git +++ b/pkgs/build-support/fetchgit/nix-prefetch-git @@ -270,7 +270,7 @@ make_deterministic_repo(){ } -_clone_user_rev() { +clone_user_rev() { local dir="$1" local url="$2" local rev="${3:-HEAD}" @@ -307,19 +307,29 @@ _clone_user_rev() { fi } -clone_user_rev() { - if ! test -n "$QUIET"; then - _clone_user_rev "$@" - else - errfile="$(mktemp "${TMPDIR:-/tmp}/git-checkout-err-XXXXXXXX")" - # shellcheck disable=SC2064 - trap "rm -rf \"$errfile\"" EXIT - _clone_user_rev "$@" 2> "$errfile" || ( - status="$?" - cat "$errfile" >&2 - exit "$status" - ) +exit_handlers=() + +run_exit_handlers() { + exit_status=$? + for handler in "${exit_handlers[@]}"; do + eval "$handler $exit_status" + done +} + +trap run_exit_handlers EXIT + +quiet_exit_handler() { + exec 2>&3 3>&- + if [ $1 -ne 0 ]; then + cat "$errfile" >&2 fi + rm -f "$errfile" +} + +quiet_mode() { + errfile="$(mktemp "${TMPDIR:-/tmp}/git-checkout-err-XXXXXXXX")" + exit_handlers+=(quiet_exit_handler) + exec 3>&2 2>"$errfile" } json_escape() { @@ -362,6 +372,14 @@ EOF fi } +remove_tmpPath() { + rm -rf "$tmpPath" +} + +if test -n "$QUIET"; then + quiet_mode +fi + if test -z "$branchName"; then branchName=fetchgit fi @@ -390,8 +408,7 @@ else if test -z "$finalPath"; then tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/git-checkout-tmp-XXXXXXXX")" - # shellcheck disable=SC2064 - trap "rm -rf \"$tmpPath\"" EXIT + exit_handlers+=(remove_tmpPath) tmpFile="$tmpPath/$(url_to_name "$url" "$rev")" mkdir -p "$tmpFile" diff --git a/pkgs/build-support/libredirect/libredirect.c b/pkgs/build-support/libredirect/libredirect.c index 655399af58f5..8e8da00b02a2 100644 --- a/pkgs/build-support/libredirect/libredirect.c +++ b/pkgs/build-support/libredirect/libredirect.c @@ -160,6 +160,19 @@ int posix_spawn(pid_t * pid, const char * path, return posix_spawn_real(pid, rewrite(path, buf), file_actions, attrp, argv, envp); } +int posix_spawnp(pid_t * pid, const char * file, + const posix_spawn_file_actions_t * file_actions, + const posix_spawnattr_t * attrp, + char * const argv[], char * const envp[]) +{ + int (*posix_spawnp_real) (pid_t *, const char *, + const posix_spawn_file_actions_t *, + const posix_spawnattr_t *, + char * const argv[], char * const envp[]) = dlsym(RTLD_NEXT, "posix_spawnp"); + char buf[PATH_MAX]; + return posix_spawnp_real(pid, rewrite(file, buf), file_actions, attrp, argv, envp); +} + int execv(const char *path, char *const argv[]) { int (*execv_real) (const char *path, char *const argv[]) = dlsym(RTLD_NEXT, "execv"); diff --git a/pkgs/build-support/mkshell/default.nix b/pkgs/build-support/mkshell/default.nix index a98b4affacba..a70dc0390cb5 100644 --- a/pkgs/build-support/mkshell/default.nix +++ b/pkgs/build-support/mkshell/default.nix @@ -11,13 +11,8 @@ ... }@attrs: let - mergeInputs = name: - let - op = item: sum: sum ++ item."${name}" or []; - nul = []; - list = [attrs] ++ inputsFrom; - in - lib.foldr op nul list; + mergeInputs = name: lib.concatLists (lib.catAttrs name + ([attrs] ++ inputsFrom)); rest = builtins.removeAttrs attrs [ "inputsFrom" @@ -25,6 +20,7 @@ let "nativeBuildInputs" "propagatedBuildInputs" "propagatedNativeBuildInputs" + "shellHook" ]; in @@ -37,6 +33,9 @@ stdenv.mkDerivation ({ propagatedBuildInputs = mergeInputs "propagatedBuildInputs"; propagatedNativeBuildInputs = mergeInputs "propagatedNativeBuildInputs"; + shellHook = lib.concatStringsSep "\n" (lib.catAttrs "shellHook" + (lib.reverseList inputsFrom ++ [attrs])); + nobuildPhase = '' echo echo "This derivation is not meant to be built, aborting"; diff --git a/pkgs/build-support/nix-prefetch-github/default.nix b/pkgs/build-support/nix-prefetch-github/default.nix index acc95eaf993f..3c5cbe2b4928 100644 --- a/pkgs/build-support/nix-prefetch-github/default.nix +++ b/pkgs/build-support/nix-prefetch-github/default.nix @@ -5,13 +5,13 @@ python3.pkgs.buildPythonApplication rec { pname = "nix-prefetch-github"; - version = "2.2"; + version = "2.3"; src = fetchFromGitHub { owner = "seppeljordan"; repo = "nix-prefetch-github"; rev = "v${version}"; - sha256 = "1m1d1fzacvwprfvhxih1hzr1m0y1jjxiznf8p8b3bi5a41yzvrrl"; + sha256 = "0b2hgfyxhlqq6lyi5cr98dz6if5kl6b3kq67f2lzfkalydywl1dh"; }; propagatedBuildInputs = with python3.pkgs; [ @@ -19,7 +19,6 @@ python3.pkgs.buildPythonApplication rec { click effect jinja2 - requests ]; meta = with stdenv.lib; { description = "Prefetch sources from github"; |