1223 Commits
Author SHA1 Message Date
Peter Korsgaard d374a736d8 Kickoff 2026.05 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-03-04 09:20:22 +01:00
Peter Korsgaard 52ee2f5644 Update for 2026.02
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-03-04 09:11:17 +01:00
Peter Korsgaard 8195c73ca3 Update for 2026.02-rc3
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-03-02 13:11:23 +01:00
Peter Korsgaard 50b3b887cb Update for 2026.02-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-24 18:43:38 +01:00
Peter Korsgaard c97a7ad4aa Update for 2026.02-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2026-02-17 10:29:26 +01:00
Florian Larysch 63877f9e86 support/misc/relocate-sdk.sh: pre-calculate files in need of relocation
Currently, the relocate-sdk.sh script scans the whole extracted SDK tree
to find instances of paths it needs to replace, which can take a
significant amount of time when the SDK is large, particularly relative
to the number of files that actually need to change.

However, the resulting list only depends on the SDK tarball itself, so
we can calculate it at build time and ship it with the tarball so
relocate-sdk.sh can use it directly.

Testing this on my machine with somewhat IOPS-limited rotating media,
the time goes down from:

$ time ./relocate-sdk.sh
Relocating the buildroot SDK from [...] to [...] ...
./relocate-sdk.sh  5.19s user 26.21s system 9% cpu 5:34.40 total

To:

$ time ./relocate-sdk.sh
Relocating the buildroot SDK from [...] to [...] ...
./relocate-sdk.sh  0.49s user 0.29s system 103% cpu 0.749 total

Signed-off-by: Florian Larysch <fl@n621.de>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
2026-02-04 10:44:01 +01:00
Fiona Klute fe48905080 Makefile: add check-package-external target
The new target provides a convenient way to run utils/check-package on
any external trees, using .checkpackageignore files from the
respective trees if present.

While .checkpackageignore should be used as little as possible, in a
few cases adding overrides for false-positives to the affected files
is not feasible, a practical example of this is a Markdown file
misidentified as Python by libmagic (likely due to code blocks).

Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
[Arnout: set ${ignore} explicitly to empty, in case it exists in the
environment.]
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
2026-02-03 11:35:32 +01:00
Peter Korsgaard 6ddb75786e Kickoff 2026.02 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-12-12 08:21:41 +01:00
Peter Korsgaard 08d71521d3 Update for 2025.11
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-12-11 23:46:12 +01:00
Peter Korsgaard 2b4ee4e72f Update for 2025.11-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-11-30 20:19:47 +01:00
Yann E. MORIN 793ebd5d28 support/scripts/check-merged: use getopts instead of getopt
Commit 1187c34d88 (support/scripts: move merged-usr errors message
into check-merged-usr.sh) introduced the use of getopt to parse its
options; doing so allowed to use long option (with two leading dashes),
which is more descriptive than the usual one-character options.

However, getopt is part of util-linux; it is not a shell built-in.
util-linux is not a prerequisite of Buildroot, so we may end up running
on a system where it is missing.

We could add host-util-linux as a dependency when the system does not
provide getopt, but that's not very nice; even though host-skeleton does
not need to check for merged-bin for now, it does not need getopt, and
thus we could add host-util-linux (which depends on host-skeleton) as a
dependency of skeleton-custom. But that will not be tenable over the
long run, especially if/when we do a merged-bin in host dir.

Requiring that util-linux be installed system-wide is not nice either;
it's an additional requirement on the host.

We can do like we do in the oter scripts, though: use the shell built-in
getopts. Its usage is slightly different, and does not support long
options. As it's just for use in an internal script, we can live with
the less descriptive options, though.

Switch to using getopts, it removes the need for a new host dependency.

Fixes: 1187c34d88
Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-11-22 13:29:45 +01:00
Peter Korsgaard 36a2dc7f5e Update for 2025.11-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-11-20 21:49:56 +01:00
Yann E. MORIN 428ac6fcc4 system: add support for merged /usr/sbin (aka merged-bin)
Starting with version 256 [0], systemd warns when /usr/bin and
/usr/sbin are different directories; in the future, it may even
refuse to boot in such a situation.

Add support for merged-bin, not unlike the support we have for
merged-usr; we also make merged-bin a sub-case of merged-usr
(i.e. it is not possible to do merged-bin without merged-usr).

