The current implementation of buildroot depe dependency graphing
either does forward- or reverse-dependency traversal.
This patch enables buildroot to graph forward and reverse dependencies
on the graph for the same package: (Diagram Credit: Yann E. MORIN)
$ make pkg-d-graph-both-depends
pkg A -. .-> pkg E
\ /
pkg B ----> pkg D ----> pkg F
/ \
pkg C -' '-> pkg G
In the above example a single graph shows pkg {A,B,C} are needed
by pkg D, and pkg D is a dependency of pkg {E,F,G}.
Makefile help and manual are also updated.
Signed-off-by: Steve Hay <me@stevenhay.com>
[Arnout:
- remove DEPTH and RDEPTH, their functionality is already covered by
BR2_GRAPH_DEPS_OPTS;
- remove --rdepth, it was felt to not add sufficient added value;
- add the new target to the manual;
- fix flake8 errors.
]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Instead of having done_deps as a global variable, pass it as an argument
to the print_pkg_deps function. This will allow the recursive search to
be started multiple times.
Signed-off-by: Steve Hay <me@stevenhay.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Bump Linux to 6.6 and U-Boot to 2024.01.
Signed-off-by: Jan Kraval <jan.kraval@gmail.com>
[Romain:
- enable BR2_DOWNLOAD_FORCE_CHECK_HASHES and add hashes files
]
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Switch to extlinux instead of U-Boot boot script. Drop custom
boot script and genimage config. Instead use common orangepi
files from board/orangepi/common.
Signed-off-by: Jan Kraval <jan.kraval@gmail.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
This patch switches the board support of the Radxa Rock 5B from
using a custom kernel to mainline linux 6.7.4. Thereby patches,
which became redundant, are removed, as well as device tree
modifications and no longer needed hash files. The needed ethernet
drivers are activated via the kernel config fragment file. Also the
board support is switched from using a uboot script and a uEnv file
to using extlinux.
Signed-off-by: Kilian Zinnecker <kilian.zinnecker@mail.de>
Reviewed-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
This brings the NetworkManager init script in line with the standard
Buildroot init script pattern, including the script name.
Reload using SIGHUP is also supported now, note that the
NetworkManager documentation cautions that not all parameters can be
changed at runtime (without a full restart).
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* Use long options for start-stop-daemon
* Avoid --quiet, except for reload where the "stopping" message could
be confusing
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
The manual describes package/busybox/S01syslogd as the reference of
how an init script should be written. Include it from source instead
of having a copy in the manual to ensure actual code and manual stay
in sync.
Also use long options in the paragraph after the script to follow the
same style.
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
The manual refers to this script as a reference of how init scripts
should be written. The changes are:
* Use long form options for start-stop-daemon for clarity
* Use --exec on stop to ensure the right process gets stopped
* Avoid --quiet for clearer messages on failure
* Wait for the process to be gone during stop
* Avoid fixed wait between start and stop on restart
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
People can assume that e.g. Busybox options enabled in the package are
enabled when writing code for Buildroot. Anyone who uses custom
configurations that disable default options needs to make sure
relevant scripts etc. still work for themselves.
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
While applying, the package was renamed from libchicken to chicken, but
two references remained: in DEVELOPERS, and in the Config.in help text.
Fix both.
While we're at it, extend the help text by copying the first sentence of
the website.
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Add Kmon, a Rust-based, text-UI tool for managing Linux kernel
modules and monitoring kernel activities, providing a single
interface for various tools like dmesg and kmod.
Signed-off-by: Yu Chien Peter Lin <peterlin@andestech.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Currently everything is installed to target. There is also a possibility
to build a cross-compiler for the host, but that's for future work.
Currently also more is installed to the target than strictly necessary
for the interpreter to work.
Signed-off-by: Woodrow Douglass <wdouglass@carnegierobotics.com>
[Arnout:
- Rename to "chicken" instead of "libchicken".
- Fix alphabetical ordering in package/Config.in.
- Fix check-package warnings.
- Drop BR2_CHICKEN_INSTALL_INTERPRETER, always install everything to
target.
- Set ARCH=unused otherwise autodiscovery is triggered.
- Drop '-feature' argument, it is only used for external code and we
can't know what kind of "feature" values that that code expects.
- Make staging and target install identical.
- _MAKE_ARGUMENTS -> _MAKE_OPTS.
- Move DESTDIR to install commands only.
- Use MAKE1 only when installing and don't add variable for it.
- Add hash file.
]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Now that the configurations of boards stm32mp157a-dk1 and stm32mp157c-dk2
have the same software versions, it is possible to share the hash files as
well.
The patch uses the hash files for Arm Trusted Firmware, Linux, Linux
headers and U-Boot of stm32mp175a_dk1 also for stm32mp175c_dk2, and then
enables BR2_DOWNLOAD_FORCE_CHECK_HASHES. With this, we can now drop the
defconfig from .checkpackageignore.
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This fixes commit 51b4421758 (configs/raspberrypi*: bump kernel version
to 17f135b (6.6.28)).
Fixes:
make[3]: *** No rule to make target 'arch/arm/boot/dts/bcm2710-rpi-3-b.dtb'. Stop.
Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Add a defconfig to build an AArch64 U-Boot based firmware implementing
the subset of UEFI defined by EBBR[1], as well as a Linux OS disk image
booting with UEFI, to run on the Arm A-Profile Base RevC AEM FVP.
The generated firmware binaries can also be used to run another OS
supporting the EBBR specification.
[1]: https://github.com/ARM-software/ebbr
Signed-off-by: Vincent Stehlé <vincent.stehle@arm.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Commits b919d852e2 and
d991d0a3172c8716642f80d607f70b761186c9e6 recently bumped
prelink-cross, but this causes a build breakage in
gobject-introspection, because host-prelink-cross no longer
builds/install the prelink-rtld issue.
While the investigation is on-going, let's revert back to the previous
version of prelink-cross, which is known to work.
We however keep the patch from James, which has been accepted
upstream, and fixes a separate build issue.
Fixes:
/home/autobuild/autobuild/instance-8/output-1/host/or1k-buildroot-linux-gnu/sysroot/usr/bin/g-ir-scanner-lddwrapper: line 3: /home/autobuild/autobuild/instance-8/output-1/host/sbin/prelink-rtld: No such file or directory
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Root makefile imposes 'umask 0022', and this may be more restrictive than the
user's original umask - which could have provisions set to share files/dirs
with other users.
As an example, the imposed value makes the per-package download directories not
writeable for the group, but just for the owner - the user that issued the first
build that populated the per-package dl dir for the first time (say user A).
Thus, if a BR package changes its version (e.g. for buildroot update), and
another user (say user B, in the same group of A) starts a build, BR fails the
creation of package-xxx.tar.gz inside the dl dir, because user B has no write
permissions on that path. Furthermore, in the case of the git backend, this
makes the git cache not updatable by a different user. This is disruptive for a
host used by many users, all belonging to a certain group.
So, to allow sharing of a rw BR2_DL_DIR location among users, we save the
original umask value and restore it during the download process.
Signed-off-by: Luca Pesce <luca.pesce@vimar.com>
[Arnout:
- CURR_UMASK -> CUR_UMASK.
- BR2_ORIG_UMASK -> BR_ORIG_UMASK.
- Don't check if the umask is more permissive, apply it regardless. If
the user explicitly doesn't want to make their DL_DIR readable by
others, that's fine.
- Don't export BR_ORIG_UMASK.
- Only set BR_ORIG_UMASK if it we recurse, and only set umask if
BR_ORIG_UMASK is set.
- Add DOWNLOAD_SET_UMASK to simplify the latter.
]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Since we copied a piece from code from pexpect, we need to also follow
the license of pexpect. Effectively, that makes the file licensed under
both our default GPL-2.0 and pexpect's ISC license. This is already
hinted at in the comment inside _repl_sh_child, but let's make it
explicit by adding a license header to the file.
Ideally, of course, each file in Buildroot would have a license file.
This was done with the reuse tool:
reuse annotate -l GPL-2.0 -l ISC support/testing/infra/emulator.py
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
The qemu.run() method can break when a command happens to output the
string "# " to stdout. This is because qemu.run() detects when a command
has completed by searching for the shell prompt, which by default is
"# ". It then captures everything before the "# " as the commands
output, causing the rest of output to be lost.
Instead use the pexpect libraries REPLWrapper to handle running
commands. It has hooks to set a custom prompt and avoid some other
pitfalls of wrapping a shell.
We unfortunately can't reuse replwrap._repl_sh directly, because it
tries to spawn a command while we already have a qemu started. So we
need to copy that code into _repl_sh_child. While we're at it, also
define our own prompt strings.
Signed-off-by: Brandon Maier <brandon.maier@collins.com>
[Arnout:
- Make all arguments to _repl_sh_spawn non-optional.
- Move non_printable_insert to a local variable instead of an argument,
we don't need to override it.
- Copy the comment from _repl_sh that explains why non_printable_insert
is needed.
- Add a comment about timeouts.
- Rename spawn to child (we don't actually spawn anything so this felt
more natural, even though the class
- Use single quotes instead of triple quotes, and explicitly escape the
nested quotes.
]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
The current phrasing is not entirely clear: one could read it as if
Buildroot will detect if there's an update available in one of the
dependencies, which is quite the reverse of what we do. Rephrase the
sentence in a way that hopefully makes it clearer that we're just making
a hash of the dependencies.
While we're at it, also extend the sentence about offline builds a
little.
Suggested-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Now we have the post-process options, we can use them to pass the
manifest path instead of passing it through an environment variable.
For now, we support both. The environment variable approach will be
removed again later.
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
Currently, we have no explicit, dedicated way to pass information to the
download post-process scripts, even though we do already need to pass
the path to the manifest when it is not the default, which we do with an
environment variable.
We'll soon need to be able to pass additional information to
post-process scripts, like instructing cargo to not use a lock file when
the package is not locked.
Extend the dl-wrapper with a new option with an argument, where the
argument will be passed as-is to the post-process script.
We explicitly do not document this new variable, as it is expected to
only be used in our package infrastructures (although there is currently
exactly one package that will directly need it, and we hope to drop that
in the future).
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
We do have a few shell scripts that have source directives (either with
'source' or with '.'), and they all are currently either globally
ignored in .checkpackageignore, or have shellcheck directives to ignore
the source statement (SC1090).
So, we can safely instruct shellcheck where to lookup for sourced files;
that does not trigger any new error.
This will alow fixing some shellcheck errors in later commits.
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Ricardo Martincoski <ricardo.martincoski@datacom.com.br>
[Arnout: use long option]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>