[Buildroot] [PATCH 1/1] package/pistache: bump version & switch to meson build

Yann E. MORIN yann.morin.1998 at free.fr
Sat Mar 12 17:00:48 UTC 2022


Thomas, All,

On 2022-03-12 11:44 +0100, Thomas Ruschival spake thusly:
> While upstream pistache has not yet released a stable 'tag'
> a lot has changed since June 2020:
> 
> * project has moved to meson build system, cmake builds
>   do not install headers.
> * patches in buildroot are no longer required
> * project-implemented Pistache::Optional was replaced by
>   use of std::optional. This is only available in C++17
> * dependency to rapidjson has been introduced
> 
> Signed-off-by: Thomas Ruschival <thomas at ruschival.de>

I've marked this patch as chagnes-requested: Nicolas explained what you
need to do to pass the test-pkg step. Can you look into that, test on
your side, and respin an updated patch?

Thanks!

Regards,
Yann E. MORIN.

> ---
>  ...-add-C-language-to-project-statement.patch | 70 --------------
>  ...eLists.txt-respect-BUILD_SHARED_LIBS.patch | 95 -------------------
>  ...de-pistache-typeid.h-include-cstddef.patch | 38 --------
>  package/pistache/Config.in                    |  9 +-
>  package/pistache/pistache.hash                |  2 +-
>  package/pistache/pistache.mk                  |  9 +-
>  6 files changed, 11 insertions(+), 212 deletions(-)
>  delete mode 100644 package/pistache/0001-CMakeLists.txt-add-C-language-to-project-statement.patch
>  delete mode 100644 package/pistache/0002-CMakeLists.txt-respect-BUILD_SHARED_LIBS.patch
>  delete mode 100644 package/pistache/0003-include-pistache-typeid.h-include-cstddef.patch
> 
> diff --git a/package/pistache/0001-CMakeLists.txt-add-C-language-to-project-statement.patch b/package/pistache/0001-CMakeLists.txt-add-C-language-to-project-statement.patch
> deleted file mode 100644
> index c393a48d0d..0000000000
> --- a/package/pistache/0001-CMakeLists.txt-add-C-language-to-project-statement.patch
> +++ /dev/null
> @@ -1,70 +0,0 @@
> -From a50fc9bde098e4e89584a5da9f94f620c11b6733 Mon Sep 17 00:00:00 2001
> -From: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> -Date: Sun, 16 Aug 2020 12:31:46 +0200
> -Subject: [PATCH] CMakeLists.txt: add C language to project statement
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -This will fix the detection of atomic:
> -
> --- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB
> --- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Failed
> --- Looking for __atomic_load_8 in atomic
> --- Looking for __atomic_load_8 in atomic - not found
> -CMake Error at CMakeModules/CheckAtomic.cmake:76 (message):
> -  Host compiler appears to require libatomic for 64-bit operations, but
> -  cannot find it.
> -Call Stack (most recent call first):
> -  CMakeLists.txt:19 (include)
> -
> -Indeed if C language is not enabled, the test will be run with the C++
> -compiler resulting in the following error:
> -
> -Building CXX object CMakeFiles/cmTC_fad22.dir/CheckFunctionExists.cxx.o
> -/tmp/instance-0/output-1/host/bin/mipsel-linux-g++ --sysroot=/tmp/instance-0/output-1/host/mipsel-buildroot-linux-gnu/sysroot    -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -D_FORTIFY_SOURCE=1 -Wall -Wconversion -pedantic -Wextra -Wno-missing-field-initializers -DCHECK_FUNCTION_EXISTS=__atomic_load_8  -DNDEBUG   -o CMakeFiles/cmTC_fad22.dir/CheckFunctionExists.cxx.o -c /tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx
> -<command-line>: error: new declaration 'char __atomic_load_8()' ambiguates built-in declaration 'long long unsigned int __atomic_load_8(const volatile void*, int)' [-fpermissive]
> -/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:7:3: note: in expansion of macro 'CHECK_FUNCTION_EXISTS'
> -   CHECK_FUNCTION_EXISTS(void);
> -   ^~~~~~~~~~~~~~~~~~~~~
> -/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx: In function 'int main(int, char**)':
> -/tmp/instance-0/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/CMakeFiles/CheckLibraryExists/CheckFunctionExists.cxx:17:25: error: too few arguments to function 'long long unsigned int __atomic_load_8(const volatile void*, int)'
> -   CHECK_FUNCTION_EXISTS();
> -                         ^
> -
> -whereas with a C compiler, we'll get:
> -
> -Building C object CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o
> -/home/fabrice/buildroot/output/host/bin/riscv32-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/riscv32-buildroot-linux-gnu/sysroot   -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DCHECK_FUNCTION_EXISTS=__atomic_load_8  -DNDEBUG   -o CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c
> -<command-line>: warning: conflicting types for built-in function ‘__atomic_load_8’ [-Wbuiltin-declaration-mismatch]
> -/usr/share/cmake-3.16/Modules/CheckFunctionExists.c:7:3: note: in expansion of macro ‘CHECK_FUNCTION_EXISTS’
> -   CHECK_FUNCTION_EXISTS(void);
> -   ^~~~~~~~~~~~~~~~~~~~~
> -Linking C executable cmTC_4b0f4
> -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4b0f4.dir/link.txt --verbose=1
> -/home/fabrice/buildroot/output/host/bin/riscv32-linux-gcc --sysroot=/home/fabrice/buildroot/output/host/riscv32-buildroot-linux-gnu/sysroot -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DCHECK_FUNCTION_EXISTS=__atomic_load_8  -DNDEBUG    CMakeFiles/cmTC_4b0f4.dir/CheckFunctionExists.c.o  -o cmTC_4b0f4  -latomic
> -
> -Fixes:
> - - http://autobuild.buildroot.org/results/2bf06c6a9e55b449ec5875cf9415a9e55b2065d6
> -
> -Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> ----
> - CMakeLists.txt | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> -diff --git a/CMakeLists.txt b/CMakeLists.txt
> -index edc73c5..0286647 100644
> ---- a/CMakeLists.txt
> -+++ b/CMakeLists.txt
> -@@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
> - set(CMAKE_CXX_EXTENSIONS OFF)
> - 
> - project (pistache
> --    LANGUAGES CXX)
> -+    LANGUAGES C CXX)
> - 
> - include(GNUInstallDirs)
> - 
> --- 
> -2.27.0
> -
> diff --git a/package/pistache/0002-CMakeLists.txt-respect-BUILD_SHARED_LIBS.patch b/package/pistache/0002-CMakeLists.txt-respect-BUILD_SHARED_LIBS.patch
> deleted file mode 100644
> index 09f59b11ec..0000000000
> --- a/package/pistache/0002-CMakeLists.txt-respect-BUILD_SHARED_LIBS.patch
> +++ /dev/null
> @@ -1,95 +0,0 @@
> -From 45824f58b10575d8d88d4bce934aedee821a6df0 Mon Sep 17 00:00:00 2001
> -From: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> -Date: Thu, 15 Oct 2020 22:26:55 +0200
> -Subject: [PATCH] CMakeLists.txt: respect BUILD_SHARED_LIBS
> -
> -Don't build and install pistache_shared if the standard cmake
> -BUILD_SHARED_LIBS is set to OFF
> -
> -Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> -[Backport from upstream:
> -  https://github.com/oktal/pistache/commit/c04166ca9e6420a8fbc93fef4055ee2eccdcebe4
> -]
> ----
> - src/CMakeLists.txt | 43 +++++++++++++++++++++++++------------------
> - 1 file changed, 25 insertions(+), 18 deletions(-)
> -
> -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
> -index 6521b20..c5b049f 100644
> ---- a/src/CMakeLists.txt
> -+++ b/src/CMakeLists.txt
> -@@ -26,31 +26,36 @@ set(include_install_dir ${CMAKE_INSTALL_INCLUDEDIR})
> - set(lib_install_dir ${CMAKE_INSTALL_LIBDIR})
> - set(bin_install_dir ${CMAKE_INSTALL_BINDIR})
> - 
> --add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)
> --add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)
> -+if (BUILD_SHARED_LIBS)
> -+    add_library(pistache_shared SHARED $<TARGET_OBJECTS:pistache>)
> -+    target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
> -+    target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})
> -+endif ()
> - 
> --target_link_libraries(pistache_shared PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
> -+add_library(pistache_static STATIC $<TARGET_OBJECTS:pistache>)
> - target_link_libraries(pistache_static PRIVATE Threads::Threads ${CMAKE_REQUIRED_LIBRARIES})
> --
> --target_include_directories(pistache_shared INTERFACE ${PISTACHE_INCLUDE})
> - target_include_directories(pistache_static INTERFACE ${PISTACHE_INCLUDE})
> - 
> - if (PISTACHE_USE_SSL)
> -     target_compile_definitions(pistache PUBLIC PISTACHE_USE_SSL)
> --    target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)
> -     target_compile_definitions(pistache_static PUBLIC PISTACHE_USE_SSL)
> - 
> -     target_include_directories(pistache PRIVATE ${OPENSSL_INCLUDE_DIR})
> --    target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)
> -     target_link_libraries(pistache_static PUBLIC OpenSSL::SSL OpenSSL::Crypto)
> -+    if (BUILD_SHARED_LIBS)
> -+        target_compile_definitions(pistache_shared PUBLIC PISTACHE_USE_SSL)
> -+        target_link_libraries(pistache_shared PUBLIC OpenSSL::SSL OpenSSL::Crypto)
> -+    endif ()
> - endif ()
> - 
> - set(Pistache_OUTPUT_NAME "pistache")
> --set_target_properties(pistache_shared PROPERTIES
> --    OUTPUT_NAME ${Pistache_OUTPUT_NAME}
> --    VERSION ${version}
> --    SOVERSION ${VERSION_MAJOR}
> --)
> -+if (BUILD_SHARED_LIBS)
> -+    set_target_properties(pistache_shared PROPERTIES
> -+        OUTPUT_NAME ${Pistache_OUTPUT_NAME}
> -+        VERSION ${version}
> -+        SOVERSION ${VERSION_MAJOR}
> -+    )
> -+endif ()
> - 
> - set_target_properties(pistache_static PROPERTIES 
> -     OUTPUT_NAME ${Pistache_OUTPUT_NAME}
> -@@ -60,13 +65,15 @@ if (PISTACHE_INSTALL)
> -     set(Pistache_CONFIG_FILE "PistacheConfig.cmake")
> -     set(Pistache_CONFIG_VERSION_FILE "PistacheConfigVersion.cmake")
> - 
> --    install(
> --      TARGETS pistache_shared
> --      EXPORT PistacheTargets
> --      ARCHIVE DESTINATION ${lib_install_dir}
> --      LIBRARY DESTINATION ${lib_install_dir}
> --      RUNTIME DESTINATION ${bin_install_dir}
> --      INCLUDES DESTINATION ${include_install_dir})
> -+    if (BUILD_SHARED_LIBS)
> -+        install(
> -+          TARGETS pistache_shared
> -+          EXPORT PistacheTargets
> -+          ARCHIVE DESTINATION ${lib_install_dir}
> -+          LIBRARY DESTINATION ${lib_install_dir}
> -+          RUNTIME DESTINATION ${bin_install_dir}
> -+          INCLUDES DESTINATION ${include_install_dir})
> -+    endif()
> - 
> -     install(
> -       DIRECTORY "${PROJECT_SOURCE_DIR}/include/pistache"
> --- 
> -2.28.0
> -
> diff --git a/package/pistache/0003-include-pistache-typeid.h-include-cstddef.patch b/package/pistache/0003-include-pistache-typeid.h-include-cstddef.patch
> deleted file mode 100644
> index be06ca760a..0000000000
> --- a/package/pistache/0003-include-pistache-typeid.h-include-cstddef.patch
> +++ /dev/null
> @@ -1,38 +0,0 @@
> -From 37291201ed948e9d65993a717c59bb14f4187e13 Mon Sep 17 00:00:00 2001
> -From: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> -Date: Thu, 5 Aug 2021 19:02:56 +0200
> -Subject: [PATCH] include/pistache/typeid.h: include cstddef
> -
> -Include cstddef to avoid the following build failure with gcc 11:
> -
> -In file included from /tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/../include/pistache/async.h:10,
> -                 from /tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/../include/pistache/client.h:9,
> -                 from /tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/client/client.cc:7:
> -/tmp/instance-3/output-1/build/pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d/src/../include/pistache/typeid.h:26:12: error: expected type-specifier before 'size_t'
> -   26 |   operator size_t() const { return reinterpret_cast<size_t>(id_); }
> -      |            ^~~~~~
> -
> -Fixes:
> - - http://autobuild.buildroot.org/results/2443559df8c2357476e4cbdbebb08280cbb80a3b
> -
> -Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
> -[Upstream status: https://github.com/pistacheio/pistache/pull/965]
> ----
> - include/pistache/typeid.h | 1 +
> - 1 file changed, 1 insertion(+)
> -
> -diff --git a/include/pistache/typeid.h b/include/pistache/typeid.h
> -index 10353ca..893e7c1 100644
> ---- a/include/pistache/typeid.h
> -+++ b/include/pistache/typeid.h
> -@@ -7,6 +7,7 @@
> - 
> - #pragma once
> - 
> -+#include <cstddef>
> - #include <functional>
> - 
> - namespace Pistache
> --- 
> -2.30.2
> -
> diff --git a/package/pistache/Config.in b/package/pistache/Config.in
> index 96aed5210a..806c27077a 100644
> --- a/package/pistache/Config.in
> +++ b/package/pistache/Config.in
> @@ -1,22 +1,23 @@
>  config BR2_PACKAGE_PISTACHE
>  	bool "pistache"
> -	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14
> +	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17, std::optional
>  	depends on BR2_USE_WCHAR
>  	depends on BR2_TOOLCHAIN_HAS_THREADS
>  	depends on BR2_INSTALL_LIBSTDCPP
> +	depends on BR2_PACKAGE_RAPIDJSON
>  	depends on !BR2_TOOLCHAIN_USES_UCLIBC
>  	depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597
>  	help
>  	  Pistache is a modern and elegant HTTP and REST framework
> -	  for C++. It is entirely written in pure C++14 and provides
> +	  for C++. It is entirely written in pure C++17 and provides
>  	  a clear and pleasant API.
>  
>  	  https://github.com/oktal/pistache
>  
> -comment "pistache needs a glibc toolchain w/ C++, gcc >= 4.9, threads, wchar, not binutils bug 27597"
> +comment "pistache needs a glibc toolchain w/ C++, gcc >= 7, threads, wchar, not binutils bug 27597"
>  	depends on !BR2_INSTALL_LIBSTDCPP || \
>  		   BR2_TOOLCHAIN_USES_UCLIBC || \
> -		   !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || \
> +		   !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \
>  		   !BR2_TOOLCHAIN_HAS_THREADS || \
>  		   !BR2_USE_WCHAR || \
>  		   BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597
> diff --git a/package/pistache/pistache.hash b/package/pistache/pistache.hash
> index 5079387eb7..9a2cd1d1f9 100644
> --- a/package/pistache/pistache.hash
> +++ b/package/pistache/pistache.hash
> @@ -1,3 +1,3 @@
>  #locally computed
> -sha256  70aeef5f5a4603cb2ceb20a284e3239f5da520e68f39dcb572c9f21473ac0b6d  pistache-f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d.tar.gz
> +sha256  f2b3e8b2581cfed5e036d1b97a9b97dc7022b3ddaab69c4691238faff3199bc1  pistache-3ec9d7c4f8b828fdd391550fff81b01e72dd6269.tar.gz
>  sha256  c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08  LICENSE
> diff --git a/package/pistache/pistache.mk b/package/pistache/pistache.mk
> index 4d6bd283ea..0f49ad12db 100644
> --- a/package/pistache/pistache.mk
> +++ b/package/pistache/pistache.mk
> @@ -4,7 +4,7 @@
>  #
>  ################################################################################
>  
> -PISTACHE_VERSION = f2f5a50fbfb5b8ef6cf1d3d2a9d442a8270e375d
> +PISTACHE_VERSION = 3ec9d7c4f8b828fdd391550fff81b01e72dd6269
>  PISTACHE_SITE = $(call github,oktal,pistache,$(PISTACHE_VERSION))
>  PISTACHE_LICENSE = Apache-2.0
>  PISTACHE_LICENSE_FILES = LICENSE
> @@ -13,9 +13,10 @@ PISTACHE_INSTALL_STAGING = YES
>  
>  ifeq ($(BR2_PACKAGE_OPENSSL),y)
>  PISTACHE_DEPENDENCIES += openssl
> -PISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=ON
> +PISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=true
> +PISTACHE_CONF_OPTS += -DPISTACHE_ENABLE_NETWORK_TESTS=false
>  else
> -PISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=OFF
> +PISTACHE_CONF_OPTS += -DPISTACHE_USE_SSL=false
>  endif
>  
> -$(eval $(cmake-package))
> +$(eval $(meson-package))
> -- 
> 2.30.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot at buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

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



More information about the buildroot mailing list