[0] https://github.com/systemd/systemd/blob/v256/NEWS#L265

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Acked-by: Arnout Vandecappelle <arnout@mind.be>
Acked-by: TIAN Yuanhao <tianyuanhao3@163.com>
Cc: Edgar Bonet <bonet@grenoble.cnrs.fr>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2025-11-05 23:10:20 +01:00
Yann E. MORIN fc3cdc6d1e support/scripts; teach check-merged what to check
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2025-11-05 23:10:18 +01:00
Yann E. MORIN 0eb873bda0 support/scripts: rename check-merged-usr.sh
We're going to need it to check merged-bin, so the naming would be
misleading as it would no longer be just about merged-usr.

Also drop the extension, it's useless.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Acked-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2025-11-05 23:10:17 +01:00
Yann E. MORIN 1187c34d88 support/scripts: move merged-usr errors message into check-merged-usr.sh
By moving the loop over the overlays into the script, we can generate
better error messages about how and why a skeleton or a specific overlay
is improperly setup for merged-usr.

We can also now rely on its exit code to decide whether the skeleton or
the overlays are properly setup, rather than stash the stdout/stderr to
a Makefile variable and test the emptiness thereof.

Introduce a --type option to pass the type of root to verify, for better
error reporting. This will incidentally be usefull in a future commit,
when we need to take different actions based on whether the root is a
skeleton or an overlay.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2025-11-05 23:10:14 +01:00
Peter Korsgaard e399aadfdb Kickoff 2025.11 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-09-08 14:14:57 +02:00
Peter Korsgaard 3386677f0a Update for 2025.08
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-09-07 22:58:34 +02:00
Peter Korsgaard 56d9d5e8f0 Update for 2025.08-rc3
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-08-28 08:01:55 +02:00
Peter Korsgaard 5d46144eb3 Update for 2025.08-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-08-21 09:08:59 +02:00
Peter Korsgaard 802d093060 Makefile: release: make .tar.gz reproducible
Drop the timestamp from the .tar.gz to make it reproducible, similar to how
it is done in support/download/helpers.

Notice: .xz files do not contain a timestamp

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-12 23:43:30 +02:00
Peter Korsgaard fa855cbe6e Makefile: release: make tarball reproducible
The tarball created by git archive is reproducible, but when we append the
generated manual we leak current time and the username/uid of the person
running make release:

tar tvf buildroot-2025.08-rc1.tar.gz | tail
-rwxrwxr-x root/root      5512 2025-08-11 13:22 buildroot-2025.08-rc1/utils/update-rust
drwxr-xr-x peko/peko         0 2025-08-11 17:39 buildroot-2025.08-rc1/
drwxr-xr-x peko/peko         0 2025-08-11 17:38 buildroot-2025.08-rc1/docs/
drwxr-xr-x peko/peko         0 2025-08-11 17:39 buildroot-2025.08-rc1/docs/manual/
-rw-r--r-- peko/peko      5738 2025-08-11 17:38 buildroot-2025.08-rc1/docs/manual/docbook-xsl.css
-rw-r--r-- peko/peko     19029 2025-08-11 17:38 buildroot-2025.08-rc1/docs/manual/github_hash_mongrel2.png
-rw-r--r-- peko/peko    638866 2025-08-11 17:39 buildroot-2025.08-rc1/docs/manual/manual.pdf
-rw-r--r-- peko/peko    587892 2025-08-11 17:38 buildroot-2025.08-rc1/docs/manual/manual.html
-rw-r--r-- peko/peko    393514 2025-08-11 17:39 buildroot-2025.08-rc1/docs/manual/manual.text
-rw-r--r-- peko/peko    117499 2025-08-11 17:38 buildroot-2025.08-rc1/docs/manual/logo.png

Fix that by forcing uid as root and setting mtime to the latest commit,
similar to how we do it in support/download/{git,helpers}.

Notice that we do not use --numeric-owner to match the output of git
archive, so it does rely on uid 0=root, which is very likely but not
guaranteed.

Reported-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-12 23:43:22 +02:00
Peter Korsgaard 3fc5d821eb Makefile: release: make manual build reproducible
The manual contains build timestamps like:

Buildroot 2025.08-rc1 manual generated on 2025-08-12 06:43:37 UTC

Making it not reproducible.  Luckily asciidoc respects SOURCE_DATE_EPOCH, so
use that to use the timestamp of the latest git commit instead.

Notice: The release and manual targets are marked as noconfig targets (and
need to stay like that for make release), so we cannot use the
BR2_REPRODUCIBLE logic.  Instead manually set SOURCE_DATE_EPOCH.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-12 23:43:16 +02:00
Peter Korsgaard 1349cd6031 Update for 2025.08-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-08-11 13:22:07 +02:00
Yann E. MORIN 117ccb6cc4 Makefile: silence list-defconfigs for br2-external with no defconfig
When a br2-external tree has no defconfig, list-defconfig currently
whines with an error from find:

    find: ‘[...]/my-external/configs’: No such file or directory

