diff options
author | Frederik Rietdijk <fridh@fridh.nl> | 2019-08-01 09:44:06 +0200 |
---|---|---|
committer | Frederik Rietdijk <fridh@fridh.nl> | 2019-08-01 09:44:06 +0200 |
commit | 4ca8e53e1ddb2f2f1e5520be33654c33481faae0 (patch) | |
tree | 94896f54f338cc97a1e43adf3dcbdff15d5a512c /pkgs/build-support | |
parent | 59ac7e16347e2e841e24d3dd959b9fc5dab5fdc8 (diff) | |
parent | 55e4555b77ff7506579c1d4f5d9b562ca6e853b4 (diff) |
Merge staging-next into staging
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 17 | ||||
-rw-r--r-- | pkgs/build-support/docker/default.nix | 49 | ||||
-rw-r--r-- | pkgs/build-support/rust/default.nix | 9 |
3 files changed, 44 insertions, 31 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index 72725f9818c0d..32cec42160f88 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -4,7 +4,7 @@ , lib }: -args@{ name, bazelFlags ? [], bazelTarget, buildAttrs, fetchAttrs, ... }: +args@{ name, bazelFlags ? [], bazelBuildFlags ? [], bazelFetchFlags ? [], bazelTarget, buildAttrs, fetchAttrs, ... }: let fArgs = removeAttrs args [ "buildAttrs" "fetchAttrs" ]; @@ -12,11 +12,11 @@ let fFetchAttrs = fArgs // removeAttrs fetchAttrs [ "sha256" ]; in stdenv.mkDerivation (fBuildAttrs // { - inherit name bazelFlags bazelTarget; + inherit name bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget; deps = stdenv.mkDerivation (fFetchAttrs // { name = "${name}-deps"; - inherit bazelFlags bazelTarget; + inherit bazelFlags bazelBuildFlags bazelFetchFlags bazelTarget; nativeBuildInputs = fFetchAttrs.nativeBuildInputs or [] ++ [ bazel ]; @@ -49,6 +49,7 @@ in stdenv.mkDerivation (fBuildAttrs // { fetch \ --loading_phase_threads=1 \ $bazelFlags \ + $bazelFetchFlags \ $bazelTarget runHook postBuild @@ -60,13 +61,10 @@ in stdenv.mkDerivation (fBuildAttrs // { # Remove all built in external workspaces, Bazel will recreate them when building rm -rf $bazelOut/external/{bazel_tools,\@bazel_tools.marker} rm -rf $bazelOut/external/{embedded_jdk,\@embedded_jdk.marker} - rm -rf $bazelOut/external/{local_*,\@local_*} + rm -rf $bazelOut/external/{local_*,\@local_*.marker} - # Patching markers to make them deterministic - find $bazelOut/external -name '@*\.marker' -exec sed -i \ - -e 's, -\?[0-9][0-9]*$, 1,' \ - -e '/^ENV:TMP.*/d' \ - '{}' \; + # Clear markers + find $bazelOut/external -name '@*\.marker' -exec sh -c 'echo > {}' \; # Remove all vcs files rm -rf $(find $bazelOut/external -type d -name .git) @@ -152,6 +150,7 @@ in stdenv.mkDerivation (fBuildAttrs // { "''${host_linkopts[@]}" \ '' + '' $bazelFlags \ + $bazelBuildFlags \ $bazelTarget runHook postBuild diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index 72d0a61887e64..ae3d93ff3db39 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -1,37 +1,41 @@ { - symlinkJoin, + cacert, + callPackage, + closureInfo, coreutils, docker, e2fsprogs, findutils, go, - jshon, jq, + jshon, lib, - pkgs, - pigz, + moreutils, nix, - runCommand, + pigz, + referencesByPopularity, rsync, + runCommand, + runtimeShell, shadow, + skopeo, + stdenv, storeDir ? builtins.storeDir, + substituteAll, + symlinkJoin, utillinux, vmTools, writeReferencesToFile, - referencesByPopularity, writeScript, writeText, - closureInfo, - substituteAll, - runtimeShell }: # WARNING: this API is unstable and may be subject to backwards-incompatible changes in the future. rec { - examples = import ./examples.nix { - inherit pkgs buildImage pullImage shadowSetup buildImageWithNixDb; + examples = callPackage ./examples.nix { + inherit buildImage pullImage shadowSetup buildImageWithNixDb; }; pullImage = let @@ -57,13 +61,13 @@ rec { inherit imageDigest; imageName = finalImageName; imageTag = finalImageTag; - impureEnvVars = pkgs.stdenv.lib.fetchers.proxyImpureEnvVars; + impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars; outputHashMode = "flat"; outputHashAlgo = "sha256"; outputHash = sha256; - nativeBuildInputs = lib.singleton (pkgs.skopeo); - SSL_CERT_FILE = "${pkgs.cacert.out}/etc/ssl/certs/ca-bundle.crt"; + nativeBuildInputs = lib.singleton skopeo; + SSL_CERT_FILE = "${cacert.out}/etc/ssl/certs/ca-bundle.crt"; sourceURL = "docker://${imageName}@${imageDigest}"; destNameTag = "${finalImageName}:${finalImageTag}"; @@ -156,7 +160,8 @@ rec { postMount ? "", postUmount ? "" }: - vmTools.runInLinuxVM ( + let + result = vmTools.runInLinuxVM ( runCommand name { preVM = vmTools.createEmptyImage { size = diskSize; @@ -166,8 +171,6 @@ rec { nativeBuildInputs = [ utillinux e2fsprogs jshon rsync jq ]; } '' - rm -rf $out - mkdir disk mkfs /dev/${vmTools.hd} mount /dev/${vmTools.hd} disk @@ -250,6 +253,12 @@ rec { ${postUmount} ''); + in + runCommand name {} '' + mkdir -p $out + cd ${result} + cp layer.tar json VERSION $out + ''; exportImage = { name ? fromImage.name, fromImage, fromImageName ? null, fromImageTag ? null, diskSize ? 1024 }: runWithOverlay { @@ -489,7 +498,7 @@ rec { (cd layer; ${extraCommandsScript}) echo "Packing layer..." - mkdir $out + mkdir -p $out tar -C layer --hard-dereference --sort=name --mtime="@$SOURCE_DATE_EPOCH" -cf $out/layer.tar . # Compute the tar checksum and add it to the output json. @@ -670,7 +679,7 @@ rec { extraCommands; }; result = runCommand "docker-image-${baseName}.tar.gz" { - nativeBuildInputs = [ jshon pigz coreutils findutils jq ]; + nativeBuildInputs = [ jshon pigz coreutils findutils jq moreutils ]; # Image name and tag must be lowercase imageName = lib.toLower name; imageTag = if tag == null then "" else lib.toLower tag; @@ -784,7 +793,7 @@ rec { # originally this used `sed -i "1i$layerID" layer-list`, but # would fail if layer-list was completely empty. echo "$layerID/layer.tar" - ) | ${pkgs.moreutils}/bin/sponge layer-list + ) | sponge layer-list # Create image json and image manifest imageJson=$(cat ${baseJson} | jq ". + {\"rootfs\": {\"diff_ids\": [], \"type\": \"layers\"}}") diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix index 674adf873744a..bd18f108e4eb9 100644 --- a/pkgs/build-support/rust/default.nix +++ b/pkgs/build-support/rust/default.nix @@ -14,6 +14,7 @@ , cargoDepsHook ? "" , cargoBuildFlags ? [] , buildType ? "release" +, meta ? {} , cargoVendorDir ? null , ... } @ args: @@ -45,7 +46,6 @@ let ccForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"; cxxForHost="${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++"; releaseDir = "target/${stdenv.hostPlatform.config}/${buildType}"; - in stdenv.mkDerivation (args // { inherit cargoDeps; @@ -101,7 +101,7 @@ in stdenv.mkDerivation (args // { "CC_${stdenv.hostPlatform.config}"="${ccForHost}" \ "CXX_${stdenv.hostPlatform.config}"="${cxxForHost}" \ cargo build \ - --${buildType} \ + ${stdenv.lib.optionalString (buildType == "release") "--release"} \ --target ${stdenv.hostPlatform.config} \ --frozen ${concatStringsSep " " cargoBuildFlags} ) @@ -145,4 +145,9 @@ in stdenv.mkDerivation (args // { ''; passthru = { inherit cargoDeps; } // (args.passthru or {}); + + meta = { + # default to Rust's platforms + platforms = rustc.meta.platforms; + } // meta; }) |