| Message ID | 20260727112812.2255297-13-akarpovich@ilbers.de |
|---|---|
| State | New |
| Headers | show |
| Series | Improving base-apt usage | expand |
On 27.07.26 13:26, Aliaksei Karpovich wrote: > It fixes following error: > | E: Internal Error, Pathname to install is not absolute 'gcc-14-base_14.2.0-19_arm64.deb' > Again the question when this is relevant. Do we want it earlier, independent of this series? Jan > In case of cross compile the arch of package is lost. F.e. the > gcc-14-base_14.2.0-19_arm64.deb will be transformed in > gcc-14-base name and amd64 version will be downloaded instead of > arm64. We should take into account arch and version. > After this fix package name will be extracted in following way: > gcc-14-base_14.2.0-19_arm64.deb -> gcc-14-base:arm64=14.2.0-19 > > Signed-off-by: Aliaksei Karpovich <akarpovich@ilbers.de> > --- > meta/classes-recipe/rootfs.bbclass | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass > index 2ffbbca7..f6913cff 100644 > --- a/meta/classes-recipe/rootfs.bbclass > +++ b/meta/classes-recipe/rootfs.bbclass > @@ -374,13 +374,15 @@ rootfs_install_pkgs_isar_download() { > # Command apt-get install do not cache packages from local repos > # We can obtain non cached package URIs by recalling install command here > # No need in export those files to dl_dir, so we can run it right after > + # Package name extraction from URI for download : libmagic-mgc_1%3a5.46-5_amd64.deb -> libmagic-mgc:amd64=1:5.46-5 > rootfs_cmd --bind "${ROOTFSDIR}/var/cache/apt/archives" /var/cache/apt/archives \ > --bind "${WORKDIR}/dpkg/lock" /var/lib/dpkg/lock \ > --bind "${WORKDIR}/dpkg/lock-frontend" /var/lib/dpkg/lock-frontend \ > --chdir "/var/cache/apt/archives" \ > ${ROOTFSDIR} \ > -- /usr/bin/sh -c "apt-get ${ROOTFS_APT_ARGS} --print-uris ${ROOTFS_PACKAGES} | \ > - sed -n \"s|^[^ ]* \([^_]*\)_[^_]*_[^_]*\\.deb .*|\1|p\" | \ > + sed -n 's|^[^ ]* \([^_]*\)_\(.*\)_\([^_]*\)\.deb .*|\1:\3=\2|p' | \ > + sed 's/%3a/:/g' | \ > xargs -r apt-get download" > } >
diff --git a/meta/classes-recipe/rootfs.bbclass b/meta/classes-recipe/rootfs.bbclass index 2ffbbca7..f6913cff 100644 --- a/meta/classes-recipe/rootfs.bbclass +++ b/meta/classes-recipe/rootfs.bbclass @@ -374,13 +374,15 @@ rootfs_install_pkgs_isar_download() { # Command apt-get install do not cache packages from local repos # We can obtain non cached package URIs by recalling install command here # No need in export those files to dl_dir, so we can run it right after + # Package name extraction from URI for download : libmagic-mgc_1%3a5.46-5_amd64.deb -> libmagic-mgc:amd64=1:5.46-5 rootfs_cmd --bind "${ROOTFSDIR}/var/cache/apt/archives" /var/cache/apt/archives \ --bind "${WORKDIR}/dpkg/lock" /var/lib/dpkg/lock \ --bind "${WORKDIR}/dpkg/lock-frontend" /var/lib/dpkg/lock-frontend \ --chdir "/var/cache/apt/archives" \ ${ROOTFSDIR} \ -- /usr/bin/sh -c "apt-get ${ROOTFS_APT_ARGS} --print-uris ${ROOTFS_PACKAGES} | \ - sed -n \"s|^[^ ]* \([^_]*\)_[^_]*_[^_]*\\.deb .*|\1|p\" | \ + sed -n 's|^[^ ]* \([^_]*\)_\(.*\)_\([^_]*\)\.deb .*|\1:\3=\2|p' | \ + sed 's/%3a/:/g' | \ xargs -r apt-get download" }
It fixes following error: | E: Internal Error, Pathname to install is not absolute 'gcc-14-base_14.2.0-19_arm64.deb' In case of cross compile the arch of package is lost. F.e. the gcc-14-base_14.2.0-19_arm64.deb will be transformed in gcc-14-base name and amd64 version will be downloaded instead of arm64. We should take into account arch and version. After this fix package name will be extracted in following way: gcc-14-base_14.2.0-19_arm64.deb -> gcc-14-base:arm64=14.2.0-19 Signed-off-by: Aliaksei Karpovich <akarpovich@ilbers.de> --- meta/classes-recipe/rootfs.bbclass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)