* [PATCH v4 0/3] Fix cross-build from base-apt when custom DISTRO name used
@ 2022-11-28 11:05 Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Uladzimir Bely @ 2022-11-28 11:05 UTC (permalink / raw)
To: isar-users
This patchset is mostly intended for downstreams that prefer
to rename DISTRO variable (like `meat-iot2050`) and use
ISAR_CROSS_COMPILE = "1".
This also fixes the case with cross-build or raspberry targets
from cached base-apt repo. While it uses separate repositories
for host (Debian) and target (Raspbian) distros, base-apt is
splittend onto two parts corresponding to original repos.
Also, testsuite repro tests were updated to cover crosss-build case
and raspberry target is now used in it.
Changed since v3:
- renamed BASE_HOST_DISTRO to HOST_BASE_DISTRO.
Changes since v2:
- Cleaned garbage in commit message for patch 2.
Changes since v1:
- Support cached cross-build from base-apt for different base distros
for host and target (e.g. raspberry).
Uladzimir Bely (3):
Populate base-apt from both DISTRO and HOST_DISTRO download dirs
testsuite: Run signed repro test in cross mode
testsuite: Replace bananapi with rpi-arm-v7 in signed repro tests
meta-isar/conf/distro/raspbian-stretch.conf | 2 +
meta-isar/conf/distro/raspios-bullseye.conf | 2 +
meta-isar/conf/distro/ubuntu-focal.conf | 2 +
meta/conf/distro/debian-common.conf | 2 +
.../isar-bootstrap/isar-bootstrap.inc | 9 +++-
meta/recipes-devtools/base-apt/base-apt.bb | 47 ++++++++++---------
testsuite/citest.py | 4 +-
7 files changed, 42 insertions(+), 26 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs
2022-11-28 11:05 [PATCH v4 0/3] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
@ 2022-11-28 11:05 ` Uladzimir Bely
2022-11-29 10:49 ` Jan Kiszka
2022-11-28 11:05 ` [PATCH v4 2/3] testsuite: Run signed repro test in cross mode Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 3/3] testsuite: Replace bananapi with rpi-arm-v7 in signed repro tests Uladzimir Bely
2 siblings, 1 reply; 7+ messages in thread
From: Uladzimir Bely @ 2022-11-28 11:05 UTC (permalink / raw)
To: isar-users
Downstreams may want to change DISTRO to some custom value.
When cross-building, this leads to downloading packages for host
and target distros to the different download subdirs.
While base-apt is populated only from DISTRO download subdir,
second cached (ISAR_USE_CACHED_BASE_REPO = "1") build fails due to
missing packages in base-apt.
The similar issue happens with cross-building raspberry targets
since they use their own mirrors and DISTRO.
Fix the issue by splitting base-apt by introducing HOST_BASE_DISTRO
variable that is used instead of BASE_DISTRO for caching builds
for host-related components (e.g., isar-bootstrap, buildchroot-host,
sbuild-chroot-host). Target components still use BASE_DISTRO.
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
meta-isar/conf/distro/raspbian-stretch.conf | 2 +
meta-isar/conf/distro/raspios-bullseye.conf | 2 +
meta-isar/conf/distro/ubuntu-focal.conf | 2 +
meta/conf/distro/debian-common.conf | 2 +
.../isar-bootstrap/isar-bootstrap.inc | 9 +++-
meta/recipes-devtools/base-apt/base-apt.bb | 47 ++++++++++---------
6 files changed, 40 insertions(+), 24 deletions(-)
diff --git a/meta-isar/conf/distro/raspbian-stretch.conf b/meta-isar/conf/distro/raspbian-stretch.conf
index c8f523b3..1ad0152f 100644
--- a/meta-isar/conf/distro/raspbian-stretch.conf
+++ b/meta-isar/conf/distro/raspbian-stretch.conf
@@ -6,6 +6,8 @@
BASE_DISTRO = "raspbian"
BASE_DISTRO_CODENAME = "stretch"
+HOST_BASE_DISTRO = "debian"
+
HOST_DISTRO ?= "debian-stretch"
HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
diff --git a/meta-isar/conf/distro/raspios-bullseye.conf b/meta-isar/conf/distro/raspios-bullseye.conf
index 5e4a09c9..1f65c3cd 100644
--- a/meta-isar/conf/distro/raspios-bullseye.conf
+++ b/meta-isar/conf/distro/raspios-bullseye.conf
@@ -6,6 +6,8 @@
BASE_DISTRO = "raspios"
BASE_DISTRO_arm64 = "debian"
+HOST_BASE_DISTRO ?= "debian"
+
BASE_DISTRO_CODENAME = "bullseye"
HOST_DISTRO ?= "debian-bullseye"
HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
diff --git a/meta-isar/conf/distro/ubuntu-focal.conf b/meta-isar/conf/distro/ubuntu-focal.conf
index 379b5b30..084f8e3d 100644
--- a/meta-isar/conf/distro/ubuntu-focal.conf
+++ b/meta-isar/conf/distro/ubuntu-focal.conf
@@ -8,6 +8,8 @@ require conf/distro/debian-common.conf
BASE_DISTRO = "ubuntu"
BASE_DISTRO_CODENAME = "focal"
+HOST_BASE_DISTRO = "${BASE_DISTRO}"
+
DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}-ports.list"
HOST_DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${HOST_DISTRO}.list conf/distro/${HOST_DISTRO}-ports.list"
diff --git a/meta/conf/distro/debian-common.conf b/meta/conf/distro/debian-common.conf
index c18eebc2..ada7dc6e 100644
--- a/meta/conf/distro/debian-common.conf
+++ b/meta/conf/distro/debian-common.conf
@@ -5,6 +5,8 @@
BASE_DISTRO = "debian"
+HOST_BASE_DISTRO ?= "${BASE_DISTRO}"
+
HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
DISTRO_APT_SOURCES ?= "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}.list"
diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
index f32d192e..14d876aa 100644
--- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
+++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
@@ -29,6 +29,7 @@ DISTRO_BOOTSTRAP_BASE_PACKAGES_append_gnupg = ",gnupg"
DISTRO_BOOTSTRAP_BASE_PACKAGES_append_https-support = "${@https_support(d)}"
DISTRO_VARS_PREFIX ?= "${@'HOST_' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else ''}"
BOOTSTRAP_DISTRO = "${@d.getVar('HOST_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'DISTRO')}"
+BOOTSTRAP_BASE_DISTRO = "${@d.getVar('HOST_BASE_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'BASE_DISTRO')}"
FILESEXTRAPATHS_append = ":${BBPATH}"
inherit deb-dl-dir
@@ -111,7 +112,7 @@ def get_apt_source_mirror(d, aptsources_entry_list):
import re
if bb.utils.to_boolean(d.getVar('ISAR_USE_CACHED_BASE_REPO')):
- premirrors = "\S* file://${REPO_BASE_DIR}/${BASE_DISTRO}\n"
+ premirrors = "\S* file://${REPO_BASE_DIR}/${BOOTSTRAP_BASE_DISTRO}\n"
else:
premirrors = d.getVar('DISTRO_APT_PREMIRRORS', True) or ""
mirror_list = [entry.split()
@@ -319,11 +320,15 @@ do_bootstrap() {
"${ROOTFSDIR}/etc/apt/preferences.d/bootstrap"
mkdir -p "${ROOTFSDIR}/etc/apt/sources.list.d"
if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
- line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME} main"
+ line="file:///base-apt/${BOOTSTRAP_BASE_DISTRO} ${BASE_DISTRO_CODENAME} main"
if [ -z "${BASE_REPO_KEY}" ]; then
line="[trusted=yes] ${line}"
fi
echo "deb ${line}" > "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
+ line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME} main"
+ if [ -z "${BASE_REPO_KEY}" ]; then
+ line="[trusted=yes] ${line}"
+ fi
echo "deb-src ${line}" >> "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
mkdir -p ${ROOTFSDIR}/base-apt
diff --git a/meta/recipes-devtools/base-apt/base-apt.bb b/meta/recipes-devtools/base-apt/base-apt.bb
index 506a28ff..05016d80 100644
--- a/meta/recipes-devtools/base-apt/base-apt.bb
+++ b/meta/recipes-devtools/base-apt/base-apt.bb
@@ -13,7 +13,10 @@ KEYFILES ?= ""
BASE_REPO_FEATURES ?= ""
populate_base_apt() {
- find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
+ distro="${1}"
+ base_distro="${2}"
+
+ find "${DEBDIR}"/"${distro}" -name '*\.deb' | while read package; do
# NOTE: due to packages stored by reprepro are not modified, we can
# use search by filename to check if package is already in repo. In
# addition, md5sums are compared to ensure that the package is the
@@ -22,25 +25,25 @@ populate_base_apt() {
# Check if this package is already in base-apt
ret=0
- repo_contains_package "${REPO_BASE_DIR}/${BASE_DISTRO}" "${package}" ||
+ repo_contains_package "${REPO_BASE_DIR}/${base_distro}" "${package}" ||
ret=$?
[ "${ret}" = "0" ] && continue
if [ "${ret}" = "1" ]; then
- repo_del_package "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
- "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
+ repo_del_package "${REPO_BASE_DIR}"/"${base_distro}" \
+ "${REPO_BASE_DB_DIR}"/"${base_distro}" \
"${BASE_DISTRO_CODENAME}" \
- "${base_apt_p}"
+ "${package}"
fi
- repo_add_packages "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
- "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
+ repo_add_packages "${REPO_BASE_DIR}"/"${base_distro}" \
+ "${REPO_BASE_DB_DIR}"/"${base_distro}" \
"${BASE_DISTRO_CODENAME}" \
"${package}"
done
- find "${DEBSRCDIR}"/"${DISTRO}" -name '*\.dsc' | while read package; do
- repo_add_srcpackage "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
- "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
+ find "${DEBSRCDIR}"/"${distro}" -name '*\.dsc' | while read package; do
+ repo_add_srcpackage "${REPO_BASE_DIR}"/"${base_distro}" \
+ "${REPO_BASE_DB_DIR}"/"${base_distro}" \
"${BASE_DISTRO_CODENAME}" \
"${package}"
done
@@ -55,20 +58,20 @@ repo() {
"${BASE_DISTRO_CODENAME}" \
"${WORKDIR}/distributions.in" \
"${KEYFILES}"
-
- if [ -d '${BUILDCHROOT_HOST_DIR}/var/cache/apt' ] &&
- [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
- # We would need two separate repository paths for that.
- # Otherwise packages (especially the 'all' arch ones) from one
- # distribution can influence the package versions of the other
- # distribution.
- bbfatal "Different host and target distributions are currently not supported." \
- "Try it without cross-build."
- fi
-
- populate_base_apt
+ populate_base_apt "${DISTRO}" "${BASE_DISTRO}"
repo_sanity_test "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
"${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}"
+
+ if [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
+ repo_create "${REPO_BASE_DIR}"/"${HOST_BASE_DISTRO}" \
+ "${REPO_BASE_DB_DIR}"/"${HOST_BASE_DISTRO}" \
+ "${BASE_DISTRO_CODENAME}" \
+ "${WORKDIR}/distributions.in" \
+ "${KEYFILES}"
+ populate_base_apt "${HOST_DISTRO}" "${HOST_BASE_DISTRO}"
+ repo_sanity_test "${REPO_BASE_DIR}"/"${HOST_BASE_DISTRO}" \
+ "${REPO_BASE_DB_DIR}"/"${HOST_BASE_DISTRO}"
+ fi
}
python do_cache() {
--
2.20.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 2/3] testsuite: Run signed repro test in cross mode
2022-11-28 11:05 [PATCH v4 0/3] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
@ 2022-11-28 11:05 ` Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 3/3] testsuite: Replace bananapi with rpi-arm-v7 in signed repro tests Uladzimir Bely
2 siblings, 0 replies; 7+ messages in thread
From: Uladzimir Bely @ 2022-11-28 11:05 UTC (permalink / raw)
To: isar-users
Both signed and unsigned tests are done in non-cross mode.
Changing CROSS_COMPILE to "1" for one signed variant in order
to cover cross-build from local `base-apt` testing
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
testsuite/citest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/testsuite/citest.py b/testsuite/citest.py
index 2dc78015..cf9139f8 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -32,7 +32,7 @@ class ReproTest(CIBaseTest):
self.init()
try:
- self.perform_repro_test(targets, signed=True)
+ self.perform_repro_test(targets, signed=True, cross=True)
finally:
self.move_in_build_dir('tmp', 'tmp_repro_signed')
--
2.20.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 3/3] testsuite: Replace bananapi with rpi-arm-v7 in signed repro tests
2022-11-28 11:05 [PATCH v4 0/3] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 2/3] testsuite: Run signed repro test in cross mode Uladzimir Bely
@ 2022-11-28 11:05 ` Uladzimir Bely
2 siblings, 0 replies; 7+ messages in thread
From: Uladzimir Bely @ 2022-11-28 11:05 UTC (permalink / raw)
To: isar-users
While rpi-arm-v7 target uses own repositories and DISTRO variable,
it has more chances to fail in cross-build repro test, so it looks
like a better choice for this test than debian-only bananapi target.
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
testsuite/citest.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/testsuite/citest.py b/testsuite/citest.py
index cf9139f8..d4fb177f 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -26,7 +26,7 @@ class ReproTest(CIBaseTest):
"""
def test_repro_signed(self):
targets = [
- 'mc:bananapi-bullseye:isar-image-base',
+ 'mc:rpi-arm-v7-bullseye:isar-image-base',
'mc:qemuarm64-bullseye:isar-image-base'
]
--
2.20.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs
2022-11-28 11:05 ` [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
@ 2022-11-29 10:49 ` Jan Kiszka
2022-11-29 11:29 ` Uladzimir Bely
0 siblings, 1 reply; 7+ messages in thread
From: Jan Kiszka @ 2022-11-29 10:49 UTC (permalink / raw)
To: Uladzimir Bely, isar-users
On 28.11.22 12:05, Uladzimir Bely wrote:
> Downstreams may want to change DISTRO to some custom value.
> When cross-building, this leads to downloading packages for host
> and target distros to the different download subdirs.
>
> While base-apt is populated only from DISTRO download subdir,
> second cached (ISAR_USE_CACHED_BASE_REPO = "1") build fails due to
> missing packages in base-apt.
>
> The similar issue happens with cross-building raspberry targets
> since they use their own mirrors and DISTRO.
>
> Fix the issue by splitting base-apt by introducing HOST_BASE_DISTRO
> variable that is used instead of BASE_DISTRO for caching builds
> for host-related components (e.g., isar-bootstrap, buildchroot-host,
> sbuild-chroot-host). Target components still use BASE_DISTRO.
>
> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> ---
> meta-isar/conf/distro/raspbian-stretch.conf | 2 +
> meta-isar/conf/distro/raspios-bullseye.conf | 2 +
> meta-isar/conf/distro/ubuntu-focal.conf | 2 +
> meta/conf/distro/debian-common.conf | 2 +
> .../isar-bootstrap/isar-bootstrap.inc | 9 +++-
> meta/recipes-devtools/base-apt/base-apt.bb | 47 ++++++++++---------
> 6 files changed, 40 insertions(+), 24 deletions(-)
>
> diff --git a/meta-isar/conf/distro/raspbian-stretch.conf b/meta-isar/conf/distro/raspbian-stretch.conf
> index c8f523b3..1ad0152f 100644
> --- a/meta-isar/conf/distro/raspbian-stretch.conf
> +++ b/meta-isar/conf/distro/raspbian-stretch.conf
> @@ -6,6 +6,8 @@
> BASE_DISTRO = "raspbian"
> BASE_DISTRO_CODENAME = "stretch"
>
> +HOST_BASE_DISTRO = "debian"
> +
> HOST_DISTRO ?= "debian-stretch"
> HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
>
> diff --git a/meta-isar/conf/distro/raspios-bullseye.conf b/meta-isar/conf/distro/raspios-bullseye.conf
> index 5e4a09c9..1f65c3cd 100644
> --- a/meta-isar/conf/distro/raspios-bullseye.conf
> +++ b/meta-isar/conf/distro/raspios-bullseye.conf
> @@ -6,6 +6,8 @@
> BASE_DISTRO = "raspios"
> BASE_DISTRO_arm64 = "debian"
>
> +HOST_BASE_DISTRO ?= "debian"
> +
> BASE_DISTRO_CODENAME = "bullseye"
> HOST_DISTRO ?= "debian-bullseye"
> HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
> diff --git a/meta-isar/conf/distro/ubuntu-focal.conf b/meta-isar/conf/distro/ubuntu-focal.conf
> index 379b5b30..084f8e3d 100644
> --- a/meta-isar/conf/distro/ubuntu-focal.conf
> +++ b/meta-isar/conf/distro/ubuntu-focal.conf
> @@ -8,6 +8,8 @@ require conf/distro/debian-common.conf
> BASE_DISTRO = "ubuntu"
> BASE_DISTRO_CODENAME = "focal"
>
> +HOST_BASE_DISTRO = "${BASE_DISTRO}"
> +
> DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}-ports.list"
> HOST_DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${HOST_DISTRO}.list conf/distro/${HOST_DISTRO}-ports.list"
>
> diff --git a/meta/conf/distro/debian-common.conf b/meta/conf/distro/debian-common.conf
> index c18eebc2..ada7dc6e 100644
> --- a/meta/conf/distro/debian-common.conf
> +++ b/meta/conf/distro/debian-common.conf
> @@ -5,6 +5,8 @@
>
> BASE_DISTRO = "debian"
>
> +HOST_BASE_DISTRO ?= "${BASE_DISTRO}"
> +
> HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
> DISTRO_APT_SOURCES ?= "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}.list"
>
> diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
> index f32d192e..14d876aa 100644
> --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
> +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
> @@ -29,6 +29,7 @@ DISTRO_BOOTSTRAP_BASE_PACKAGES_append_gnupg = ",gnupg"
> DISTRO_BOOTSTRAP_BASE_PACKAGES_append_https-support = "${@https_support(d)}"
> DISTRO_VARS_PREFIX ?= "${@'HOST_' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else ''}"
> BOOTSTRAP_DISTRO = "${@d.getVar('HOST_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'DISTRO')}"
> +BOOTSTRAP_BASE_DISTRO = "${@d.getVar('HOST_BASE_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'BASE_DISTRO')}"
> FILESEXTRAPATHS_append = ":${BBPATH}"
>
> inherit deb-dl-dir
> @@ -111,7 +112,7 @@ def get_apt_source_mirror(d, aptsources_entry_list):
> import re
>
> if bb.utils.to_boolean(d.getVar('ISAR_USE_CACHED_BASE_REPO')):
> - premirrors = "\S* file://${REPO_BASE_DIR}/${BASE_DISTRO}\n"
> + premirrors = "\S* file://${REPO_BASE_DIR}/${BOOTSTRAP_BASE_DISTRO}\n"
> else:
> premirrors = d.getVar('DISTRO_APT_PREMIRRORS', True) or ""
> mirror_list = [entry.split()
> @@ -319,11 +320,15 @@ do_bootstrap() {
> "${ROOTFSDIR}/etc/apt/preferences.d/bootstrap"
> mkdir -p "${ROOTFSDIR}/etc/apt/sources.list.d"
> if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> - line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME} main"
> + line="file:///base-apt/${BOOTSTRAP_BASE_DISTRO} ${BASE_DISTRO_CODENAME} main"
There is still a conceptual glitch here: BASE_DISTRO_CODENAME may not be
the same as "HOST_BASE_DISTRO_CODENAME" - which does not exist.
Jan
> if [ -z "${BASE_REPO_KEY}" ]; then
> line="[trusted=yes] ${line}"
> fi
> echo "deb ${line}" > "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> + line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME} main"
> + if [ -z "${BASE_REPO_KEY}" ]; then
> + line="[trusted=yes] ${line}"
> + fi
> echo "deb-src ${line}" >> "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
>
> mkdir -p ${ROOTFSDIR}/base-apt
> diff --git a/meta/recipes-devtools/base-apt/base-apt.bb b/meta/recipes-devtools/base-apt/base-apt.bb
> index 506a28ff..05016d80 100644
> --- a/meta/recipes-devtools/base-apt/base-apt.bb
> +++ b/meta/recipes-devtools/base-apt/base-apt.bb
> @@ -13,7 +13,10 @@ KEYFILES ?= ""
> BASE_REPO_FEATURES ?= ""
>
> populate_base_apt() {
> - find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> + distro="${1}"
> + base_distro="${2}"
> +
> + find "${DEBDIR}"/"${distro}" -name '*\.deb' | while read package; do
> # NOTE: due to packages stored by reprepro are not modified, we can
> # use search by filename to check if package is already in repo. In
> # addition, md5sums are compared to ensure that the package is the
> @@ -22,25 +25,25 @@ populate_base_apt() {
>
> # Check if this package is already in base-apt
> ret=0
> - repo_contains_package "${REPO_BASE_DIR}/${BASE_DISTRO}" "${package}" ||
> + repo_contains_package "${REPO_BASE_DIR}/${base_distro}" "${package}" ||
> ret=$?
> [ "${ret}" = "0" ] && continue
> if [ "${ret}" = "1" ]; then
> - repo_del_package "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> - "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
> + repo_del_package "${REPO_BASE_DIR}"/"${base_distro}" \
> + "${REPO_BASE_DB_DIR}"/"${base_distro}" \
> "${BASE_DISTRO_CODENAME}" \
> - "${base_apt_p}"
> + "${package}"
> fi
>
> - repo_add_packages "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> - "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
> + repo_add_packages "${REPO_BASE_DIR}"/"${base_distro}" \
> + "${REPO_BASE_DB_DIR}"/"${base_distro}" \
> "${BASE_DISTRO_CODENAME}" \
> "${package}"
> done
>
> - find "${DEBSRCDIR}"/"${DISTRO}" -name '*\.dsc' | while read package; do
> - repo_add_srcpackage "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> - "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
> + find "${DEBSRCDIR}"/"${distro}" -name '*\.dsc' | while read package; do
> + repo_add_srcpackage "${REPO_BASE_DIR}"/"${base_distro}" \
> + "${REPO_BASE_DB_DIR}"/"${base_distro}" \
> "${BASE_DISTRO_CODENAME}" \
> "${package}"
> done
> @@ -55,20 +58,20 @@ repo() {
> "${BASE_DISTRO_CODENAME}" \
> "${WORKDIR}/distributions.in" \
> "${KEYFILES}"
> -
> - if [ -d '${BUILDCHROOT_HOST_DIR}/var/cache/apt' ] &&
> - [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
> - # We would need two separate repository paths for that.
> - # Otherwise packages (especially the 'all' arch ones) from one
> - # distribution can influence the package versions of the other
> - # distribution.
> - bbfatal "Different host and target distributions are currently not supported." \
> - "Try it without cross-build."
> - fi
> -
> - populate_base_apt
> + populate_base_apt "${DISTRO}" "${BASE_DISTRO}"
> repo_sanity_test "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}"
> +
> + if [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
> + repo_create "${REPO_BASE_DIR}"/"${HOST_BASE_DISTRO}" \
> + "${REPO_BASE_DB_DIR}"/"${HOST_BASE_DISTRO}" \
> + "${BASE_DISTRO_CODENAME}" \
> + "${WORKDIR}/distributions.in" \
> + "${KEYFILES}"
> + populate_base_apt "${HOST_DISTRO}" "${HOST_BASE_DISTRO}"
> + repo_sanity_test "${REPO_BASE_DIR}"/"${HOST_BASE_DISTRO}" \
> + "${REPO_BASE_DB_DIR}"/"${HOST_BASE_DISTRO}"
> + fi
> }
>
> python do_cache() {
--
Siemens AG, Technology
Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs
2022-11-29 10:49 ` Jan Kiszka
@ 2022-11-29 11:29 ` Uladzimir Bely
2022-11-29 12:07 ` Jan Kiszka
0 siblings, 1 reply; 7+ messages in thread
From: Uladzimir Bely @ 2022-11-29 11:29 UTC (permalink / raw)
To: isar-users, Jan Kiszka
In the email from Tuesday, 29 November 2022 13:49:11 +03 user Jan Kiszka
wrote:
> On 28.11.22 12:05, Uladzimir Bely wrote:
> > Downstreams may want to change DISTRO to some custom value.
> > When cross-building, this leads to downloading packages for host
> > and target distros to the different download subdirs.
> >
> > While base-apt is populated only from DISTRO download subdir,
> > second cached (ISAR_USE_CACHED_BASE_REPO = "1") build fails due to
> > missing packages in base-apt.
> >
> > The similar issue happens with cross-building raspberry targets
> > since they use their own mirrors and DISTRO.
> >
> > Fix the issue by splitting base-apt by introducing HOST_BASE_DISTRO
> > variable that is used instead of BASE_DISTRO for caching builds
> > for host-related components (e.g., isar-bootstrap, buildchroot-host,
> > sbuild-chroot-host). Target components still use BASE_DISTRO.
> >
> > Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> > ---
> >
> > meta-isar/conf/distro/raspbian-stretch.conf | 2 +
> > meta-isar/conf/distro/raspios-bullseye.conf | 2 +
> > meta-isar/conf/distro/ubuntu-focal.conf | 2 +
> > meta/conf/distro/debian-common.conf | 2 +
> > .../isar-bootstrap/isar-bootstrap.inc | 9 +++-
> > meta/recipes-devtools/base-apt/base-apt.bb | 47 ++++++++++---------
> > 6 files changed, 40 insertions(+), 24 deletions(-)
> >
> > diff --git a/meta-isar/conf/distro/raspbian-stretch.conf
> > b/meta-isar/conf/distro/raspbian-stretch.conf index c8f523b3..1ad0152f
> > 100644
> > --- a/meta-isar/conf/distro/raspbian-stretch.conf
> > +++ b/meta-isar/conf/distro/raspbian-stretch.conf
> > @@ -6,6 +6,8 @@
> >
> > BASE_DISTRO = "raspbian"
> > BASE_DISTRO_CODENAME = "stretch"
> >
> > +HOST_BASE_DISTRO = "debian"
> > +
> >
> > HOST_DISTRO ?= "debian-stretch"
> > HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
> >
> > diff --git a/meta-isar/conf/distro/raspios-bullseye.conf
> > b/meta-isar/conf/distro/raspios-bullseye.conf index 5e4a09c9..1f65c3cd
> > 100644
> > --- a/meta-isar/conf/distro/raspios-bullseye.conf
> > +++ b/meta-isar/conf/distro/raspios-bullseye.conf
> > @@ -6,6 +6,8 @@
> >
> > BASE_DISTRO = "raspios"
> > BASE_DISTRO_arm64 = "debian"
> >
> > +HOST_BASE_DISTRO ?= "debian"
> > +
> >
> > BASE_DISTRO_CODENAME = "bullseye"
> > HOST_DISTRO ?= "debian-bullseye"
> > HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
> >
> > diff --git a/meta-isar/conf/distro/ubuntu-focal.conf
> > b/meta-isar/conf/distro/ubuntu-focal.conf index 379b5b30..084f8e3d 100644
> > --- a/meta-isar/conf/distro/ubuntu-focal.conf
> > +++ b/meta-isar/conf/distro/ubuntu-focal.conf
> > @@ -8,6 +8,8 @@ require conf/distro/debian-common.conf
> >
> > BASE_DISTRO = "ubuntu"
> > BASE_DISTRO_CODENAME = "focal"
> >
> > +HOST_BASE_DISTRO = "${BASE_DISTRO}"
> > +
> >
> > DISTRO_APT_SOURCES_arm64 ?=
> > "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}-ports.list"
> > HOST_DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${HOST_DISTRO}.list
> > conf/distro/${HOST_DISTRO}-ports.list">
> > diff --git a/meta/conf/distro/debian-common.conf
> > b/meta/conf/distro/debian-common.conf index c18eebc2..ada7dc6e 100644
> > --- a/meta/conf/distro/debian-common.conf
> > +++ b/meta/conf/distro/debian-common.conf
> > @@ -5,6 +5,8 @@
> >
> > BASE_DISTRO = "debian"
> >
> > +HOST_BASE_DISTRO ?= "${BASE_DISTRO}"
> > +
> >
> > HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
> > DISTRO_APT_SOURCES ?=
> > "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}.list">
> > diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
> > b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc index
> > f32d192e..14d876aa 100644
> > --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
> > +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
> > @@ -29,6 +29,7 @@ DISTRO_BOOTSTRAP_BASE_PACKAGES_append_gnupg = ",gnupg"
> >
> > DISTRO_BOOTSTRAP_BASE_PACKAGES_append_https-support =
> > "${@https_support(d)}" DISTRO_VARS_PREFIX ?= "${@'HOST_' if
> > d.getVar('BOOTSTRAP_FOR_HOST') == '1' else ''}" BOOTSTRAP_DISTRO =
> > "${@d.getVar('HOST_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else
> > 'DISTRO')}">
> > +BOOTSTRAP_BASE_DISTRO = "${@d.getVar('HOST_BASE_DISTRO' if
> > d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'BASE_DISTRO')}">
> > FILESEXTRAPATHS_append = ":${BBPATH}"
> >
> > inherit deb-dl-dir
> >
> > @@ -111,7 +112,7 @@ def get_apt_source_mirror(d, aptsources_entry_list):
> > import re
> >
> > if bb.utils.to_boolean(d.getVar('ISAR_USE_CACHED_BASE_REPO')):
> > - premirrors = "\S* file://${REPO_BASE_DIR}/${BASE_DISTRO}\n"
> > + premirrors = "\S*
> > file://${REPO_BASE_DIR}/${BOOTSTRAP_BASE_DISTRO}\n">
> > else:
> > premirrors = d.getVar('DISTRO_APT_PREMIRRORS', True) or ""
> >
> > mirror_list = [entry.split()
> >
> > @@ -319,11 +320,15 @@ do_bootstrap() {
> >
> > "${ROOTFSDIR}/etc/apt/preferences.d/bootstrap"
> >
> > mkdir -p "${ROOTFSDIR}/etc/apt/sources.list.d"
> > if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
> >
> > - line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME}
> > main" + line="file:///base-apt/${BOOTSTRAP_BASE_DISTRO}
> > ${BASE_DISTRO_CODENAME} main"
> There is still a conceptual glitch here: BASE_DISTRO_CODENAME may not be
> the same as "HOST_BASE_DISTRO_CODENAME" - which does not exist.
>
> Jan
>
Currently there are no such cases (at least, I don't know any). Even if host/
target distros differ ("debian" and "raspbian"), they both use the same
codename.
Yes, technically we could add this variable "HOST_BASE_DISTRO_CODENAME" -
only if we want, for instance, cross-build debian-based distros using ubuntu-
based host or vice versa. But I'm not sure we really need it.
By the way, I'm close to come with v5 of patchset that normalizes download
directories. E.g., everything (both host and target packages) is in "download/
deb/debian-bullseye" even if DISTRO was changed. The only case when different
directories are used if their BASE distros are different (raspberry case).
Actually, there is still an issue with meta-iot2050 project. Deb files are
duplicated (and, I guess, downloaded twice) in "downloads/deb", without
"debian-bullseye". I didn't look at it deeply, but most probably it's related
with incorrect usage of "deb_dl_dir_*" functions in "npm.bbclass". Since Isar
commit "3afafbc" from Nov 26 2020 commit they should take 2 arguments, while
in "meta-iot2050" layer they are called with only one (commit 69cef06a from
Nov 23 2020).
> > if [ -z "${BASE_REPO_KEY}" ]; then
> >
> > line="[trusted=yes] ${line}"
> >
> > fi
> > echo "deb ${line}" >
> > "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> >
> > + line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME}
> > main" + if [ -z "${BASE_REPO_KEY}" ]; then
> > + line="[trusted=yes] ${line}"
> > + fi
> >
> > echo "deb-src ${line}" >>
> > "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list"
> >
> > mkdir -p ${ROOTFSDIR}/base-apt
> >
> > diff --git a/meta/recipes-devtools/base-apt/base-apt.bb
> > b/meta/recipes-devtools/base-apt/base-apt.bb index 506a28ff..05016d80
> > 100644
> > --- a/meta/recipes-devtools/base-apt/base-apt.bb
> > +++ b/meta/recipes-devtools/base-apt/base-apt.bb
> > @@ -13,7 +13,10 @@ KEYFILES ?= ""
> >
> > BASE_REPO_FEATURES ?= ""
> >
> > populate_base_apt() {
> >
> > - find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> > + distro="${1}"
> > + base_distro="${2}"
> > +
> > + find "${DEBDIR}"/"${distro}" -name '*\.deb' | while read package; do
> >
> > # NOTE: due to packages stored by reprepro are not modified, we
> > can
> > # use search by filename to check if package is already in repo.
> > In
> > # addition, md5sums are compared to ensure that the package is
> > the
> >
> > @@ -22,25 +25,25 @@ populate_base_apt() {
> >
> > # Check if this package is already in base-apt
> > ret=0
> >
> > - repo_contains_package "${REPO_BASE_DIR}/${BASE_DISTRO}"
> > "${package}" || + repo_contains_package
> > "${REPO_BASE_DIR}/${base_distro}" "${package}" ||>
> > ret=$?
> >
> > [ "${ret}" = "0" ] && continue
> > if [ "${ret}" = "1" ]; then
> >
> > - repo_del_package "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> > - "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
> > + repo_del_package "${REPO_BASE_DIR}"/"${base_distro}" \
> > + "${REPO_BASE_DB_DIR}"/"${base_distro}" \
> >
> > "${BASE_DISTRO_CODENAME}" \
> >
> > - "${base_apt_p}"
> > + "${package}"
> >
> > fi
> >
> > - repo_add_packages "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> > - "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
> > + repo_add_packages "${REPO_BASE_DIR}"/"${base_distro}" \
> > + "${REPO_BASE_DB_DIR}"/"${base_distro}" \
> >
> > "${BASE_DISTRO_CODENAME}" \
> > "${package}"
> >
> > done
> >
> > - find "${DEBSRCDIR}"/"${DISTRO}" -name '*\.dsc' | while read package;
> > do - repo_add_srcpackage "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \ -
> > "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}" \
> > + find "${DEBSRCDIR}"/"${distro}" -name '*\.dsc' | while read package;
> > do + repo_add_srcpackage "${REPO_BASE_DIR}"/"${base_distro}" \ +
> > "${REPO_BASE_DB_DIR}"/"${base_distro}" \
> >
> > "${BASE_DISTRO_CODENAME}" \
> > "${package}"
> >
> > done
> >
> > @@ -55,20 +58,20 @@ repo() {
> >
> > "${BASE_DISTRO_CODENAME}" \
> > "${WORKDIR}/distributions.in" \
> > "${KEYFILES}"
> >
> > -
> > - if [ -d '${BUILDCHROOT_HOST_DIR}/var/cache/apt' ] &&
> > - [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
> > - # We would need two separate repository paths for that.
> > - # Otherwise packages (especially the 'all' arch ones) from one
> > - # distribution can influence the package versions of the other
> > - # distribution.
> > - bbfatal "Different host and target distributions are currently
> > not supported." \ - "Try it without cross-build."
> > - fi
> > -
> > - populate_base_apt
> > + populate_base_apt "${DISTRO}" "${BASE_DISTRO}"
> >
> > repo_sanity_test "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
> >
> > "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}"
> >
> > +
> > + if [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
> > + repo_create "${REPO_BASE_DIR}"/"${HOST_BASE_DISTRO}" \
> > + "${REPO_BASE_DB_DIR}"/"${HOST_BASE_DISTRO}" \
> > + "${BASE_DISTRO_CODENAME}" \
> > + "${WORKDIR}/distributions.in" \
> > + "${KEYFILES}"
> > + populate_base_apt "${HOST_DISTRO}" "${HOST_BASE_DISTRO}"
> > + repo_sanity_test "${REPO_BASE_DIR}"/"${HOST_BASE_DISTRO}" \
> > + "${REPO_BASE_DB_DIR}"/"${HOST_BASE_DISTRO}"
> > + fi
> >
> > }
> >
> > python do_cache() {
--
Uladzimir Bely
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs
2022-11-29 11:29 ` Uladzimir Bely
@ 2022-11-29 12:07 ` Jan Kiszka
0 siblings, 0 replies; 7+ messages in thread
From: Jan Kiszka @ 2022-11-29 12:07 UTC (permalink / raw)
To: Uladzimir Bely, isar-users
On 29.11.22 12:29, Uladzimir Bely wrote:
> In the email from Tuesday, 29 November 2022 13:49:11 +03 user Jan Kiszka
> wrote:
>> On 28.11.22 12:05, Uladzimir Bely wrote:
>>> Downstreams may want to change DISTRO to some custom value.
>>> When cross-building, this leads to downloading packages for host
>>> and target distros to the different download subdirs.
>>>
>>> While base-apt is populated only from DISTRO download subdir,
>>> second cached (ISAR_USE_CACHED_BASE_REPO = "1") build fails due to
>>> missing packages in base-apt.
>>>
>>> The similar issue happens with cross-building raspberry targets
>>> since they use their own mirrors and DISTRO.
>>>
>>> Fix the issue by splitting base-apt by introducing HOST_BASE_DISTRO
>>> variable that is used instead of BASE_DISTRO for caching builds
>>> for host-related components (e.g., isar-bootstrap, buildchroot-host,
>>> sbuild-chroot-host). Target components still use BASE_DISTRO.
>>>
>>> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
>>> ---
>>>
>>> meta-isar/conf/distro/raspbian-stretch.conf | 2 +
>>> meta-isar/conf/distro/raspios-bullseye.conf | 2 +
>>> meta-isar/conf/distro/ubuntu-focal.conf | 2 +
>>> meta/conf/distro/debian-common.conf | 2 +
>>> .../isar-bootstrap/isar-bootstrap.inc | 9 +++-
>>> meta/recipes-devtools/base-apt/base-apt.bb | 47 ++++++++++---------
>>> 6 files changed, 40 insertions(+), 24 deletions(-)
>>>
>>> diff --git a/meta-isar/conf/distro/raspbian-stretch.conf
>>> b/meta-isar/conf/distro/raspbian-stretch.conf index c8f523b3..1ad0152f
>>> 100644
>>> --- a/meta-isar/conf/distro/raspbian-stretch.conf
>>> +++ b/meta-isar/conf/distro/raspbian-stretch.conf
>>> @@ -6,6 +6,8 @@
>>>
>>> BASE_DISTRO = "raspbian"
>>> BASE_DISTRO_CODENAME = "stretch"
>>>
>>> +HOST_BASE_DISTRO = "debian"
>>> +
>>>
>>> HOST_DISTRO ?= "debian-stretch"
>>> HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
>>>
>>> diff --git a/meta-isar/conf/distro/raspios-bullseye.conf
>>> b/meta-isar/conf/distro/raspios-bullseye.conf index 5e4a09c9..1f65c3cd
>>> 100644
>>> --- a/meta-isar/conf/distro/raspios-bullseye.conf
>>> +++ b/meta-isar/conf/distro/raspios-bullseye.conf
>>> @@ -6,6 +6,8 @@
>>>
>>> BASE_DISTRO = "raspios"
>>> BASE_DISTRO_arm64 = "debian"
>>>
>>> +HOST_BASE_DISTRO ?= "debian"
>>> +
>>>
>>> BASE_DISTRO_CODENAME = "bullseye"
>>> HOST_DISTRO ?= "debian-bullseye"
>>> HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
>>>
>>> diff --git a/meta-isar/conf/distro/ubuntu-focal.conf
>>> b/meta-isar/conf/distro/ubuntu-focal.conf index 379b5b30..084f8e3d 100644
>>> --- a/meta-isar/conf/distro/ubuntu-focal.conf
>>> +++ b/meta-isar/conf/distro/ubuntu-focal.conf
>>> @@ -8,6 +8,8 @@ require conf/distro/debian-common.conf
>>>
>>> BASE_DISTRO = "ubuntu"
>>> BASE_DISTRO_CODENAME = "focal"
>>>
>>> +HOST_BASE_DISTRO = "${BASE_DISTRO}"
>>> +
>>>
>>> DISTRO_APT_SOURCES_arm64 ?=
>>> "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}-ports.list"
>>> HOST_DISTRO_APT_SOURCES_arm64 ?= "conf/distro/${HOST_DISTRO}.list
>>> conf/distro/${HOST_DISTRO}-ports.list">
>>> diff --git a/meta/conf/distro/debian-common.conf
>>> b/meta/conf/distro/debian-common.conf index c18eebc2..ada7dc6e 100644
>>> --- a/meta/conf/distro/debian-common.conf
>>> +++ b/meta/conf/distro/debian-common.conf
>>> @@ -5,6 +5,8 @@
>>>
>>> BASE_DISTRO = "debian"
>>>
>>> +HOST_BASE_DISTRO ?= "${BASE_DISTRO}"
>>> +
>>>
>>> HOST_DISTRO_APT_SOURCES ?= "conf/distro/${HOST_DISTRO}.list"
>>> DISTRO_APT_SOURCES ?=
>>> "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}.list">
>>> diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
>>> b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc index
>>> f32d192e..14d876aa 100644
>>> --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
>>> +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
>>> @@ -29,6 +29,7 @@ DISTRO_BOOTSTRAP_BASE_PACKAGES_append_gnupg = ",gnupg"
>>>
>>> DISTRO_BOOTSTRAP_BASE_PACKAGES_append_https-support =
>>> "${@https_support(d)}" DISTRO_VARS_PREFIX ?= "${@'HOST_' if
>>> d.getVar('BOOTSTRAP_FOR_HOST') == '1' else ''}" BOOTSTRAP_DISTRO =
>>> "${@d.getVar('HOST_DISTRO' if d.getVar('BOOTSTRAP_FOR_HOST') == '1' else
>>> 'DISTRO')}">
>>> +BOOTSTRAP_BASE_DISTRO = "${@d.getVar('HOST_BASE_DISTRO' if
>>> d.getVar('BOOTSTRAP_FOR_HOST') == '1' else 'BASE_DISTRO')}">
>>> FILESEXTRAPATHS_append = ":${BBPATH}"
>>>
>>> inherit deb-dl-dir
>>>
>>> @@ -111,7 +112,7 @@ def get_apt_source_mirror(d, aptsources_entry_list):
>>> import re
>>>
>>> if bb.utils.to_boolean(d.getVar('ISAR_USE_CACHED_BASE_REPO')):
>>> - premirrors = "\S* file://${REPO_BASE_DIR}/${BASE_DISTRO}\n"
>>> + premirrors = "\S*
>>> file://${REPO_BASE_DIR}/${BOOTSTRAP_BASE_DISTRO}\n">
>>> else:
>>> premirrors = d.getVar('DISTRO_APT_PREMIRRORS', True) or ""
>>>
>>> mirror_list = [entry.split()
>>>
>>> @@ -319,11 +320,15 @@ do_bootstrap() {
>>>
>>> "${ROOTFSDIR}/etc/apt/preferences.d/bootstrap"
>>>
>>> mkdir -p "${ROOTFSDIR}/etc/apt/sources.list.d"
>>> if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then
>>>
>>> - line="file:///base-apt/${BASE_DISTRO} ${BASE_DISTRO_CODENAME}
>>> main" + line="file:///base-apt/${BOOTSTRAP_BASE_DISTRO}
>>> ${BASE_DISTRO_CODENAME} main"
>> There is still a conceptual glitch here: BASE_DISTRO_CODENAME may not be
>> the same as "HOST_BASE_DISTRO_CODENAME" - which does not exist.
>>
>> Jan
>>
>
> Currently there are no such cases (at least, I don't know any). Even if host/
> target distros differ ("debian" and "raspbian"), they both use the same
> codename.
>
> Yes, technically we could add this variable "HOST_BASE_DISTRO_CODENAME" -
> only if we want, for instance, cross-build debian-based distros using ubuntu-
> based host or vice versa. But I'm not sure we really need it.
Maybe worth documenting this assumption somewhere.
>
> By the way, I'm close to come with v5 of patchset that normalizes download
> directories. E.g., everything (both host and target packages) is in "download/
> deb/debian-bullseye" even if DISTRO was changed. The only case when different
> directories are used if their BASE distros are different (raspberry case).
Looking forward.
>
> Actually, there is still an issue with meta-iot2050 project. Deb files are
> duplicated (and, I guess, downloaded twice) in "downloads/deb", without
> "debian-bullseye". I didn't look at it deeply, but most probably it's related
> with incorrect usage of "deb_dl_dir_*" functions in "npm.bbclass". Since Isar
> commit "3afafbc" from Nov 26 2020 commit they should take 2 arguments, while
> in "meta-iot2050" layer they are called with only one (commit 69cef06a from
> Nov 23 2020).
Yes, was locally fixed already. Will be rolled out when the dependency
are stable.
Jan
--
Siemens AG, Technology
Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-11-29 12:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-28 11:05 [PATCH v4 0/3] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 1/3] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
2022-11-29 10:49 ` Jan Kiszka
2022-11-29 11:29 ` Uladzimir Bely
2022-11-29 12:07 ` Jan Kiszka
2022-11-28 11:05 ` [PATCH v4 2/3] testsuite: Run signed repro test in cross mode Uladzimir Bely
2022-11-28 11:05 ` [PATCH v4 3/3] testsuite: Replace bananapi with rpi-arm-v7 in signed repro tests Uladzimir Bely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox