From f8529c9038658ac5fba8b3025d28d8c0548f044f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20=27sil2100=27=20Zemczak?= Date: Tue, 30 Oct 2018 14:13:02 +0100 Subject: [PATCH] Add support for building classic images using makefile-based gadget trees. --- debian/control | 4 ++- live-build/auto/build | 26 +++++++++++++---- live-build/auto/config | 64 ++++++++++++++++++++++++++++-------------- 3 files changed, 66 insertions(+), 28 deletions(-) diff --git a/debian/control b/debian/control index 9d47c949..16cc8c4f 100644 --- a/debian/control +++ b/debian/control @@ -23,6 +23,7 @@ Depends: ${misc:Depends}, live-build (>= 3.0~a57-1ubuntu31~), lsb-release, lzma, + make, parted, procps, python-minimal | python, @@ -32,7 +33,8 @@ Depends: ${misc:Depends}, rsync, snapd, squashfs-tools (>= 1:3.3-1), - sudo, + sudo + u-boot-tools [armhf arm64], ubuntu-image, vmdk-stream-converter [amd64 i386], xz-utils, diff --git a/live-build/auto/build b/live-build/auto/build index 35b2219d..2e5adc94 100755 --- a/live-build/auto/build +++ b/live-build/auto/build @@ -23,12 +23,26 @@ PREFIX="livecd.$PROJECT${SUBARCH:+-$SUBARCH}" if [ "${IMAGEFORMAT:-}" = "ubuntu-image" ]; then # Use ubuntu-image instead of live-build - CHANNEL="${CHANNEL:-edge}" - env SNAPPY_STORE_NO_CDN=1 \ - ubuntu-image -c "$CHANNEL" $UBUNTU_IMAGE_ARGS \ - -o "$PREFIX".img "$PREFIX".model-assertion - xz -0 -T4 "$PREFIX".img - mv seed.manifest "$PREFIX".manifest + if [ "$PROJECT" = "ubuntu-core"]; then + CHANNEL="${CHANNEL:-edge}" + env SNAPPY_STORE_NO_CDN=1 \ + ubuntu-image snap -c "$CHANNEL" $UBUNTU_IMAGE_ARGS \ + -o "$PREFIX".img "$PREFIX".model-assertion + xz -0 -T4 "$PREFIX".img + mv seed.manifest "$PREFIX".manifest + else + # First we need to build the gadget tree + ( + cd config/$PREFIX-gadget + make && make install + ) + ubuntu-image classic $UBUNTU_IMAGE_ARGS \ + -p $PROJECT -a $ARCH --subarch $SUBARCH \ + -o "$PREFIX".img config/$PREFIX-gadget/install + xz -0 -T4 "$PREFIX".img + mv filesystem.manifest "$PREFIX".manifest + fi + exit 0 fi diff --git a/live-build/auto/config b/live-build/auto/config index 46a7a5cf..d04c86e3 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -179,28 +179,50 @@ case $IMAGEFORMAT in exit 1 ;; esac - case $MODEL in - pc-amd64|pc-i386) - UBUNTU_IMAGE_ARGS="--image-size 3700M" ;; - *) - UBUNTU_IMAGE_ARGS="" ;; - esac - case $SUITE in - xenial) - # Ubuntu Core 16 - ;; - *) - # Ubuntu Core 18 - MODEL="ubuntu-core-18-${MODEL#pc-}" ;; - esac - echo "IMAGEFORMAT=$IMAGEFORMAT" >> config/common - echo "UBUNTU_IMAGE_ARGS=\"$UBUNTU_IMAGE_ARGS\"" >> config/common - # Store model assertion in top dir to get it picked up later as a build artifact - env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 model="$MODEL" brand-id=canonical > "$PREFIX".model-assertion - echo "Configured ubuntu-image for the following model assertion:" - cat "$PREFIX".model-assertion - echo "----------------------------------------------------------" + if [ $PROJECT = "ubuntu-core" ]; then + # snap-based core images + + case $SUITE in + xenial) + # Ubuntu Core 16 + ;; + *) + # Ubuntu Core 18 + MODEL="ubuntu-core-18-${MODEL#pc-}" ;; + esac + case $MODEL in + pc-amd64|pc-i386) + UBUNTU_IMAGE_ARGS="--image-size 3700M" ;; + *) + UBUNTU_IMAGE_ARGS="" ;; + esac + + echo "IMAGEFORMAT=$IMAGEFORMAT" >> config/common + echo "UBUNTU_IMAGE_ARGS=\"$UBUNTU_IMAGE_ARGS\"" >> config/common + # Store model assertion in top dir to get it picked up later as a build artifact + env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 model="$MODEL" brand-id=canonical > "$PREFIX".model-assertion + echo "Configured ubuntu-image for the following model assertion:" + cat "$PREFIX".model-assertion + echo "----------------------------------------------------------" + else + # classic images + + UBUNTU_IMAGE_ARGS="" + if [ "$PROPOSED" ]; then + UBUNTU_IMAGE_ARGS="$UBUNTU_IMAGE_ARGS --with-proposed" + fi + if [ "$EXTRA_PPAS" ]; then + UBUNTU_IMAGE_ARGS="$UBUNTU_IMAGE_ARGS --extra-ppas \"$EXTRA_PPAS\"" + fi + + git clone lp:~canonical-foundations/snap-$MODEL/+git/github-mirror -b classic config/$PREFIX-gadget + + echo "IMAGEFORMAT=$IMAGEFORMAT" >> config/common + echo "UBUNTU_IMAGE_ARGS=\"$UBUNTU_IMAGE_ARGS\"" >> config/common + + echo "Configured ubuntu-image for the following gadget model: $MODEL" + fi # Fake finished configuration for lb build mkdir -p .build touch .build/config