Skip to contentSkip to conversation

package: improve for better pulseview integration (branch yem/sdcc-fx2lafw)

PATCH Applied Yann E. MORIN 2 participants 47 messages Apr 9, 2025 – May 2, 2025 RISC-V

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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
index b58c8a2a29..463cb25f28 100644
@@ -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
#2 lore raw

Re: [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
---
 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
#3 lore raw

Re: [Buildroot] [PATCH 01/29 v2] package/libsigrokdecode: needs python3 w/ zlib support

In reply to Yann E. MORIN
Quoted 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

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
index b58c8a2a29..463cb25f28 100644

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

#4 lore raw

PATCH v2 2/29 package/dejavu: update homepage

In reply to Yann E. MORIN

The 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
index 5d21e56088..ca549d30e4 100644
@@ -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
#5 lore raw

Re: [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.

---
 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
#6 lore raw

Re: [Buildroot] [PATCH 02/29 v2] package/dejavu: update homepage

In reply to Yann E. MORIN
Quoted 4 lines · Yann E. MORIN

The currently referenced homepage is a cyber-squatter. Switch to the new official homepage.

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
index 5d21e56088..ca549d30e4 100644

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

#7 lore raw

PATCH v2 3/29 package/dejavu: ensure at least one typeface is installed

In reply to Yann E. MORIN

It 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
index ca549d30e4..771ec38514 100644
@@ -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
#8 lore raw

PATCH v2 4/29 package/liberation: ensure at least one typeface is installed

In reply to Yann E. MORIN

It 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
index 8d6b3e78d9..18ad7044a5 100644
@@ -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
#9 lore raw

PATCH v2 5/29 package/some-font: new pseudo-package

In reply to Yann E. MORIN

Packages 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.

Cc Klaus Heinrich Kiwi <[email protected]>
---
 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
index 291e784f26..28bdae9c1b 100644
@@ -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
index 034f115b4b..ea448894af 100644
@@ -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
index 78af96d595..6d9c7f9641 100644
@@ -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
index 771ec38514..ed92cfb3ad 100644
@@ -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
index 694d74e5a8..22826ee5ee 100644
@@ -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
index 9b9b8d0cd2..cc4e28263a 100644
@@ -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
index de6b388574..eb7eb1328a 100644
@@ -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
new file mode 100644
index 0000000000..d4d1296a20
@@ -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
index f9135e01a1..77be22dd4d 100644
@@ -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
#10 lore raw

PATCH v2 6/29 package/pulseview: fix, update, and reorganise dependencies

In reply to 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 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
index f122551b9f..b1f9dc25d7 100644
@@ -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
#11 lore raw

Re: [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 an

    incorrect 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.

---
 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
#12 lore raw

Re: [Buildroot] [PATCH 06/29 v2] package/pulseview: fix, update, and reorganise dependencies

In reply to Yann E. MORIN
Quoted 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 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 +14 -18
index f122551b9f..b1f9dc25d7 100644
@@ -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

#13 lore raw

Re: [Buildroot] [PATCH 06/29 v2] package/pulseview: fix, update, and reorganise dependencies

In reply to Yann E. MORIN
Quoted 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 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.

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
index f122551b9f..b1f9dc25d7 100644
@@ -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

#14 lore raw

PATCH v2 7/29 package/pulseview: needs some font, and fontconfig support in qt5base

In reply to Yann E. MORIN

pulseview 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
index b1f9dc25d7..94196f631b 100644
@@ -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
#15 lore raw

PATCH v2 8/29 package/boost: move host variables closer together

In reply to Yann E. MORIN

Also, one item per line (chrono, container) in the list of libraries.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/boost.mk | 71 +++++++++++++++++++++---------------------
 1 file changed, 36 insertions(+), 35 deletions(-)
package/boost/boost.mk +36 -35
index c0d17f7670..044dd275b3 100644
@@ -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
#16 lore raw

Re: [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.

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
#17 lore raw

Re: [Buildroot] [PATCH 08/29 v2] package/boost: move host variables closer together

In reply to Yann E. MORIN
Quoted 5 lines · Yann E. MORIN

Also, one item per line (chrono, container) in the list of libraries.

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
index c0d17f7670..044dd275b3 100644
@@ -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

#18 lore raw

PATCH v2 9/29 package/boost: move taget library selection variables closer together

In reply to Yann E. MORIN
Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/boost.mk | 66 +++++++++++++++++++++---------------------
 1 file changed, 33 insertions(+), 33 deletions(-)
package/boost/boost.mk +33 -33
index 044dd275b3..1dcc4a4b3a 100644
@@ -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
#19 lore raw

Re: [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]>…
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
#20 lore raw

Re: [Buildroot] [PATCH 09/29 v2] package/boost: move taget library selection variables closer together

In reply to Yann E. MORIN
Quoted 3 lines · Yann E. MORIN
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
index 044dd275b3..1dcc4a4b3a 100644
@@ -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

#21 lore raw

PATCH v2 10/29 package/boost: prepare for a configurable host variant

In reply to Yann E. MORIN

Even 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.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/boost.mk | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
package/boost/boost.mk +9 -4
index 1dcc4a4b3a..6af76e1302 100644
@@ -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
#22 lore raw

PATCH v2 11/29 package/boost: add host symbol

In reply to Yann E. MORIN

That 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.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 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
index bf04f5fa97..3e6fef9e50 100644
@@ -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
new file mode 100644
index 0000000000..5ffcbe6932
@@ -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
#23 lore raw

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
new file mode 100644
index 0000000000..fdf2b1c25f
@@ -0,0 +1,3 @@
+config BR2_PACKAGE_HOST_LIBODB_BOOST
+	bool
+	select BR2_PACKAGE_HOST_BOOST
package/odb/Config.in.host +1 -0
index bff3142ee5..41192bc25b 100644
@@ -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
#24 lore raw

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
index 2fa04705a8..dbe7585ea3 100644
@@ -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
new file mode 100644
index 0000000000..5e92365587
@@ -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
#25 lore raw

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
index 4ccf6e9546..eb28d5b063 100644
@@ -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
#26 lore raw

PATCH v2 15/29 pakcage/boost: make host variant slightly configurable

In reply to Yann E. MORIN

regex 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.

Cc Julien Olivain <[email protected]>
Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 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
index 5ffcbe6932..d377a8fbd8 100644
@@ -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
index 6af76e1302..95191476a8 100644
@@ -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
index eb28d5b063..60dc6823d8 100644
@@ -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
#27 lore raw

PATCH v2 16/29 utils/check-symbols: allow ignoring some defined-but-unused symbols

In reply to Yann E. MORIN

In 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_BAR

Those 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.

Cc Ricardo Martincoski <[email protected]>

--
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
index bb78790994..0877db0071 100755
@@ -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
index a4c1b84c56..dc58187dbe 100644
@@ -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
index 9ad6030305..bbdbc5dcbc 100644
@@ -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
index 15576fa897..6416324848 100644
@@ -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
#28 lore raw

PATCH v2 17/29 package/boost: commonalise list of libs

In reply to Yann E. MORIN

The 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 ='

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 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
index c7c90aa9ab..f37efd129b 100644
@@ -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
index d377a8fbd8..bf69287383 100644
@@ -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
#29 lore raw

PATCH v2 18/29 package/boost: add graph option for host variant

In reply to Yann E. MORIN

host-sdcc will need that option.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/Config.in.host | 4 ++++
 1 file changed, 4 insertions(+)
package/boost/Config.in.host +4 -0
index bf69287383..c378c0ce74 100644
@@ -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
#30 lore raw

PATCH v2 19/29 package/boost: headers-only libs are always installed

In reply to Yann E. MORIN

The 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.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/Config.in | 7 +++++++
 package/boost/boost.mk  | 1 +
 2 files changed, 8 insertions(+)
package/boost/Config.in +7 -0
index f37efd129b..784c40278b 100644
@@ -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
index 2b952baaac..e849f902f2 100644
@@ -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
#31 lore raw

PATCH v2 20/29 package/boost: check that known libs match Boost's list

In reply to Yann E. MORIN

When 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.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/boost.mk | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
package/boost/boost.mk +29 -0
index e849f902f2..7538dcb8f4 100644
@@ -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
#32 lore raw

PATCH v2 21/29 package/boost: use positive logic to enable libraries

In reply to Yann E. MORIN

boostrap.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.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>
---
 package/boost/boost.mk | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
package/boost/boost.mk +9 -9
index 7538dcb8f4..aa7b93a375 100644
@@ -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
#33 lore raw

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
index aa7b93a375..6847ea5cfe 100644
@@ -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
#34 lore raw

PATCH v2 23/29 package/boost: bump to version 1.87.0

In reply to Yann E. MORIN

Add 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.

Cc Michael Nosthoff <[email protected]>
Cc Yegor Yefremov <[email protected]>

---
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
deleted file mode 100644
index 670552535a..0000000000
@@ -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
index 784c40278b..d1d1dc2423 100644
@@ -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
index 14403758ac..2a76244a2e 100644
@@ -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
#35 lore raw

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

#36 lore raw

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
#37 lore raw

PATCH v2 24/29 package/sdcc: new package

In reply to Yann E. MORIN

Although 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/

Cc Thomas Petazzoni <[email protected]>
---
 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
index 1c84f95943..b4250a5dbf 100644
@@ -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
index 3e6fef9e50..d29fa33e27 100644
@@ -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
new file mode 100644
index 0000000000..52934aa150
@@ -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
new file mode 100644
index 0000000000..ef5ceb686a
@@ -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
#38 lore raw

PATCH v2 25/29 package/sdcc: add option for the mcs51 (aka 8051) port

In reply to Yann E. MORIN

Enabling 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
index 52934aa150..1c851951b8 100644
@@ -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
index b2082c36bc..60ed688ce4 100644
@@ -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
#39 lore raw

PATCH v2 26/29 package/sdcc: add option for the z80 port

In reply to Yann E. MORIN

The 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
index 1c851951b8..711da37444 100644
@@ -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
index 60ed688ce4..8e5032427f 100644
@@ -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
#40 lore raw

PATCH v2 27/29 package/sdcc: add option for the device lib

In reply to Yann E. MORIN

This 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
index 711da37444..56ac8c7ed1 100644
@@ -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
index 8e5032427f..0e2de37748 100644
@@ -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
#41 lore raw

PATCH v2 28/29 support/download/git: use FOO_DL_OPTS

In reply to Yann E. MORIN

The 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
index f0b0508f53..7e2e066c16 100644
@@ -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
index 8123bc3153..fdc00607cc 100755
@@ -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
#42 lore raw

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_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.

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
index f0b0508f53..7e2e066c16 100644
@@ -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
index 8123bc3153..fdc00607cc 100755
@@ -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

#43 lore raw

PATCH v2 29/29 package/fx2lafw: new package

In reply to Yann E. MORIN

fx2lafw (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.

Cc Thomas Petazzoni <[email protected]>
---
 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
index b4250a5dbf..ccc1f0c61a 100644
@@ -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
index 28bdae9c1b..9e2e63b144 100644
@@ -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
new file mode 100644
index 0000000000..675750d114
@@ -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
new file mode 100644
index 0000000000..d5709c0284
@@ -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
new file mode 100644
index 0000000000..0368208d85
@@ -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
#44 lore raw
In reply to Yann E. MORIN

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 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.

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
#45 lore raw

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 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.

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 (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.

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
#46 lore raw
In reply to Thomas Petazzoni via 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 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.

[--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