diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2017-07-28 16:08:30 +0200 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2017-07-28 16:08:30 +0200 |
commit | b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed (patch) | |
tree | ff5748c1ec96643e47dcdeaa5def1aa950a913ce /pkgs/build-support | |
parent | 9be40841ea4251a09ae7a1023abc1b6d191f61bb (diff) | |
parent | 20d2bfa4ff247a49f50fc0cf4d509fbd48723290 (diff) | |
download | nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.tar nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.tar.gz nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.tar.bz2 nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.tar.lz nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.tar.xz nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.tar.zst nixlib-b116fa5ff2a832b24ffbc3ed3fa703ca6bf904ed.zip |
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 19 | ||||
-rw-r--r-- | pkgs/build-support/vm/default.nix | 15 |
2 files changed, 25 insertions, 9 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index 0d02897da74a..b6e342cf9b5e 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -6,6 +6,7 @@ findutils, go, jshon, + jq, lib, pkgs, pigz, @@ -408,7 +409,7 @@ rec { contents runAsRoot diskSize extraCommands; }; result = runCommand "docker-image-${baseName}.tar.gz" { - buildInputs = [ jshon pigz coreutils findutils ]; + buildInputs = [ jshon pigz coreutils findutils jq ]; # Image name and tag must be lowercase imageName = lib.toLower name; imageTag = lib.toLower tag; @@ -435,6 +436,9 @@ rec { if [[ -n "$fromImage" ]]; then echo "Unpacking base image..." tar -C image -xpf "$fromImage" + # Do not import the base image configuration and manifest + rm -f image/*.json + rm -f image/manifest.json if [[ -z "$fromImageName" ]]; then fromImageName=$(jshon -k < image/repositories|head -n1) @@ -493,6 +497,17 @@ rec { # Use the temp folder we've been working on to create a new image. mv temp image/$layerID + # Create image configuration file (used by registry v2) by using + # the configuration of the last layer + SHA_ARRAY=$(find ./ -name layer.tar | xargs sha256sum | cut -d" " -f1 | xargs -I{} echo -n '"sha256:{}" ' | sed 's/" "/","/g' | awk '{ print "["$1"]" }') + jq ". + {\"rootfs\": {\"diff_ids\": $SHA_ARRAY, \"type\": \"layers\"}}" image/$layerID/json > config.json + CONFIG_SHA=$(sha256sum config.json | cut -d ' ' -f1) + mv config.json image/$CONFIG_SHA.json + + # Create image manifest + LAYER_PATHS=$(find image/ -name layer.tar -printf '"%P" ' | sed 's/" "/","/g') + jq -n "[{\"Config\":\"$CONFIG_SHA.json\",\"RepoTags\":[\"$imageName:$imageTag\"],\"Layers\":[$LAYER_PATHS]}]" > image/manifest.json + # Store the json under the name image/repositories. jshon -n object \ -n object -s "$layerID" -i "$imageTag" \ @@ -502,7 +517,7 @@ rec { chmod -R a-w image echo "Cooking the image..." - tar -C image --mtime="@$SOURCE_DATE_EPOCH" --owner=0 --group=0 -c . | pigz -nT > $out + tar -C image --mtime="@$SOURCE_DATE_EPOCH" --owner=0 --group=0 --xform s:'./':: -c . | pigz -nT > $out echo "Finished." ''; diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index d5cfc419fc72..d886e9a56fa4 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -750,6 +750,7 @@ rec { { name, fullName, size ? 4096, urlPrefix , packagesList ? "", packagesLists ? [packagesList] , packages, extraPackages ? [], postInstall ? "" + , extraDebs ? [] , QEMU_OPTS ? "", memSize ? 512 }: let @@ -760,7 +761,7 @@ rec { in (fillDiskWithDebs { inherit name fullName size postInstall QEMU_OPTS memSize; - debs = import expr {inherit fetchurl;}; + debs = import expr {inherit fetchurl;} ++ extraDebs; }) // {inherit expr;}; @@ -1954,22 +1955,22 @@ rec { }; debian8i386 = { - name = "debian-8.8-jessie-i386"; - fullName = "Debian 8.8 Jessie (i386)"; + name = "debian-8.9-jessie-i386"; + fullName = "Debian 8.9 Jessie (i386)"; packagesList = fetchurl { url = mirror://debian/dists/jessie/main/binary-i386/Packages.xz; - sha256 = "79dbf81e9698913c577333f47f5a56be78529fba265ec492880e8c369c478b58"; + sha256 = "3c78bdf3b693f2f37737c52d6a7718b3a545956f2a853da79f04a2d15541e811"; }; urlPrefix = mirror://debian; packages = commonDebianPackages; }; debian8x86_64 = { - name = "debian-8.8-jessie-amd64"; - fullName = "Debian 8.8 Jessie (amd64)"; + name = "debian-8.9-jessie-amd64"; + fullName = "Debian 8.9 Jessie (amd64)"; packagesList = fetchurl { url = mirror://debian/dists/jessie/main/binary-amd64/Packages.xz; - sha256 = "845fc80c9934d8c0f78ada6455c81c331a3359ef15c4c036b47e742fb1bb99c6"; + sha256 = "0605589ae7a63c690f37bd2567dc12e02a2eb279d9dc200a7310072ad3593e53"; }; urlPrefix = mirror://debian; packages = commonDebianPackages; |