* [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs
@ 2022-01-10 14:50 Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 1/5] package/alchemy: new host package Herve Codina
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Herve Codina @ 2022-01-10 14:50 UTC (permalink / raw)
To: buildroot; +Cc: Hervé Codina, Yann E . MORIN, Thomas Petazzoni
Hi,
This patch series introduces the Parrot Alchemy build system as a
host tool (patch 1).
This tool is then used to build several libs (patch 2, 3 and 4).
Finaly (patch 5), a test is provided to check that the binaries
were correctly built.
As it was mentionned by Thomas Peteazzoni in the previous review,
a new package infrastructure was not added for the Alchemy build system.
Indeed, we do not expect to have a significant number of packages that
will rely on the Alchemy build system.
Of course, should we have more of these packages in the future, we can
consider adding a package infrastructure.
This v3 series takes care of the Yann Morin's review.
Changes v2->v3 are detailed in each patch.
Best regards,
Hervé Codina
Herve Codina (5):
package/alchemy: new host package
package/ulog: new package
package/libfutils: new package
package/libshdata: new package
support/testing/tests/package/test_libshdata: new test
DEVELOPERS | 5 ++
package/Config.in | 3 +
...lchains-remove-hash-style-management.patch | 36 +++++++++
package/alchemy/alchemy.hash | 4 +
package/alchemy/alchemy.mk | 71 ++++++++++++++++++
package/alchemy/atom.mk.in | 8 ++
package/libfutils/Config.in | 15 ++++
package/libfutils/libfutils.hash | 3 +
package/libfutils/libfutils.mk | 56 ++++++++++++++
...01-backend-Add-missing-include-files.patch | 47 ++++++++++++
...stress_test-Fix-build-with-musl-libc.patch | 34 +++++++++
package/libshdata/Config.in | 29 +++++++
package/libshdata/libshdata.hash | 3 +
package/libshdata/libshdata.mk | 75 +++++++++++++++++++
package/ulog/Config.in | 12 +++
package/ulog/ulog.hash | 3 +
package/ulog/ulog.mk | 50 +++++++++++++
.../testing/tests/package/test_libshdata.py | 25 +++++++
18 files changed, 479 insertions(+)
create mode 100644 package/alchemy/0001-toolchains-remove-hash-style-management.patch
create mode 100644 package/alchemy/alchemy.hash
create mode 100644 package/alchemy/alchemy.mk
create mode 100644 package/alchemy/atom.mk.in
create mode 100644 package/libfutils/Config.in
create mode 100644 package/libfutils/libfutils.hash
create mode 100644 package/libfutils/libfutils.mk
create mode 100644 package/libshdata/0001-backend-Add-missing-include-files.patch
create mode 100644 package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch
create mode 100644 package/libshdata/Config.in
create mode 100644 package/libshdata/libshdata.hash
create mode 100644 package/libshdata/libshdata.mk
create mode 100644 package/ulog/Config.in
create mode 100644 package/ulog/ulog.hash
create mode 100644 package/ulog/ulog.mk
create mode 100644 support/testing/tests/package/test_libshdata.py
--
2.33.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v3 1/5] package/alchemy: new host package
2022-01-10 14:50 [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs Herve Codina
@ 2022-01-10 14:50 ` Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 2/5] package/ulog: new package Herve Codina
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Herve Codina @ 2022-01-10 14:50 UTC (permalink / raw)
To: buildroot; +Cc: Hervé Codina, Yann E . MORIN, Thomas Petazzoni
Alchemy is a build system developed by Parrot.
It is a new build system based on the one used in Android.
A central makefile instance scans a workspace to find user
makefiles, includes them and register modules to be built.
https://github.com/Parrot-Developers/alchemy
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
Changes v1 -> v2
- Fixed missing license information related to kconfig
- Installed Alchemy in $(HOST_DIR)/opt/alchemy
- Renamed ALCHEMY_TARGET_CONFIGURE_ENV to ALCHEMY_TARGET_ENV
- Removed ALCHEMY_TARGET_CONFIGURE_SDKS macro
Changes v2 -> v3
- Introduced atom.mk.in as suggested by Yann
- Added LIBRARIES in atom.mk.in to set Alchemy dependencies chain.
This is needed to have a complete .a file list for the link
command in case of static lib only.
DEVELOPERS | 1 +
...lchains-remove-hash-style-management.patch | 36 ++++++++++
package/alchemy/alchemy.hash | 4 ++
package/alchemy/alchemy.mk | 71 +++++++++++++++++++
package/alchemy/atom.mk.in | 8 +++
5 files changed, 120 insertions(+)
create mode 100644 package/alchemy/0001-toolchains-remove-hash-style-management.patch
create mode 100644 package/alchemy/alchemy.hash
create mode 100644 package/alchemy/alchemy.mk
create mode 100644 package/alchemy/atom.mk.in
diff --git a/DEVELOPERS b/DEVELOPERS
index cd0b54b041..79b33e9f22 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1187,6 +1187,7 @@ N: Henrique Camargo <henrique@henriquecamargo.com>
F: package/json-glib/
N: Hervé Codina <herve.codina@bootlin.com>
+F: package/alchemy/
F: package/dtbocfg/
F: package/libdbi/
F: package/libdbi-drivers/
diff --git a/package/alchemy/0001-toolchains-remove-hash-style-management.patch b/package/alchemy/0001-toolchains-remove-hash-style-management.patch
new file mode 100644
index 0000000000..522766b977
--- /dev/null
+++ b/package/alchemy/0001-toolchains-remove-hash-style-management.patch
@@ -0,0 +1,36 @@
+From 4cb9681ab99db3d8e330ac789e17ec69583aecd4 Mon Sep 17 00:00:00 2001
+From: Herve Codina <herve.codina@bootlin.com>
+Date: Thu, 28 Oct 2021 18:39:18 +0200
+Subject: [PATCH] toolchains: remove --hash-style management
+
+Using an external toolchain, with an external configuration given
+using TARGET_GLOBAL_XXXX variables, having '--hash-style=both'
+in Alchemy toolchains can lead to compilation failure.
+
+This patch simply removes all --hash-style settings.
+
+Signed-off-by: Herve Codina <herve.codina@bootlin.com>
+---
+ toolchains/linux/eglibc/flags.mk | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+diff --git a/toolchains/linux/eglibc/flags.mk b/toolchains/linux/eglibc/flags.mk
+index 95c0a46..4474729 100644
+--- a/toolchains/linux/eglibc/flags.mk
++++ b/toolchains/linux/eglibc/flags.mk
+@@ -11,11 +11,4 @@ TARGET_GLOBAL_LDLIBS += -pthread -lrt
+ TARGET_GLOBAL_CFLAGS += -funwind-tables
+
+ # Enable link optimization for binutils's ld.
+-# gnu hash not supported by mips ABI
+-ifeq ("$(TARGET_ARCH)","mips")
+- TARGET_GLOBAL_LDFLAGS += -Wl,-O1
+-else ifeq ("$(TARGET_ARCH)","mips64")
+- TARGET_GLOBAL_LDFLAGS += -Wl,-O1
+-else
+- TARGET_GLOBAL_LDFLAGS += -Wl,-O1,--hash-style=both
+-endif
++TARGET_GLOBAL_LDFLAGS += -Wl,-O1
+--
+2.31.1
+
diff --git a/package/alchemy/alchemy.hash b/package/alchemy/alchemy.hash
new file mode 100644
index 0000000000..33895263cc
--- /dev/null
+++ b/package/alchemy/alchemy.hash
@@ -0,0 +1,4 @@
+# Locally computed:
+sha256 346c06b9317691a9371d878b850e61f8bcec4f20132ac95340b9d2571be25ee8 alchemy-d95b3c38cd37814a1b98d0bbf813de7adaaecfbc.tar.gz
+sha256 542f44eecd9f8806ec1ae285201e442ab547c82d9f8c70e44c977d6332a2bea0 COPYING
+sha256 49872815ee3de163f07a83737c996e77a5bffa186d06b1e3bb969bfb68c251df README
diff --git a/package/alchemy/alchemy.mk b/package/alchemy/alchemy.mk
new file mode 100644
index 0000000000..33d40478b7
--- /dev/null
+++ b/package/alchemy/alchemy.mk
@@ -0,0 +1,71 @@
+################################################################################
+#
+# alchemy
+#
+################################################################################
+
+ALCHEMY_VERSION = d95b3c38cd37814a1b98d0bbf813de7adaaecfbc
+ALCHEMY_SITE = $(call github,Parrot-Developers,alchemy,$(ALCHEMY_VERSION))
+ALCHEMY_LICENSE = BSD-3-Clause (Alchemy), GPL-2.0 (kconfig)
+ALCHEMY_LICENSE_FILES = COPYING README
+HOST_ALCHEMY_DEPENDENCIES = host-python3
+
+ALCHEMY_HOME = $(HOST_DIR)/opt/alchemy
+ALCHEMY_SDK_BASEDIR = $(STAGING_DIR)/usr/lib/alchemy/sdk
+
+define HOST_ALCHEMY_INSTALL_CMDS
+ mkdir -p $(ALCHEMY_HOME)
+ cp -rf $(@D)/* $(ALCHEMY_HOME)
+ cp $(HOST_ALCHEMY_PKGDIR)/atom.mk.in $(ALCHEMY_HOME)/atom.mk.in
+endef
+
+$(eval $(host-generic-package))
+
+# Variables used by other packages
+
+ALCHEMY_MAKE = $(ALCHEMY_HOME)/scripts/alchemake
+
+# TARGET_ARCH is set to 'xxx' to avoid Alchemy managing the architecture.
+# When Alchemy manages the architecture, it can add some flags to CFGLAGS and
+# can lead to incorrect result with the toolchain provided in TARGET_CROSS.
+# 'xxx' is an unknown architecture for Alchemy. Using this value is a simple
+# way to disable the Alchemy architecture management.
+ALCHEMY_TARGET_ENV = \
+ $(TARGET_MAKE_ENV) \
+ ALCHEMY_HOME=$(ALCHEMY_HOME) \
+ ALCHEMY_WORKSPACE_DIR="$(@D)" \
+ ALCHEMY_TARGET_OUT=alchemy-out \
+ TARGET_OS=linux \
+ TARGET_OS_FLAVOUR=buildroot \
+ TARGET_CROSS="$(TARGET_CROSS)" \
+ TARGET_ARCH=xxx \
+ TARGET_GLOBAL_CXXFLAGS="$(TARGET_CXXFLAGS)" \
+ TARGET_GLOBAL_LDFLAGS="$(TARGET_LDFLAGS)" \
+ TARGET_GLOBAL_FFLAGS="$(TARGET_FCFLAGS)" \
+ TARGET_GLOBAL_FCFLAGS="$(TARGET_FCFLAGS)"
+
+ifeq ($(BR2_STATIC_LIBS),y)
+ALCHEMY_TARGET_ENV += \
+ TARGET_FORCE_STATIC=1 \
+ TARGET_GLOBAL_CFLAGS="$(TARGET_CFLAGS)"
+else
+ALCHEMY_TARGET_ENV += \
+ TARGET_GLOBAL_CFLAGS="$(TARGET_CFLAGS) -fPIC"
+endif
+
+# Install an Alchemy SDK file.
+# This macro can be used by Alchemy packages
+# $1: Buildroot package name
+# $2: Alchemy module name
+# $3: Alchemy module file name
+# $4: Alchemy module libraries this module depends on
+define ALCHEMY_INSTALL_LIB_SDK_FILE
+ $(INSTALL) -m 0644 -D \
+ $(ALCHEMY_HOME)/atom.mk.in \
+ $(ALCHEMY_SDK_BASEDIR)/$(strip $(1))/atom.mk
+ $(SED) 's#@STAGING_DIR@#$(STAGING_DIR)#' \
+ -e 's#@MODULE@#$(strip $(2))#' \
+ -e 's#@MODULE_FILENAME@#$(strip $(3))#' \
+ -e 's#@LIBRARIES@#$(strip $(4))#' \
+ $(ALCHEMY_SDK_BASEDIR)/$(strip $(1))/atom.mk
+endef
diff --git a/package/alchemy/atom.mk.in b/package/alchemy/atom.mk.in
new file mode 100644
index 0000000000..084ae0e89f
--- /dev/null
+++ b/package/alchemy/atom.mk.in
@@ -0,0 +1,8 @@
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_MODULE := @MODULE@
+LOCAL_SDK := @STAGING_DIR@
+LOCAL_DESTDIR := usr/lib
+LOCAL_MODULE_FILENAME := @MODULE_FILENAME@
+LOCAL_LIBRARIES := @LIBRARIES@
+include $(BUILD_LIBRARY)
--
2.33.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v3 2/5] package/ulog: new package
2022-01-10 14:50 [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 1/5] package/alchemy: new host package Herve Codina
@ 2022-01-10 14:50 ` Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 3/5] package/libfutils: " Herve Codina
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Herve Codina @ 2022-01-10 14:50 UTC (permalink / raw)
To: buildroot; +Cc: Hervé Codina, Yann E . MORIN, Thomas Petazzoni
The ulog library is a minimalistic logging library derived from
Android logger.
https://github.com/Parrot-Developers/ulog
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
Changes v1 -> v2
- Renamed ALCHEMY_TARGET_CONFIGURE_ENV to ALCHEMY_TARGET_ENV
- Removed $(strip ...)
- Fixed indentation
Changes v2 -> v3
- Installed .a files when needed (ie not shared lib only)
- Used $(INSTALL) in all installation commands
- Created installation directories when needed
DEVELOPERS | 1 +
package/Config.in | 1 +
package/ulog/Config.in | 12 ++++++++++
package/ulog/ulog.hash | 3 +++
package/ulog/ulog.mk | 50 ++++++++++++++++++++++++++++++++++++++++++
5 files changed, 67 insertions(+)
create mode 100644 package/ulog/Config.in
create mode 100644 package/ulog/ulog.hash
create mode 100644 package/ulog/ulog.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index 79b33e9f22..31ca7bf608 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1197,6 +1197,7 @@ F: package/php-apcu/
F: package/php-lua/
F: package/php-pam/
F: package/php-pecl-dbus/
+F: package/ulog/
F: support/testing/tests/package/test_dtbocfg.py
F: support/testing/tests/package/test_lua_augeas.py
F: support/testing/tests/package/test_php_apcu.py
diff --git a/package/Config.in b/package/Config.in
index 3a2ad30df9..39a98fcc66 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1738,6 +1738,7 @@ menu "Logging"
source "package/log4qt/Config.in"
source "package/opentracing-cpp/Config.in"
source "package/spdlog/Config.in"
+ source "package/ulog/Config.in"
source "package/zlog/Config.in"
endmenu
diff --git a/package/ulog/Config.in b/package/ulog/Config.in
new file mode 100644
index 0000000000..ef155005c2
--- /dev/null
+++ b/package/ulog/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_ULOG
+ bool "ulog"
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ help
+ This is a minimalistic logging library derived from
+ Android logger.
+
+ https://github.com/Parrot-Developers/ulog
+
+comment "ulog needs a toolchain w/ C++, threads"
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/ulog/ulog.hash b/package/ulog/ulog.hash
new file mode 100644
index 0000000000..47adc093b9
--- /dev/null
+++ b/package/ulog/ulog.hash
@@ -0,0 +1,3 @@
+# Locally computed:
+sha256 14e5773b32a79fa5380bdc7ac73a39a7cd3ab182830f57cf6f2994fb49cf38dc ulog-0389d243352255f6182326dccdae3d56dadc078f.tar.gz
+sha256 cbb97dd2528af2aa2b9aee6c1b3ff1caed758044c17b2c811cf44b2528c496da COPYING
diff --git a/package/ulog/ulog.mk b/package/ulog/ulog.mk
new file mode 100644
index 0000000000..4bfb913499
--- /dev/null
+++ b/package/ulog/ulog.mk
@@ -0,0 +1,50 @@
+################################################################################
+#
+# ulog
+#
+################################################################################
+
+ULOG_VERSION = 0389d243352255f6182326dccdae3d56dadc078f
+ULOG_SITE = $(call github,Parrot-Developers,ulog,$(ULOG_VERSION))
+ULOG_LICENSE = Apache-2.0
+ULOG_LICENSE_FILES = COPYING
+ULOG_DEPENDENCIES = host-alchemy
+ULOG_INSTALL_STAGING = YES
+
+define ULOG_BUILD_CMDS
+ $(ALCHEMY_TARGET_ENV) \
+ $(ALCHEMY_MAKE) libulog
+endef
+
+ifeq ($(BR2_SHARED_LIBS),)
+define ULOG_INSTALL_STATIC_LIBS
+ $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libulog.a \
+ $(1)/usr/lib/libulog.a
+endef
+endif
+
+define ULOG_INSTALL_HEADERS
+ mkdir -p $(1)/usr/include/
+ $(INSTALL) -m 644 $(@D)/libulog/include/* $(1)/usr/include/
+endef
+
+ifeq ($(BR2_STATIC_LIBS),)
+define ULOG_INSTALL_SHARED_LIBS
+ mkdir -p $(1)/usr/lib/
+ $(INSTALL) -m 644 $(@D)/alchemy-out/staging/usr/lib/libulog.so* \
+ $(1)/usr/lib/
+endef
+endif
+
+define ULOG_INSTALL_TARGET_CMDS
+ $(call ULOG_INSTALL_SHARED_LIBS, $(TARGET_DIR))
+endef
+
+define ULOG_INSTALL_STAGING_CMDS
+ $(call ULOG_INSTALL_STATIC_LIBS, $(STAGING_DIR))
+ $(call ULOG_INSTALL_SHARED_LIBS, $(STAGING_DIR))
+ $(call ULOG_INSTALL_HEADERS, $(STAGING_DIR))
+ $(call ALCHEMY_INSTALL_LIB_SDK_FILE, ulog, libulog, libulog.so)
+endef
+
+$(eval $(generic-package))
--
2.33.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v3 3/5] package/libfutils: new package
2022-01-10 14:50 [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 1/5] package/alchemy: new host package Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 2/5] package/ulog: new package Herve Codina
@ 2022-01-10 14:50 ` Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 4/5] package/libshdata: " Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 5/5] support/testing/tests/package/test_libshdata: new test Herve Codina
4 siblings, 0 replies; 6+ messages in thread
From: Herve Codina @ 2022-01-10 14:50 UTC (permalink / raw)
To: buildroot; +Cc: Hervé Codina, Yann E . MORIN, Thomas Petazzoni
The libfutils library is a library that contains some common
useful functions (list, hash, time).
https://github.com/Parrot-Developers/libfutils
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
Changes v1 -> v2
- Renamed ALCHEMY_TARGET_CONFIGURE_ENV to ALCHEMY_TARGET_ENV
- Removed ALCHEMY_TARGET_CONFIGURE_SDKS and set ALCHEMY_TARGET_SDK_DIRS
- Removed $(strip ...)
- Fixed indentation
- Added missing "depends on" in Config.in comment
Changes v2 -> v3
- Installed .a files when needed (ie not shared lib only)
- Used $(INSTALL) in all installation commands
- Created installation directories when needed
- Fixed dependencies chain in Alchemy atom.mk
DEVELOPERS | 1 +
package/Config.in | 1 +
package/libfutils/Config.in | 15 +++++++++
package/libfutils/libfutils.hash | 3 ++
package/libfutils/libfutils.mk | 56 ++++++++++++++++++++++++++++++++
5 files changed, 76 insertions(+)
create mode 100644 package/libfutils/Config.in
create mode 100644 package/libfutils/libfutils.hash
create mode 100644 package/libfutils/libfutils.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index 31ca7bf608..ecb0837398 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1191,6 +1191,7 @@ F: package/alchemy/
F: package/dtbocfg/
F: package/libdbi/
F: package/libdbi-drivers/
+F: package/libfutils/
F: package/lua-augeas/
F: package/modsecurity2/
F: package/php-apcu/
diff --git a/package/Config.in b/package/Config.in
index 39a98fcc66..163fd53e12 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1986,6 +1986,7 @@ menu "Other"
source "package/libevent/Config.in"
source "package/libexecinfo/Config.in"
source "package/libffi/Config.in"
+ source "package/libfutils/Config.in"
source "package/libgee/Config.in"
source "package/libgeos/Config.in"
source "package/libglib2/Config.in"
diff --git a/package/libfutils/Config.in b/package/libfutils/Config.in
new file mode 100644
index 0000000000..7f795fc7e0
--- /dev/null
+++ b/package/libfutils/Config.in
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_LIBFUTILS
+ bool "libfutils"
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC
+ depends on BR2_INSTALL_LIBSTDCPP # ulog
+ depends on BR2_TOOLCHAIN_HAS_THREADS # ulog
+ select BR2_PACKAGE_ULOG
+ help
+ This library contains some common useful functions (list,
+ hash, time)
+
+ https://github.com/Parrot-Developers/libfutils
+
+comment "libfutils needs a toolchain w/ C++, threads"
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC
diff --git a/package/libfutils/libfutils.hash b/package/libfutils/libfutils.hash
new file mode 100644
index 0000000000..1fdcd84b13
--- /dev/null
+++ b/package/libfutils/libfutils.hash
@@ -0,0 +1,3 @@
+# Locally computed:
+sha256 b38d40c46b83e448d8c1716ddfb04b7ecd384f5cd2cb773db5c26c0589accdb3 libfutils-c326ce0cc2a7354381265a7664bb215be587fac6.tar.gz
+sha256 eca11a1c62fae8d64a1247d93271375baecff8396141d7ff8d89671ee7e3ed0d COPYING
diff --git a/package/libfutils/libfutils.mk b/package/libfutils/libfutils.mk
new file mode 100644
index 0000000000..0772d16ad7
--- /dev/null
+++ b/package/libfutils/libfutils.mk
@@ -0,0 +1,56 @@
+################################################################################
+#
+# libfutils
+#
+################################################################################
+
+LIBFUTILS_VERSION = c326ce0cc2a7354381265a7664bb215be587fac6
+LIBFUTILS_SITE = $(call github,Parrot-Developers,libfutils,$(LIBFUTILS_VERSION))
+LIBFUTILS_LICENSE = BSD-3-Clause
+LIBFUTILS_LICENSE_FILES = COPYING
+LIBFUTILS_DEPENDENCIES = ulog host-alchemy
+LIBFUTILS_INSTALL_STAGING = YES
+
+ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
+LIBFUTILS_CONF_ENV += TARGET_GLOBAL_LDLIBS='-latomic'
+endif
+
+define LIBFUTILS_BUILD_CMDS
+ $(ALCHEMY_TARGET_ENV) \
+ ALCHEMY_TARGET_SDK_DIRS="$(ALCHEMY_SDK_BASEDIR)/ulog" \
+ $(LIBFUTILS_CONF_ENV) \
+ $(ALCHEMY_MAKE) libfutils
+endef
+
+ifeq ($(BR2_SHARED_LIBS),)
+define LIBFUTILS_INSTALL_STATIC_LIBS
+ $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libfutils.a \
+ $(1)/usr/lib/libfutils.a
+endef
+endif
+
+define LIBFUTILS_INSTALL_HEADERS
+ mkdir -p $(1)/usr/include/futils
+ $(INSTALL) -m 644 $(@D)/include/futils/* $(1)/usr/include/futils/
+endef
+
+ifeq ($(BR2_STATIC_LIBS),)
+define LIBFUTILS_INSTALL_SHARED_LIBS
+ mkdir -p $(1)/usr/lib/
+ $(INSTALL) -m 644 $(@D)/alchemy-out/staging/usr/lib/libfutils.so* \
+ $(1)/usr/lib/
+endef
+endif
+
+define LIBFUTILS_INSTALL_TARGET_CMDS
+ $(call LIBFUTILS_INSTALL_SHARED_LIBS, $(TARGET_DIR))
+endef
+
+define LIBFUTILS_INSTALL_STAGING_CMDS
+ $(call LIBFUTILS_INSTALL_STATIC_LIBS, $(STAGING_DIR))
+ $(call LIBFUTILS_INSTALL_SHARED_LIBS, $(STAGING_DIR))
+ $(call LIBFUTILS_INSTALL_HEADERS, $(STAGING_DIR))
+ $(call ALCHEMY_INSTALL_LIB_SDK_FILE, libfutils, libfutils, libfutils.so, libulog)
+endef
+
+$(eval $(generic-package))
--
2.33.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v3 4/5] package/libshdata: new package
2022-01-10 14:50 [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs Herve Codina
` (2 preceding siblings ...)
2022-01-10 14:50 ` [Buildroot] [PATCH v3 3/5] package/libfutils: " Herve Codina
@ 2022-01-10 14:50 ` Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 5/5] support/testing/tests/package/test_libshdata: new test Herve Codina
4 siblings, 0 replies; 6+ messages in thread
From: Herve Codina @ 2022-01-10 14:50 UTC (permalink / raw)
To: buildroot; +Cc: Hervé Codina, Yann E . MORIN, Thomas Petazzoni
The libshdata library provides lock free shared-memory tools.
https://github.com/Parrot-Developers/libshdata
libshdata-stress utility does not compile using static libs
only (BR2_STATIC_LIBS=y). The issue was raised upstream:
https://github.com/Parrot-Developers/libshdata/issues/2
For now, libshdata-stress simply depends on !BR2_STATIC_LIBS.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
Changes v1 -> v2
- Added comment related to "patch submitted upstream" in the patch itself
- Renamed ALCHEMY_TARGET_CONFIGURE_ENV to ALCHEMY_TARGET_ENV
- Removed ALCHEMY_TARGET_CONFIGURE_SDKS and set ALCHEMY_TARGET_SDK_DIRS
- Removed $(strip ...)
- Fixed indentation
- Added missing "depends on" in Config.in comment
- Moved the Config.in "comment" block after the if...endif block
- Removed unneeded LIBSHDATA_CONF_ENV
Changes v2 -> v3
- Installed .a files when needed (ie not shared lib only)
- Used $(INSTALL) in all installation commands
- Created installation directories when needed
- Added ulog as buildroot package dependency and fixed the
dependencies chain in Alchemy atom.mk
- Added 0002-examples-stress_test-Fix-build-with-musl-libc.patch
- Added 'depends on !BR2_STATIC_LIBS' for libshdata-stress
DEVELOPERS | 1 +
package/Config.in | 1 +
...01-backend-Add-missing-include-files.patch | 47 ++++++++++++
...stress_test-Fix-build-with-musl-libc.patch | 37 +++++++++
package/libshdata/Config.in | 30 ++++++++
package/libshdata/libshdata.hash | 3 +
package/libshdata/libshdata.mk | 75 +++++++++++++++++++
7 files changed, 194 insertions(+)
create mode 100644 package/libshdata/0001-backend-Add-missing-include-files.patch
create mode 100644 package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch
create mode 100644 package/libshdata/Config.in
create mode 100644 package/libshdata/libshdata.hash
create mode 100644 package/libshdata/libshdata.mk
diff --git a/DEVELOPERS b/DEVELOPERS
index ecb0837398..8d0258d7e8 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1192,6 +1192,7 @@ F: package/dtbocfg/
F: package/libdbi/
F: package/libdbi-drivers/
F: package/libfutils/
+F: package/libshdata/
F: package/lua-augeas/
F: package/modsecurity2/
F: package/php-apcu/
diff --git a/package/Config.in b/package/Config.in
index 163fd53e12..2a1bc0dfb8 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2030,6 +2030,7 @@ comment "linux-pam plugins"
source "package/libpam-tacplus/Config.in"
endif
source "package/liquid-dsp/Config.in"
+ source "package/libshdata/Config.in"
source "package/llvm/Config.in"
source "package/lttng-libust/Config.in"
source "package/matio/Config.in"
diff --git a/package/libshdata/0001-backend-Add-missing-include-files.patch b/package/libshdata/0001-backend-Add-missing-include-files.patch
new file mode 100644
index 0000000000..78c9e669c3
--- /dev/null
+++ b/package/libshdata/0001-backend-Add-missing-include-files.patch
@@ -0,0 +1,47 @@
+From 3eaf11bd957555674f5993435ef79dd4717ce890 Mon Sep 17 00:00:00 2001
+From: Herve Codina <herve.codina@bootlin.com>
+Date: Tue, 26 Oct 2021 08:45:10 +0200
+Subject: [PATCH] backend: Add missing include files
+
+With some libc library (musl), shd_dev_mem.c and shd_shm.c do not
+compile. Indeed, open() needs <fcntl.h> (Cf. man open).
+
+This patch fixes the compilation issue adding this
+include file.
+
+This patch was submitted upstream.
+https://github.com/Parrot-Developers/libshdata/issues/1
+
+Signed-off-by: Herve Codina <herve.codina@bootlin.com>
+---
+ src/backend/shd_dev_mem.c | 1 +
+ src/backend/shd_shm.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/backend/shd_dev_mem.c b/src/backend/shd_dev_mem.c
+index 14573c1..a65f052 100644
+--- a/src/backend/shd_dev_mem.c
++++ b/src/backend/shd_dev_mem.c
+@@ -33,6 +33,7 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <unistd.h> /* For ftruncate */
++#include <fcntl.h> /* For open */
+ #include <sys/file.h> /* for flock */
+ #include <sys/mman.h> /* For shm and PROT flags */
+ #include <futils/fdutils.h>
+diff --git a/src/backend/shd_shm.c b/src/backend/shd_shm.c
+index 117bf01..1e5a38c 100644
+--- a/src/backend/shd_shm.c
++++ b/src/backend/shd_shm.c
+@@ -35,6 +35,7 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <unistd.h> /* For ftruncate */
++#include <fcntl.h> /* For open */
+ #include <limits.h> /* For NAME_MAX macro */
+ #include <sys/file.h> /* for flock */
+ #include <sys/mman.h> /* For shm and PROT flags */
+--
+2.31.1
+
diff --git a/package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch b/package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch
new file mode 100644
index 0000000000..c2a8e5f240
--- /dev/null
+++ b/package/libshdata/0002-examples-stress_test-Fix-build-with-musl-libc.patch
@@ -0,0 +1,37 @@
+From ddded7337812a2797d31f276624da98932d8e17f Mon Sep 17 00:00:00 2001
+From: Herve Codina <herve.codina@bootlin.com>
+Date: Sun, 9 Jan 2022 14:59:27 +0100
+Subject: [PATCH] examples/stress_test: Fix build with musl libc
+
+The musl C library uses sched_priority instead of
+__sched_priority as GNU libc and uClibc do.
+Use sched_priority instead.
+
+This does not break compilation with GNU libc and uClibc
+because they both define in sched.h:
+ #define sched_priority __sched_priority
+
+This patch was submitted upstream.
+https://github.com/Parrot-Developers/libshdata/issues/3
+
+Signed-off-by: Herve Codina <herve.codina@bootlin.com>
+---
+ examples/stress_test.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/examples/stress_test.c b/examples/stress_test.c
+index a859115..cfb5418 100644
+--- a/examples/stress_test.c
++++ b/examples/stress_test.c
+@@ -617,7 +617,7 @@ static void launch_test(int timer_fd, struct test_setup *setup)
+ if (ret < 0)
+ ULOGI("Error setting the timer : %s", strerror(errno));
+ struct sched_param sched_params;
+- sched_params.__sched_priority = sched_get_priority_max(SCHED_RR);
++ sched_params.sched_priority = sched_get_priority_max(SCHED_RR);
+
+ pid_t pid = fork();
+
+--
+2.33.1
+
diff --git a/package/libshdata/Config.in b/package/libshdata/Config.in
new file mode 100644
index 0000000000..b2c24c94c5
--- /dev/null
+++ b/package/libshdata/Config.in
@@ -0,0 +1,30 @@
+config BR2_PACKAGE_LIBSHDATA
+ bool "libshdata"
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC # libfutils
+ depends on BR2_INSTALL_LIBSTDCPP # libfutils
+ depends on BR2_TOOLCHAIN_HAS_THREADS # libfutils
+ select BR2_PACKAGE_LIBFUTILS
+ select BR2_PACKAGE_ULOG
+ help
+ This library provides lock free shared-memory tools
+
+ https://github.com/Parrot-Developers/libshdata
+
+if BR2_PACKAGE_LIBSHDATA
+
+config BR2_PACKAGE_LIBSHDATA_STRESS
+ bool "libshdata-stress binary"
+ depends on !BR2_STATIC_LIBS
+ help
+ Install libshdata-stress binary as well
+
+comment "libshdata-stress needs a toolchain w/ dynamic library"
+ depends on BR2_STATIC_LIBS
+
+endif
+
+comment "libshdata needs a toolchain w/ C++, threads"
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/libshdata/libshdata.hash b/package/libshdata/libshdata.hash
new file mode 100644
index 0000000000..880404cf52
--- /dev/null
+++ b/package/libshdata/libshdata.hash
@@ -0,0 +1,3 @@
+# Locally computed:
+sha256 1ae83ac73c2b5b17c726067737b8d446b99f190e16fe6198eb464368796ecce3 libshdata-d9ec4bdba834d8f3daf6bf9aa6da374bc462961f.tar.gz
+sha256 eca11a1c62fae8d64a1247d93271375baecff8396141d7ff8d89671ee7e3ed0d COPYING
diff --git a/package/libshdata/libshdata.mk b/package/libshdata/libshdata.mk
new file mode 100644
index 0000000000..dc0937e11e
--- /dev/null
+++ b/package/libshdata/libshdata.mk
@@ -0,0 +1,75 @@
+################################################################################
+#
+# libshdata
+#
+################################################################################
+
+LIBSHDATA_VERSION = d9ec4bdba834d8f3daf6bf9aa6da374bc462961f
+LIBSHDATA_SITE = $(call github,Parrot-Developers,libshdata,$(LIBSHDATA_VERSION))
+LIBSHDATA_LICENSE = BSD-3-Clause
+LIBSHDATA_LICENSE_FILES = COPYING
+LIBSHDATA_DEPENDENCIES = libfutils ulog host-alchemy
+LIBSHDATA_INSTALL_STAGING = YES
+
+LIBSHDATA_TARGETS = libshdata
+ifeq ($(BR2_PACKAGE_LIBSHDATA_STRESS),y)
+LIBSHDATA_TARGETS += libshdata-stress
+endif
+
+define LIBSHDATA_BUILD_CMDS
+ $(ALCHEMY_TARGET_ENV) \
+ ALCHEMY_TARGET_SDK_DIRS="$(ALCHEMY_SDK_BASEDIR)/libfutils \
+ $(ALCHEMY_SDK_BASEDIR)/ulog" \
+ $(ALCHEMY_MAKE) $(LIBSHDATA_TARGETS)
+endef
+
+ifeq ($(BR2_SHARED_LIBS),)
+define LIBSHDATA_INSTALL_STATIC_LIBS
+ $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata.a \
+ $(1)/usr/lib/libshdata.a
+ $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata-section-lookup.a \
+ $(1)/usr/lib/libshdata-section-lookup.a
+endef
+else
+# We should be dynamic libraries only but libshdata-section-lookup is only
+# build as a static lib (include $(BUILD_STATIC_LIBRARY) in atom.mk) and it
+# is needed for libshdata usage.
+define LIBSHDATA_INSTALL_STATIC_LIBS
+ $(INSTALL) -D -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata-section-lookup.a \
+ $(1)/usr/lib/libshdata-section-lookup.a
+endef
+endif
+
+define LIBSHDATA_INSTALL_HEADERS
+ mkdir -p $(1)/usr/include/
+ $(INSTALL) -m 644 $(@D)/include/* $(1)/usr/include/
+endef
+
+ifeq ($(BR2_STATIC_LIBS),)
+define LIBSHDATA_INSTALL_SHARED_LIBS
+ mkdir -p $(1)/usr/lib/
+ $(INSTALL) -m 644 $(@D)/alchemy-out/staging/usr/lib/libshdata.so* \
+ $(1)/usr/lib/
+endef
+endif
+
+ifeq ($(BR2_PACKAGE_LIBSHDATA_STRESS),y)
+define LIBSHDATA_INSTALL_BIN
+ $(INSTALL) -D -m 755 $(@D)/alchemy-out/staging/usr/bin/libshdata-stress \
+ $(1)/usr/bin/libshdata-stress
+endef
+endif
+
+define LIBSHDATA_INSTALL_TARGET_CMDS
+ $(call LIBSHDATA_INSTALL_SHARED_LIBS, $(TARGET_DIR))
+ $(call LIBSHDATA_INSTALL_BIN, $(TARGET_DIR))
+endef
+
+define LIBSHDATA_INSTALL_STAGING_CMDS
+ $(call LIBSHDATA_INSTALL_STATIC_LIBS, $(STAGING_DIR))
+ $(call LIBSHDATA_INSTALL_SHARED_LIBS, $(STAGING_DIR))
+ $(call LIBSHDATA_INSTALL_HEADERS, $(STAGING_DIR))
+ $(call ALCHEMY_INSTALL_LIB_SDK_FILE, libshdata, libshdata, libshdata.so, libfutils, libulog)
+endef
+
+$(eval $(generic-package))
--
2.33.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH v3 5/5] support/testing/tests/package/test_libshdata: new test
2022-01-10 14:50 [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs Herve Codina
` (3 preceding siblings ...)
2022-01-10 14:50 ` [Buildroot] [PATCH v3 4/5] package/libshdata: " Herve Codina
@ 2022-01-10 14:50 ` Herve Codina
4 siblings, 0 replies; 6+ messages in thread
From: Herve Codina @ 2022-01-10 14:50 UTC (permalink / raw)
To: buildroot; +Cc: Hervé Codina, Yann E . MORIN, Thomas Petazzoni
This new test ensures that libraries and binaries generated
using Parrot Alchemy build system are correct.
Indeed, the test uses libshdata-stress.
This binary depends on libshdata.
libshdata depends on libfutils and libfutils depends on ulog.
All of these binaries and libraries are built using Alchemy.
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
Changed v1 -> v2:
none
Changed v2 -> v3:
none
DEVELOPERS | 1 +
.../testing/tests/package/test_libshdata.py | 25 +++++++++++++++++++
2 files changed, 26 insertions(+)
create mode 100644 support/testing/tests/package/test_libshdata.py
diff --git a/DEVELOPERS b/DEVELOPERS
index 8d0258d7e8..68d66e08a7 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1201,6 +1201,7 @@ F: package/php-pam/
F: package/php-pecl-dbus/
F: package/ulog/
F: support/testing/tests/package/test_dtbocfg.py
+F: support/testing/tests/package/test_libshdata.py
F: support/testing/tests/package/test_lua_augeas.py
F: support/testing/tests/package/test_php_apcu.py
F: support/testing/tests/package/test_php_lua.py
diff --git a/support/testing/tests/package/test_libshdata.py b/support/testing/tests/package/test_libshdata.py
new file mode 100644
index 0000000000..80b032ac69
--- /dev/null
+++ b/support/testing/tests/package/test_libshdata.py
@@ -0,0 +1,25 @@
+import os
+
+import infra.basetest
+
+
+class TestLibshdata(infra.basetest.BRTest):
+ config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+ """
+ BR2_PACKAGE_LIBSHDATA=y
+ BR2_PACKAGE_LIBSHDATA_STRESS=y
+ BR2_TARGET_ROOTFS_CPIO=y
+ # BR2_TARGET_ROOTFS_TAR is not set
+ """
+
+ def test_run(self):
+ img = os.path.join(self.builddir, "images", "rootfs.cpio")
+ self.emulator.boot(arch="armv5",
+ kernel="builtin",
+ options=["-initrd", img])
+ self.emulator.login()
+
+ # Just run libshdata-stress.
+ # This ensures that library are well compiled and that all dependencies
+ # are met using Parrot Alchemy build system.
+ self.assertRunOk("libshdata-stress")
--
2.33.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-01-10 14:58 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-10 14:50 [Buildroot] [PATCH v3 0/5] Add Alchemy build system and some related libs Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 1/5] package/alchemy: new host package Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 2/5] package/ulog: new package Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 3/5] package/libfutils: " Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 4/5] package/libshdata: " Herve Codina
2022-01-10 14:50 ` [Buildroot] [PATCH v3 5/5] support/testing/tests/package/test_libshdata: new test Herve Codina
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.