~xubuntu-dev/livecd-rootfs/xubuntu-base

« back to all changes in this revision

Viewing changes to live-build/functions

  • Committer: Sean Davis
  • Date: 2018-05-31 10:32:43 UTC
  • mfrom: (1265.2.409 livecd-rootfs)
  • Revision ID: smd.seandavis@gmail.com-20180531103243-w1p1zof1213dxuz3
Merge lp:livecd-rootfs rev 1674

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# vi: ts=4 expandtab syntax=sh
2
2
 
3
 
imagesize=${IMAGE_SIZE:-$((2252*1024**2))}  # 2.2G (the current size we ship)
 
3
#imagesize=${IMAGE_SIZE:-$((2252*1024**2))}  # 2.2G (the current size we ship)
 
4
imagesize=${IMAGE_SIZE:-2361393152}  # 2.2G (the current size we ship)
4
5
fs_label="${FS_LABEL:-rootfs}"
5
6
 
6
7
rootfs_dev_mapper=
295
296
divert_grub() {
296
297
        CHROOT_ROOT="$1"
297
298
 
298
 
        chroot "$CHROOT_ROOT" dpkg-divert --local \
299
 
                --rename /usr/sbin/grub-probe
300
 
        chroot "$CHROOT_ROOT" touch /usr/sbin/grub-probe
301
 
        chroot "$CHROOT_ROOT" chmod +x /usr/sbin/grub-probe
 
299
        # Don't divert all of grub-probe here; just the scripts we don't want
 
300
        # running. Otherwise, you may be missing part-uuids for the search
 
301
        # command, for example. ~cyphermox
302
302
 
303
303
        chroot "$CHROOT_ROOT" dpkg-divert --local \
304
304
                --divert /etc/grub.d/30_os-prober.dpkg-divert \
317
317
undivert_grub() {
318
318
        CHROOT_ROOT="$1"
319
319
 
320
 
        chroot "$CHROOT_ROOT" rm /usr/sbin/grub-probe
321
 
        chroot "$CHROOT_ROOT" dpkg-divert --remove --local \
322
 
                --rename /usr/sbin/grub-probe
323
 
 
324
320
        chroot "$CHROOT_ROOT" dpkg-divert --remove --local \
325
321
                --divert /etc/grub.d/30_os-prober.dpkg-divert \
326
322
                --rename /etc/grub.d/30_os-prober
360
356
        esac
361
357
        mv "$CHROOT"/boot/initrd.img-* $DESTDIR
362
358
}
 
359
 
 
360
release_ver() {
 
361
    # Return the release version number
 
362
    distro-info --series="$LB_DISTRIBUTION" -r | awk '{ print $1 }'
 
363
}
 
364
 
 
365
_snap_preseed() {
 
366
    # Download the snap/assertion and add to the preseed
 
367
    local CHROOT_ROOT=$1
 
368
    local SNAP=$2
 
369
    local SNAP_NAME=${SNAP%/*}
 
370
    local CHANNEL=${3:?Snap channel must be specified}
 
371
 
 
372
    local seed_dir="$CHROOT_ROOT/var/lib/snapd/seed"
 
373
    local snaps_dir="$seed_dir/snaps"
 
374
    local seed_yaml="$seed_dir/seed.yaml"
 
375
    local assertions_dir="$seed_dir/assertions"
 
376
 
 
377
    # Download the snap & assertion
 
378
    local snap_download_failed=0
 
379
    chroot $CHROOT_ROOT sh -c "
 
380
        set -x;
 
381
        cd /var/lib/snapd/seed;
 
382
        SNAPPY_STORE_NO_CDN=1 snap download \
 
383
            --channel=$CHANNEL \"$SNAP_NAME\"" || snap_download_failed=1
 
384
    if [ $snap_download_failed = 1 ] ; then
 
385
        echo "If the channel ($CHANNEL) includes '*/ubuntu-##.##' track per "
 
386
        echo "Ubuntu policy (ex. stable/ubuntu-18.04) the publisher will need "
 
387
        echo "to temporarily create the channel/track to allow fallback during"
 
388
        echo "download (ex. stable/ubuntu-18.04 falls back to stable if the"
 
389
        echo "prior had been created in the past)."
 
390
        exit 1
 
391
    fi
 
392
 
 
393
    mv -v $seed_dir/*.assert $assertions_dir
 
394
    mv -v $seed_dir/*.snap $snaps_dir
 
395
 
 
396
    # Add the snap to the seed.yaml
 
397
    ! [ -e $seed_yaml ] && echo "snaps:" > $seed_yaml
 
398
    cat <<EOF >> $seed_yaml
 
399
  -
 
400
    name: ${SNAP_NAME}
 
401
    channel: ${CHANNEL}
 
402
EOF
 
403
 
 
404
    case ${SNAP} in */classic) echo "    classic: true" >> $seed_yaml;; esac
 
405
 
 
406
    echo -n "    file: " >> $seed_yaml
 
407
    (cd $snaps_dir; ls -1 ${SNAP_NAME}_*.snap) >> $seed_yaml
 
408
}
 
409
 
 
410
snap_prepare_assertions() {
 
411
    # Configure basic snapd assertions
 
412
    local CHROOT_ROOT=$1
 
413
    # A colon-separated string of brand:model to be used for the image's model
 
414
    # assertion
 
415
    local CUSTOM_BRAND_MODEL=$2
 
416
 
 
417
    local seed_dir="$CHROOT_ROOT/var/lib/snapd/seed"
 
418
    local snaps_dir="$seed_dir/snaps"
 
419
    local assertions_dir="$seed_dir/assertions"
 
420
    local model_assertion="$assertions_dir/model"
 
421
    local account_key_assertion="$assertions_dir/account-key"
 
422
    local account_assertion="$assertions_dir/account"
 
423
 
 
424
    mkdir -p "$assertions_dir"
 
425
    mkdir -p "$snaps_dir"
 
426
 
 
427
    local brand="$(echo $CUSTOM_BRAND_MODEL | cut -d: -f 1)"
 
428
    local model="$(echo $CUSTOM_BRAND_MODEL | cut -d: -f 2)"
 
429
 
 
430
    if ! [ -e "$model_assertion" ] ; then
 
431
        snap known --remote model series=16 \
 
432
            model=$model brand-id=$brand \
 
433
            > "$model_assertion"
 
434
    fi
 
435
 
 
436
    if ! [ -e "$account_key_assertion" ] ; then
 
437
        local account_key=$(sed -n -e's/sign-key-sha3-384: //p' \
 
438
            < "$model_assertion")
 
439
        snap known --remote account-key \
 
440
            public-key-sha3-384="$account_key" \
 
441
            > "$account_key_assertion"
 
442
    fi
 
443
 
 
444
 
 
445
    if ! [ -e "$account_assertion" ] ; then
 
446
        local account=$(sed -n -e's/account-id: //p' < "$account_key_assertion")
 
447
        snap known --remote account account-id=$account \
 
448
            > "$account_assertion"
 
449
    fi
 
450
}
 
451
 
 
452
snap_prepare() {
 
453
    # Configure basic snapd assertions and pre-seeds the 'core' snap
 
454
    local CHROOT_ROOT=$1
 
455
    # Optional. If set, should be a colon-separated string of brand:model to be
 
456
    # used for the image's model assertion
 
457
    local CUSTOM_BRAND_MODEL=${2:-generic:generic-classic}
 
458
 
 
459
    local seed_dir="$CHROOT_ROOT/var/lib/snapd/seed"
 
460
    local snaps_dir="$seed_dir/snaps"
 
461
 
 
462
    snap_prepare_assertions "$CHROOT_ROOT" "$CUSTOM_BRAND_MODEL"
 
463
 
 
464
    # Download the core snap
 
465
    if ! [ -f $snaps_dir/core_[0-9]*.snap ] ; then
 
466
        _snap_preseed $CHROOT_ROOT core stable
 
467
    fi
 
468
}
 
469
 
 
470
snap_preseed() {
 
471
    # Preseed a snap in the image
 
472
    local CHROOT_ROOT=$1
 
473
    local SNAP=$2
 
474
    # Per Ubuntu policy, all seeded snaps (with the exception of the core
 
475
    # snap) must pull from stable/ubuntu-$(release_ver) as their channel.
 
476
    local CHANNEL=${3:-"stable/ubuntu-$(release_ver)"}
 
477
 
 
478
    snap_prepare $CHROOT_ROOT
 
479
    _snap_preseed $CHROOT_ROOT $SNAP $CHANNEL
 
480
}