diff --git a/elements/debian-minimal/package-installs.yaml b/elements/debian-minimal/package-installs.yaml index d86cad09..9e08e6a5 100644 --- a/elements/debian-minimal/package-installs.yaml +++ b/elements/debian-minimal/package-installs.yaml @@ -1,2 +1,6 @@ +linux-image-amd64: + arch: amd64 +linux-image-686: + arch: i386 systemd: systemd-sysv: diff --git a/elements/debian-minimal/pre-install.d/02-debian-apt-update b/elements/debian-minimal/root.d/75-debian-minimal-baseinstall similarity index 75% rename from elements/debian-minimal/pre-install.d/02-debian-apt-update rename to elements/debian-minimal/root.d/75-debian-minimal-baseinstall index bacb1129..f12774d1 100755 --- a/elements/debian-minimal/pre-install.d/02-debian-apt-update +++ b/elements/debian-minimal/root.d/75-debian-minimal-baseinstall @@ -15,10 +15,6 @@ # # See the License for the specific language governing permissions and # limitations under the License. -# -# The filename needs to be 02-...: because the install-package script -# is installed in the dpkg/pre-install/01-dpkg and that has to be executed -# first. if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then set -x @@ -34,20 +30,28 @@ set -o pipefail function apt_sources_write { local APT_SOURCES_CONF="$1" - mkdir -p /etc/apt/sources.list.d + sudo mkdir -p $TARGET_ROOT/etc/apt/sources.list.d echo "${APT_SOURCES_CONF}" \ | while read line; do local name=$(echo ${line} | cut -d ":" -f 1) local value=$(echo ${line} | cut -d ":" -f 2-) - echo "$value" >>/etc/apt/sources.list.d/${name}.list + echo "$value" | sudo tee $TARGET_ROOT/etc/apt/sources.list.d/${name}.list done } +sudo mount -t proc none $TARGET_ROOT/proc +sudo mount -t sysfs none $TARGET_ROOT/sys +trap "sudo umount $TARGET_ROOT/proc; sudo umount $TARGET_ROOT/sys" EXIT + +apt_get="sudo chroot $TARGET_ROOT /usr/bin/apt-get" + apt_sources_write "${DIB_APT_SOURCES_CONF}" # Need to update to retrieve the signed Release file -apt-get update +$apt_get update -apt-get clean -install-packages -u +$apt_get clean +$apt_get dist-upgrade -y + +$apt_get install -y busybox python sudo diff --git a/elements/debootstrap/root.d/08-debootstrap b/elements/debootstrap/root.d/08-debootstrap index 8af7a91e..36aa40ac 100755 --- a/elements/debootstrap/root.d/08-debootstrap +++ b/elements/debootstrap/root.d/08-debootstrap @@ -28,23 +28,9 @@ fi [ -n "$DIB_RELEASE" ] [ -n "$DIB_DISTRIBUTION_MIRROR" ] -if [ $DISTRO_NAME = 'ubuntu' ] ; then - KERNEL='generic' -else - case $ARCH in - amd64) KERNEL='amd64' ;; - i386) KERNEL='686' ;; - arm7) - [ -n "$DIB_ARM_KERNEL" ] - KERNEL="$DIB_ARM_KERNEL" - ;; - esac -fi -KERNEL_PACKAGE="linux-image-$KERNEL" - DIB_DEBIAN_COMPONENTS=${DIB_DEBIAN_COMPONENTS:-main} DIB_DEBOOTSTRAP_EXTRA_ARGS=${DIB_DEBOOTSTRAP_EXTRA_ARGS:-} -DEBOOTSTRAP_TARBALL=$DIB_IMAGE_CACHE/debootstrap-${DISTRO_NAME}-${DIB_RELEASE}-${ARCH}-${KERNEL}.tar.gz +DEBOOTSTRAP_TARBALL=$DIB_IMAGE_CACHE/debootstrap-${DISTRO_NAME}-${DIB_RELEASE}-${ARCH}.tar.gz http_proxy=${http_proxy:-} no_proxy=${no_proxy:-} @@ -63,7 +49,6 @@ else # Have to --include=busybox because initramfs needs it sudo sh -c "http_proxy=$http_proxy no_proxy=$no_proxy debootstrap --verbose \ --variant=minbase \ - --include=python,sudo,busybox,$KERNEL_PACKAGE \ --components=${DIB_DEBIAN_COMPONENTS} \ --arch=${ARCH} \ $KEYRING_OPT \ @@ -79,6 +64,7 @@ else sudo rm -fr ${TARGET_ROOT}/etc/apt/sources.list \ ${TARGET_ROOT}/etc/apt/sources.list.d + echo Caching debootstrap result in $DEBOOTSTRAP_TARBALL if [ "${DIB_DEBOOTSTRAP_CACHE:-0}" != "0" ]; then sudo tar --numeric-owner -C $TARGET_ROOT -zcf $DEBOOTSTRAP_TARBALL --exclude='./tmp/*' . diff --git a/elements/dpkg/root.d/60-block-apt-translations b/elements/dpkg/root.d/50-block-apt-translations similarity index 100% rename from elements/dpkg/root.d/60-block-apt-translations rename to elements/dpkg/root.d/50-block-apt-translations diff --git a/elements/dpkg/root.d/99-block-daemons b/elements/dpkg/root.d/50-block-daemons similarity index 100% rename from elements/dpkg/root.d/99-block-daemons rename to elements/dpkg/root.d/50-block-daemons diff --git a/elements/dpkg/root.d/99-shared_apt_cache b/elements/dpkg/root.d/50-shared-apt-cache similarity index 100% rename from elements/dpkg/root.d/99-shared_apt_cache rename to elements/dpkg/root.d/50-shared-apt-cache diff --git a/elements/dpkg/root.d/99-trim-dpkg b/elements/dpkg/root.d/50-trim-dpkg similarity index 100% rename from elements/dpkg/root.d/99-trim-dpkg rename to elements/dpkg/root.d/50-trim-dpkg diff --git a/elements/ubuntu-minimal/element-deps b/elements/ubuntu-minimal/element-deps index cba86060..e078fde1 100644 --- a/elements/ubuntu-minimal/element-deps +++ b/elements/ubuntu-minimal/element-deps @@ -1 +1,2 @@ debootstrap +package-installs diff --git a/elements/ubuntu-minimal/package-installs.yaml b/elements/ubuntu-minimal/package-installs.yaml new file mode 100644 index 00000000..83f64fcc --- /dev/null +++ b/elements/ubuntu-minimal/package-installs.yaml @@ -0,0 +1 @@ +linux-image-generic: diff --git a/elements/ubuntu-minimal/root.d/75-ubuntu-minimal-baseinstall b/elements/ubuntu-minimal/root.d/75-ubuntu-minimal-baseinstall new file mode 100755 index 00000000..6e6de8a0 --- /dev/null +++ b/elements/ubuntu-minimal/root.d/75-ubuntu-minimal-baseinstall @@ -0,0 +1,46 @@ +#!/bin/bash +# Copyright (c) 2014 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# +# See the License for the specific language governing permissions and +# limitations under the License. + +if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +DIB_DISTRIBUTION_MIRROR=${DIB_DISTRIBUTION_MIRROR:-http://archive.ubuntu.com/ubuntu} + +# We should manage this in a betterer way +sudo bash -c "cat << EOF >$TARGET_ROOT/etc/apt/sources.list +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE main restricted universe +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE-updates main restricted universe +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE-backports main restricted universe +deb $DIB_DISTRIBUTION_MIRROR $DIB_RELEASE-security main restricted universe +EOF" + +sudo mount -t proc none $TARGET_ROOT/proc +sudo mount -t sysfs none $TARGET_ROOT/sys +trap "sudo umount $TARGET_ROOT/proc; sudo umount $TARGET_ROOT/sys" EXIT + +apt_get="sudo chroot $TARGET_ROOT /usr/bin/apt-get" # dib-lint: safe_sudo + +# Need to update to retrieve the signed Release file +$apt_get update + +$apt_get clean +$apt_get dist-upgrade -y + +$apt_get install -y busybox python sudo diff --git a/releasenotes/notes/package-outside-debootstrap-ac93e9ce991819f1.yaml b/releasenotes/notes/package-outside-debootstrap-ac93e9ce991819f1.yaml new file mode 100644 index 00000000..fc877b85 --- /dev/null +++ b/releasenotes/notes/package-outside-debootstrap-ac93e9ce991819f1.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - The `debian-minimal` and and `ubuntu-minimal` elements now install + directly from the updates repo, avoiding the need to + double-install packages during build.