diff options
author | Vladimír Čunát <v@cunat.cz> | 2020-07-18 17:50:23 +0200 |
---|---|---|
committer | Vladimír Čunát <v@cunat.cz> | 2020-07-18 17:50:23 +0200 |
commit | 4244b7391785416bbd866f4c6c980e43e7255774 (patch) | |
tree | 22281cb567a0f6320684e136c1acb250d0ba059c /pkgs/build-support | |
parent | 5b14758d314b4644fb1b1235a94711d596cc5bcb (diff) | |
parent | 41a323711aca60e2a47f7e9f1c917853bdc0ba54 (diff) |
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/build-bazel-package/default.nix | 12 | ||||
-rw-r--r-- | pkgs/build-support/docker/default.nix | 12 | ||||
-rw-r--r-- | pkgs/build-support/docker/examples.nix | 18 |
3 files changed, 40 insertions, 2 deletions
diff --git a/pkgs/build-support/build-bazel-package/default.nix b/pkgs/build-support/build-bazel-package/default.nix index 31c0c8e92e569..bbcbc4e2e11df 100644 --- a/pkgs/build-support/build-bazel-package/default.nix +++ b/pkgs/build-support/build-bazel-package/default.nix @@ -30,6 +30,13 @@ args@{ , removeRulesCC ? true , removeLocalConfigCc ? true , removeLocal ? true + +# Use build --nobuild instead of fetch. This allows fetching the dependencies +# required for the build as configured, rather than fetching all the dependencies +# which may not work in some situations (e.g. Java code which ends up relying on +# Debian-specific /usr/share/java paths, but doesn't in the configured build). +, fetchConfigured ? false + , ... }: @@ -79,7 +86,7 @@ in stdenv.mkDerivation (fBuildAttrs // { bazel \ --output_base="$bazelOut" \ --output_user_root="$bazelUserRoot" \ - fetch \ + ${if fetchConfigured then "build --nobuild" else "fetch"} \ --loading_phase_threads=1 \ $bazelFlags \ $bazelFetchFlags \ @@ -112,7 +119,8 @@ in stdenv.mkDerivation (fBuildAttrs // { # platforms -> NIX_BUILD_TOP/tmp/install/35282f5123611afa742331368e9ae529/_embedded_binaries/platforms find $bazelOut/external -maxdepth 1 -type l | while read symlink; do name="$(basename "$symlink")" - rm "$symlink" "$bazelOut/external/@$name.marker" + rm "$symlink" + test -f "$bazelOut/external/@$name.marker" && rm "$bazelOut/external/@$name.marker" done # Patching symlinks to remove build directory reference diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index 7ff325382a6b5..bf815af6f7c02 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -442,6 +442,7 @@ rec { in runCommand "${name}.tar.gz" { inherit (stream) imageName; + passthru = { inherit (stream) imageTag; }; buildInputs = [ pigz ]; } "${stream} | pigz -nT > $out"; @@ -517,6 +518,11 @@ rec { layerClosure = writeReferencesToFile layer; passthru.buildArgs = args; passthru.layer = layer; + passthru.imageTag = + if tag != null + then lib.toLower tag + else + lib.head (lib.strings.splitString "-" (baseNameOf result.outPath)); # Docker can't be made to run darwin binaries meta.badPlatforms = lib.platforms.darwin; } '' @@ -737,6 +743,11 @@ rec { conf = runCommand "${name}-conf.json" { inherit maxLayers created; imageName = lib.toLower name; + passthru.imageTag = + if tag != null + then tag + else + lib.head (lib.strings.splitString "-" (baseNameOf conf.outPath)); paths = referencesByPopularity overallClosure; buildInputs = [ jq ]; } '' @@ -792,6 +803,7 @@ rec { ''; result = runCommand "stream-${name}" { inherit (conf) imageName; + passthru = { inherit (conf) imageTag; }; buildInputs = [ makeWrapper ]; } '' makeWrapper ${streamScript} $out --add-flags ${conf} diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix index 81dae9b612411..0d907c2d64bf2 100644 --- a/pkgs/build-support/docker/examples.nix +++ b/pkgs/build-support/docker/examples.nix @@ -364,4 +364,22 @@ rec { created = "now"; }; + # buildImage without explicit tag + bashNoTag = pkgs.dockerTools.buildImage { + name = "bash-no-tag"; + contents = pkgs.bashInteractive; + }; + + # buildLayeredImage without explicit tag + bashNoTagLayered = pkgs.dockerTools.buildLayeredImage { + name = "bash-no-tag-layered"; + contents = pkgs.bashInteractive; + }; + + # buildImage without explicit tag + bashNoTagStreamLayered = pkgs.dockerTools.streamLayeredImage { + name = "bash-no-tag-stream-layered"; + contents = pkgs.bashInteractive; + }; + } |