public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix cross-build from base-apt when custom DISTRO name used
@ 2022-11-24  6:42 Uladzimir Bely
  2022-11-24  6:42 ` [PATCH 1/2] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
  2022-11-24  6:42 ` [PATCH 2/2] testsuite: Run signed repro test in cross mode Uladzimir Bely
  0 siblings, 2 replies; 4+ messages in thread
From: Uladzimir Bely @ 2022-11-24  6:42 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 fixes only the case when renamed DISTRO still uses the same
repositories as HOST_DISTRO. E.g, "raspberry pi" still can't be
rebuilt from local `base-apt` while host distro (e.g., Debian)
and target one (Raspbian / RaspiOS) use different repositories
and it happens that packages with the same name and version in
both repos have different size/md5sum and can't be placed to
`base-apt` repo simultaneously.

Also, testsute updated to cover cross-build case.

Uladzimir Bely (2):
  Populate base-apt from both DISTRO and HOST_DISTRO download dirs
  testsuite: Run signed repro test in cross mode

 meta/recipes-devtools/base-apt/base-apt.bb | 11 ++++++++---
 testsuite/citest.py                        |  2 +-
 2 files changed, 9 insertions(+), 4 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] Populate base-apt from both DISTRO and HOST_DISTRO download dirs
  2022-11-24  6:42 [PATCH 0/2] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
@ 2022-11-24  6:42 ` Uladzimir Bely
  2022-11-24  7:31   ` Jan Kiszka
  2022-11-24  6:42 ` [PATCH 2/2] testsuite: Run signed repro test in cross mode Uladzimir Bely
  1 sibling, 1 reply; 4+ messages in thread
From: Uladzimir Bely @ 2022-11-24  6:42 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.

Fix it here by populating base-apt from both download subdirs.

Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
---
 meta/recipes-devtools/base-apt/base-apt.bb | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/meta/recipes-devtools/base-apt/base-apt.bb b/meta/recipes-devtools/base-apt/base-apt.bb
index 506a28ff..e0d47625 100644
--- a/meta/recipes-devtools/base-apt/base-apt.bb
+++ b/meta/recipes-devtools/base-apt/base-apt.bb
@@ -13,7 +13,9 @@ KEYFILES ?= ""
 BASE_REPO_FEATURES ?= ""
 
 populate_base_apt() {
-    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
+    distro="${1}"
+
+    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
@@ -38,7 +40,7 @@ populate_base_apt() {
             "${package}"
     done
 
-    find "${DEBSRCDIR}"/"${DISTRO}" -name '*\.dsc' | while read package; do
+    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}" \
@@ -66,7 +68,10 @@ repo() {
                 "Try it without cross-build."
     fi
 
-    populate_base_apt
+    populate_base_apt "${DISTRO}"
+    if [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
+        populate_base_apt "${HOST_DISTRO}"
+    fi
     repo_sanity_test "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
         "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}"
 }
-- 
2.20.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/2] testsuite: Run signed repro test in cross mode
  2022-11-24  6:42 [PATCH 0/2] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
  2022-11-24  6:42 ` [PATCH 1/2] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
@ 2022-11-24  6:42 ` Uladzimir Bely
  1 sibling, 0 replies; 4+ messages in thread
From: Uladzimir Bely @ 2022-11-24  6:42 UTC (permalink / raw)
  To: isar-users

Both signed and unsigned tests are done in non-cross mode.
Changing CROSS_COMPILE to "1" for one of them allows to cover
cross-build from local `base-apt` repo without increasing
build time.

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] 4+ messages in thread

* Re: [PATCH 1/2] Populate base-apt from both DISTRO and HOST_DISTRO download dirs
  2022-11-24  6:42 ` [PATCH 1/2] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
@ 2022-11-24  7:31   ` Jan Kiszka
  0 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2022-11-24  7:31 UTC (permalink / raw)
  To: Uladzimir Bely, isar-users

On 24.11.22 07:42, 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.
> 
> Fix it here by populating base-apt from both download subdirs.
> 
> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> ---
>  meta/recipes-devtools/base-apt/base-apt.bb | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/meta/recipes-devtools/base-apt/base-apt.bb b/meta/recipes-devtools/base-apt/base-apt.bb
> index 506a28ff..e0d47625 100644
> --- a/meta/recipes-devtools/base-apt/base-apt.bb
> +++ b/meta/recipes-devtools/base-apt/base-apt.bb
> @@ -13,7 +13,9 @@ KEYFILES ?= ""
>  BASE_REPO_FEATURES ?= ""
>  
>  populate_base_apt() {
> -    find "${DEBDIR}"/"${DISTRO}" -name '*\.deb' | while read package; do
> +    distro="${1}"
> +
> +    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
> @@ -38,7 +40,7 @@ populate_base_apt() {
>              "${package}"
>      done
>  
> -    find "${DEBSRCDIR}"/"${DISTRO}" -name '*\.dsc' | while read package; do
> +    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}" \
> @@ -66,7 +68,10 @@ repo() {
>                  "Try it without cross-build."
>      fi
>  
> -    populate_base_apt
> +    populate_base_apt "${DISTRO}"
> +    if [ '${DISTRO}' != '${HOST_DISTRO}' ]; then
> +        populate_base_apt "${HOST_DISTRO}"
> +    fi

This assumes BASE_DISTRO(DISTRO) == HOST_DISTRO - well...

Let's do this properly, split base-apt into base-apt-{target,host}, just
like isar-bootstrap. On top, we can then switch from DISTRO/HOST_DISTRO
to their corresponding BASE_DISTROs, though that will be more
complicated as there is no simply algorithm for BASE_DISTRO(HOST_DISTRO)
- unless we assume downstream is not overloading HOST_DISTRO with
anything custom.

Jan

>      repo_sanity_test "${REPO_BASE_DIR}"/"${BASE_DISTRO}" \
>          "${REPO_BASE_DB_DIR}"/"${BASE_DISTRO}"
>  }

-- 
Siemens AG, Technology
Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-11-24  7:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-24  6:42 [PATCH 0/2] Fix cross-build from base-apt when custom DISTRO name used Uladzimir Bely
2022-11-24  6:42 ` [PATCH 1/2] Populate base-apt from both DISTRO and HOST_DISTRO download dirs Uladzimir Bely
2022-11-24  7:31   ` Jan Kiszka
2022-11-24  6:42 ` [PATCH 2/2] testsuite: Run signed repro test in cross mode Uladzimir Bely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox