package: improve for better pulseview integration (branch yem/sdcc-fx2lafw)
v2 cover package: improve for better pulseview integration (branch yem/sdcc-fx2lafw)
Hello All!
This series aims at making the pulseview and other sigrok-related packages more integrated. The series is articulated around three main goals, the details of which are expanded later:
1. cleanup and extend pulseview dependencies, notably the need for
fonts;
2. extend the boost package, for a better host variant, and better
maintainability;3. introduce sdcc and fx2lafw, to allow use of Cypress FX2-based logic analyzers.
Below are the details of the series, starting with the utimate goal, and then going backward with its dependencies and the foundational changes it required (i.e. git-log style).
fx2lafw is "an open-source firmware for Cypress FX2 chips which makes them usable as simple logic analyzer and/or oscilloscope hardware. It is licensed under the terms of the GNU GPL (version 2, or later)" [0], so we want to be able to build it (rather than use the pre-built blobs).
To build fx2lafw, we need host-sdcc, "a retargettable, optimizing standard C [..] compiler that targets a growing list of architectures [...] microprocessors" [1]. sdcc contains a few utilities, that are not all always needed, and can target many architectures, that too are not all always needed. So we introduce a basic sdcc package, and add options for those few features and ports we need as a we go.
To introduce host-sdcc, first some changes in how we handle host-boost are needed: indeed, host-sdcc needs yet another boost library, but we do not want to enable it unless sdcc is actually enabled. So, we extend the host-boost variant to have configurable options, that host packages, when they are enabled, can select. This causes a bit of preparatory churn in the few packages that do.
Then we rework the way the boost libraries are handled, so that it is easier to update the list for both the target and host variants in one go, which we exercise and demonstrate by indeed actually bumping Boost to the latest release. Note that the next release is expected any day soon... With a bit (a lot!) of luck, this series can prove to make that bump easier...
To support this new use-case, where some Kconfig symbol are voluntarily not explicitly referenced, we extend check-symbol to recognise symbol definitions that should be ignored.
Now, pulseview, the Qt5-based UI for th esigrok ecosystem, is brought up to more up-to-date dependency handling, and new dependecies are added to ensure fonts are available at runtime. This is achieved by adding a pseduo-package (by lack of better infra and wording) that ensure that at least one font is actually installed.
This eventually led to some minor fixes in two font packages, that could be configured to install nothing.
Finally, a trivial missing runtime dependency is added to libsigrokdecode, which contains protocol decoders for the other sigrok packages.
[0] https://sigrok.org/wiki/Fx2lafw
[1] https://sourceforge.net/projects/sdcc/
PS. This is a huge series, that's true. It all started "just" because I wanted to build and install the fx2lafw firmwares, which ultimately build in "just" a few seconds, and install "just" about 160kiB... And from fx2lafw, it all snowballed to this huge series...
Changes v1 -> v2;
- beter explain how to update the list of Boost libs
- a few typoes in commit logs here and there...
Regards,
Yann E. MORIN.
----------------------------------------------------------------
Yann E. MORIN (29):
package/libsigrokdecode: needs python3 w/ zlib support package/dejavu: update homepage
package/dejavu: ensure at least one typeface is installed package/liberation: ensure at least one typeface is installed package/some-font: new pseudo-package
package/pulseview: fix, update, and reorganise dependencies package/pulseview: needs some font, and fontconfig support in qt5base package/boost: move host variables closer together package/boost: move taget library selection variables closer together package/boost: prepare for a configurable host variant package/boost: add host symbol
package/libodb-boost: afirm host-boost dependency for host variant package/thrift: afirm host-boost dependency for host variant package/riscv-isa-sim: afirm host-boost dependency pakcage/boost: make host variant slightly configurable utils/check-symbols: allow ignoring some defined-but-unused symbols package/boost: commonalise list of libs
package/boost: add graph option for host variant package/boost: headers-only libs are always installed package/boost: check that known libs match Boost's list package/boost: use positive logic to enable libraries package/boost: explain how to maintain the list of libraries package/boost: bump to version 1.87.0
package/sdcc: new package
package/sdcc: add option for the mcs51 (aka 8051) port package/sdcc: add option for the z80 port
package/sdcc: add option for the device lib support/download/git: use FOO_DL_OPTS
package/fx2lafw: new package
DEVELOPERS | 4 + docs/manual/adding-packages-generic.adoc | 4 +- package/Config.in | 3 + package/Config.in.host | 2 + package/bitstream-vera/Config.in | 1 + package/boost/0001-unordered-fix-copy-assign.patch | 22 --- package/boost/Config.in | 43 +++--- package/boost/Config.in.host | 18 +++ package/boost/boost.hash | 4 +- package/boost/boost.mk | 166 +++++++++++++++------ package/cantarell/Config.in | 1 + package/dejavu/Config.in | 11 +- package/font-awesome/Config.in | 1 + package/fx2lafw/Config.in | 11 ++ package/fx2lafw/fx2lafw.hash | 5 + package/fx2lafw/fx2lafw.mk | 21 +++ package/ghostscript-fonts/Config.in | 1 + package/inconsolata/Config.in | 1 + package/liberation/Config.in | 6 + package/libodb-boost/Config.in.host | 3 + package/libsigrokdecode/Config.in | 1 + package/odb/Config.in.host | 1 + package/pulseview/Config.in | 44 +++--- package/riscv-isa-sim/Config.in.host | 3 + package/sdcc/Config.in.host | 44 ++++++ package/sdcc/sdcc.hash | 7 + package/sdcc/sdcc.mk | 92 ++++++++++++ package/some-font/Config.in | 17 +++ package/thrift/Config.in | 1 + package/thrift/Config.in.host | 3 + package/wqy-zenhei/Config.in | 1 + support/download/git | 6 +- utils/check-symbols | 9 +- utils/checksymbolslib/br.py | 1 + utils/checksymbolslib/db.py | 61 +++++++- utils/checksymbolslib/kconfig.py | 18 +++ utils/checksymbolslib/test_db.py | 17 +++ utils/checksymbolslib/test_kconfig.py | 63 +++++++- 38 files changed, 597 insertions(+), 120 deletions(-) delete mode 100644 package/boost/0001-unordered-fix-copy-assign.patch create mode 100644 package/boost/Config.in.host create mode 100644 package/fx2lafw/Config.in create mode 100644 package/fx2lafw/fx2lafw.hash create mode 100644 package/fx2lafw/fx2lafw.mk create mode 100644 package/libodb-boost/Config.in.host create mode 100644 package/sdcc/Config.in.host create mode 100644 package/sdcc/sdcc.hash create mode 100644 package/sdcc/sdcc.mk create mode 100644 package/some-font/Config.in create mode 100644 package/thrift/Config.in.host
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 1/29 package/libsigrokdecode: needs python3 w/ zlib support
Some protocol decoders in libsigrokdecode need the zlib module:
srd: ModuleNotFoundError: Failed to load decoder usb_power_delivery: import by name failed: No module named 'zlib'
srd: Traceback (most recent call last):
File "/usr/share/libsigrokdecode/decoders/usb_power_delivery/__init__.py", line 24, in <module>
from .pd import *
File "/usr/share/libsigrokdecode/decoders/usb_power_delivery/pd.py", line 24, in <module>
import zlib # for crc32
^^^^^^^^^^^
ModuleNotFoundError: No module named 'zlib'
--- package/libsigrokdecode/Config.in | 1 + 1 file changed, 1 insertion(+)
package/libsigrokdecode/Config.in +1 -0
@@ -6,6 +6,7 @@ config BR2_PACKAGE_LIBSIGROKDECODE depends on !BR2_STATIC_LIBS # python3 select BR2_PACKAGE_LIBGLIB2 select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_ZLIB # runtime help Libsigrokdecode is a shared library written in C, which provides (streaming) protocol decoding functionality. Say
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas Petazzoni via buildroot
AppliedRe: [Buildroot] [PATCH 01/29 v2] package/libsigrokdecode: needs python3 w/ zlib support
Quoted 11 lines · On Wed, 9 Apr 2025 22:03:16 +0200 "Yann E. MORIN" <[email protected]>…
Some protocol decoders in libsigrokdecode need the zlib module:
srd: ModuleNotFoundError: Failed to load decoder
usb_power_delivery: import by name failed: No module named 'zlib'
srd: Traceback (most recent call last):
File "/usr/share/libsigrokdecode/decoders/usb_power_delivery/__init__.py", line 24, in <module>
from .pd import *
File "/usr/share/libsigrokdecode/decoders/usb_power_delivery/pd.py", line 24, in <module>
import zlib # for crc32
^^^^^^^^^^^
ModuleNotFoundError: No module named 'zlib'
Quoted 4 lines
Signed-off-by Yann E. MORIN <[email protected]>--- package/libsigrokdecode/Config.in | 1 + 1 file changed, 1 insertion(+)
Applied to master, thanks.
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 01/29 v2] package/libsigrokdecode: needs python3 w/ zlib support
In reply to Yann E. MORINQuoted 11 lines · Yann E. MORIN
Some protocol decoders in libsigrokdecode need the zlib module:
srd: ModuleNotFoundError: Failed to load decoder
usb_power_delivery: import by name failed: No module named 'zlib'
srd: Traceback (most recent call last):
File "/usr/share/libsigrokdecode/decoders/usb_power_delivery/__init__.py", line 24, in <module>
from .pd import *
File "/usr/share/libsigrokdecode/decoders/usb_power_delivery/pd.py", line 24, in <module>
import zlib # for crc32
^^^^^^^^^^^
ModuleNotFoundError: No module named 'zlib'
Quoted 1 line
Signed-off-by Yann E. MORIN <[email protected]>
Applied to 2025.02.x, thanks.
Regards,
Arnout
Quoted 9 lines
--- package/libsigrokdecode/Config.in | 1 + 1 file changed, 1 insertion(+)package/libsigrokdecode/Config.in +0
-0
package/libsigrokdecode/Config.in config BR2_PACKAGE_LIBSIGROKDECODE · line 12
Quoted 7 lines
package/libsigrokdecode/Config.in +1
-0@@ -6,6 +6,7 @@ config BR2_PACKAGE_LIBSIGROKDECODE depends on !BR2_STATIC_LIBS # python3 select BR2_PACKAGE_LIBGLIB2 select BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_ZLIB # runtime help Libsigrokdecode is a shared library written in C, which provides (streaming) protocol decoding functionality. Say
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 2/29 package/dejavu: update homepage
In reply to Yann E. MORINThe currently referenced homepage is a cyber-squatter. Switch to the new official homepage.
--- package/dejavu/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/dejavu/Config.in +1 -1
@@ -6,7 +6,7 @@ config BR2_PACKAGE_DEJAVU maintaining the original look and feel through the process of collaborative development, under a Free license. - http://dejavu-fonts.org + https://dejavu-fonts.github.io/ if BR2_PACKAGE_DEJAVU
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas Petazzoni via buildroot
AppliedRe: [Buildroot] [PATCH 02/29 v2] package/dejavu: update homepage
Quoted 7 lines · On Wed, 9 Apr 2025 22:03:17 +0200 "Yann E. MORIN" <[email protected]>…
The currently referenced homepage is a cyber-squatter. Switch to the new official homepage.
Signed-off-by Yann E. MORIN <[email protected]>--- package/dejavu/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Applied to master, thanks.
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 02/29 v2] package/dejavu: update homepage
In reply to Yann E. MORINQuoted 4 lines · Yann E. MORIN
The currently referenced homepage is a cyber-squatter. Switch to the new official homepage.
Signed-off-by Yann E. MORIN <[email protected]>
Applied to 2025.02.x, thanks.
Regards,
Arnout
Quoted 9 lines
--- package/dejavu/Config.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)package/dejavu/Config.in +0
-0
package/dejavu/Config.in config BR2_PACKAGE_DEJAVU · line 12
Quoted 8 lines
package/dejavu/Config.in +1
-1@@ -6,7 +6,7 @@ config BR2_PACKAGE_DEJAVU maintaining the original look and feel through the process of collaborative development, under a Free license. - http://dejavu-fonts.org + https://dejavu-fonts.github.io/ if BR2_PACKAGE_DEJAVU
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 3/29 package/dejavu: ensure at least one typeface is installed
In reply to Yann E. MORINIt is curently possible to enable dejavu, but disable all the typefaces it would install, which does not make much sense.
Ensure that, when dejavu is enabled, at least one typeface is installed.
--- package/dejavu/Config.in | 8 ++++++++ 1 file changed, 8 insertions(+)
package/dejavu/Config.in +8 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_DEJAVU bool "DejaVu fonts" + select BR2_PACKAGE_DEJAVU_MONO if !BR2_PACKAGE_DEJAVU_HAS_FONT help The DejaVu fonts are a font family based on the Vera Fonts. Its purpose is to provide a wider range of characters while
@@ -10,6 +11,9 @@ config BR2_PACKAGE_DEJAVU if BR2_PACKAGE_DEJAVU +config BR2_PACKAGE_DEJAVU_HAS_FONT + bool + config BR2_PACKAGE_DEJAVU_MONO bool "mono fonts" default y
@@ -17,17 +21,21 @@ config BR2_PACKAGE_DEJAVU_MONO config BR2_PACKAGE_DEJAVU_SANS bool "sans fonts" default y + select BR2_PACKAGE_DEJAVU_HAS_FONT config BR2_PACKAGE_DEJAVU_SERIF bool "serif fonts" default y + select BR2_PACKAGE_DEJAVU_HAS_FONT config BR2_PACKAGE_DEJAVU_SANS_CONDENSED bool "sans condensed fonts" default y + select BR2_PACKAGE_DEJAVU_HAS_FONT config BR2_PACKAGE_DEJAVU_SERIF_CONDENSED bool "serif condensed fonts" default y + select BR2_PACKAGE_DEJAVU_HAS_FONT endif
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 4/29 package/liberation: ensure at least one typeface is installed
In reply to Yann E. MORINIt is curently possible to enable liberation, but disable all the typefaces it would install, which does not make much sense.
Ensure that, when liberation is enabled, at least one typeface is installed.
--- package/liberation/Config.in | 6 ++++++ 1 file changed, 6 insertions(+)
package/liberation/Config.in +6 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_LIBERATION bool "Liberation (Free fonts)" + select BR2_PACKAGE_LIBERATION_MONO if !BR2_PACKAGE_LIBERATION_HAS_FONT help The Liberation Fonts are intended to be replacements for the three most commonly used fonts on Microsoft systems:
@@ -9,6 +10,9 @@ config BR2_PACKAGE_LIBERATION if BR2_PACKAGE_LIBERATION +config BR2_PACKAGE_LIBERATION_HAS_FONT + bool + config BR2_PACKAGE_LIBERATION_MONO bool "mono fonts" default y
@@ -16,9 +20,11 @@ config BR2_PACKAGE_LIBERATION_MONO config BR2_PACKAGE_LIBERATION_SANS bool "sans fonts" default y + select BR2_PACKAGE_LIBERATION_HAS_FONT config BR2_PACKAGE_LIBERATION_SERIF bool "serif fonts" default y + select BR2_PACKAGE_LIBERATION_HAS_FONT endif
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 5/29 package/some-font: new pseudo-package
In reply to Yann E. MORINPackages that will be rendering text, will need that some font be installed; most of the time, any font will fit the bill. However, we currently have no way for such a package to just require "some font"; it needs to actually select one package providing fonts. If the user selects another font package, then the one forcibly selected by the package would be superfluous.
Fonts are a runtime dependency, not a build-time one, so we don't need to handle it like the virtual packages. Furthemore, multiple font packages can be installed at once, this is perfectly valid, so we can't use a virtual package.
This commit adds a pseudo package (in fact, just a Kconfig symbol), that packages can select when they just require some font, but are not picky on which font that would be. We currently decide that the liberation fonts would be the default ones.
Conversely, also add a Kconfig symbol that font-providing packages can select to indicate that some font is available, in which case liberation is not forcefully selected (of course, liberation can't, mustn't, and doesn't select that symbol).
This also allows packages from br2-external trees to advertise they provide fonts, too.
--- package/Config.in | 2 ++ package/bitstream-vera/Config.in | 1 + package/cantarell/Config.in | 1 + package/dejavu/Config.in | 1 + package/font-awesome/Config.in | 1 + package/ghostscript-fonts/Config.in | 1 + package/inconsolata/Config.in | 1 + package/some-font/Config.in | 17 +++++++++++++++++ package/wqy-zenhei/Config.in | 1 + 9 files changed, 26 insertions(+) create mode 100644 package/some-font/Config.in
package/Config.in +2 -0
@@ -262,6 +262,8 @@ comment "Cursors" source "package/comix-cursors/Config.in" comment "Fonts" + # check-package disable lib_config.CommentsMenusPackagesOrder + source "package/some-font/Config.in" source "package/bitstream-vera/Config.in" source "package/cantarell/Config.in" source "package/dejavu/Config.in"
package/bitstream-vera/Config.in +1 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_BITSTREAM_VERA bool "Bitstream Vera" + select BR2_PACKAGE_SOME_FONT_AVAILABLE help Bitstream Vera font family.
package/cantarell/Config.in +1 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_CANTARELL bool "cantarell" + select BR2_PACKAGE_SOME_FONT_AVAILABLE help The Cantarell font family is a contemporary Humanist sans serif designed for on-screen reading.
package/dejavu/Config.in +1 -0
@@ -1,6 +1,7 @@ config BR2_PACKAGE_DEJAVU bool "DejaVu fonts" select BR2_PACKAGE_DEJAVU_MONO if !BR2_PACKAGE_DEJAVU_HAS_FONT + select BR2_PACKAGE_SOME_FONT_AVAILABLE help The DejaVu fonts are a font family based on the Vera Fonts. Its purpose is to provide a wider range of characters while
package/font-awesome/Config.in +1 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_FONT_AWESOME bool "font-awesome" + select BR2_PACKAGE_SOME_FONT_AVAILABLE help Font Awesome is a full suite of 605 pictographic icons for easy scalable vector graphics on websites.
package/ghostscript-fonts/Config.in +1 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_GHOSTSCRIPT_FONTS bool "ghostscript-fonts" + select BR2_PACKAGE_SOME_FONT_AVAILABLE help Fonts and font metrics customarily distributed with Ghostscript. Currently includes the 35 standard PostScript
package/inconsolata/Config.in +1 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_INCONSOLATA bool "inconsolata" + select BR2_PACKAGE_SOME_FONT_AVAILABLE help Inconsolata is a monospace font, designed for code listings and the like.
package/some-font/Config.in new file +17 -0
@@ -0,0 +1,17 @@ +config BR2_PACKAGE_SOME_FONT + bool + select BR2_PACKAGE_LIBERATION if !BR2_PACKAGE_SOME_FONT_AVAILABLE + help + This package does not provide any font of its own; + instead, it ensure that at least one font package is + enabled, and thus that at least one font is installed + in the target. + + Select this if your package just requires some font, + whatever that may be. + +config BR2_PACKAGE_SOME_FONT_AVAILABLE + bool + help + This blind symbol should be selected by any package that + installs fonts.
package/wqy-zenhei/Config.in +1 -0
@@ -1,5 +1,6 @@ config BR2_PACKAGE_WQY_ZENHEI bool "wqy-zenhei" + select BR2_PACKAGE_SOME_FONT_AVAILABLE help "WenQuanYi Zen Hei" is a Hei-Ti Style (sans-serif) Chinese font capable of text formatting and on-screen display of
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 6/29 package/pulseview: fix, update, and reorganise dependencies
In reply to Yann E. MORINThe dependencies for pulseview are not entirely clean:
- arch deps are not first;
- second-level inherited deps are listed;
- deps are not alphabetically ordered (for deps on packages);
- the comment is hidden even when the arch deps are met, because of an
incorrect dependency on Qt5;
- qt5 is a depends-on when it could be a select.
Update the dependencies to fix all the points above.
--- package/pulseview/Config.in | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-)
package/pulseview/Config.in +21 -21
@@ -1,40 +1,40 @@ config BR2_PACKAGE_PULSEVIEW bool "pulseview" - depends on BR2_PACKAGE_QT5 - # libsigrok->libglib2: - depends on BR2_USE_WCHAR - depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem - depends on BR2_USE_MMU + depends on BR2_USE_WCHAR # libsigrok, qt5 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # qt5 depends on BR2_INSTALL_LIBSTDCPP - # libsigrok->libzip - depends on !BR2_STATIC_LIBS - # libsigrok - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 - depends on BR2_HOST_GCC_AT_LEAST_4_9 depends on BR2_ENABLE_LOCALE + depends on !BR2_STATIC_LIBS # libsigrok, qt5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigrok + depends on BR2_HOST_GCC_AT_LEAST_5 # qt5 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SERIALIZATION + select BR2_PACKAGE_BOOST_SYSTEM select BR2_PACKAGE_LIBSIGROK select BR2_PACKAGE_LIBSIGROKCXX - select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5BASE_WIDGETS select BR2_PACKAGE_QT5SVG select BR2_PACKAGE_QT5TOOLS select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS - select BR2_PACKAGE_BOOST - select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_BOOST_SYSTEM - select BR2_PACKAGE_BOOST_SERIALIZATION help PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI for sigrok. http://sigrok.org/wiki/PulseView -comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 4.9" +comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 5" depends on BR2_USE_MMU - depends on BR2_PACKAGE_QT5 depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS - depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \ - || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ - || BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \ - !BR2_HOST_GCC_AT_LEAST_4_9 + depends on !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_ENABLE_LOCALE \ + || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || !BR2_HOST_GCC_AT_LEAST_5
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas Petazzoni via buildroot
AppliedRe: [Buildroot] [PATCH 06/29 v2] package/pulseview: fix, update, and reorganise dependencies
Quoted 6 lines · On Wed, 9 Apr 2025 22:03:21 +0200 "Yann E. MORIN" <[email protected]>…
The dependencies for pulseview are not entirely clean:
- arch deps are not first;
- second-level inherited deps are listed;
- deps are not alphabetically ordered (for deps on packages);
- the comment is hidden even when the arch deps are met, because of anincorrect dependency on Qt5;
Quoted 8 lines
- qt5 is a depends-on when it could be a select.
Update the dependencies to fix all the points above.
Signed-off-by Yann E. MORIN <[email protected]>--- package/pulseview/Config.in | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-)
Applied to master, thanks.
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 06/29 v2] package/pulseview: fix, update, and reorganise dependencies
In reply to Yann E. MORINQuoted 71 lines · Yann E. MORIN
The dependencies for pulseview are not entirely clean:
- arch deps are not first;
- second-level inherited deps are listed;
- deps are not alphabetically ordered (for deps on packages);
- the comment is hidden even when the arch deps are met, because of anincorrect dependency on Qt5;- qt5 is a depends-on when it could be a select.
Update the dependencies to fix all the points above.
Signed-off-by Yann E. MORIN <[email protected]>--- package/pulseview/Config.in | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-)package/pulseview/Config.in +14
-18@@ -1,40 +1,40 @@ config BR2_PACKAGE_PULSEVIEW bool "pulseview" - depends on BR2_PACKAGE_QT5 - # libsigrok->libglib2: - depends on BR2_USE_WCHAR - depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem - depends on BR2_USE_MMU + depends on BR2_USE_WCHAR # libsigrok, qt5 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # qt5 depends on BR2_INSTALL_LIBSTDCPP - # libsigrok->libzip - depends on !BR2_STATIC_LIBS - # libsigrok - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 - depends on BR2_HOST_GCC_AT_LEAST_4_9 depends on BR2_ENABLE_LOCALE + depends on !BR2_STATIC_LIBS # libsigrok, qt5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigrok + depends on BR2_HOST_GCC_AT_LEAST_5 # qt5 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SERIALIZATION + select BR2_PACKAGE_BOOST_SYSTEM select BR2_PACKAGE_LIBSIGROK select BR2_PACKAGE_LIBSIGROKCXX - select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5BASE_WIDGETS select BR2_PACKAGE_QT5SVG select BR2_PACKAGE_QT5TOOLS select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS - select BR2_PACKAGE_BOOST - select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_BOOST_SYSTEM - select BR2_PACKAGE_BOOST_SERIALIZATION help PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI for sigrok. http://sigrok.org/wiki/PulseView -comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 4.9" +comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 5" depends on BR2_USE_MMU - depends on BR2_PACKAGE_QT5 depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS - depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \
package/pulseview/Config.in line 40
Quoted 10 lines
package/pulseview/Config.in +7
-3- || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ - || BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \ - !BR2_HOST_GCC_AT_LEAST_4_9 + depends on !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_ENABLE_LOCALE \ + || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || !BR2_HOST_GCC_AT_LEAST_5
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 06/29 v2] package/pulseview: fix, update, and reorganise dependencies
In reply to Yann E. MORINQuoted 11 lines · Yann E. MORIN
The dependencies for pulseview are not entirely clean:
- arch deps are not first;
- second-level inherited deps are listed;
- deps are not alphabetically ordered (for deps on packages);
- the comment is hidden even when the arch deps are met, because of anincorrect dependency on Qt5;- qt5 is a depends-on when it could be a select.
Update the dependencies to fix all the points above.
Signed-off-by Yann E. MORIN <[email protected]>
Applied to 2025.02.x, thanks.
Regards,
Arnout
Quoted 60 lines
--- package/pulseview/Config.in | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-)package/pulseview/Config.in +14
-18@@ -1,40 +1,40 @@ config BR2_PACKAGE_PULSEVIEW bool "pulseview" - depends on BR2_PACKAGE_QT5 - # libsigrok->libglib2: - depends on BR2_USE_WCHAR - depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-filesystem - depends on BR2_USE_MMU + depends on BR2_USE_WCHAR # libsigrok, qt5 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # qt5 depends on BR2_INSTALL_LIBSTDCPP - # libsigrok->libzip - depends on !BR2_STATIC_LIBS - # libsigrok - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 - depends on BR2_HOST_GCC_AT_LEAST_4_9 depends on BR2_ENABLE_LOCALE + depends on !BR2_STATIC_LIBS # libsigrok, qt5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # libsigrok + depends on BR2_HOST_GCC_AT_LEAST_5 # qt5 + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SERIALIZATION + select BR2_PACKAGE_BOOST_SYSTEM select BR2_PACKAGE_LIBSIGROK select BR2_PACKAGE_LIBSIGROKCXX - select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5BASE_WIDGETS select BR2_PACKAGE_QT5SVG select BR2_PACKAGE_QT5TOOLS select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS - select BR2_PACKAGE_BOOST - select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_BOOST_SYSTEM - select BR2_PACKAGE_BOOST_SERIALIZATION help PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI for sigrok. http://sigrok.org/wiki/PulseView -comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 4.9" +comment "pulseview needs a toolchain w/ locale, wchar, threads, dynamic library, C++, gcc >= 7, host gcc >= 5" depends on BR2_USE_MMU - depends on BR2_PACKAGE_QT5 depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS - depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || !BR2_USE_WCHAR \
package/pulseview/Config.in line 40
Quoted 10 lines
package/pulseview/Config.in +7
-3- || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ - || BR2_STATIC_LIBS || !BR2_ENABLE_LOCALE || \ - !BR2_HOST_GCC_AT_LEAST_4_9 + depends on !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_ENABLE_LOCALE \ + || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_7 \ + || !BR2_HOST_GCC_AT_LEAST_5
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 7/29 package/pulseview: needs some font, and fontconfig support in qt5base
In reply to Yann E. MORINpulseview needs to render some text, so it needs "some font".
It also needs Qt5 to be able to locate and load fonts. This can be achieved at runtime, by setting the QT_QPA_FONTDIR environment variable to point to the directory containing fonts, but this is not very practical.
Instead, it can also be achieved by adding fontconfig support to Qt5, which is in charge of actually looking up and loading fonts all by itself. This is the way we decided to go for, as it makes things "just work" without any trick.
--- package/pulseview/Config.in | 2 ++ 1 file changed, 2 insertions(+)
package/pulseview/Config.in +2 -0
@@ -17,11 +17,13 @@ config BR2_PACKAGE_PULSEVIEW select BR2_PACKAGE_LIBSIGROKCXX select BR2_PACKAGE_QT5 select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_FONTCONFIG select BR2_PACKAGE_QT5BASE_PNG select BR2_PACKAGE_QT5BASE_WIDGETS select BR2_PACKAGE_QT5SVG select BR2_PACKAGE_QT5TOOLS select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + select BR2_PACKAGE_SOME_FONT # runtime help PulseView is a Qt based logic analyzer, oscilloscope and MSO GUI for sigrok.
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 8/29 package/boost: move host variables closer together
In reply to Yann E. MORINAlso, one item per line (chrono, container) in the list of libraries.
--- package/boost/boost.mk | 71 +++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 35 deletions(-)
package/boost/boost.mk +36 -35
@@ -12,41 +12,6 @@ BOOST_LICENSE = BSL-1.0 BOOST_LICENSE_FILES = LICENSE_1_0.txt BOOST_CPE_ID_VENDOR = boost -# keep host variant as minimal as possible -# regex & system are needed by host-riscv-isa-sim -HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ - --without-libraries=$(subst $(space),$(comma),\ - atomic \ - chrono container \ - context \ - contract \ - coroutine \ - date_time \ - exception \ - fiber \ - filesystem \ - graph \ - graph_parallel \ - iostreams \ - json \ - locale \ - log \ - math \ - mpi \ - nowide \ - program_options \ - python \ - random \ - serialization \ - stacktrace \ - test \ - thread \ - timer \ - type_erasure \ - url \ - wave\ - ) - BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container)
@@ -103,6 +68,42 @@ BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MA BOOST_DEPENDENCIES += python3 endif +# keep host variant as minimal as possible +# regex & system are needed by host-riscv-isa-sim +HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ + --without-libraries=$(subst $(space),$(comma),\ + atomic \ + chrono \ + container \ + context \ + contract \ + coroutine \ + date_time \ + exception \ + fiber \ + filesystem \ + graph \ + graph_parallel \ + iostreams \ + json \ + locale \ + log \ + math \ + mpi \ + nowide \ + program_options \ + python \ + random \ + serialization \ + stacktrace \ + test \ + thread \ + timer \ + type_erasure \ + url \ + wave\ + ) + HOST_BOOST_OPTS += toolset=gcc threading=multi \ variant=release link=shared runtime-link=shared -j$(PARALLEL_JOBS) -q \ --ignore-site-config --layout=system --prefix=$(HOST_DIR) \
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas Petazzoni via buildroot
AppliedRe: [Buildroot] [PATCH 08/29 v2] package/boost: move host variables closer together
Quoted 8 lines · On Wed, 9 Apr 2025 22:03:23 +0200 "Yann E. MORIN" <[email protected]>…
Also, one item per line (chrono, container) in the list of libraries.
Signed-off-by Yann E. MORIN <[email protected]>Cc Michael Nosthoff <[email protected]>Cc Yegor Yefremov <[email protected]>--- package/boost/boost.mk | 71 +++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 35 deletions(-)
Applied to master, thanks.
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 08/29 v2] package/boost: move host variables closer together
In reply to Yann E. MORINQuoted 5 lines · Yann E. MORIN
Also, one item per line (chrono, container) in the list of libraries.
Signed-off-by Yann E. MORIN <[email protected]>Cc Michael Nosthoff <[email protected]>Cc Yegor Yefremov <[email protected]>
Applied to 2025.02.x, thanks.
Regards,
Arnout
Quoted 83 lines
--- package/boost/boost.mk | 71 +++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 35 deletions(-)package/boost/boost.mk +29
-35@@ -12,41 +12,6 @@ BOOST_LICENSE = BSL-1.0 BOOST_LICENSE_FILES = LICENSE_1_0.txt BOOST_CPE_ID_VENDOR = boost -# keep host variant as minimal as possible -# regex & system are needed by host-riscv-isa-sim -HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ - --without-libraries=$(subst $(space),$(comma),\ - atomic \ - chrono container \ - context \ - contract \ - coroutine \ - date_time \ - exception \ - fiber \ - filesystem \ - graph \ - graph_parallel \ - iostreams \ - json \ - locale \ - log \ - math \ - mpi \ - nowide \ - program_options \ - python \ - random \ - serialization \ - stacktrace \ - test \ - thread \ - timer \ - type_erasure \ - url \ - wave\ - ) - BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container)@@ -103,6 +68,42 @@ BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MA BOOST_DEPENDENCIES += python3 endif +# keep host variant as minimal as possible +# regex & system are needed by host-riscv-isa-sim +HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ + --without-libraries=$(subst $(space),$(comma),\ + atomic \ + chrono \ + container \ + context \ + contract \ + coroutine \ + date_time \ + exception \ + fiber \ + filesystem \ + graph \ + graph_parallel \ + iostreams \ + json \ + locale \ + log \ + math \ + mpi \ + nowide \ + program_options \ + python \ + random \ + serialization \ + stacktrace \ + test \
package/boost/boost.mk BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MA · line 109
Quoted 10 lines
package/boost/boost.mk +7
-0+ thread \ + timer \ + type_erasure \ + url \ + wave\ + ) + HOST_BOOST_OPTS += toolset=gcc threading=multi \ variant=release link=shared runtime-link=shared -j$(PARALLEL_JOBS) -q \ --ignore-site-config --layout=system --prefix=$(HOST_DIR) \
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 9/29 package/boost: move taget library selection variables closer together
In reply to Yann E. MORIN--- package/boost/boost.mk | 66 +++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 33 deletions(-)
package/boost/boost.mk +33 -33
@@ -12,39 +12,6 @@ BOOST_LICENSE = BSL-1.0 BOOST_LICENSE_FILES = LICENSE_1_0.txt BOOST_CPE_ID_VENDOR = boost -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_JSON),,json) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_URL),,url) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) - BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) BOOST_FLAGS = --with-toolset=gcc
@@ -152,6 +119,39 @@ endif BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv) endif +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_JSON),,json) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_URL),,url) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) + BOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS))) BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED))
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas Petazzoni via buildroot
AppliedRe: [Buildroot] [PATCH 09/29 v2] package/boost: move taget library selection variables closer together
Quoted 6 lines · On Wed, 9 Apr 2025 22:03:24 +0200 "Yann E. MORIN" <[email protected]>…
Signed-off-by Yann E. MORIN <[email protected]>Cc Michael Nosthoff <[email protected]>Cc Yegor Yefremov <[email protected]>--- package/boost/boost.mk | 66 +++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 33 deletions(-)
Applied to master with the minor typo fixed in the commit message, thanks!
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 09/29 v2] package/boost: move taget library selection variables closer together
In reply to Yann E. MORINQuoted 3 lines · Yann E. MORIN
Signed-off-by Yann E. MORIN <[email protected]>Cc Michael Nosthoff <[email protected]>Cc Yegor Yefremov <[email protected]>
Applied to 2025.02.x, thanks.
Regards,
Arnout
Quoted 78 lines
--- package/boost/boost.mk | 66 +++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 33 deletions(-)package/boost/boost.mk +26
-33@@ -12,39 +12,6 @@ BOOST_LICENSE = BSL-1.0 BOOST_LICENSE_FILES = LICENSE_1_0.txt BOOST_CPE_ID_VENDOR = boost -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_JSON),,json) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_URL),,url) -BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) - BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) BOOST_FLAGS = --with-toolset=gcc@@ -152,6 +119,39 @@ endif BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv) endif +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTRACT),,contract) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_JSON),,json) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_NOWIDE),,nowide) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system)
package/boost/boost.mk endif · line 157
Quoted 10 lines
package/boost/boost.mk +7
-0+BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_URL),,url) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) + BOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS))) BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED))
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 10/29 package/boost: prepare for a configurable host variant
In reply to Yann E. MORINEven though we do not envision a host boost with nothing disabled (i.e. with everything enabled), we still model the _WITHOUT_FLAGS variable after the similar variable for the target variant.
--- package/boost/boost.mk | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
package/boost/boost.mk +9 -4
@@ -35,10 +35,13 @@ BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MA BOOST_DEPENDENCIES += python3 endif +HOST_BOOST_FLAGS = \ + --without-icu \ + --with-toolset=gcc + # keep host variant as minimal as possible # regex & system are needed by host-riscv-isa-sim -HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ - --without-libraries=$(subst $(space),$(comma),\ +HOST_BOOST_WITHOUT_FLAGS = \ atomic \ chrono \ container \
@@ -68,8 +71,10 @@ HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ timer \ type_erasure \ url \ - wave\ - ) + wave + +HOST_BOOST_WITHOUT_FLAGS_COMMASEPARATED = $(subst $(space),$(comma),$(strip $(HOST_BOOST_WITHOUT_FLAGS))) +HOST_BOOST_FLAGS += $(if $(HOST_BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(HOST_BOOST_WITHOUT_FLAGS_COMMASEPARATED)) HOST_BOOST_OPTS += toolset=gcc threading=multi \ variant=release link=shared runtime-link=shared -j$(PARALLEL_JOBS) -q \
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 11/29 package/boost: add host symbol
In reply to Yann E. MORINThat will be necessary when we eventually add sub-options to drive the features of the host variant. But first, we need to convert existing host packages using host-boost, so let's got step by step and have them select host-boost; this will be done in following commits, one package at a time.
--- package/Config.in.host | 1 + package/boost/Config.in.host | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 package/boost/Config.in.host
package/Config.in.host +1 -0
@@ -11,6 +11,7 @@ menu "Host utilities" source "package/babeltrace2/Config.in.host" source "package/bmap-tools/Config.in.host" source "package/bmap-writer/Config.in.host" + source "package/boost/Config.in.host" source "package/bootgen/Config.in.host" source "package/btrfs-progs/Config.in.host" source "package/cbootimage/Config.in.host"
package/boost/Config.in.host new file +2 -0
@@ -0,0 +1,2 @@ +config BR2_PACKAGE_HOST_BOOST + bool
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 12/29 package/libodb-boost: afirm host-boost dependency for host variant
In reply to Yann E. MORIN... and propagate to host-odb.
--- package/libodb-boost/Config.in.host | 3 +++ package/odb/Config.in.host | 1 + 2 files changed, 4 insertions(+) create mode 100644 package/libodb-boost/Config.in.host
package/libodb-boost/Config.in.host new file +3 -0
@@ -0,0 +1,3 @@ +config BR2_PACKAGE_HOST_LIBODB_BOOST + bool + select BR2_PACKAGE_HOST_BOOST
package/odb/Config.in.host +1 -0
@@ -1,6 +1,7 @@ config BR2_PACKAGE_HOST_ODB bool "host odb" select BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT + select BR2_PACKAGE_HOST_LIBODB_BOOST help This is a compiler that takes a specially crafted c++ header file and auto-generates a schema that works with libodb and
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 13/29 package/thrift: afirm host-boost dependency for host variant
In reply to Yann E. MORIN--- package/thrift/Config.in | 1 + package/thrift/Config.in.host | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 package/thrift/Config.in.host
package/thrift/Config.in +1 -0
@@ -3,6 +3,7 @@ config BR2_PACKAGE_THRIFT depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_WCHAR depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_HOST_THRIFT select BR2_PACKAGE_BOOST select BR2_PACKAGE_LIBEVENT select BR2_PACKAGE_OPENSSL
package/thrift/Config.in.host new file +3 -0
@@ -0,0 +1,3 @@ +config BR2_PACKAGE_HOST_THRIFT + bool + select BR2_PACKAGE_HOST_BOOST
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 14/29 package/riscv-isa-sim: afirm host-boost dependency
In reply to Yann E. MORIN--- package/riscv-isa-sim/Config.in.host | 1 + 1 file changed, 1 insertion(+)
package/riscv-isa-sim/Config.in.host +1 -0
@@ -1,6 +1,7 @@ config BR2_PACKAGE_HOST_RISCV_ISA_SIM bool "host riscv-isa-sim" depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++11 + select BR2_PACKAGE_HOST_BOOST help Spike, the RISC-V ISA Simulator, implements a functional model of one or more RISC-V harts.
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 15/29 pakcage/boost: make host variant slightly configurable
In reply to Yann E. MORINregex and system are currently not disabled, on the off-chance that host-riscv-isa-sim is needed. But when it is not, this uselessly builds regex and system...
Add options for those, and select them from host-riscv-isa-sim.
--- package/boost/Config.in.host | 10 ++++++++++ package/boost/boost.mk | 6 ++++-- package/riscv-isa-sim/Config.in.host | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-)
package/boost/Config.in.host +10 -0
@@ -1,2 +1,12 @@ config BR2_PACKAGE_HOST_BOOST bool + +if BR2_PACKAGE_HOST_BOOST + +config BR2_PACKAGE_HOST_BOOST_REGEX + bool + +config BR2_PACKAGE_HOST_BOOST_SYSTEM + bool + +endif
package/boost/boost.mk +4 -2
@@ -39,8 +39,8 @@ HOST_BOOST_FLAGS = \ --without-icu \ --with-toolset=gcc -# keep host variant as minimal as possible -# regex & system are needed by host-riscv-isa-sim +# keep host variant as minimal as possible, only add options when +# an actual host package needs it. HOST_BOOST_WITHOUT_FLAGS = \ atomic \ chrono \
@@ -64,8 +64,10 @@ HOST_BOOST_WITHOUT_FLAGS = \ program_options \ python \ random \ + $(if $(BR2_PACKAGE_HOST_BOOST_REGEX),,regex) \ serialization \ stacktrace \ + $(if $(BR2_PACKAGE_HOST_BOOST_SYSTEM),,system) \ test \ thread \ timer \
package/riscv-isa-sim/Config.in.host +2 -0
@@ -2,6 +2,8 @@ config BR2_PACKAGE_HOST_RISCV_ISA_SIM bool "host riscv-isa-sim" depends on BR2_HOST_GCC_AT_LEAST_4_9 # C++11 select BR2_PACKAGE_HOST_BOOST + select BR2_PACKAGE_HOST_BOOST_REGEX + select BR2_PACKAGE_HOST_BOOST_SYSTEM help Spike, the RISC-V ISA Simulator, implements a functional model of one or more RISC-V harts.
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 16/29 utils/check-symbols: allow ignoring some defined-but-unused symbols
In reply to Yann E. MORINIn some situations, it might be needed to not report some symbols that are defined but not used; we already have a few heuristics for that.
For example, a symbol that selects another will not be reported as being unused; this was what allowed the linux-tools symbols to not be reported as unused so far.
However, there is no way to identify symbols that are (re)constructed in Makefile code, for example from a list, like so:
foo/Config.in:
config BR2_PACKAGE_FOO
bool "foo"
if BR2_PACKAGE_FOO
config BR2_PACKAGE_FOO_BAR
bool "foo bar"
config BR2_PACKAGE_FOO_BOO
bool "foo boo"
[...]
endif
foo/foo.mk:
FOO_FEATS = bar boo and that many sub features in the foo package
FOO_OPTS = \
$(foreach feat, $(FOO_FEATS), \
$(if $(BR2_PACKAGE_FOO_$(call UPPER,$(feat))),--enable-$(f),--disable-$(f)) \
)Although we currently have no such case, we are going to introduce one in the following commits, for example for boost, where we currently maintain the list of features (libraries) twice, once each for the target and host variants, and where we repeat ad nauseam a common construct. By having a single list with all the Boost libraries, and reconstructing the corresponding Kconfig symbols, we can more easily share the list between host and target, and easily update the construct to enable/disable the libraries, as well as easily validate that list is still up-to-date by asking boost's buildsystem.
Ideally, we would like to extend checksymbolslib to handle that case, but it is going to be really, like really-really tricky to handle: there is no trivial, or even mildly complex, heuristic that we can envision to cover that case...
Instead, we decided to add a rule to be able to exclude symbols definitions:
# check-symbol ignore
config BR2_PACKAGE_FOO_BARThose ignore directives are only valid (at least for now) for a symbol declaration, so we make it a new warning when an ignore directive does not guard a symbol definition. We also make it a warning when a symbol that so guarded, is actually in use (as noted above, a symbol that selects another is interpreted as being in use, even if it is itself never referenced).
Finally, we want to also be able to ignore those ignore directives, if at least to assess how many there are in the tree. So, to that effect, we introduce the --strict option to check-symbols.
Adapt the test-suite to suit: all cases described above are tested.
--
Note: it took a bit of time for me to wrap my head around check-symbols and its test-suite. So, here's a proposal for reviewing the code, in this order:
1. utils/checksymbolslib/db.py
- the DB constructor defines if the DB is strict or not
- the DB exposes the API to add ignored symbols and incorrect ignore directives
- the DB exposes the API to retrieve the incorrect ignore directives
2. utils/checksymbolslib/br.py
- it adds the pattern to match the ignore directives
3. utils/checksymbolslib/kconfig.py
- the parser adds a new handler to detect ignore directives and store them in the DB
4. utils/check-symbols
- it creates the DB with the specified strictness
- it reports invalid ignore directives
5. utils/checksymbolslib/test_db.py
- an ignored symbol is added to the existing DB test
- a new test is added for incorrect ignore directives
6. utils/checksymbolslib/test_kconfig.py
- it adds a definition to be ignored, and a incorrect ignore directive
--- utils/check-symbols | 9 ++-- utils/checksymbolslib/br.py | 1 + utils/checksymbolslib/db.py | 61 +++++++++++++++++++++++++- utils/checksymbolslib/kconfig.py | 18 ++++++++ utils/checksymbolslib/test_db.py | 17 ++++++++ utils/checksymbolslib/test_kconfig.py | 63 +++++++++++++++++++++++++-- 6 files changed, 161 insertions(+), 8 deletions(-)
utils/check-symbols +6 -3
@@ -12,6 +12,8 @@ def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('--search', action='store', default=None, help='print all symbols matching a given regular expression') + parser.add_argument('--strict', action='store_true', + help='include ignored lines in warnings') return parser.parse_args()
@@ -20,8 +22,8 @@ def change_to_top_dir(): os.chdir(base_dir) -def get_full_db(files_to_process): - db = DB() +def get_full_db(strict, files_to_process): + db = DB(strict) for f in files_to_process: file.populate_db_from_file(db, f) return db
@@ -51,7 +53,7 @@ def __main__(): change_to_top_dir() all_files = file.get_list_of_files_in_the_repo() files_to_process = file.get_list_of_files_to_process(all_files) - db = get_full_db(files_to_process) + db = get_full_db(flags.strict, files_to_process) if flags.search: print_filenames_with_pattern(all_files, files_to_process, flags.search)
@@ -66,6 +68,7 @@ def __main__(): warnings += db.get_warnings_for_symbols_with_legacy_note_and_no_usage() warnings += db.get_warnings_for_symbols_without_definition() warnings += db.get_warnings_for_symbols_without_usage() + warnings += db.get_warnings_for_invalid_ignore() for filename, lineno, msg in sorted(warnings): print('{}:{}: {}'.format(filename, lineno, msg), file=sys.stderr)
utils/checksymbolslib/br.py +1 -0
@@ -82,6 +82,7 @@ barebox_infra_suffixes = [ '_USE_DEFCONFIG', ] re_kconfig_symbol = re.compile(r'\b(BR2_\w+)\b') +re_kconfig_ignore = re.compile(r'^# check-symbol ignore$') # Example lines to be handled: # config BR2_TOOLCHAIN_EXTERNAL_PREFIX # menuconfig BR2_PACKAGE_GST1_PLUGINS_BASE
utils/checksymbolslib/db.py +59 -2
132 lines not on this page · raw message
utils/checksymbolslib/kconfig.py +18 -0
@@ -123,12 +123,30 @@ def handle_note(db, filename, file_content): continue +def handle_ignore(db, filename, file_content): + ignore_lineno = None + for lineno, line in file_content: + if ignore_lineno is None: + if br.re_kconfig_ignore.search(line): + ignore_lineno = lineno + else: + if br.re_kconfig_config.search(line): + m = br.re_kconfig_symbol.search(line) + if m: + symbol = m.group(1) + db.add_symbol_ignored(symbol, filename, lineno) + else: + db.add_invalid_ignore(filename, ignore_lineno) + ignore_lineno = None + + def populate_db(db, filename, file_content): legacy = filename.endswith('.legacy') for lineno, line in file_content: handle_line(db, filename, lineno, line, legacy) handle_config_helper(db, filename, file_content) handle_config_choice(db, filename, file_content) + handle_ignore(db, filename, file_content) if legacy: handle_note(db, filename, file_content)
utils/checksymbolslib/test_db.py +17 -0
@@ -219,6 +219,7 @@ def test_get_warnings_for_symbols_without_usage(): db.add_symbol_usage_in_legacy('BR2_k', 'file', 6) db.add_symbol_legacy_usage('BR2_k', 'file', 7) db.add_symbol_legacy_definition('BR2_l', 'Config.in.legacy', 2) + db.add_symbol_ignored('BR2_m', 'm/Config/in', 2) assert str(db) == str({ 'BR2_a': {'definition': {'a/Config.in': [1, 2]}, 'normal usage': {'file': [1, 2]}}, 'BR2_b': {'definition': {'b/Config.in': [2]}, 'usage inside legacy': {'file': [1]}},
@@ -238,6 +239,7 @@ def test_get_warnings_for_symbols_without_usage(): 'usage inside legacy': {'file': [6]}, 'legacy usage': {'file': [7]}}, 'BR2_l': {'legacy definition': {'Config.in.legacy': [2]}}, + 'BR2_m': {'definition ignored': {'m/Config/in': [2]}}, }) warnings = db.get_warnings_for_symbols_without_usage() assert warnings == [
@@ -248,6 +250,21 @@ def test_get_warnings_for_symbols_without_usage(): ] +def test_get_warnings_for_invalid_ignore(): + db = m.DB() + db.add_symbol_ignored('BR2_a', 'a/Config/in', 2) + db.add_symbol_usage('BR2_a', 'file', 1) + db.add_symbol_ignored('BR2_b', 'b/Config/in', 2) + assert str(db) == str({ + 'BR2_a': {'definition ignored': {'a/Config/in': [2]}, 'normal usage': {'file': [1]}}, + 'BR2_b': {'definition ignored': {'b/Config/in': [2]}} + }) + warnings = db.get_warnings_for_invalid_ignore() + assert warnings == [ + ('a/Config/in', 2, 'BR2_a defined and referenced, but ignored') + ] + + def test_get_warnings_for_symbols_with_legacy_note_and_no_comment_on_usage(): db = m.DB() db.add_symbol_legacy_note('BR2_foo', 'Config.in.legacy', 1)
utils/checksymbolslib/test_kconfig.py +60 -3
82 lines not on this page · raw message
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 17/29 package/boost: commonalise list of libs
In reply to Yann E. MORINThe list of available libraries is duplicated for the host and target variants, which is prone to getting desynchronised next time we bump and the list changes (with additions or removals).
This incidentally greatly cleanups the target variant variable, which used the superfluous, verbose repetition of append-assignments rather than a multi-line single assignment.
For the host variant, if we do not have an option for a library, the library will default to being disabled, which is exactly what we want.
Note: This diff best viewed with: --anchored='BOOST_TARGET_CXXFLAGS ='
--- package/boost/Config.in | 6 ++ package/boost/Config.in.host | 2 + package/boost/boost.mk | 103 +++++++++++++---------------------- 3 files changed, 47 insertions(+), 64 deletions(-)
package/boost/Config.in +6 -0
@@ -98,6 +98,7 @@ config BR2_PACKAGE_BOOST_DATE_TIME A set of date-time libraries based on generic programming concepts. +# check-symbol ignore config BR2_PACKAGE_BOOST_EXCEPTION bool "boost-exception" help
@@ -146,6 +147,7 @@ config BR2_PACKAGE_BOOST_GRAPH The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL). +# check-symbol ignore config BR2_PACKAGE_BOOST_GRAPH_PARALLEL bool "boost-graph_parallel" help
@@ -249,12 +251,14 @@ config BR2_PACKAGE_BOOST_MATH comment "boost-math needs a toolchain w/ C++14, gcc>=5.0" depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 +# check-symbol ignore config BR2_PACKAGE_BOOST_MPI bool "boost-mpi" help Message Passing Interface library, for use in distributed-memory parallel application programming. +# check-symbol ignore config BR2_PACKAGE_BOOST_NOWIDE bool "boost-nowide" help
@@ -294,6 +298,7 @@ config BR2_PACKAGE_BOOST_SERIALIZATION help Serialization for persistence and marshalling. +# check-symbol ignore config BR2_PACKAGE_BOOST_STACKTRACE bool "boost-stacktrace" depends on !BR2_STATIC_LIBS
@@ -349,6 +354,7 @@ config BR2_PACKAGE_BOOST_TYPE_ERASURE comment "boost-type_erasure needs a toolchain not affected by GCC bug 64735" depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 +# check-symbol ignore config BR2_PACKAGE_BOOST_URL bool "boost-url" help
package/boost/Config.in.host +2 -0
@@ -1,6 +1,8 @@ config BR2_PACKAGE_HOST_BOOST bool +# keep host variant as minimal as possible, only add options when +# an actual host package needs it. if BR2_PACKAGE_HOST_BOOST config BR2_PACKAGE_HOST_BOOST_REGEX
package/boost/boost.mk +39 -64
129 lines not on this page · raw message
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 18/29 package/boost: add graph option for host variant
In reply to Yann E. MORINhost-sdcc will need that option.
--- package/boost/Config.in.host | 4 ++++ 1 file changed, 4 insertions(+)
package/boost/Config.in.host +4 -0
@@ -5,6 +5,10 @@ config BR2_PACKAGE_HOST_BOOST # an actual host package needs it. if BR2_PACKAGE_HOST_BOOST +config BR2_PACKAGE_HOST_BOOST_GRAPH + bool + select BR2_PACKAGE_HOST_BOOST_REGEX + config BR2_PACKAGE_HOST_BOOST_REGEX bool
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 19/29 package/boost: headers-only libs are always installed
In reply to Yann E. MORINThe headers-only libraries are an entry like the others for the boost build system, and are reported in the list of libraries when it is queried:
$ ./bootstrap.sh --show-libraries
[--SNIP--]
The Boost libraries requiring separate building and installation are:
[...]
- headers
[...]However, they are always "built" and installed, and can't be disabled, even using the --without-headers flag.
In a followup change, we'll make sure that the sets of libs provided by Boost on one hand, and known to Buildroot on the other, are identical, so we'll want to have 'headers' be present in the list known to Buildroot.
Add an Kconfig symbol to represent that library. To inform the user that the headers library is installed, we expose it with a prompt; we however make sure the symbol can't be disabled when Boost is enabled. Since it is a "special' library, we list if first, not in alphabetical order.
--- package/boost/Config.in | 7 +++++++ package/boost/boost.mk | 1 + 2 files changed, 8 insertions(+)
package/boost/Config.in +7 -0
@@ -9,6 +9,7 @@ config BR2_PACKAGE_BOOST # let's depend on threads. depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_WCHAR + select BR2_PACKAGE_BOOST_HEADERS help A general purpose C++ library
@@ -16,6 +17,12 @@ config BR2_PACKAGE_BOOST if BR2_PACKAGE_BOOST +# Headers-only libraries are always installed by Boost's buildsystem +config BR2_PACKAGE_BOOST_HEADERS + bool "boost-headers" + help + Headers-only libraries; those are always installed. + config BR2_PACKAGE_BOOST_ATOMIC bool "boost-atomic" depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
package/boost/boost.mk +1 -0
@@ -25,6 +25,7 @@ BOOST_ALL_LIBS = \ filesystem \ graph \ graph_parallel \ + headers \ iostreams \ json \ locale \
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 20/29 package/boost: check that known libs match Boost's list
In reply to Yann E. MORINWhen updating Boost, it can be easy to miss that new libraries are added, or that older ones are dropped.
We use Boost's ability to list its libraries, to match it against the set of libraries we know of. If they do not match, we report missing or dropped libraries.
To get the list from Boost, we need to call 'b2', boost's buildsystem. However, that is only created after a successful run to bootstrap. But then only the set of _configured_ libs are reported, not all of them, so we can't do it as a post-configure hook.
Boost's bootstrap script also allows querying the set of libraries, but that takes a bit of time as it will build b2 first, and that takes quite a bit of time. Since we need to evaluate the variable multiple times, that would be a bit too costly to do a simple assignment with a shell call-out. Thus the slightly elaborate assignment, which uses memoization to run the shell call-out only once.
--- package/boost/boost.mk | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
package/boost/boost.mk +29 -0
@@ -142,6 +142,35 @@ BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$ BOOST_OPTS += $(if $(QUIET),-d0,-d+1) HOST_BOOST_OPTS += $(if $(QUIET),-d0,-d+1) +# Check that all the libraries that Boost may build, are actually present +# in the list of all known libs and handled by Buildroot. +BOOST_B2_LIBS = \ + $(if $(filter undefined,$(origin BOOST_B2_LIBS_X)), \ + $(eval BOOST_B2_LIBS_X := \ + $(sort \ + $(shell cd $(BOOST_BUILDDIR) && \ + ./bootstrap.sh --show-libraries \ + |sed -r -e '/^ +- (.+)$$/!d; s//\1/;' \ + ) \ + ) \ + ) \ + ) \ + $(BOOST_B2_LIBS_X) +BOOST_MISSED_LIBS = $(strip $(filter-out $(BOOST_ALL_LIBS),$(BOOST_B2_LIBS))) +BOOST_GONE_LIBS = $(strip $(filter-out $(BOOST_B2_LIBS),$(BOOST_ALL_LIBS))) +define BOOST_CHECK_LIBS + $(Q)if [ "$(BOOST_GONE_LIBS)" ]; then \ + printf 'Those libraries known to Buildroot are not present in Boost $(BOOST_VERSION):\n'; \ + printf ' - %s\n' $(BOOST_GONE_LIBS); \ + fi + $(Q)if [ "$(BOOST_MISSED_LIBS)" ]; then \ + printf 'Those libraries present in Boost $(BOOST_VERSION) are not known to Buildroot:\n'; \ + printf ' - %s\n' $(BOOST_MISSED_LIBS); \ + fi + $(Q)[ -z "$(BOOST_GONE_LIBS)" -a -z "$(BOOST_MISSED_LIBS)" ] +endef +BOOST_PRE_CONFIGURE_HOOKS += BOOST_CHECK_LIBS + define BOOST_CONFIGURE_CMDS cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS) echo "using gcc : `$(TARGET_CC) -dumpversion` : $(TARGET_CXX) : <cxxflags>\"$(BOOST_TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 21/29 package/boost: use positive logic to enable libraries
In reply to Yann E. MORINboostrap.sh has supported --with-libraries since its inception on 2005-10-07, with upstream commit a3595d0d7570 (Initial shot at a configure script for Boost), and since its was first available in a release, with Boost 1.34.0 released on 2013-04-13.
Using negative logic is counter-intuitive, and we avoid doing that in Buildroot whenever possible, especially when using positive logic is just as powerful.
Additionally, if a new version of Boost incldues a new library that we missed, and that ./bootstrap.sh --show-libraries also does not report, then that new library would be built with the current use of negative logic (i.e. all that is not disabled is built). By using positive logic, only what gets explicitly enabled gets built, and such a new library would not be built; thus, an interested party would late rnotice, and add the necessary support.
Furthermore, by using positive logic here, and because we know that the 'headers' library will always be enabled, we know the list is not empty, and thus we can simplify the code slightly.
Note that we would have liked to also explicitly disable libraries not enabled in the configuration, but that is not possible: Boost's buildsystem only accepts one of --with-libraries or --without-libraries.
--- package/boost/boost.mk | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
package/boost/boost.mk +9 -9
@@ -74,13 +74,13 @@ HOST_BOOST_FLAGS = \ --without-icu \ --with-toolset=gcc -HOST_BOOST_WITHOUT_FLAGS = \ +HOST_BOOST_LIBS = \ $(foreach lib, $(BOOST_ALL_LIBS), \ - $(if $(BR2_PACKAGE_HOST_BOOST_$(call UPPERCASE,$(lib))),,$(lib)) \ + $(if $(BR2_PACKAGE_HOST_BOOST_$(call UPPERCASE,$(lib))),$(lib)) \ ) -HOST_BOOST_WITHOUT_FLAGS_COMMASEPARATED = $(subst $(space),$(comma),$(strip $(HOST_BOOST_WITHOUT_FLAGS))) -HOST_BOOST_FLAGS += $(if $(HOST_BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(HOST_BOOST_WITHOUT_FLAGS_COMMASEPARATED)) +HOST_BOOST_FLAGS += \ + --with-libraries=$(subst $(space),$(comma),$(strip $(HOST_BOOST_LIBS))) HOST_BOOST_OPTS += toolset=gcc threading=multi \ variant=release link=shared runtime-link=shared -j$(PARALLEL_JOBS) -q \
@@ -130,13 +130,13 @@ endif BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv) endif -BOOST_WITHOUT_FLAGS = \ +BOOST_LIBS = \ $(foreach lib, $(BOOST_ALL_LIBS), \ - $(if $(BR2_PACKAGE_BOOST_$(call UPPERCASE,$(lib))),,$(lib)) \ + $(if $(BR2_PACKAGE_BOOST_$(call UPPERCASE,$(lib))),$(lib)) \ ) -BOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS))) -BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED)) +BOOST_FLAGS += \ + --with-libraries=$(subst $(space),$(comma),$(strip $(BOOST_LIBS))) # how verbose should the build be? BOOST_OPTS += $(if $(QUIET),-d0,-d+1)
@@ -201,7 +201,7 @@ endef BOOST_PRE_INSTALL_TARGET_HOOKS += BOOST_REMOVE_TARGET_LIBRARIES define BOOST_CHECK_TARGET_LIBRARIES - @$(foreach disabled,$(BOOST_WITHOUT_FLAGS),\ + @$(foreach disabled, $(filter-out $(BOOST_LIBS),$(BOOST_ALL_LIBS)), \ ! ls $(TARGET_DIR)/usr/lib/libboost_$(disabled)* 1>/dev/null 2>&1 || \ ! echo "libboost_$(disabled) shouldn't have been installed: missing select in boost/Config.in" || \ exit 1;)
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 22/29 package/boost: explain how to maintain the list of libraries
In reply to Yann E. MORIN--- package/boost/boost.mk | 8 ++++++++ 1 file changed, 8 insertions(+)
package/boost/boost.mk +8 -0
@@ -12,6 +12,14 @@ BOOST_LICENSE = BSL-1.0 BOOST_LICENSE_FILES = LICENSE_1_0.txt BOOST_CPE_ID_VENDOR = boost +# This is the list of libraries that Boost can build. They may not all be +# exposed in the Buildroot menuconfig; only add them as the need arises. +# How to maintain that list (the last step takes a bit of time): +# - make boost-direclean +# - make boost-configure +# Buildrrot will then report any disrepancy: either libraries in this list +# but no longer present in the newer Boost version, or libraries missing in +# this list but present in that nwewer version. BOOST_ALL_LIBS = \ atomic \ chrono \
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 23/29 package/boost: bump to version 1.87.0
In reply to Yann E. MORINAdd a slew of new libraries as reported by ./bootstrap --show-libraries. Add a comment about how to maintain the list, and that they may not all need to be exposed in the menuconfig.
There has been a few dependency changes. Those have been identified by removing all selects, building Boost with exactly one option enabled, identifying those that built without issue (thus were leaf options), then adding dependencies to failing options, and so on iteratively, until all options would build when selected on their own, and without a select that was not already satisfied transitively (that's a limitation, but hey...)
Some dependencies were dropped, and that has been confirned by inspecting the corresponding upstream component. For example, contract no longer needs system since upstream commit eedf51b2c675 (removed linking to boost.system [...]) and available since boost 1.72.0 (so yes, we've had superfluous dependencies for a while now, but it is extra diffficult to detect).
In some cases, this implies a change in what symbol has to be ignored or not:
- contract now selects nothing, so appears orphaned, so must be
ignored;
- exception is now selected by coroutine, so no longer appears
orphaned, so must not be ignored; - timer now selects nothing, so appears orphaned, so must be ignored;
- url now select system, so it no longer appears orphaned, so must not be ignored.
Drop the backported patch, it's been applied upstream since 1.84.0.
---
Changes v1 -> v2:
- rewrite the comment explaining how to maintain the list of Boost libs
- fix URL ref for hash
--- .../0001-unordered-fix-copy-assign.patch | 22 ------- package/boost/Config.in | 34 +++++------ package/boost/boost.hash | 4 +- package/boost/boost.mk | 61 ++++++++++++++++++- 4 files changed, 75 insertions(+), 46 deletions(-) delete mode 100644 package/boost/0001-unordered-fix-copy-assign.patch
package/boost/0001-unordered-fix-copy-assign.patch deleted +0 -22
@@ -1,22 +0,0 @@ -Upstream Patch for Unordered - -Prevent erroneous copying of groups data, update max load to properly propagate - -Signed-off-by: Michael Nosthoff <[email protected]> -Upstream: https://github.com/boostorg/unordered/commit/067884a4e213352e7c81c441f1453c54735c39f3 -diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp -index 239d05d3..7ae9f2c8 100644 ---- a/boost/unordered/detail/foa/core.hpp -+++ b/boost/unordered/detail/foa/core.hpp -@@ -1870,9 +1870,10 @@ private: - - void fast_copy_elements_from(const table_core& x) - { -- if(arrays.elements){ -+ if(arrays.elements&&x.arrays.elements){ - copy_elements_array_from(x); - copy_groups_array_from(x); -+ size_ctrl.ml=std::size_t(x.size_ctrl.ml); - size_ctrl.size=std::size_t(x.size_ctrl.size); - } - }
package/boost/Config.in +14 -20
@@ -65,11 +65,11 @@ config BR2_PACKAGE_BOOST_CONTEXT comment "boost-context needs a toolchain w/ C++11, gcc>=4.8" depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 +# check-symbol ignore config BR2_PACKAGE_BOOST_CONTRACT bool "boost-contract" # pthread_condattr_setclock depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL - select BR2_PACKAGE_BOOST_SYSTEM help Contract programming for C++.
@@ -82,10 +82,9 @@ config BR2_PACKAGE_BOOST_COROUTINE depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread - select BR2_PACKAGE_BOOST_CHRONO select BR2_PACKAGE_BOOST_CONTEXT + select BR2_PACKAGE_BOOST_EXCEPTION select BR2_PACKAGE_BOOST_SYSTEM - select BR2_PACKAGE_BOOST_THREAD help deprecated coroutine library, the non-deprecated coroutine2 library is a header-only library and does not need to be
@@ -105,7 +104,6 @@ config BR2_PACKAGE_BOOST_DATE_TIME A set of date-time libraries based on generic programming concepts. -# check-symbol ignore config BR2_PACKAGE_BOOST_EXCEPTION bool "boost-exception" help
@@ -125,7 +123,6 @@ config BR2_PACKAGE_BOOST_FIBER depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 select BR2_PACKAGE_BOOST_CONTEXT select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_BOOST_SYSTEM help C++11 userland threads library.
@@ -149,7 +146,6 @@ config BR2_PACKAGE_BOOST_FILESYSTEM config BR2_PACKAGE_BOOST_GRAPH bool "boost-graph" - select BR2_PACKAGE_BOOST_REGEX help The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL).
@@ -165,6 +161,8 @@ config BR2_PACKAGE_BOOST_IOSTREAMS bool "boost-iostreams" select BR2_PACKAGE_BZIP2 select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_REGEX help Boost.IOStreams provides a framework for defining streams, stream buffers and i/o filters.
@@ -172,6 +170,7 @@ config BR2_PACKAGE_BOOST_IOSTREAMS config BR2_PACKAGE_BOOST_JSON bool "boost-json" select BR2_PACKAGE_BOOST_CONTAINER + select BR2_PACKAGE_BOOST_SYSTEM help Boost.JSON is a portable C++ library which provides containers and algorithms that implement JavaScript Object Notation, or
@@ -193,7 +192,6 @@ config BR2_PACKAGE_BOOST_LOCALE depends on !(BR2_TOOLCHAIN_HAS_GCC_BUG_64735 && BR2_PACKAGE_ICU) # boost-thread depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \ || !BR2_PACKAGE_ICU # boost-thread - select BR2_PACKAGE_BOOST_SYSTEM select BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE help
@@ -214,11 +212,7 @@ config BR2_PACKAGE_BOOST_LOG depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread - select BR2_PACKAGE_BOOST_ATOMIC - select BR2_PACKAGE_BOOST_DATE_TIME select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_BOOST_REGEX - select BR2_PACKAGE_BOOST_SYSTEM select BR2_PACKAGE_BOOST_THREAD help Logging library.
@@ -233,6 +227,8 @@ comment "boost-log needs a toolchain not affected by GCC bug 64735" config BR2_PACKAGE_BOOST_MATH bool "boost-math" depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + select BR2_PACKAGE_BOOST_CONTAINER + select BR2_PACKAGE_BOOST_RANDOM help Boost.Math includes several contributions in the domain of mathematics:
@@ -282,6 +278,8 @@ config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS config BR2_PACKAGE_BOOST_PYTHON bool "boost-python" depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_BOOST_CONTAINER + select BR2_PACKAGE_BOOST_GRAPH help The Boost Python Library is a framework for interfacing Python and C++. It allows you to quickly and seamlessly expose C++
@@ -324,8 +322,6 @@ config BR2_PACKAGE_BOOST_SYSTEM config BR2_PACKAGE_BOOST_TEST bool "boost-test" depends on BR2_USE_MMU # fork() - select BR2_PACKAGE_BOOST_SYSTEM - select BR2_PACKAGE_BOOST_TIMER help Support for simple program testing, full unit testing, and for program execution monitoring.
@@ -334,18 +330,16 @@ config BR2_PACKAGE_BOOST_THREAD bool "boost-thread" depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception - select BR2_PACKAGE_BOOST_CHRONO - select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_CHRONO # For dependents only help Portable C++ multi-threading. C++11, C++14. comment "boost-thread needs a toolchain not affected by GCC bug 64735" depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 +# check-symbol ignore config BR2_PACKAGE_BOOST_TIMER bool "boost-timer" - select BR2_PACKAGE_BOOST_CHRONO - select BR2_PACKAGE_BOOST_SYSTEM help Event timer, progress timer, and progress display classes.
@@ -361,9 +355,9 @@ config BR2_PACKAGE_BOOST_TYPE_ERASURE comment "boost-type_erasure needs a toolchain not affected by GCC bug 64735" depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 -# check-symbol ignore config BR2_PACKAGE_BOOST_URL bool "boost-url" + select BR2_PACKAGE_BOOST_SYSTEM help Boost.URL is a portable C++ library which provides containers and algorithms which model a "URL," more formally described
@@ -382,9 +376,9 @@ config BR2_PACKAGE_BOOST_WAVE depends on !BR2_m68k_cf depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread - select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_CONTAINER select BR2_PACKAGE_BOOST_FILESYSTEM - select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_SERIALIZATION select BR2_PACKAGE_BOOST_THREAD help The Boost.Wave library is a Standards conformant, and highly
package/boost/boost.hash +2 -2
@@ -1,5 +1,5 @@ -# From https://www.boost.org/users/history/version_1_83_0.html -sha256 6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e boost_1_83_0.tar.bz2 +# From https://www.boost.org/users/history/version_1_87_0.html +sha256 af57be25cb4c4f4b413ed692fe378affb4352ea50fbe294a11ef548f4d527d89 boost_1_87_0.tar.bz2 # Locally computed sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt
package/boost/boost.mk +59 -2
105 lines not on this page · raw message
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 23/29 v2] package/boost: bump to version 1.87.0
Hi Yann,
On Wednesday, April 09, 2025 22:03 CEST, "Yann E. MORIN" <[email protected]> wrote:
Great that you took the time to clean up the boost package and bump it.
I had the bumping on my list for some time now but didn't manage to finish it due to the many C++03 deprecations in the last releases. I discovered some issues with some boost internal dependencies. Especially troublesome was using a gcc < 6.0 where C++11 is not set as default mode and the package pulling in the header dependency that required C++11 wasn't setting C++11 mode.
As I don't see any new BR2_TOOLCHAIN_GCC_AT_LEAST_* lines in the patch I assume you didn't look at this?
Here my list of packages that now require a newer C++ version (taken from the release notes):
now requiring C++11:
- asio
- atomic
- bind
- chrono
- crc
- filesystem
- format
- function
- log
- optional
- random
- ratio
- smartptr
- stacktrace
- system
- test
- thread
- typeindex
- typeof
- uuid
- variant
now requiring C++14:
- graph
- heap
- lockfree
Regards,
Michael
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 23/29 v2] package/boost: bump to version 1.87.0
Michael, All,
On 2025-04-15 11:56 +0200, Michael Nosthoff spake thusly:
Quoted 2 lines · Yann E. MORIN
Great that you took the time to clean up the boost package and bump it.
And just right after I sent the series, they released boost 1.88.0!
I guess I'll have to eat my own dog food to prove that my cleanups and rework do indeed make it easier to bump. ;-]
Quoted 9 lines
I had the bumping on my list for some time now but didn't manage to finish it due to the many C++03 deprecations in the last releases. I discovered some issues with some boost internal dependencies. Especially troublesome was using a gcc < 6.0 where C++11 is not set as default mode and the package pulling in the header dependency that required C++11 wasn't setting C++11 mode.
As I don't see any new BR2_TOOLCHAIN_GCC_AT_LEAST_* lines in the patch I assume you didn't look at this?
Indeed I did not.
I first wanted to make it easier to test boost, but this package is just insane.
Currently, to update the dependencies of libraries is very difficult, especially to drop no-longer needed dependencies. For example, since 1.72.0, contract no longer needs system. With the current Config.in, this is totally impossible to detect, so much so that it has lingered in Buildroot up until now.
To properly detect that, we need to manually edit the Config.in, remove all dependencies, and build (configure is enough) libs one by one until one breaks, at which point we can add the required dependencies, and so on and so forth until all libs are covered. Given the amount of libs in 1.87 and beyond, this is just an insane work...
And when we have a solution for that problem, then it becomes easier to pass boost through the ./utils/test-pkg harness, to test-build libs one by one to check whether they get new toolchain dependencies...
Quoted 2 lines
Here my list of packages that now require a newer C++ version (taken from the release notes):
[--SNIP--]
Thanks, that's very useful information! I'll have a look at 1.88.0 to update that list...
Thanks for the feedback! :-)
Regards,
Yann E. MORIN.
Signature · 10 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 24/29 package/sdcc: new package
In reply to Yann E. MORINAlthough they are optional, most ports need sdcppp and sdbinutils, especially when we later add an option to build the device libraries. Furthermore, they are relatively quick to build. So, we always build them unconditionally.
For now, we enable no port, to get a basic package. Enabling ports will come in following commits [0].
To be noted: sdcc will hard-code its PREFIX/share/sdcc/ (from configure --datadir and --datarootdir) as a search path to lok for its stdlib. It also add a path relative ot where its executable is, i.e. something like [...]/bin/../share/sdcc/ as an additional search path for additional libraries. When PPD is enabled, PREFIX/share/sdcc/ is copied to the depndee's PPD, so the stdlibs will be found in both locations, causing sdld to eventually whine because of duplicate symbols:
?ASlink-Warning-Definition of public symbol '___sdcc_external_startup' found more than once:
Library: '.../per-package/fx2lafw/host/bin/../share/sdcc/lib/small/libsdcc.lib', Module: '_startup.rel'
Library: '.../per-package/host-sdcc/host/share/sdcc/lib/small/libsdcc.lib', Module: '_startup.rel'
As tested with fx2lafw (to come in a later commit), the generated binaries are byte-for-byte identical whether PPD is enabled (duplicate symbols) or not (no duplicate symbol).
The licensing terms are a bit hectic: the core of sdcc, the sdcc compiler itself, is GPLv2, and the doc [1] adds "GPLv3 might apply depending on the libraries used when building", which is a bit ambiguous... GPLv3 is however the license for other parts of sdcc, like the sdcpp preprocessor (derived from gcc), the sdbinutils (derived from binutils), or the sdasXXX assemblers and sdld linker (derived from an external package, asXXXX [2]). As sdld is always built, GPLv3 always applies. One tool is under the zlib license. Others are disabled, so their licensing terms do not apply (until we add options to enable them).
[0] with all ports disabled as it is in this initial commit, sdcc will end up building some stuff at install time; this is not a problem in practice, as the default commands and flags all work nicely. Furthermore, the issue will disappear when we eventually add one port, in the following commit.
[1] the PDF rendered from the in-tree docs/dsccman.lyx, and of which the latest version is at https://sdcc.sourceforge.net/doc/sdccman.pdf,
notably section 1.2, SDCC Suite Licenses.
[2] https://shop-pdp.net/ashtml/
--- DEVELOPERS | 3 ++ package/Config.in.host | 1 + package/sdcc/Config.in.host | 15 ++++++++ package/sdcc/sdcc.hash | 7 ++++ package/sdcc/sdcc.mk | 75 +++++++++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+) create mode 100644 package/sdcc/Config.in.host create mode 100644 package/sdcc/sdcc.hash create mode 100644 package/sdcc/sdcc.mk
DEVELOPERS +3 -0
@@ -3438,6 +3438,9 @@ F: package/casync/ F: package/gloox/ F: package/tpm2-pkcs11/ +N: Yann E. MORIN <[email protected]> +F: package/sdcc/ + N: Yann E. MORIN <[email protected]> F: .editorconfig F: package/gpsd/
package/Config.in.host +1 -0
@@ -109,6 +109,7 @@ menu "Host utilities" source "package/sam-ba/Config.in.host" source "package/sdbus-cpp/Config.in.host" source "package/sdbusplus/Config.in.host" + source "package/sdcc/Config.in.host" source "package/sentry-cli/Config.in.host" source "package/skopeo/Config.in.host" source "package/sloci-image/Config.in.host"
package/sdcc/Config.in.host new file +15 -0
@@ -0,0 +1,15 @@ +config BR2_PACKAGE_HOST_SDCC + bool "host sdcc" + select BR2_PACKAGE_HOST_BOOST + select BR2_PACKAGE_HOST_BOOST_GRAPH + help + SDCC is a retargettable, optimizing Standard C (ANSI C89, ISO + C99, ISO C11, ISO C23) compiler suite that targets the Intel + MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), + Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly + Motorola) HC08 based (hc08, s08), Zilog Z80 based MCUs (Z80, + Z180, SM83, Rabbit 2000, 2000A, 3000A, TLCS-90, R800), Padauk + (pdk14, pdk15), STMicroelectronics STM8, MOS 6502 and WDC + 65C02. + + https://sdcc.sourceforge.net/
package/sdcc/sdcc.hash new file +7 -0
@@ -0,0 +1,7 @@ +# From sourceforge +sha1 ffc600a471b2684a3b268859b038487e43b811ed sdcc-src-4.5.0.tar.bz2 +# Locally computed +sha256 d5030437fb436bb1d93a8dbdbfb46baaa60613318f4fb3f5871d72815d1eed80 sdcc-src-4.5.0.tar.bz2 +sha256 1ca3e8f71b7de618968e7ea9fe47822d9e704dc476aef8544033abedec355225 COPYING +sha256 c23d0df4adc62b3f7cddcf96bec64e7100bfe7671eefe2ce31b9ace366fcc001 LICENSE +sha256 39c81a22595e472dcae2caf7b1a4009a9bbaad7b043d800a5af0631c612961af doc/README.txt
package/sdcc/sdcc.mk new file +75 -0
75 lines not on this page · raw message
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 25/29 package/sdcc: add option for the mcs51 (aka 8051) port
In reply to Yann E. MORINEnabling a port enables the assembler for that port; the other utilities (sdcpp, sdbinutils) are always built.
We make it so that at least one port is enabled, otherwise it does not make much sense to enable sdcc [0]. Also, without any port enabled, some parts of sdcc (e.g. sdld) get compiled at install time, which is incorrect (but by luck just happens to use the proper tools and compile flags).
The mcs51 port is the first one that will be needed (for fx2lafw in a following commit). So we make that the default port to use if no other is enabled (another port will be added soon, too, so we get ready for that right now).
[0] there is one utility, packihx, that could be used without any port enabled, but that was not deemed an interesting-enough use-case to support.
--- package/sdcc/Config.in.host | 16 ++++++++++++++++ package/sdcc/sdcc.mk | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-)
package/sdcc/Config.in.host +16 -0
@@ -2,6 +2,7 @@ config BR2_PACKAGE_HOST_SDCC bool "host sdcc" select BR2_PACKAGE_HOST_BOOST select BR2_PACKAGE_HOST_BOOST_GRAPH + select BR2_PACKAGE_HOST_SDCC_MCS51 if !BR2_PACKAGE_HOST_SDCC_HAS_PORT help SDCC is a retargettable, optimizing Standard C (ANSI C89, ISO C99, ISO C11, ISO C23) compiler suite that targets the Intel
@@ -13,3 +14,18 @@ config BR2_PACKAGE_HOST_SDCC 65C02. https://sdcc.sourceforge.net/ + +if BR2_PACKAGE_HOST_SDCC + +comment "Ports" + +config BR2_PACKAGE_HOST_SDCC_HAS_PORT + bool + +config BR2_PACKAGE_HOST_SDCC_MCS51 + bool "mcs51 (8051 et al.)" + help + Add support for Intel MCS-51 based Microprocessors (8031, + 8032, 8051, 8052, etc.), + +endif
package/sdcc/sdcc.mk +1 -1
@@ -51,7 +51,7 @@ HOST_SDCC_CONF_OPTS += \ --disable-ez80_z80-port \ --disable-f8-port \ --disable-hc08-port \ - --disable-mcs51-port \ + $(if $(BR2_PACKAGE_HOST_SDCC_MCS51),--enable,--disable)-mcs51-port \ --disable-mos6502-port \ --disable-mos65c02-port \ --disable-pdk13-port \
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 26/29 package/sdcc: add option for the z80 port
In reply to Yann E. MORINThe z80 is a common microprocessor familly, and although it is currently unused in Buildroot, it makes sense to enable to demonstrate how to enable ports other than the mcs51.
Note that we decided to add a single option that enables all the variants of z80, rather than one for each variant: this only installs a single additional program that handles all z80 variants anyway. When the device libs are enabled, one set of libs is installed for each variant, though they are small enough that it does not warrant adding an option for each variant.
--- package/sdcc/Config.in.host | 8 ++++++++ package/sdcc/sdcc.mk | 8 ++++---- 2 files changed, 12 insertions(+), 4 deletions(-)
package/sdcc/Config.in.host +8 -0
@@ -28,4 +28,12 @@ config BR2_PACKAGE_HOST_SDCC_MCS51 Add support for Intel MCS-51 based Microprocessors (8031, 8032, 8051, 8052, etc.), +config BR2_PACKAGE_HOST_SDCC_Z80 + bool "z80 (et al.)" + select BR2_PACKAGE_HOST_SDCC_HAS_PORT + help + Add support for Zilog Z80 based MCUs (Z80, Z180, eZ80 in Z80 + mode, SM83, Rabbit 2000/3000, Rabbit 3000A , Toshiba TLCS-90, + Zilog eZ80 in Z80 mode, ASCII R800), + endif
package/sdcc/sdcc.mk +4 -4
@@ -48,7 +48,7 @@ HOST_SDCC_CONF_OPTS += \ HOST_SDCC_CONF_OPTS += \ --disable-ds390-port \ --disable-ds400-port \ - --disable-ez80_z80-port \ + $(if $(BR2_PACKAGE_HOST_SDCC_Z80),--enable,--disable)-ez80_z80-port \ --disable-f8-port \ --disable-hc08-port \ $(if $(BR2_PACKAGE_HOST_SDCC_MCS51),--enable,--disable)-mcs51-port \
@@ -68,8 +68,8 @@ HOST_SDCC_CONF_OPTS += \ --disable-sm83-port \ --disable-stm8-port \ --disable-tlcs90-port \ - --disable-z180-port \ - --disable-z80-port \ - --disable-z80n-port + $(if $(BR2_PACKAGE_HOST_SDCC_Z80),--enable,--disable)-z180-port \ + $(if $(BR2_PACKAGE_HOST_SDCC_Z80),--enable,--disable)-z80-port \ + $(if $(BR2_PACKAGE_HOST_SDCC_Z80),--enable,--disable)-z80n-port $(eval $(host-autotools-package))
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 27/29 package/sdcc: add option for the device lib
In reply to Yann E. MORINThis enables the "stdlib"-like set of libraries for the enabled ports and for the various memory models supported by each port.
For some ports, there are non-fee libraries (and includes) available. However, their licensing terms are dubious, and they are only available for the PIC ports which we currently do not enable in Buildroot. So we do not enable those non-free stuff.
--- package/sdcc/Config.in.host | 5 +++++ package/sdcc/sdcc.mk | 21 +++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-)
package/sdcc/Config.in.host +5 -0
@@ -36,4 +36,9 @@ config BR2_PACKAGE_HOST_SDCC_Z80 mode, SM83, Rabbit 2000/3000, Rabbit 3000A , Toshiba TLCS-90, Zilog eZ80 in Z80 mode, ASCII R800), +comment "libraries" + +config BR2_PACKAGE_HOST_SDCC_DEV_LIB + bool "device-lib" + endif
package/sdcc/sdcc.mk +19 -2
@@ -32,8 +32,6 @@ HOST_SDCC_DEPENDENCIES = \ HOST_SDCC_CONF_OPTS = \ --without-ccache \ --disable-doc \ - --disable-device-lib \ - --disable-non-free \ --disable-libgc # Keep utilities separate, and alphabeticaly ordered.
@@ -72,4 +70,23 @@ HOST_SDCC_CONF_OPTS += \ $(if $(BR2_PACKAGE_HOST_SDCC_Z80),--enable,--disable)-z80-port \ $(if $(BR2_PACKAGE_HOST_SDCC_Z80),--enable,--disable)-z80n-port +ifeq ($(BR2_PACKAGE_HOST_SDCC_DEV_LIB),y) +SDCC_LICENSE += \ + , GPL-2.0-only with Library Exception (device libraries) + +HOST_SDCC_CONF_OPTS += \ + --enable-device-lib \ + --disable-non-free +define HOST_SDCC_DEV_LIB_CLEAN + rm -rf $(HOST_DIR)/share/sdcc/lib/src + find $(HOST_DIR)/share/sdcc/include $(HOST_DIR)/share/sdcc/lib \ + -depth -type d -empty -delete +endef +HOST_SDCC_POST_INSTALL_HOOKS += HOST_SDCC_DEV_LIB_CLEAN +else +HOST_SDCC_CONF_OPTS += \ + --disable-device-lib \ + --disable-non-free +endif + $(eval $(host-autotools-package))
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 28/29 support/download/git: use FOO_DL_OPTS
In reply to Yann E. MORINThe manual states that FOO_DL_OPTS are valid for all the different download backends, but that is not the case: at least the git backend does not use them (it does not fail, it just ignores them).
Accept FOO_DL_OPTS in the git backend, and pass them to 'git fetch'. There is no way that we can pass such options to submodules or lfs, though.
Update the manual accordingly.
--- docs/manual/adding-packages-generic.adoc | 4 +++- support/download/git | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-)
docs/manual/adding-packages-generic.adoc +3 -1
@@ -270,7 +270,9 @@ not and can not work as people would expect it should: server-side checking for user logins and passwords, or to use a proxy. All download methods valid for +LIBFOO_SITE_METHOD+ are supported; valid options depend on the download method (consult the man page - for the respective download utilities). + for the respective download utilities). For git, +FOO_DL_OPTS+ will + only be passed to `git fetch` and no other git command (esp. not to + `git lfs fetch` or `git submodule update`). * +LIBFOO_EXTRA_DOWNLOADS+ is a space-separated list of additional files that Buildroot should download. If an entry contains +://+
support/download/git +3 -3
@@ -133,8 +133,8 @@ fi _git remote set-url origin "'${uri}'" printf "Fetching all references\n" -_git fetch origin -_git fetch origin -t -f +_git fetch "${@}" origin +_git fetch "${@}" origin -t -f # Try to get the special refs exposed by some forges (pull-requests for # github, changes for gerrit...). There is no easy way to know whether
@@ -143,7 +143,7 @@ _git fetch origin -t -f # below, if there is an issue anyway. Since most of the cset we're gonna # have to clone are not such special refs, consign the output to oblivion # so as not to alarm unsuspecting users, but still trace it as a warning. -if ! _git fetch origin "'${cset}:${cset}'" >/dev/null 2>&1; then +if ! _git fetch "${@}" origin "'${cset}:${cset}'" >/dev/null 2>&1; then printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}" fi
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH 28/29 v2] support/download/git: use FOO_DL_OPTS
Quoted 11 lines · Yann E. MORIN
The manual states that
FOO_DL_OPTSare valid for all the different download backends, but that is not the case: at least the git backend does not use them (it does not fail, it just ignores them).Accept
FOO_DL_OPTSin the git backend, and pass them to 'git fetch'. There is no way that we can pass such options to submodules or lfs, though.Update the manual accordingly.
Signed-off-by Yann E. MORIN <[email protected]>
Applied to 2025.02.x, thanks.
Regards,
Arnout
Quoted 36 lines
--- docs/manual/adding-packages-generic.adoc | 4 +++- support/download/git | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-)docs/manual/adding-packages-generic.adoc +3
-1@@ -270,7 +270,9 @@ not and can not work as people would expect it should: server-side checking for user logins and passwords, or to use a proxy. All download methods valid for +LIBFOO_SITE_METHOD+ are supported; valid options depend on the download method (consult the man page - for the respective download utilities). + for the respective download utilities). For git, +FOO_DL_OPTS+ will + only be passed to `git fetch` and no other git command (esp. not to + `git lfs fetch` or `git submodule update`). * +LIBFOO_EXTRA_DOWNLOADS+ is a space-separated list of additional files that Buildroot should download. If an entry contains +://+support/download/git +2
-2@@ -133,8 +133,8 @@ fi _git remote set-url origin "'${uri}'" printf "Fetching all references\n" -_git fetch origin -_git fetch origin -t -f +_git fetch "${@}" origin +_git fetch "${@}" origin -t -f # Try to get the special refs exposed by some forges (pull-requests for # github, changes for gerrit...). There is no easy way to know whether
support/download/git _git fetch origin -t -f · line 149
Quoted 8 lines
support/download/git +1
-1@@ -143,7 +143,7 @@ _git fetch origin -t -f # below, if there is an issue anyway. Since most of the cset we're gonna # have to clone are not such special refs, consign the output to oblivion # so as not to alarm unsuspecting users, but still trace it as a warning. -if ! _git fetch origin "'${cset}:${cset}'" >/dev/null 2>&1; then +if ! _git fetch "${@}" origin "'${cset}:${cset}'" >/dev/null 2>&1; then printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}" fi
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 29/29 package/fx2lafw: new package
In reply to Yann E. MORINfx2lafw (FX2 logic analyser firmware) is a set of firmware files for FX2- or FX2L-based logic analysers. It is developped by the Sigrok project.
The latest release, 0.1.7, is more than 5 years old now, and no longer builds with recent sdcc versions (starting with 4.2.3). The git tree has fixes for those build failures. Rather than backport the 4 commits of interest, just use the git tree directly: it contains another unrelated fix, a few documentation changes, and two new firmwares. Also, given the git tree has not been touched since early 2024, and given the frequency of releases before that, don't wait to get those two new firmwares.
fx2lafw bundles fx2lib. Usually, we'd avoid using a bundled version, but in this case, it is an old version, and anyway fx2lafw can't use a pre-installed version. The probability that another package would use fx2lib is extra slim as well; if we eventually get one, the chances it also bundles its own copy are also relatively high. And finally, fx2lib runs on a separate microcontroller, not on the target's main CPU, so it can't be shared to any "real target" package. There is no reason to expand the efforts to unbundle it.
sigrok.org's IPv6 is unresponsive, and as it is the first one tried when connecting, this causes a huge delay when fetching; indeed, our git backend does at least three git-fetch, each timing out after ~135s, for a total of ~400s, plus the time of download (which is fortunately rather small for this package). So, force use of IPv4.
--- DEVELOPERS | 1 + package/Config.in | 1 + package/fx2lafw/Config.in | 11 +++++++++++ package/fx2lafw/fx2lafw.hash | 5 +++++ package/fx2lafw/fx2lafw.mk | 21 +++++++++++++++++++++ 5 files changed, 39 insertions(+) create mode 100644 package/fx2lafw/Config.in create mode 100644 package/fx2lafw/fx2lafw.hash create mode 100644 package/fx2lafw/fx2lafw.mk
DEVELOPERS +1 -0
@@ -3439,6 +3439,7 @@ F: package/gloox/ F: package/tpm2-pkcs11/ N: Yann E. MORIN <[email protected]> +F: package/fx2lafw/ F: package/sdcc/ N: Yann E. MORIN <[email protected]>
package/Config.in +1 -0
@@ -445,6 +445,7 @@ menu "Firmware" source "package/armbian-firmware/Config.in" source "package/b43-firmware/Config.in" source "package/brcmfmac_sdio-firmware-rpi/Config.in" + source "package/fx2lafw/Config.in" source "package/linux-firmware/Config.in" source "package/murata-cyw-fw/Config.in" source "package/nxp-bt-wifi-firmware/Config.in"
package/fx2lafw/Config.in new file +11 -0
@@ -0,0 +1,11 @@ +config BR2_PACKAGE_FX2LAFW + bool "fx2lafw" + select BR2_PACKAGE_HOST_SDCC + select BR2_PACKAGE_HOST_SDCC_DEV_LIB + select BR2_PACKAGE_HOST_SDCC_MCS51 + help + fx2lafw is an open-source firmware for Cypress FX2 chips which + makes them usable as simple logic analyzer and/or oscilloscope + hardware. + + https://sigrok.org/wiki/Fx2lafw
package/fx2lafw/fx2lafw.hash new file +5 -0
@@ -0,0 +1,5 @@ +# Locally computed +sha256 8efa8c555384a463a50a0d8ff12dbe718308132fdcf0db0d45b1cadb0868f52f fx2lafw-0f2d3242ffb5582e5b9a018ed9ae9812d517a56e-git4.tar.gz +sha256 5081618178f9a8946720f37b898fb502a06d470092dbeb64041fa988a45aab8c README +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER
package/fx2lafw/fx2lafw.mk new file +21 -0
@@ -0,0 +1,21 @@ +################################################################################ +# +# fx2lafw +# +################################################################################ + +FX2LAFW_VERSION = 0f2d3242ffb5582e5b9a018ed9ae9812d517a56e +FX2LAFW_SITE = git://sigrok.org/sigrok-firmware-fx2lafw + +# The IPv6 is unresponsive, causing huge delays during download, so force IPv4 +FX2LAFW_DL_OPTS = -4 + +FX2LAFW_LICENSE = GPL-2.0-or-later, LGPL-2.1-or-later (fx2lib) +FX2LAFW_LICENSE_FILES = README COPYING COPYING.LESSER + +FX2LAFW_DEPENDENCIES = host-sdcc + +# Straight our of git tree +FX2LAFW_AUTORECONF = YES + +$(eval $(autotools-package))
Signature · 6 lines
2.47.0 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Hello Yann,
Quoted 9 lines · On Wed, 9 Apr 2025 22:03:42 +0200 "Yann E. MORIN" <[email protected]>…
This series aims at making the pulseview and other sigrok-related packages more integrated. The series is articulated around three main goals, the details of which are expanded later:
1. cleanup and extend pulseview dependencies, notably the need forfonts; 2. extend the boost package, for a better host variant, and better maintainability;3. introduce sdcc and fx2lafw, to allow use of Cypress FX2-based logic analyzers.
Wow, this is a large series doing a lot of stuff. I already applied a few of the preparation patches in order to reduce a bit the size of your series.
Now, I have several concerns about different aspects of the series. Nothing I am entirely against, just topics on which I am not 100% sure on how we want to deal with them.
First topic is the some-font package and this whole idea that all font packages should at least install some font. One thing that bothers me is that fonts can be provided in different formats, and "some-font" doesn't say which font format will be used/available. Should we make this "some-ttf-font", or something like that? Is that even a mechanism we want in Buildroot at all? Arnout, Peter, Julien, Romain, any opinion?
Second topic of concern is how you handle the host-boost dependency. You add a "select BR2_PACKAGE_HOST_BOOST" to all packages that need host-boost, adding hidden Config.in.host options for all of them. Is this really what we want? So far, we have never required BR2_PACKAGE_HOST_* options to be selected (think BR2_PACKAGE_HOST_PKGCONF for example). So to stay consistent, I would rather suggest that the BR2_PACKAGE_HOST_BOOST_<something> hidden options that are needed get added and selected by whoever need them, but BR2_PACKAGE_HOST_BOOST isn't needed, nor it is necessary for packages to select it. Of course, unless we decide to bite the bullet and have Config.in.host options for all host packages, always selected, but that's a huge effort and complicated one (think host-cmake, which may or may not be built depending on whether there is a suitable CMake version on the host machine). Here as well, Peter, Arnout, Julien, Romain, any opinion?
Best regards,
Thomas
Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin Embedded Linux and Kernel engineering and training https://bootlin.com _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas, All,
On 2025-04-19 17:17 +0200, Thomas Petazzoni spake thusly:
Quoted 12 lines
Quoted 9 lines · On Wed, 9 Apr 2025 22:03:42 +0200 "Yann E. MORIN" <[email protected]>…
This series aims at making the pulseview and other sigrok-related packages more integrated. The series is articulated around three main goals, the details of which are expanded later:
1. cleanup and extend pulseview dependencies, notably the need forfonts; 2. extend the boost package, for a better host variant, and better maintainability;3. introduce sdcc and fx2lafw, to allow use of Cypress FX2-based logic analyzers.
Quoted 1 line
Wow, this is a large series doing a lot of stuff.
Yes, but it is all related and triggered by the f2xlafw package coming last in the series... So, a lot of different things, but to an ultimate common goal.
Quoted 3 lines
I already applied a
few of the preparation patches in order to reduce a bit the size of your series.
\o/ :-)
Quoted 10 lines
Now, I have several concerns about different aspects of the series. Nothing I am entirely against, just topics on which I am not 100% sure on how we want to deal with them.
First topic is the some-font package and this whole idea that all font packages should at least install some font. One thing that bothers me is that fonts can be provided in different formats, and "some-font" doesn't say which font format will be used/available. Should we make this "some-ttf-font", or something like that? Is that even a mechanism we want in Buildroot at all? Arnout, Peter, Julien, Romain, any opinion?
Yes, the some-font stuff is not what I am most proud of. If you have a better idea on how to allow applications to request that some font be available, or some refinements on my solutions, I'm all ears and eyes.
As for TTF vs fixed-width, I don't think that makes a difference. Applicaitons usually use a font rendering library, like fontconfig and harfbuzz et al. which would load and render text from whatever font they are told to load, or that is available... In the very limited use-case I had, running pulseview full-screen on framebuffer on rpi2, it was working very well whatever the fonts that were installed (the text would look slightly ugly/weird at times, but was rendered OK).
But I'm by far not an expert in fonts, so I may very well be talking bullshit.
Quoted 10 lines
Second topic of concern is how you handle the host-boost dependency. You add a "select
BR2_PACKAGE_HOST_BOOST" to all packages that need host-boost, adding hidden Config.in.host options for all of them. Is this really what we want? So far, we have never required BR2_PACKAGE_HOST_* options to be selected (thinkBR2_PACKAGE_HOST_PKGCONFfor example). So to stay consistent, I would rather suggest that the BR2_PACKAGE_HOST_BOOST_<something> hidden options that are needed get added and selected by whoever need them, butBR2_PACKAGE_HOST_BOOSTisn't needed, nor it is necessary for packages to select it.
The thing is, if you look for example to the package host-odb, it does not itself need host-boost, but it depends on libodb-boost, which does. Today, libodb-boost does not need any of the boost extra libraries, but if tomorrow it does, then without a host-libodb-boost Kconfig symbol, it would be host-odb that would have to carry the selection of that extra boost library; that does not sound too nice to me...
Second, if a package selects HOST_BOOST_BLAH, it is not too much of a burden to also select _HOST_BOOST, I believe. I modeled that from the host-python3 package: there is a main symbol that has to be selected before sub-options can also be selected. Granted, host-python also has a prompt and can be enabled on its own, which is not the case for host-boost. However, I think it would be a little bit awkward to have symbols for sub-options of a package that has no main symbol for itself... (but if the consensus is to just drop the main symbol, and just keep the rest of the symbols as-is for a configurable host variant, I will not argue further, that would be fine for me as well).
Quoted 5 lines
Of course, unless we decide to bite the bullet
and have Config.in.host options for all host packages, always selected, but that's a huge effort and complicated one (think host-cmake, which may or may not be built depending on whether there is a suitable CMake version on the host machine).
We already talked about this and we already tried, but it really is way too much to do; let's concentrate on those packages where that is actually needed and/or makes sense and/or is not too much trouble...
However, to be honest, that is not the part of the boost changes I was expecting the most comments about; I had rather expected some (very needed!) questioning on that subset:
utils/check-symbols: allow ignoring some defined-but-unused symbols package/boost: commonalise list of libs
package/boost: check that known libs match Boost's list
Regards,
Yann E. MORIN.
Signature · 10 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Thomas, All,
On 2025-04-19 17:17 +0200, Thomas Petazzoni spake thusly:
Quoted 11 lines
Quoted 9 lines · On Wed, 9 Apr 2025 22:03:42 +0200 "Yann E. MORIN" <[email protected]>…
This series aims at making the pulseview and other sigrok-related packages more integrated. The series is articulated around three main goals, the details of which are expanded later:
1. cleanup and extend pulseview dependencies, notably the need forfonts; 2. extend the boost package, for a better host variant, and better maintainability;3. introduce sdcc and fx2lafw, to allow use of Cypress FX2-based logic analyzers.
[--SNIP--]
Quoted 2 lines
First topic is the some-font package and this whole idea that all font packages should at least install some font.
I realise I did not address that first part earler, so there it is: if a font package is enabled, then it does not make sense that it installs no font at all; hence, when a package is enabled, we want to ensure that it does by default install something.
This is the same situation as we get for other packages that may optionally install multiple things, for exmple fftw, where we ensure at least one variant thereof is enabled (commit 7883e559991); there are quite a few other similar packages: civetweb, gkrellm, gpsd, jack2, libcamera, libiio, linux-tools/hv, minetest, host-qemu, xen, zxing-cpp...
This does not require that the 'some-font' pseudo-package be introduced, by the way (but 'some-font' does require it, of course).
Regards,
Yann E. MORIN.
Signature · 10 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot