[Buildroot] [PATCH] package/pkg-download: use _DL_SUBDIR as root dir of generated archives

Peter Korsgaard peter at korsgaard.com
Sun Jun 2 18:18:05 UTC 2024


>>>>> "Yann" == Yann E MORIN <yann.morin.1998 at free.fr> writes:

 > Currently, when wegenerate archives, e.g. for git, svn, cargo, go, we
 > use the package _BASENAME_RAW as the root directory of the generated
 > archive. For example, for package foo at version 1.2.3, that would
 > generate an archive rooted at foo-1.2.3/.

 > This is usually what we want, except in one specific condition: when the
 > package shares its download with another package *and* it is a generated
 > archive. In that case, the root directory will be different for each of
 > the two packages, which is incorrect, but was so far benign: we never
 > had any hash for such generated archives, and they were only generated
 > in two cases:
 >   - linux and linux-headers
 >   - barebox and barebox-aux

 > As we skipp one directory depth when extracting the archives, we did not
 > care what the root directory was; whether it was that of one package or
 > the other was of no consequence.

 > But now that we can have hashes for archives generated from custom
 > versions, this breaks the usual case where the headers used for the
 > toolchains are those os the kernel to build for the target. In this
 > case, we may end up downloading the linux-headers package before we
 > download the linux  package, so we'd get the hash for an archive rooted
 > at linux-headers-XXX/, but the one for the linux package the archive
 > wouold be rooted at linux-XXX/, or we may end up (e.g. with parallel
 > builds) downloading the linux pakcage first and linux-headers next.

 > That would cause conflicts in hashes, as demonstrated by the only
 > defconfig we have in that situation, olimex_stmp157_olinuxino_lime.

 > _BASENAME_RAW is a construct that is expanded to include the RAWNAME
 > followed by a dash and the version, if there is a version, or with just
 > the RAWNAME when there is no version.

 > We tweak the download macro to use _DL_SUBDIR followed by the version.

 > This is only used by VCS backends (cvs, git, svn...) and so there will
 > always be a version string, so no need to duplicate the case without a
 > version like is done for _BASENAME_RAW

 > _DL_SUBDIR defaults to _RAWNAME, so this is a noop by default, unless
 > the package declares it shares its download with another one, in which
 > case the generated archive will now be rooted as for the shared package.

 > This was trigerred by:
 >     https://patchwork.ozlabs.org/project/buildroot/patch/20240602070634.597337-1-francois.perrad@gadz.org/

 > Reported-by: Peter Korsgaard <peter at korsgaard.com>
 > Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
 > Cc: Francois Perrad <francois.perrad at gadz.org>

That indeed caused quite some head scratching today.

Committed, thanks!

-- 
Bye, Peter Korsgaard


More information about the buildroot mailing list