Difference between revisions of "Buildroot"
(→Developer days) |
(→Nice to have) |
||
(36 intermediate revisions by 8 users not shown) | |||
Line 8: | Line 8: | ||
* [https://patchwork.ozlabs.org/project/buildroot/list/ Project patchwork] | * [https://patchwork.ozlabs.org/project/buildroot/list/ Project patchwork] | ||
* [[Buildroot:ReproducibleBuilds | The reproducible builds work]] | * [[Buildroot:ReproducibleBuilds | The reproducible builds work]] | ||
+ | * [[Buildroot:Top_Level_Parallel_Build | The top-level parallel build work]] | ||
+ | * [[Buildroot:Security_Vulnerability_Management | Security Vulnerability Management]] | ||
+ | * [[Buildroot:Language_package_managers_and_dependencies | Language package managers and downloading dependencies (go mod, cargo, php compose)]] | ||
== Developer days == | == Developer days == | ||
Upcoming: | Upcoming: | ||
− | + | * [[Buildroot:DeveloperDaysFOSDEM2023 | Buildroot Developer Days]], 6-8 February 2023, Brussels, Belgium, after [https://fosdem.org/2023/ FOSDEM] | |
Past: | Past: | ||
+ | * [[Buildroot:DeveloperDaysELCE2022 | Buildroot Developer Days]], 17-18 September 2022, Dublin, Ireland, after [https://events.linuxfoundation.org/open-source-summit-europe/about/embedded-linux-conference/ ELCE] | ||
+ | * [[Buildroot:VirtualDeveloperDaysSummer2020 | Virtual Buildroot Developer Days]], July 27, August 28, August 29, 2020 | ||
+ | * [[Buildroot:DeveloperDaysFOSDEM2020 | Buildroot Developer Days]], 3-5 February 2020, Brussels, Belgium, after [http://fosdem.org FOSDEM] | ||
* [[Buildroot:DeveloperDaysELCE2019 | Buildroot Developer Days]], 25-27 October 2019, Lyon, France, before [https://events19.linuxfoundation.org/events/embedded-linux-conference-europe-2019/ ELCE] | * [[Buildroot:DeveloperDaysELCE2019 | Buildroot Developer Days]], 25-27 October 2019, Lyon, France, before [https://events19.linuxfoundation.org/events/embedded-linux-conference-europe-2019/ ELCE] | ||
* [[Buildroot:DeveloperDaysFOSDEM2019 | Buildroot Developer Days]], 4-6 February 2019, Brussels, Belgium, after [http://fosdem.org FOSDEM] | * [[Buildroot:DeveloperDaysFOSDEM2019 | Buildroot Developer Days]], 4-6 February 2019, Brussels, Belgium, after [http://fosdem.org FOSDEM] | ||
Line 45: | Line 51: | ||
* [http://elcabsna2014.sched.org/event/ce9732e662300bace37607a6adacf82b Buildroot: what's new], Thomas Petazzoni, Embedded Linux Conference, 1 May 2014, San Jose, United States. [http://elinux.org/images/1/1d/Petazzoni-buildroot-whats-new.pdf Slides], [http://free-electrons.com/pub/video/2014/elc/elc-2014-thomas-petazzoni-buildroot.webm HD video], [http://free-electrons.com/pub/video/2014/elc/elc-2014-thomas-petazzoni-buildroot-450p.webm Low-res video], [http://events.linuxfoundation.org/sites/events/files/Buildroot%20What%27s%20New%20-%20Thomas%20Petazzoni-%20Free%20Electrons.mp3 Audio only] | * [http://elcabsna2014.sched.org/event/ce9732e662300bace37607a6adacf82b Buildroot: what's new], Thomas Petazzoni, Embedded Linux Conference, 1 May 2014, San Jose, United States. [http://elinux.org/images/1/1d/Petazzoni-buildroot-whats-new.pdf Slides], [http://free-electrons.com/pub/video/2014/elc/elc-2014-thomas-petazzoni-buildroot.webm HD video], [http://free-electrons.com/pub/video/2014/elc/elc-2014-thomas-petazzoni-buildroot-450p.webm Low-res video], [http://events.linuxfoundation.org/sites/events/files/Buildroot%20What%27s%20New%20-%20Thomas%20Petazzoni-%20Free%20Electrons.mp3 Audio only] | ||
* "Buildroot: what is new", Peter Korsgaard, Embedded Linux Conference Europe, 25 October 2013, Edinburgh, UK. [http://elinux.org/images/2/23/Buildroot-whats-new-elce2013.pdf Slides], [https://www.youtube.com/watch?v=0G_yJ50RA3I Video]. | * "Buildroot: what is new", Peter Korsgaard, Embedded Linux Conference Europe, 25 October 2013, Edinburgh, UK. [http://elinux.org/images/2/23/Buildroot-whats-new-elce2013.pdf Slides], [https://www.youtube.com/watch?v=0G_yJ50RA3I Video]. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==List of forks== | ==List of forks== | ||
+ | * [https://github.com/home-assistant/operating-system Home Assistant Operating System]. Home Assistant Operating System (formerly HassOS) is an operating system optimized for hosting Home Assistant and its Add-ons. | ||
+ | * [https://github.com/openil/openil OpenIL]. OpenIL is an open source project based on Buildroot and designed for embedded industrial solution. | ||
* [https://github.com/nezticle/RaspberryPi-BuildRoot Bsquask SDK]. A Rasberry-Pi related fork. | * [https://github.com/nezticle/RaspberryPi-BuildRoot Bsquask SDK]. A Rasberry-Pi related fork. | ||
− | |||
− | |||
* [https://github.com/albertd/buildroot-rpi]. Another RPi related fork, with a lot of focus on Qt5 and GStreamer (appears to be defunct). | * [https://github.com/albertd/buildroot-rpi]. Another RPi related fork, with a lot of focus on Qt5 and GStreamer (appears to be defunct). | ||
* [https://github.com/Openwide-Ingenierie/buildroot-submodule Buildroot Submodule]. Not a fork, but a convenience layer on top of buildroot. | * [https://github.com/Openwide-Ingenierie/buildroot-submodule Buildroot Submodule]. Not a fork, but a convenience layer on top of buildroot. | ||
Line 70: | Line 65: | ||
This is a list of improvements that we would like to see in buildroot. Feel free to add suggestions here. If you're working on one of these items, put your name and the date behind it, to avoid duplicate work. | This is a list of improvements that we would like to see in buildroot. Feel free to add suggestions here. If you're working on one of these items, put your name and the date behind it, to avoid duplicate work. | ||
− | There are a number of patches that have been determined to be useful but for various reasons nobody currently has time to review or test them. Anybody, especially a person new to buildroot, is welcome to adopt these patches and resubmit them to the mailing list. | + | There are a number of patches that have been determined to be useful but for various reasons nobody currently has time to review or test them. Anybody, especially a person new to buildroot, is welcome to adopt these patches and resubmit them to the mailing list. |
=== Packages === | === Packages === | ||
Line 78: | Line 73: | ||
==== Important ==== | ==== Important ==== | ||
− | * | + | * Instead of building the Go compiler, add support for using a pre-compiled Go compiler, like we do for Rust |
− | * | + | * Instead of building host-nodejs, add support for using a pre-compiled NodeJS for the host |
− | + | * Improve the imx-gpu-viv package to not install everything. See https://lore.kernel.org/buildroot/20210805233615.4e69d63d@windsurf/T/#u | |
==== Nice to have ==== | ==== Nice to have ==== | ||
+ | * Extend support/scripts/setlocalversion to include the git/hg version(s) of BR2_EXTERNAL. | ||
* Create a package for the Qt5 demo/benchmark application at https://github.com/prabindh/xgxperf. | * Create a package for the Qt5 demo/benchmark application at https://github.com/prabindh/xgxperf. | ||
* Packages proposed in bug reports (often with patch) | * Packages proposed in bug reports (often with patch) | ||
Line 90: | Line 86: | ||
** wxWidgets https://bugs.busybox.net/show_bug.cgi?id=261 | ** wxWidgets https://bugs.busybox.net/show_bug.cgi?id=261 | ||
* Create a package for UnixBench benchmark suite at https://github.com/kdlucas/byte-unixbench. | * Create a package for UnixBench benchmark suite at https://github.com/kdlucas/byte-unixbench. | ||
+ | * uwsgi => Adam Duskett pending patch series: https://patchwork.ozlabs.org/project/buildroot/list/?series=144709&state=%2A&archive=both | ||
=== Toolchain === | === Toolchain === | ||
Line 98: | Line 95: | ||
=== Documentation === | === Documentation === | ||
+ | * Convert the documentation + the generation workflow from current asciidoc to either markdown or ReStructuredText (people are nowadays more used to that syntax, and they are formatted directly when viewed in gitlab/github). | ||
* [[Buildroot how to contribute | Document how to contribute]] (how often to repost, what to expect, ...) [[Buildroot how to contribute | basic guide]] | * [[Buildroot how to contribute | Document how to contribute]] (how often to repost, what to expect, ...) [[Buildroot how to contribute | basic guide]] | ||
* Document that package patches should be sent upstream | * Document that package patches should be sent upstream | ||
=== Core Buildroot infrastructure === | === Core Buildroot infrastructure === | ||
+ | |||
+ | * Cargo and Go post-process handling for vendoring | ||
+ | ** Add support for tarball formats other than gz | ||
+ | |||
+ | * Cargo post-process handling for vendoring | ||
+ | ** Either replace "cargo install" by manual installation of files, or ensure that "cargo install" doesn't rebuild things. See https://lore.kernel.org/buildroot/20220106210000.397694-1-thomas.petazzoni@bootlin.com/T/#m2fe31f718c45675f7fb52d001e75cc0386db8aee | ||
+ | ** Use more environment variables when calling cargo, to avoid using a cargo configuration file. See https://lore.kernel.org/buildroot/20220106210000.397694-1-thomas.petazzoni@bootlin.com/T/#m8dc0e19638fc1f2c36cac7bba5de615a2a671dc1 | ||
* Investigate adding support for [https://github.com/icecc ICECC]. See also https://www.pengutronix.de/en/2018-09-13-fixing-icecc.html. | * Investigate adding support for [https://github.com/icecc ICECC]. See also https://www.pengutronix.de/en/2018-09-13-fixing-icecc.html. | ||
− | |||
− | |||
* Several improvements are possible in the download infrastructure (even after all the improvements that were already done): | * Several improvements are possible in the download infrastructure (even after all the improvements that were already done): | ||
Line 112: | Line 115: | ||
* Locale handling is broken: it doesn't take into account the alias file when purging aliases. See [http://lists.busybox.net/pipermail/buildroot/2013-December/084724.html this mail from patchwork cleanup #3] and [http://patchwork.ozlabs.org/patch/188623/ this patch that also fixes a locale problem, but not everything]. Tests for this are also required. | * Locale handling is broken: it doesn't take into account the alias file when purging aliases. See [http://lists.busybox.net/pipermail/buildroot/2013-December/084724.html this mail from patchwork cleanup #3] and [http://patchwork.ozlabs.org/patch/188623/ this patch that also fixes a locale problem, but not everything]. Tests for this are also required. | ||
− | |||
− | |||
* Add instrumentation scripts to analyse package installed files: | * Add instrumentation scripts to analyse package installed files: | ||
Line 136: | Line 137: | ||
* It would be nice if there was a make target to reinstall everything to the target (i.e. remove all the target-installed stamps, remove the root stamp, maybe remove the target too). However, what is missing is the copying of the toolchain support files (libc.so etc.). It's not obvious that this can be done in a reliable way. | * It would be nice if there was a make target to reinstall everything to the target (i.e. remove all the target-installed stamps, remove the root stamp, maybe remove the target too). However, what is missing is the copying of the toolchain support files (libc.so etc.). It's not obvious that this can be done in a reliable way. | ||
* To facilitate debugging, all packages should be installed to the staging directory. The target directory should in fact be a subset of the staging directory. See the FOSDEM 2013 discussion at http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013, and the discussion around patch http://patchwork.ozlabs.org/patch/252718/. This is however a significant change in Buildroot, so probably difficult to implement, and will raise a number of quite complicated questions. | * To facilitate debugging, all packages should be installed to the staging directory. The target directory should in fact be a subset of the staging directory. See the FOSDEM 2013 discussion at http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013, and the discussion around patch http://patchwork.ozlabs.org/patch/252718/. This is however a significant change in Buildroot, so probably difficult to implement, and will raise a number of quite complicated questions. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Revision as of 02:53, 19 January 2023
Buildroot is a nice, simple, and efficient embedded Linux build system.
Contents
Important links
- Buildroot main page
- Bug tracker
- Autobuilders results
- Project patchwork
- The reproducible builds work
- The top-level parallel build work
- Security Vulnerability Management
- Language package managers and downloading dependencies (go mod, cargo, php compose)
Developer days
Upcoming:
- Buildroot Developer Days, 6-8 February 2023, Brussels, Belgium, after FOSDEM
Past:
- Buildroot Developer Days, 17-18 September 2022, Dublin, Ireland, after ELCE
- Virtual Buildroot Developer Days, July 27, August 28, August 29, 2020
- Buildroot Developer Days, 3-5 February 2020, Brussels, Belgium, after FOSDEM
- Buildroot Developer Days, 25-27 October 2019, Lyon, France, before ELCE
- Buildroot Developer Days, 4-6 February 2019, Brussels, Belgium, after FOSDEM
- Buildroot Developer Days, 20-21 October 2018, Edinburgh, UK, before ELCE
- Buildroot Developer Days, 5-6 February 2018, Brussels, Belgium, after FOSDEM
- Buildroot Developer Days, 21-22 October 2017, Prague, Czech Republic, before ELCE.
- Buildroot Developer Days, 6-7 February 2017, Brussels, Belgium, after FOSDEM
- Buildroot Developer Days, 14-16 October 2016, Berlin, Germany, after ELCE.
- Buildroot Developer Days, 1-2 February 2016, Brussels, Belgium, after FOSDEM
- Buildroot Developer Days, 3-4 October 2015, Dublin, Ireland, before ELC-E (report).
- Buildroot Developer Days, 2-3 February 2015, Brussels, Belgium, after FOSDEM.
- Buildroot Developer Days, 11-12 October 2014, Düsseldorf, Germany, before ELC-E.
- Buildroot Developer Days, 3-4 February 2014, Brussels, Belgium, after FOSDEM.
- Buildroot Developer Days, 26-27 October 2013, Edinburgh UK, after ELC-E.
- Buildroot Developer Days, 4-5 February 2013, Brussels Belgium, after FOSDEM.
- Buildroot Developer Days, 3-4 November 2012, Barcelona Spain, before ELC-E.
- Buildroot Developer Days, 3 February 2012, Brussels Belgium, before FOSDEM (report)
- Buildroot Developer Days, 29 October 2011, Prague, Czech Republic, after ELCE (report)
Talks
This section gathers the list of talks given about Buildroot, as well as the slides and video when available.
Past:
- Buildroot: What's New?, Thomas Petazzoni, Embedded Linux Conference, 12-14 March, Portland, Oregon. Slides, Video.
- Buildroot: What's New?, Thomas Petazzoni, Embedded Linux Conference Europe, 23-25 October, Prague, Czech Republic. Slides, Video.
- Buildroot: Making Embedded Linux Easy? A Real-Life Example, Yann E. MORIN, Embedded Linux Conference Europe, 23-25 October, Prague, Czech Republic. Slides, Video.
- Tutorial: Learning the Basics of Buildroot, Thomas Petazzoni, Embedded Linux Conference Europe, October 5 - 7, 2015, Dublin, Ireland. Slides, Video.
- "Buildroot: a deep dive into the core", Thomas Petazzoni, Embedded Linux Conference Europe, 13-15 October 2014, Düsseldorf, Germany. Slides.
- Buildroot: what's new, Thomas Petazzoni, Embedded Linux Conference, 1 May 2014, San Jose, United States. Slides, HD video, Low-res video, Audio only
- "Buildroot: what is new", Peter Korsgaard, Embedded Linux Conference Europe, 25 October 2013, Edinburgh, UK. Slides, Video.
List of forks
- Home Assistant Operating System. Home Assistant Operating System (formerly HassOS) is an operating system optimized for hosting Home Assistant and its Add-ons.
- OpenIL. OpenIL is an open source project based on Buildroot and designed for embedded industrial solution.
- Bsquask SDK. A Rasberry-Pi related fork.
- [1]. Another RPi related fork, with a lot of focus on Qt5 and GStreamer (appears to be defunct).
- Buildroot Submodule. Not a fork, but a convenience layer on top of buildroot.
- Experimental 'shell' around Buildroot. Another wrapper around Buildroot, to help manage projects.
Todo list
This is a list of improvements that we would like to see in buildroot. Feel free to add suggestions here. If you're working on one of these items, put your name and the date behind it, to avoid duplicate work.
There are a number of patches that have been determined to be useful but for various reasons nobody currently has time to review or test them. Anybody, especially a person new to buildroot, is welcome to adopt these patches and resubmit them to the mailing list.
Packages
Note: if you start working on any of these packages, please edit this section to indicate it. If the package is proposed in a bug report, please also update the bug report. Sending a mail to the mailing list also never hurts, you never know that someone else started working on it without following this guideline.
Important
- Instead of building the Go compiler, add support for using a pre-compiled Go compiler, like we do for Rust
- Instead of building host-nodejs, add support for using a pre-compiled NodeJS for the host
- Improve the imx-gpu-viv package to not install everything. See https://lore.kernel.org/buildroot/20210805233615.4e69d63d@windsurf/T/#u
Nice to have
- Extend support/scripts/setlocalversion to include the git/hg version(s) of BR2_EXTERNAL.
- Create a package for the Qt5 demo/benchmark application at https://github.com/prabindh/xgxperf.
- Packages proposed in bug reports (often with patch)
- openvz https://bugs.busybox.net/show_bug.cgi?id=405
- rdiff-backup https://bugs.busybox.net/show_bug.cgi?id=1309 [Shaym Saini <mayhs11saini@gmail.com> is working on this]
- wxWidgets https://bugs.busybox.net/show_bug.cgi?id=261
- Create a package for UnixBench benchmark suite at https://github.com/kdlucas/byte-unixbench.
- uwsgi => Adam Duskett pending patch series: https://patchwork.ozlabs.org/project/buildroot/list/?series=144709&state=%2A&archive=both
Toolchain
- Add the support for the x86-64 x32 capable toolchain. See http://patchwork.ozlabs.org/patch/561904/
- Add the support for the Aarch64 ilp32 capable toolchain (for now the gcc/binutils/glibc upstream support is not ready yet). See http://lists.busybox.net/pipermail/buildroot/2015-August/137356.html, http://patchwork.ozlabs.org/patch/506803/, http://patchwork.ozlabs.org/patch/506800/, http://patchwork.ozlabs.org/patch/506801/
Documentation
- Convert the documentation + the generation workflow from current asciidoc to either markdown or ReStructuredText (people are nowadays more used to that syntax, and they are formatted directly when viewed in gitlab/github).
- Document how to contribute (how often to repost, what to expect, ...) basic guide
- Document that package patches should be sent upstream
Core Buildroot infrastructure
- Cargo and Go post-process handling for vendoring
- Add support for tarball formats other than gz
- Cargo post-process handling for vendoring
- Either replace "cargo install" by manual installation of files, or ensure that "cargo install" doesn't rebuild things. See https://lore.kernel.org/buildroot/20220106210000.397694-1-thomas.petazzoni@bootlin.com/T/#m2fe31f718c45675f7fb52d001e75cc0386db8aee
- Use more environment variables when calling cargo, to avoid using a cargo configuration file. See https://lore.kernel.org/buildroot/20220106210000.397694-1-thomas.petazzoni@bootlin.com/T/#m8dc0e19638fc1f2c36cac7bba5de615a2a671dc1
- Investigate adding support for ICECC. See also https://www.pengutronix.de/en/2018-09-13-fixing-icecc.html.
- Several improvements are possible in the download infrastructure (even after all the improvements that were already done):
- Rename the downloaded files so they include the package name and version. Special care has to be taken for primary and secondary sites, and for extra downloads (including patches).
- Split between FOO_SITE and FOO_SOURCE shouldn't be necessary. Or it could be made optional, i.e. make it possible to specify the full path in FOO_SOURCE.
- Locale handling is broken: it doesn't take into account the alias file when purging aliases. See this mail from patchwork cleanup #3 and this patch that also fixes a locale problem, but not everything. Tests for this are also required.
- Add instrumentation scripts to analyse package installed files:
- find libraries with wrong RPATH/RUNPATH tags
- detect unused .so libs (eg. shared libs that are not DT_NEEDED by anything - note: only detect those libs, don't remove: can be used as plugin (dlopen), or used by an application built outside Buildroot)
- A script that checks consistency of depends/select for packages. Maybe it can be integrated to the current check-package.
Testing infrastructure
- Fix run-tests to use a config file for download and output directories, can be overridden in the environment
- Documentation on how to add a test, including naming convention
TODO items under discussion
Here are some nice-to-have's for which it is not entirely clear if and how they could be implemented:
- Out-of-tree builds, which allows the package source to be shared between different output directories and between host and target compiles.
- It would be nice if you could run a buildroot command that prepares a local copy of a package's source, and allows you to generate patches for it later. This could use git or quilt to keep track of the patches.
- It would be nice if there was a make target to reinstall everything to the target (i.e. remove all the target-installed stamps, remove the root stamp, maybe remove the target too). However, what is missing is the copying of the toolchain support files (libc.so etc.). It's not obvious that this can be done in a reliable way.
- To facilitate debugging, all packages should be installed to the staging directory. The target directory should in fact be a subset of the staging directory. See the FOSDEM 2013 discussion at http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013, and the discussion around patch http://patchwork.ozlabs.org/patch/252718/. This is however a significant change in Buildroot, so probably difficult to implement, and will raise a number of quite complicated questions.