Fix that by only running find if the directory exists.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-09 18:52:39 +02:00
Yann E. MORIN 161d7ded43 Makefile: fix list-defconfigs for br2-external with weird descriptions
When a br2-external tree description contains an odd number of single
quotes, list-defconfigs will fail with a shell error message:

    /bin/sh: -c: line 1: unexpected EOF while looking for matching `"'
    make[1]: *** [Makefile:1243: list-defconfigs] Error 2

Whoever wrote that code will have to write this sentence 100 times
on the blackboard:

     Never, ever pass user-provided data in a printf format.

(see commit 49117c1028 (core: support description for br2-external
trees); dang, I knew it... And I should have known better when I wrote
that code, damit...)

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-09 18:51:54 +02:00
Peter Korsgaard 2b5544ab7a Makefile: unexport TOPDIR to fix gnu-efi >= 3.0.18 build issue
gnu-efi fails to build if TOPDIR is exported in the environment since the
move to version 3.0.18 in commit 9efeb7e914 ("package/gnu-efi: bump to
version 3.0.18").

The reason is the change in TOPDIR logic introduced by upstream commit
31913f8489 ("Make: make TOPDIR actually work and get rid of unused CDIR"):

https://github.com/ncroxon/gnu-efi/commit/31913f8489f8e6eb624b6447d2e5cf1f6367bebf

export TOPDIR=foo; make gnu-efi
...
/path/to/buildroot/output-gnuefi/host/bin/aarch64-linux-ld: cannot find
 /path/to/buildroot/output-gnuefi/build/gnu-efi-4.0.0//apps/../aarch64/gnuefi/crt0-efi-aarch64.o:
 No such file or director
make[2]: *** [Makefile:89: apps] Error 2
make[1]: *** [package/pkg-generic.mk:273: /path/to/buildroot/output-gnuefi/build/gnu-efi-4.0.0/.stamp_built] Error 2
make: *** [Makefile:23: _all] Error 2

As a workaround, unexport TOPDIR like we do for other sensitive environment
variables.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-06-25 19:24:54 +02:00
Peter Korsgaard da04cfa26c Makefile: sort unexport lines
The list of environment variables to unexport has grown organically over the
years and is no longer sorted. Sort it alphabetically for clarity.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-06-25 19:24:54 +02:00
Peter Korsgaard fa3549dca7 Kickoff 2025.08 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-06-09 22:45:29 +02:00
Peter Korsgaard fcde5363aa pdate for 2025.05
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-06-09 22:21:47 +02:00
Peter Korsgaard 1bdb79ba78 Update for 2025.05-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-05-28 22:05:47 +02:00
Peter Korsgaard 37a715969f Update for 2025.05-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-05-19 12:33:23 +02:00
Yann E. MORIN 5009fd2436 Makefile: include defconfigs in sub-directories in list-defconfigs
Currently, list-defconfigs only lists the defconfigs that live
 live in the top-level configs/ directory. For the in-tree defconfigs
this is indeed the case, but it is possible to manage the configs in a
br2-external tree with sub-directories.

A few examples:
  - for a given board, a first defconfig is the full system, and a
    second is the rescue system;
  - for a given board, two defconfigs implement an A/B feature set;
  - a set of configurations targetting various famillies of systems each
    running on different hardware, sorted per familly.

Extend list-defconfigs to look for and report defconfigs in
sub-directories of the top-level configs/.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
2025-05-16 19:45:35 +02:00
Julien Olivain cca8d68461 Config.in: introduce BR2_HOST_GCC_AT_LEAST_{12..15}
Fedora 42 is planned to be released on 2025-04-22 [1].
It is also planned to include the upcoming gcc 15 release.
Gcc 15 is changing the default C language from -std=gnu17
to -std=gnu23 [2].

This change is expected to possibly introduce build failures [3].
In order to be prepared to fix those, this commit introduces the
BR2_HOST_GCC_AT_LEAST_{12..15} symbols.

[1] https://fedorapeople.org/groups/schedule/f-42/f-42-key-tasks.html
[2] https://gcc.gnu.org/gcc-15/changes.html#c
[3] https://savannah.gnu.org/support/?111150

Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2025-04-21 23:50:50 +02:00
Peter Korsgaard 55cfcf52e1 Kickoff 2025.05 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-03-18 15:38:53 +01:00
Peter Korsgaard aa2d7ca53f Update for 2025.02
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-03-17 18:54:20 +01:00
Peter Korsgaard 53f74f49c0 Update for 2025.02-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-03-13 11:09:27 +01:00
Peter Korsgaard a031b51637 Update for 2025.02-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-02-28 17:27:41 +01:00
Peter Korsgaard c19663f557 Kickoff 2025.02 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-12-08 14:00:16 +01:00
Peter Korsgaard 8f9ce0c913 Update for 2024.11
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-12-08 11:18:01 +01:00
Peter Korsgaard 0901a670a8 Update for 2024.11-rc3
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-12-05 18:06:59 +01:00
Peter Korsgaard 81d111dbd4 Update for 2024.11-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-11-23 11:00:53 +01:00
Peter Korsgaard 46fa2fcb7a Update for 2024.11-rc1
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-11-13 18:59:29 +01:00
Yann E. MORIN a87abcf6da Makefile: run PPD and RPATH fixup in host-fialize
Currently, the gdbinit is generated and installed during post install
hooks, either from the gdb package, or from the external-toolchain
package. When using per-package directories (PPD), the staging directory
of the either package is stored in the generated gdbinit, which is not
going to be valid when all the PPD staging dirs get merged into the
final staging: it would lack any library installed afterwards, i.e.
mostly everything would be missing (but the libraries from the C
toolchain in the case of an external toolchain).

Similarly, all the RPATH will point to various PPD drectories. This
does not cause any issue when the final host is aggregated, because the
PPD directories still exist when we call programs from there (e.g. from
the fs infra, or from post-image scripts).

However, we knew that would not always be possible to keep the PPD
directories: we have the prepare-sdk rule that runs a cleanup pass on
the RPATH, and also applies the generic PPD fixups.

When we introduced prepare-sdk in c32ad51cbf (core/sdk: generate the
SDK tarball ourselves), we did not yet have support for PPD for the host
directory, and especially, we did not have the host-finalize rule, which
was only introduced in d0f4f95e39 (Makefile: rework main directory
creation logic) which kick-started the introduction of PPD.

At that point, we did not realise that the rpath fixups from
prepare-sdk, would be better moved to the new host-finalize rule,
because that had no impact unless one would need an SDK.

Later, in 25e60fbe1c (Makefile: fix SDK relocation for
per-package-dirs), we eventually introduced the PPD generic fixups in
the prepare-sdk rule. Again, we did not realise that those fixups would
be better placed in the host-finalize rule rather than the prepare-sdk.

While fixing the RPATH in host-finalize is not critical, fixing up the
PPD paths actually is, as the gdbinit case demonstrate.

As such, move the PPD fixups to the host-finalize step, and while at it,
also move the RPATH fixups.

This now does not leave much to do in the prepare-sdk step, and that
could very well be moved to the host-finalize rule as well. However,
some people may have started to rely on prepare-sdk in its 6 years of
existence, and the little script it installs is not needed unless one
really needs an SDK. So leave it as it is for now.

Reported-by: Casey Reeves <casey@xogium.me>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Tested-by: Casey Reeves <casey@xogium.me>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Brandon Maier <Brandon.Maier@collins.com>
Tested-by: Brandon Maier <brandon.maier@collins.com>
Acked-by: TIAN Yuanhao <tianyuanhao3@163.com>
2024-09-07 21:33:49 +02:00
Peter Korsgaard 2ed96c4263 Kickoff 2024.11 cycle
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-09-06 15:57:55 +02:00
Peter Korsgaard 769d71ae84 Update for 2024.08
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-09-06 15:01:24 +02:00
Peter Korsgaard 30450215ae Update for 2024.08-rc3
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-09-01 21:48:24 +02:00
Peter Korsgaard 106a098b7b Update for 2024.08-rc2
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-08-22 18:21:10 +02:00
Thomas Petazzoni 32161a3c4e Update for 2024.08-rc1
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-08-08 22:55:41 +02:00
Brandon Maier b65856fbb0 Revert "Create a .gitignore file in the CANONICAL_O directory"
The packages 'python-jsonschema-specifications', 'pydantic-core', and
likely other packages based on Python maturin silently stopped
installing files to the host and target directories after commit
a14c862c08.

A similar issue was reported by the Conda project[1]. It seems some
build tools scan for gitignore files to decide what files to build
and install.

I attempted various combinations of gitignore patterns including
mimicking the Conda project's gitignore[2], but the only thing that has
worked reliably is the original `/output` ignore in the root Buildroot
directory.

This reverts commit a14c862c08.

[1] https://github.com/PyO3/maturin/issues/1911
[2] https://github.com/conda-forge/conda-smithy/blob/main/conda_smithy/feedstock_content/.gitignore
Reported-by: Bryan Brattlof <bb@ti.com>
Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-07-26 09:21:08 +02:00