Message ID | 20241121125528.1370018-1-felix.moessbauer@siemens.com |
---|---|
State | Accepted, archived |
Headers | show |
Series | [1/1] add apt options to mmdebstrap | expand |
On Thu, 2024-11-21 at 13:55 +0100, 'Felix Moessbauer' via isar-users wrote: > In contrast to deboostrap, mmdebstrap supports apt options. By that, > we > finally can inject the config needed to have reliable builds against > the > debian snapshot mirrors. > > Technically we need the options in two different formats, hence use a > function to generate them accordingly. > > Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> > --- > .../isar-mmdebstrap/isar-mmdebstrap.inc | 17 > ++++++++++++++++- > 1 file changed, 16 insertions(+), 1 deletion(-) > > diff --git a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc > b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc > index 1043f2d1..97ee4431 100644 > --- a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc > +++ b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc > @@ -24,6 +24,19 @@ MMHOOKS:debian-buster ?= "${DPKG_HOOKS}" > > DISTRO_BOOTSTRAP_KEYRING = "${WORKDIR}/distro-keyring.gpg" > > +def get_apt_opts(d, param): > + opts = [] > + retries = d.getVar('ISAR_APT_RETRIES') or "3" > + opts.append(f'Acquire::Retries="{retries}"') > + max_delay = d.getVar('ISAR_APT_DELAY_MAX') > + if max_delay: > + > opts.append(f'Acquire::Retries::Delay::Maximum="{max_delay}"') > + dl_limit = d.getVar('ISAR_APT_DL_LIMIT') > + if dl_limit: > + opts.append(f'Acquire::http::Dl-Limit="{dl_limit}"') > + opts.append(f'Acquire::https::Dl-Limit="{dl_limit}"') > + return ' '.join([f'{param} {o}' for o in opts]) > + > do_generate_keyrings[cleandirs] = "${WORKDIR}/trusted.gpg.d" > do_generate_keyrings[dirs] = "${DEBDIR}" > do_generate_keyrings[vardeps] += "DISTRO_BOOTSTRAP_KEYS > THIRD_PARTY_APT_KEYS" > @@ -126,7 +139,8 @@ do_bootstrap() { > -o Dir::State="$1/var/lib/apt" \ > -o Dir::Etc="$1/etc/apt" \ > -o Dir::Cache="$1/var/cache/apt" \ > - -o > Apt::Architecture="${BOOTSTRAP_DISTRO_ARCH}"' > + -o > Apt::Architecture="${BOOTSTRAP_DISTRO_ARCH}" \ > + ${@get_apt_opts(d, '-o')}' > extra_essential="$extra_essential && $syncout" > extra_customize="$syncout" > fi > @@ -173,6 +187,7 @@ do_bootstrap() { > --customize-hook='chroot "$1" /usr/bin/apt-get -y > clean' \ > --skip=cleanup/apt \ > --skip=download/empty \ > + ${@get_apt_opts(d, '--aptopt')} \ > ${@get_distro_components_argument(d)} \ > "${@get_distro_suite(d)}" \ > "${WORKDIR}/rootfs.tar.zst" \ > -- > 2.39.5 > Applied to next, thanks.
diff --git a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc index 1043f2d1..97ee4431 100644 --- a/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc +++ b/meta/recipes-core/isar-mmdebstrap/isar-mmdebstrap.inc @@ -24,6 +24,19 @@ MMHOOKS:debian-buster ?= "${DPKG_HOOKS}" DISTRO_BOOTSTRAP_KEYRING = "${WORKDIR}/distro-keyring.gpg" +def get_apt_opts(d, param): + opts = [] + retries = d.getVar('ISAR_APT_RETRIES') or "3" + opts.append(f'Acquire::Retries="{retries}"') + max_delay = d.getVar('ISAR_APT_DELAY_MAX') + if max_delay: + opts.append(f'Acquire::Retries::Delay::Maximum="{max_delay}"') + dl_limit = d.getVar('ISAR_APT_DL_LIMIT') + if dl_limit: + opts.append(f'Acquire::http::Dl-Limit="{dl_limit}"') + opts.append(f'Acquire::https::Dl-Limit="{dl_limit}"') + return ' '.join([f'{param} {o}' for o in opts]) + do_generate_keyrings[cleandirs] = "${WORKDIR}/trusted.gpg.d" do_generate_keyrings[dirs] = "${DEBDIR}" do_generate_keyrings[vardeps] += "DISTRO_BOOTSTRAP_KEYS THIRD_PARTY_APT_KEYS" @@ -126,7 +139,8 @@ do_bootstrap() { -o Dir::State="$1/var/lib/apt" \ -o Dir::Etc="$1/etc/apt" \ -o Dir::Cache="$1/var/cache/apt" \ - -o Apt::Architecture="${BOOTSTRAP_DISTRO_ARCH}"' + -o Apt::Architecture="${BOOTSTRAP_DISTRO_ARCH}" \ + ${@get_apt_opts(d, '-o')}' extra_essential="$extra_essential && $syncout" extra_customize="$syncout" fi @@ -173,6 +187,7 @@ do_bootstrap() { --customize-hook='chroot "$1" /usr/bin/apt-get -y clean' \ --skip=cleanup/apt \ --skip=download/empty \ + ${@get_apt_opts(d, '--aptopt')} \ ${@get_distro_components_argument(d)} \ "${@get_distro_suite(d)}" \ "${WORKDIR}/rootfs.tar.zst" \
In contrast to deboostrap, mmdebstrap supports apt options. By that, we finally can inject the config needed to have reliable builds against the debian snapshot mirrors. Technically we need the options in two different formats, hence use a function to generate them accordingly. Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> --- .../isar-mmdebstrap/isar-mmdebstrap.inc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)