diff options
author | Robert Schütz <robert.schuetz@stud.uni-heidelberg.de> | 2018-04-10 09:13:36 +0200 |
---|---|---|
committer | Robert Schütz <robert.schuetz@stud.uni-heidelberg.de> | 2018-04-10 09:13:36 +0200 |
commit | 80fc5f2a24fc626218be6b9c24d3bf6ef86444fe (patch) | |
tree | 2fa67fa3181544f6bea4ee8a7f071461c55b4d92 /pkgs/build-support/docker/default.nix | |
parent | 0aa59a08d65461149552f68c638655ed2b474510 (diff) | |
parent | c4f555a505f7cb2e7453459a5c734682532645e4 (diff) | |
download | nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.tar nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.tar.gz nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.tar.bz2 nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.tar.lz nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.tar.xz nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.tar.zst nixpkgs-80fc5f2a24fc626218be6b9c24d3bf6ef86444fe.zip |
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/build-support/docker/default.nix')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index f531f1349c6..b8eda3d0967 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -249,6 +249,10 @@ rec { baseJson, # Files to add to the layer. contents ? null, + # When copying the contents into the image, preserve symlinks to + # directories (see `rsync -K`). Otherwise, transform those symlinks + # into directories. + keepContentsDirlinks ? false, # Additional commands to run on the layer before it is tar'd up. extraCommands ? "", uid ? 0, gid ? 0 }: @@ -262,7 +266,7 @@ rec { echo "Adding contents..." for item in $contents; do echo "Adding $item" - rsync -ak --chown=0:0 $item/ layer/ + rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/ done else echo "No contents to add to layer." @@ -303,6 +307,10 @@ rec { runAsRoot, # Files to add to the layer. If null, an empty layer will be created. contents ? null, + # When copying the contents into the image, preserve symlinks to + # directories (see `rsync -K`). Otherwise, transform those symlinks + # into directories. + keepContentsDirlinks ? false, # JSON containing configuration and metadata for this layer. baseJson, # Existing image onto which to append the new layer. @@ -327,7 +335,7 @@ rec { echo "Adding contents..." for item in ${toString contents}; do echo "Adding $item..." - rsync -ak --chown=0:0 $item/ layer/ + rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/ done chmod ug+w layer @@ -391,6 +399,10 @@ rec { fromImageTag ? null, # Files to put on the image (a nix store path or list of paths). contents ? null, + # When copying the contents into the image, preserve symlinks to + # directories (see `rsync -K`). Otherwise, transform those symlinks + # into directories. + keepContentsDirlinks ? false, # Docker config; e.g. what command to run on the container. config ? null, # Optional bash script to run on the files prior to fixturizing the layer. @@ -417,11 +429,12 @@ rec { if runAsRoot == null then mkPureLayer { name = baseName; - inherit baseJson contents extraCommands uid gid; + inherit baseJson contents keepContentsDirlinks extraCommands uid gid; } else mkRootLayer { name = baseName; inherit baseJson fromImage fromImageName fromImageTag - contents runAsRoot diskSize extraCommands; + contents keepContentsDirlinks runAsRoot diskSize + extraCommands; }; result = runCommand "docker-image-${baseName}.tar.gz" { buildInputs = [ jshon pigz coreutils findutils jq ]; |