Merge branch 'source-catalog-2' into ubuntu/master

impish-sru-lp-1946520
Michael Hudson-Doyle 3 years ago
commit 543c40b347

@ -0,0 +1,22 @@
#!/bin/sh
set -eux
branch=$1
target="$(readlink -f "${2}")"
tmpdir="$(mktemp -d)"
cd "${tmpdir}"
cleanup () {
rm -rf "${tmpdir}"
}
trap cleanup EXIT
mkdir -p $target
bzr branch $branch checkout
for po in checkout/*.po; do
msgfmt "${po}" -o "${target}/$(basename "${po}" .po).mo"
done

3
debian/changelog vendored

@ -3,6 +3,9 @@ livecd-rootfs (2.734) UNRELEASED; urgency=medium
[ Ethan Hsieh ] [ Ethan Hsieh ]
* Download snap packages with correct architecture. * Download snap packages with correct architecture.
[ Michael Hudson-Doyle ]
* Create source catalogs for the installable live server layers.
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Tue, 17 Aug 2021 12:03:17 +0200 -- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Tue, 17 Aug 2021 12:03:17 +0200
livecd-rootfs (2.733) impish; urgency=medium livecd-rootfs (2.733) impish; urgency=medium

2
debian/control vendored

@ -11,6 +11,7 @@ Architecture: any
Depends: ${misc:Depends}, Depends: ${misc:Depends},
apt-utils, apt-utils,
attr, attr,
bzr,
debootstrap, debootstrap,
distro-info, distro-info,
dosfstools, dosfstools,
@ -18,6 +19,7 @@ Depends: ${misc:Depends},
gdisk, gdisk,
genisoimage, genisoimage,
germinate (>= 1.25.1), germinate (>= 1.25.1),
gettext,
git, git,
gnupg, gnupg,
grep-dctrl, grep-dctrl,

2
debian/install vendored

@ -4,3 +4,5 @@ get-ppa-fingerprint usr/share/livecd-rootfs
minimize-manual usr/share/livecd-rootfs minimize-manual usr/share/livecd-rootfs
magic-proxy usr/share/livecd-rootfs magic-proxy usr/share/livecd-rootfs
lp-in-release usr/share/livecd-rootfs lp-in-release usr/share/livecd-rootfs
checkout-translations-branch usr/share/livecd-rootfs
update-source-catalog usr/share/livecd-rootfs

@ -810,6 +810,10 @@ case $PROJECT in
add_package ubuntu-server-minimal.ubuntu-server.installer.$flavor $kernel_metapkg add_package ubuntu-server-minimal.ubuntu-server.installer.$flavor $kernel_metapkg
LIVE_PASSES="${LIVE_PASSES:+$LIVE_PASSES }ubuntu-server-minimal.ubuntu-server.installer.$flavor" LIVE_PASSES="${LIVE_PASSES:+$LIVE_PASSES }ubuntu-server-minimal.ubuntu-server.installer.$flavor"
done done
/usr/share/livecd-rootfs/checkout-translations-branch \
lp:~canonical-foundations/subiquity/translations-export \
config/catalog-translations
;; ;;
*) *)
echo "unrecognized subproject for server: '$SUBPROJECT'" echo "unrecognized subproject for server: '$SUBPROJECT'"

@ -138,6 +138,13 @@ build_layered_squashfs () {
fi fi
create_squashfs "overlay.${pass}/" ${squashfs_f} create_squashfs "overlay.${pass}/" ${squashfs_f}
if [ -f config/$pass.catalog-in.yaml ]; then
/usr/share/livecd-rootfs/update-source-catalog --output livecd.${PROJECT}.install-sources.yaml \
--template config/$pass.catalog-in.yaml \
--size $(du -B 1 -s chroot/ | cut -f1) --squashfs ${pass}.squashfs \
--translations config/catalog-translations
fi
fi fi
if [ -n "$lowerdirs" ]; then if [ -n "$lowerdirs" ]; then

@ -0,0 +1,7 @@
name: "Ubuntu Server (minimized)"
description: >-
This version has been customized to have a small runtime footprint
in environments where humans are not expected to log in.
id: ubuntu-server-minimal
type: fsimage
variant: server

@ -0,0 +1,8 @@
name: "Ubuntu Server"
description: >-
The default install contains a curated set of packages that provide
a comfortable experience for operating your server.
id: ubuntu-server
default: yes
type: fsimage-layered
variant: server

@ -0,0 +1,65 @@
#!/usr/bin/python3
import argparse
import gettext
import glob
import os
import sys
import yaml
parser = argparse.ArgumentParser()
parser.add_argument('--output', required=True)
parser.add_argument('--size', required=True)
parser.add_argument('--squashfs', required=True)
parser.add_argument('--translations', required=True)
parser.add_argument('--template', required=True)
opts = parser.parse_args(sys.argv[1:])
if os.path.exists(opts.output):
with open(opts.output) as fp:
output = yaml.safe_load(fp)
else:
output = []
with open(opts.template) as fp:
template = yaml.safe_load(fp)
template['size'] = int(opts.size)
template['path'] = opts.squashfs
en_name = template['name']
en_description = template['description']
template['name'] = {'en': en_name}
template['description'] = {'en': en_description}
for mo in glob.glob(os.path.join(opts.translations, '*.mo')):
with open(mo, 'rb') as fp:
t = gettext.GNUTranslations(fp=fp)
t_name = t.gettext(en_name)
if t_name != en_name:
lang = os.path.splitext(os.path.basename(mo))[0]
template['name'][lang] = t_name
t_description = t.gettext(en_description)
if t_description != en_description:
lang = os.path.splitext(os.path.basedescription(mo))[0]
template['description'][lang] = t_description
output.append(template)
default_count = 0
for entry in output:
if entry.get('default', False):
default_count += 1
if default_count > 1:
print("Too many defaults in source catalog!")
sys.exit(1)
with open(opts.output, 'w') as fp:
yaml.dump(output, fp)
Loading…
Cancel
Save