[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