Go to file
Yann E. MORIN 29df0eb414 package/pkg-download: use _DL_SUBDIR as root dir of generated archives
Currently, when we generate archives, e.g.  for git, svn, cargo or 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 skip 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 of 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
would be rooted at linux-XXX/, or we may end up (e.g. with parallel
builds) downloading the linux package 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_defconfig.

_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 triggered by:
    https://patchwork.ozlabs.org/project/buildroot/patch/20240602070634.597337-1-francois.perrad@gadz.org/

Reported-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Francois Perrad <francois.perrad@gadz.org>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
(cherry picked from commit ebe238f2b5)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-06-08 19:56:23 +02:00
.github .github: add a pull request warning that explains the mailing list workflow 2024-05-07 18:09:38 +02:00
arch arch/Config.in.x86: enable SSE2 on Pentium M 2024-06-08 13:05:27 +02:00
board configs/sheevaplug_defconfig: add hashes for u-boot and Linux 2024-05-27 07:56:24 +02:00
boot boot/barebox/Config.in: source argument needs quotation marks 2024-05-26 21:57:39 +02:00
configs configs/orangepi_pc_defconfig: u-boot 2024.01 needs host-openssl 2024-06-08 17:18:34 +02:00
docs docs/website/index.html: refer to Gitlab and lore 2024-06-08 10:10:57 +02:00
fs fs/cpio: allow users to provide their own dracut modules 2023-02-06 22:46:35 +01:00
linux {linux, linux-headers}: bump 4.19.x, 5.4.x, 5.10.x, 5.15.x, 6.1.x, 6.6.x, 6.8.x series 2024-06-08 18:53:47 +02:00
package package/pkg-download: use _DL_SUBDIR as root dir of generated archives 2024-06-08 19:56:23 +02:00
support support/testing: add mtd test 2024-06-08 18:54:51 +02:00
system system: expose BR2_ROOTFS_POST_SCRIPT_ARGS for PRE_BUILD scripts 2024-04-28 14:07:55 +02:00
toolchain toolchain/Config.in: update BR2_TOOLCHAIN_HAS_LIBATOMIC dependencies 2024-06-08 13:12:23 +02:00
utils utils/genrandconfig: switch to async/await format 2024-06-08 18:51:41 +02:00
.checkpackageignore package/gcc: update to 13.3.0 2024-06-08 19:04:38 +02:00
.clang-format .clang-format: initial import from Linux 5.15.6 2022-01-01 15:01:13 +01:00
.defconfig
.editorconfig editorconfig: fix wildcard expansion 2023-12-20 21:32:06 +01:00
.flake8 Revert ".flake8: fix check for 80/132 columns" 2021-01-02 17:38:20 +01:00
.gitignore
.gitlab-ci.yml support/misc/gitlab-ci.yml.in: retry a job only if it failed due to a runner issue 2023-08-27 10:09:37 +02:00
.shellcheckrc utils/check-package: improve shellcheck reproducibility 2022-07-25 23:52:47 +02:00
CHANGES Update for 2024.02.2 2024-05-07 09:30:06 +02:00
Config.in package/google-breakpad: needs C++17 2024-05-02 13:19:46 +02:00
Config.in.legacy toolchain: drop codescape mips toolchains 2024-03-22 20:51:35 +01:00
COPYING
DEVELOPERS DEVELOPERS: add myself for package/mtd 2024-06-08 18:55:47 +02:00
Makefile Update for 2024.02.2 2024-05-07 09:30:06 +02:00
Makefile.legacy Remove BR2_DEPRECATED 2016-10-15 23:14:45 +02:00
README docs: move the IRC channel away from Freenode 2021-05-29 22:16:23 +02:00

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on OFTC IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches