Release 1.24.0

-----BEGIN PGP SIGNATURE-----
 
 iQEcBAABAgAGBQJYP+r7AAoJEBty/58O8cX8ZcMIAI7Yy2BfGqY/jfyLYNryATSu
 g78McMxAeOiPYII+KKyVkeWsChKJUafLZr/ppO95pm7ZLXeHQeC4MHDI68RmghIX
 HVXn4hPYzwlZ+Yr4hqaEf11H+vw0TDxo2a5bxlQZw+FCx9+3lkR60QxWf8a6QCxv
 nLqKIhtpwGi9mIyvAya+MaOmHMHqbNYgIBHKP0yXhTdxoHZoJWZeXN1rkelwAF9N
 TS1+KwIk+uemn1ZlqzYDWj8euyFyAv8L0WlF0ztCKe7TAFvNeMo26fLykeKHVDEo
 GC5R8MshiOtihPC972rNIponIzd62AetTlDxfK+gcUZO21pNTrlgdLX5Jn04fo0=
 =BpQc
 -----END PGP SIGNATURE-----

Merge tag '1.24.0' into merge-branch

Release 1.24.0

Change-Id: I23cfa6f8dc66bb6a1d957a49a5b468cfd47c005b
This commit is contained in:
Ian Wienand 2017-01-31 14:14:10 +11:00
commit b6e631360f
17 changed files with 111 additions and 45 deletions

View File

@ -1,2 +1,6 @@
linux-image-amd64:
arch: amd64
linux-image-686:
arch: i386
systemd: systemd:
systemd-sysv: systemd-sysv:

View File

@ -15,10 +15,6 @@
# #
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # 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 if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
set -x set -x
@ -34,20 +30,28 @@ set -o pipefail
function apt_sources_write { function apt_sources_write {
local APT_SOURCES_CONF="$1" 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}" \ echo "${APT_SOURCES_CONF}" \
| while read line; do | while read line; do
local name=$(echo ${line} | cut -d ":" -f 1) local name=$(echo ${line} | cut -d ":" -f 1)
local value=$(echo ${line} | cut -d ":" -f 2-) 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 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}" apt_sources_write "${DIB_APT_SOURCES_CONF}"
# Need to update to retrieve the signed Release file # Need to update to retrieve the signed Release file
apt-get update $apt_get update
apt-get clean $apt_get clean
install-packages -u $apt_get dist-upgrade -y
$apt_get install -y busybox python sudo

View File

@ -28,23 +28,9 @@ fi
[ -n "$DIB_RELEASE" ] [ -n "$DIB_RELEASE" ]
[ -n "$DIB_DISTRIBUTION_MIRROR" ] [ -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_DEBIAN_COMPONENTS=${DIB_DEBIAN_COMPONENTS:-main}
DIB_DEBOOTSTRAP_EXTRA_ARGS=${DIB_DEBOOTSTRAP_EXTRA_ARGS:-} 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:-} http_proxy=${http_proxy:-}
no_proxy=${no_proxy:-} no_proxy=${no_proxy:-}
@ -63,7 +49,6 @@ else
# Have to --include=busybox because initramfs needs it # Have to --include=busybox because initramfs needs it
sudo sh -c "http_proxy=$http_proxy no_proxy=$no_proxy debootstrap --verbose \ sudo sh -c "http_proxy=$http_proxy no_proxy=$no_proxy debootstrap --verbose \
--variant=minbase \ --variant=minbase \
--include=python,sudo,busybox,$KERNEL_PACKAGE \
--components=${DIB_DEBIAN_COMPONENTS} \ --components=${DIB_DEBIAN_COMPONENTS} \
--arch=${ARCH} \ --arch=${ARCH} \
$KEYRING_OPT \ $KEYRING_OPT \
@ -79,6 +64,7 @@ else
sudo rm -fr ${TARGET_ROOT}/etc/apt/sources.list \ sudo rm -fr ${TARGET_ROOT}/etc/apt/sources.list \
${TARGET_ROOT}/etc/apt/sources.list.d ${TARGET_ROOT}/etc/apt/sources.list.d
echo Caching debootstrap result in $DEBOOTSTRAP_TARBALL echo Caching debootstrap result in $DEBOOTSTRAP_TARBALL
if [ "${DIB_DEBOOTSTRAP_CACHE:-0}" != "0" ]; then if [ "${DIB_DEBOOTSTRAP_CACHE:-0}" != "0" ]; then
sudo tar --numeric-owner -C $TARGET_ROOT -zcf $DEBOOTSTRAP_TARBALL --exclude='./tmp/*' . sudo tar --numeric-owner -C $TARGET_ROOT -zcf $DEBOOTSTRAP_TARBALL --exclude='./tmp/*' .

