mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-09-10 00:04:06 -09:00
package/libsigrok: fix C++ build with glibmm 2.68
cxx bindings are, silently, disabled since bump of glibmm to version
2.68.2 in commit dddb65efbd resulting in
the following build failure with pulseview:
-- Package 'libsigrokcxx', required by 'virtual:world', not found
Fixes:
- http://autobuild.buildroot.org/results/ebb73892fd7471de4f0c109554dfdc65b93d3dcf
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
committed by
Arnout Vandecappelle (Essensium/Mind)
parent
bcfce11044
commit
4872d52731
129
package/libsigrok/0001-Support-glibmm-2.68.patch
Normal file
129
package/libsigrok/0001-Support-glibmm-2.68.patch
Normal file
@@ -0,0 +1,129 @@
|
||||
From 31ad5ec50ec0c9cc7a92f009925c5f58aecdcce1 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Thu, 30 Dec 2021 14:58:11 +0100
|
||||
Subject: [PATCH] Support glibmm 2.68
|
||||
|
||||
Support glibmm 2.68 which has been released one year ago and is the
|
||||
first stable release in the glibmm-2.68 ABI series:
|
||||
https://gitlab.gnome.org/GNOME/glibmm/-/blob/2.68.2/NEWS
|
||||
|
||||
As TimeVal is not available with glibmm 2.68, use DateTime which is
|
||||
available since version 2.26
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status:
|
||||
https://sourceforge.net/p/sigrok/mailman/message/37410614]
|
||||
---
|
||||
README | 2 +-
|
||||
bindings/cxx/classes.cpp | 13 ++++++-------
|
||||
bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp | 4 ++--
|
||||
bindings/cxx/libsigrokcxx.pc.in | 2 +-
|
||||
configure.ac | 7 ++++++-
|
||||
5 files changed, 16 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/README b/README
|
||||
index 768c8ca2..2515f059 100644
|
||||
--- a/README
|
||||
+++ b/README
|
||||
@@ -63,7 +63,7 @@ Requirements for the C++ bindings:
|
||||
- doxygen (required for building the bindings, not only for C++ API docs!)
|
||||
- graphviz (optional, only needed for the C++ API docs)
|
||||
- Python (2 or 3) executable (development files are not needed)
|
||||
- - glibmm-2.4 (>= 2.32.0)
|
||||
+ - glibmm-2.4 (>= 2.32.0) or glibmm-2.68 (>= 2.68.0)
|
||||
|
||||
Requirements for the Python bindings:
|
||||
|
||||
diff --git a/bindings/cxx/classes.cpp b/bindings/cxx/classes.cpp
|
||||
index f9f79273..de600d03 100644
|
||||
--- a/bindings/cxx/classes.cpp
|
||||
+++ b/bindings/cxx/classes.cpp
|
||||
@@ -287,12 +287,12 @@ shared_ptr<UserDevice> Context::create_user_device(
|
||||
default_delete<UserDevice>{}};
|
||||
}
|
||||
|
||||
-shared_ptr<Packet> Context::create_header_packet(Glib::TimeVal start_time)
|
||||
+shared_ptr<Packet> Context::create_header_packet(Glib::DateTime start_time)
|
||||
{
|
||||
auto header = g_new(struct sr_datafeed_header, 1);
|
||||
header->feed_version = 1;
|
||||
- header->starttime.tv_sec = start_time.tv_sec;
|
||||
- header->starttime.tv_usec = start_time.tv_usec;
|
||||
+ header->starttime.tv_sec = start_time.to_unix();
|
||||
+ header->starttime.tv_usec = start_time.get_microsecond();
|
||||
auto packet = g_new(struct sr_datafeed_packet, 1);
|
||||
packet->type = SR_DF_HEADER;
|
||||
packet->payload = header;
|
||||
@@ -1154,11 +1154,10 @@ int Header::feed_version() const
|
||||
return _structure->feed_version;
|
||||
}
|
||||
|
||||
-Glib::TimeVal Header::start_time() const
|
||||
+Glib::DateTime Header::start_time() const
|
||||
{
|
||||
- return Glib::TimeVal(
|
||||
- _structure->starttime.tv_sec,
|
||||
- _structure->starttime.tv_usec);
|
||||
+ Glib::DateTime time = Glib::DateTime::create_now_utc(_structure->starttime.tv_sec);
|
||||
+ return time.add_seconds(_structure->starttime.tv_usec / 1.0e6);
|
||||
}
|
||||
|
||||
Meta::Meta(const struct sr_datafeed_meta *structure) :
|
||||
diff --git a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
|
||||
index 97e54e17..d090c379 100644
|
||||
--- a/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
|
||||
+++ b/bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp
|
||||
@@ -274,7 +274,7 @@ public:
|
||||
std::shared_ptr<UserDevice> create_user_device(
|
||||
std::string vendor, std::string model, std::string version);
|
||||
/** Create a header packet. */
|
||||
- std::shared_ptr<Packet> create_header_packet(Glib::TimeVal start_time);
|
||||
+ std::shared_ptr<Packet> create_header_packet(Glib::DateTime start_time);
|
||||
/** Create a meta packet. */
|
||||
std::shared_ptr<Packet> create_meta_packet(
|
||||
std::map<const ConfigKey *, Glib::VariantBase> config);
|
||||
@@ -711,7 +711,7 @@ public:
|
||||
/* Feed version number. */
|
||||
int feed_version() const;
|
||||
/* Start time of this session. */
|
||||
- Glib::TimeVal start_time() const;
|
||||
+ Glib::DateTime start_time() const;
|
||||
private:
|
||||
explicit Header(const struct sr_datafeed_header *structure);
|
||||
~Header();
|
||||
diff --git a/bindings/cxx/libsigrokcxx.pc.in b/bindings/cxx/libsigrokcxx.pc.in
|
||||
index 10a92f2d..7d2723fc 100644
|
||||
--- a/bindings/cxx/libsigrokcxx.pc.in
|
||||
+++ b/bindings/cxx/libsigrokcxx.pc.in
|
||||
@@ -6,7 +6,7 @@ includedir=@includedir@
|
||||
Name: libsigrokcxx
|
||||
Description: C++ bindings for libsigrok
|
||||
URL: http://www.sigrok.org
|
||||
-Requires: libsigrok glibmm-2.4
|
||||
+Requires: libsigrok @SR_GLIBMM_REQUIRES@
|
||||
Version: @SR_PACKAGE_VERSION@
|
||||
Libs: -L${libdir} -lsigrokcxx
|
||||
Libs.private: -lm
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 424b0002..d70575b7 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -407,9 +407,14 @@ AS_IF([test "x$HAVE_CXX11" != x1],
|
||||
[SR_APPEND([sr_cxx_missing], [', '], ['C++11'])])
|
||||
|
||||
# The C++ bindings need glibmm.
|
||||
-SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [glibmm-2.4 >= 2.32.0])
|
||||
+SR_GLIBMM_REQUIRES=glibmm-2.4
|
||||
+SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.32.0])
|
||||
+AS_IF([test "x$sr_have_glibmm" != xyes],
|
||||
+ [SR_GLIBMM_REQUIRES=glibmm-2.68
|
||||
+ SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [$SR_GLIBMM_REQUIRES >= 2.68.0])])
|
||||
AS_IF([test "x$sr_have_glibmm" != xyes],
|
||||
[SR_APPEND([sr_cxx_missing], [', '], [glibmm])])
|
||||
+AC_SUBST(SR_GLIBMM_REQUIRES)
|
||||
|
||||
# The C++ bindings use Doxygen to parse libsigrok symbols.
|
||||
AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes], [no])
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -11,6 +11,8 @@ LIBSIGROK_LICENSE_FILES = COPYING
|
||||
LIBSIGROK_INSTALL_STAGING = YES
|
||||
LIBSIGROK_DEPENDENCIES = libglib2 libzip host-pkgconf
|
||||
LIBSIGROK_CONF_OPTS = --disable-java --disable-python
|
||||
# We're patching configure.ac
|
||||
LIBSIGROK_AUTORECONF = YES
|
||||
|
||||
ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)
|
||||
LIBSIGROK_CONF_OPTS += --with-libbluez
|
||||
@@ -52,6 +54,7 @@ LIBSIGROK_DEPENDENCIES += glibmm
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBSIGROKCXX),y)
|
||||
LIBSIGROK_CONF_ENV = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++17"
|
||||
LIBSIGROK_CONF_OPTS += --enable-cxx
|
||||
# host-doxygen is used by C++ bindings to parse libsigrok symbols
|
||||
LIBSIGROK_DEPENDENCIES += \
|
||||
|
||||
Reference in New Issue
Block a user