View File

@ -3,6 +3,6 @@ element-manifest
================ ================
Writes a manifest file that is the full list of elements that were used to Writes a manifest file that is the full list of elements that were used to
build the image. The file path can be overriden by setting build the image. The file path can be overridden by setting
$DIB\_ELEMENT\_MANIFEST\_PATH, and defaults to $DIB\_ELEMENT\_MANIFEST\_PATH, and defaults to
/etc/dib-manifests/element-manifest. /etc/dib-manifests/element-manifest.

View File

@ -20,19 +20,27 @@ import subprocess
import sys import sys
def process_output(cmdline): # run a command, return output
# Try to execute subprocess.check_output(), which is available # if follow is set, output will be echoed to stdout
# in Python 2.7+, gracefully falling back to subprocess.Popen def process_output(cmdline, follow=False):
# in older Python versions.
try:
return subprocess.check_output(cmdline).decode(encoding='utf-8')
except AttributeError:
proc = subprocess.Popen(cmdline, stdout=subprocess.PIPE) proc = subprocess.Popen(cmdline, stdout=subprocess.PIPE)
out = proc.communicate()[0] if follow:
print("Running command: %s" % cmdline)
out = ""
with proc.stdout:
for line in iter(proc.stdout.readline, b''):
out += line.decode('utf-8')
print("> %s" % line.strip())
proc.wait()
print("> -- done")
else:
out = proc.communicate()[0].decode('utf-8')
if proc.returncode: if proc.returncode:
e = subprocess.CalledProcessError(proc.returncode, cmdline) e = subprocess.CalledProcessError(proc.returncode, cmdline)
e.output = out e.output = out
raise e raise e
return out return out
@ -69,8 +77,7 @@ def main():
pkg_map_args = ['pkg-map', '--missing-ok', '--element', element, pkg] pkg_map_args = ['pkg-map', '--missing-ok', '--element', element, pkg]
try: try:
map_output = process_output( map_output = process_output(pkg_map_args)
pkg_map_args)
pkgs.extend(map_output.strip().split('\n')) pkgs.extend(map_output.strip().split('\n'))
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
if e.returncode == 1: if e.returncode == 1:
@ -93,7 +100,7 @@ def main():
print(" ".join(install_args)) print(" ".join(install_args))
else: else:
try: try:
process_output(install_args) process_output(install_args, follow=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print("install failed with error %s" % e.output) print("install failed with error %s" % e.output)
sys.exit(1) sys.exit(1)

View File

@ -1,3 +1,7 @@
# This package is only valid for SUSE and we need to pull it in
# early enough because pip depends on it.
python-xml:
phase: pre-install.d
python-pip: python-pip:
installtype: package installtype: package
python-virtualenv: python-virtualenv:

View File

@ -3,6 +3,12 @@
"gentoo": { "gentoo": {
"python-pip": "dev-python/pip", "python-pip": "dev-python/pip",
"python-virtualenv": "dev-python/virtualenv" "python-virtualenv": "dev-python/virtualenv"
} },
"suse" : {
"python-xml": "python-xml"
}
},
"default": {
"python-xml": ""
} }
} }

View File

@ -1 +1,2 @@
debootstrap debootstrap
package-installs

View File

@ -0,0 +1 @@
linux-image-generic:

View File

@ -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

View File

@ -4,6 +4,7 @@ linux-image-generic:
# as dependencies but that may change so lets # as dependencies but that may change so lets
# be explicit. # be explicit.
bash: bash:
ca-certificates-mozilla:
lsb-release: lsb-release:
openssl: openssl:
sed: sed:

View File

@ -61,8 +61,9 @@ function finish_image () {
mv $OUT_IMAGE_PATH $1 mv $OUT_IMAGE_PATH $1
if [ "$DIB_CHECKSUM" == "1" ]; then if [ "$DIB_CHECKSUM" == "1" ]; then
md5sum $1 > $1.md5 # NOTE(pabelanger): Read image into memory once and generate both checksum
sha256sum $1 > $1.sha256 # files.
md5sum $1 > $1.md5 & sha256sum $1 > $1.sha256 & wait
fi fi
echo "Image file $1 created..." echo "Image file $1 created..."
} }

View File

@ -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.