Giter VIP home page Giter VIP logo

libgusb's Introduction

GUsb

GUsb is a GObject wrapper for libusb1 that makes it easy to do asynchronous control, bulk and interrupt transfers with proper cancellation and integration into a mainloop. This makes it easy to integrate low level USB transfers with your high-level application or system daemon.

Not everything you can do in libusb1 is wrapped, although we'll accept feature requests (with patches) if it makes sense.

libgusb's People

Contributors

3v1n0 avatar alebcay avatar amigadave avatar bigon avatar biswa96 avatar bleungatchromium avatar chenrui333 avatar dimstar77 avatar emmanuelp avatar fdanis-oss avatar grindhold avatar hardboprobot avatar hughsie avatar jjardon avatar jwrdegoede avatar kalev avatar lantw44 avatar maxice8 avatar nacho avatar ndim avatar nemequ avatar raof avatar robert-ancell avatar smcv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

libgusb's Issues

Soversion not changed while ABI did on 0.2.10 release

Fixups introduced in cfaab3e made incompatible ABI changes as versions of some symbols have been changed from 0.1.0 (where they matched wildcard) to 0.2.5, 0.2.8 or 0.2.9.

This breaks the ABI for existing programs, for example see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=868340

I see two approaches to fix this:

  • Move the symbols back to 0.1.0 release, pretty much by reverting cfaab3e, this is what I've chosen for the Debian package for now
  • Increase soversion and start with versioning from scratch

Full changes in exported symbols between 0.2.9 and 0.2.10 releases:

diff --git a/debian/libgusb2.symbols b/debian/libgusb2.symbols
index 76c6aa0..1a796d5 100644
--- a/debian/libgusb2.symbols
+++ b/debian/libgusb2.symbols
@@ -5,18 +5,21 @@ libgusb.so.2 libgusb2 #MINVER#
  LIBGUSB_0.2.2@LIBGUSB_0.2.2 0.2.2
  LIBGUSB_0.2.4@LIBGUSB_0.2.4 0.2.4
  LIBGUSB_0.2.5@LIBGUSB_0.2.5 0.2.5
+ LIBGUSB_0.2.8@LIBGUSB_0.2.8 0.2.10
+ LIBGUSB_0.2.9@LIBGUSB_0.2.9 0.2.10
  g_usb_context_enumerate@LIBGUSB_0.2.2 0.2.2
  g_usb_context_error_quark@LIBGUSB_0.1.0 0.1.0
  g_usb_context_find_by_bus_address@LIBGUSB_0.2.2 0.2.2
  g_usb_context_find_by_platform_id@LIBGUSB_0.2.4 0.2.4
  g_usb_context_find_by_vid_pid@LIBGUSB_0.2.2 0.2.2
  g_usb_context_get_devices@LIBGUSB_0.2.2 0.2.2
- g_usb_context_get_main_context@LIBGUSB_0.1.0 0.1.0
+ g_usb_context_get_main_context@LIBGUSB_0.2.5 0.2.10
  g_usb_context_get_source@LIBGUSB_0.1.0 0.1.0
  g_usb_context_get_type@LIBGUSB_0.1.0 0.1.0
  g_usb_context_new@LIBGUSB_0.1.0 0.1.0
  g_usb_context_set_debug@LIBGUSB_0.1.0 0.1.0
- g_usb_context_set_main_context@LIBGUSB_0.1.0 0.1.0
+ g_usb_context_set_main_context@LIBGUSB_0.2.5 0.2.10
+ g_usb_context_wait_for_replug@LIBGUSB_0.2.9 0.2.10
  g_usb_device_bulk_transfer@LIBGUSB_0.1.0 0.1.0
  g_usb_device_bulk_transfer_async@LIBGUSB_0.1.0 0.1.0
  g_usb_device_bulk_transfer_finish@LIBGUSB_0.1.0 0.1.0
@@ -34,8 +37,8 @@ libgusb.so.2 libgusb2 #MINVER#
  g_usb_device_get_device_class@LIBGUSB_0.1.7 0.1.7
  g_usb_device_get_device_protocol@LIBGUSB_0.2.4 0.2.4
  g_usb_device_get_device_subclass@LIBGUSB_0.2.4 0.2.4
- g_usb_device_get_interface@LIBGUSB_0.1.0 0.2.8
- g_usb_device_get_interfaces@LIBGUSB_0.1.0 0.2.8
+ g_usb_device_get_interface@LIBGUSB_0.2.8 0.2.10
+ g_usb_device_get_interfaces@LIBGUSB_0.2.8 0.2.10
  g_usb_device_get_manufacturer_index@LIBGUSB_0.1.0 0.1.0
  g_usb_device_get_parent@LIBGUSB_0.2.4 0.2.4
  g_usb_device_get_pid@LIBGUSB_0.1.0 0.1.0
@@ -43,7 +46,7 @@ libgusb.so.2 libgusb2 #MINVER#
  g_usb_device_get_platform_id@LIBGUSB_0.1.1 0.1.1
  g_usb_device_get_port_number@LIBGUSB_0.2.4 0.2.4
  g_usb_device_get_product_index@LIBGUSB_0.1.0 0.1.0
- g_usb_device_get_release@LIBGUSB_0.1.0 0.2.8 
+ g_usb_device_get_release@LIBGUSB_0.2.8 0.2.10
  g_usb_device_get_serial_number_index@LIBGUSB_0.1.0 0.1.0
  g_usb_device_get_string_descriptor@LIBGUSB_0.1.0 0.1.0
  g_usb_device_get_type@LIBGUSB_0.1.0 0.1.0
@@ -62,16 +65,16 @@ libgusb.so.2 libgusb2 #MINVER#
  g_usb_device_release_interface@LIBGUSB_0.1.0 0.1.0
  g_usb_device_reset@LIBGUSB_0.1.0 0.1.0
  g_usb_device_set_configuration@LIBGUSB_0.1.0 0.1.0
- g_usb_device_set_interface_alt@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_alternate@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_class@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_extra@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_index@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_kind@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_length@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_number@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_protocol@LIBGUSB_0.1.0 0.2.8
- g_usb_interface_get_subclass@LIBGUSB_0.1.0 0.2.8
+ g_usb_device_set_interface_alt@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_alternate@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_class@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_extra@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_index@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_kind@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_length@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_number@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_protocol@LIBGUSB_0.2.8 0.2.10
+ g_usb_interface_get_subclass@LIBGUSB_0.2.8 0.2.10
  g_usb_interface_get_type@LIBGUSB_0.1.0 0.2.8
  g_usb_source_error_quark@LIBGUSB_0.1.0 0.1.0
  g_usb_source_set_callback@LIBGUSB_0.1.0 0.1.0

Error building docs since 91a213f7687c39f83cadb022739d09d37d392cee

Updating to 0.4.0 from 0.3.10 in freedesktop-sdk results in a failure to build the documentation:

ERROR: Error in gtkdoc helper script:

ERROR: ['/usr/bin/gtkdoc-mkhtml', '--path=/buildstream/freedesktop-sdk/components/libgusb.bst/docs/api:/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/docs/api', 'gusb', '../gusb-docs.sgml'] failed with status 6
warning: failed to load external entity "../xml/gusb-source.xml"
../gusb-docs.sgml:50: element include: XInclude error : could not load ../xml/gusb-source.xml, and no fallback was found

The following warning can be seen higher in the output: warning: Section gusb-source is not defined in the gusb-sections.txt file, though this ought to be generated as part of the build process.

I've done a bisect and the commit our build system appears to be unhappy with is 91a213f.

Full install logs
$ env DESTDIR="/buildstream-install" ninja -C _builddir install
ninja: Entering directory `_builddir'
[0/1] Installing files.
Installing gusb/libgusb.so.2.0.10 to /buildstream-install/usr/lib/x86_64-linux-gnu
Installing gusb/GUsb-1.0.gir to /buildstream-install/usr/share/gir-1.0
Installing gusb/GUsb-1.0.typelib to /buildstream-install/usr/lib/x86_64-linux-gnu/girepository-1.0
Installing gusb/gusb.vapi to /buildstream-install/usr/share/vala/vapi
Installing tools/gusbcmd to /buildstream-install/usr/bin
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb.h to /buildstream-install/usr/include/gusb-1/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/gusb/gusb-version.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context-private.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device-event.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device-private.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device-list.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-interface.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-interface-private.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-bos-descriptor.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-bos-descriptor-private.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-endpoint.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-endpoint-private.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-source.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-util.h to /buildstream-install/usr/include/gusb-1/gusb/
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/meson-private/gusb.pc to /buildstream-install/usr/lib/x86_64-linux-gnu/pkgconfig
Installing /buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/meson-private/gusb.deps to /buildstream-install/usr/share/vala/vapi
Installing symlink pointing to libgusb.so.2.0.10 to /buildstream-install/usr/lib/x86_64-linux-gnu/libgusb.so.2
Installing symlink pointing to libgusb.so.2 to /buildstream-install/usr/lib/x86_64-linux-gnu/libgusb.so
Running custom install script '/usr/bin/meson --internal gtkdoc --sourcedir=/buildstream/freedesktop-sdk/components/libgusb.bst --builddir=/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir --subdir=do
cs/api --headerdirs=/buildstream/freedesktop-sdk/components/libgusb.bst/gusb@@/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/gusb --mainfile=gusb-docs.sgml --modulename=gusb --moduleversion= --mode
=auto --gtkdoc-scan=/usr/bin/gtkdoc-scan --gtkdoc-scangobj=/usr/bin/gtkdoc-scangobj --gtkdoc-mkdb=/usr/bin/gtkdoc-mkdb --gtkdoc-mkhtml=/usr/bin/gtkdoc-mkhtml --gtkdoc-fixxref=/usr/bin/gtkdoc-fixxref --htmlargs= -
-scanargs= --scanobjsargs= --gobjects-types-file= --fixxrefargs= --mkdbargs= --html-assets= --content-files= --expand-content-files= --ignore-headers= --installdir= --cc=cc --ld=cc --cflags=-O2 -g -pipe -Wp,-D_FO
RTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -Waggregate-retur
n -Wunused -Warray-bounds -Wcast-align -Wclobbered -Wdeclaration-after-statement -Wempty-body -Wextra -Wformat=2 -Wformat-nonliteral -Wformat-security -Wformat-signedness -Wignored-qualifiers -Wimplicit-function-
declaration -Winit-self -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wno-discarded-qualifiers -Wno-mi
ssing-field-initializers -Wno-strict-aliasing -Wno-suggest-attribute=format -Wno-unused-parameter -Wold-style-definition -Woverride-init -Wpointer-arith -Wreturn-type -Wshadow -Wsign-compare -Wstrict-aliasing -Ws
trict-prototypes -Wswitch-default -Wswitch-enum -Wtype-limits -Wundef -Wuninitialized -Wunused-but-set-variable -Wwrite-strings -fstack-protector-strong -DGUSB_COMPILATION --ldflags=-Wl,-z,relro,-z,now -Wl,--as-n
eeded -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-fra
me-pointer'
--- stdout ---
Building documentation for gusb
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-source.h:0: warning: partial declaration (enum) : typedef enum { G_USB_SOURCE_ERROR_INTERNAL } GUsbSourceError;

G_DEPRECATED_FOR(g_usb_context_error_quark)
GQuark
g_usb_source_error_quark(void);

G_DEPRECATED
void
g_usb_source_set_callback(GUsbSource *self, GSourceFunc func, gpointer data, GDestroyNotify notify);

G_END_DECLS
 

/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-source.c:10: warning: Section gusb-source is not defined in the gusb-sections.txt file.
unknown:0: warning: Field descriptions for struct GUsbContextClass are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.h:36: warning: Value descriptions for GUsbContextFlags are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.c:580: warning: Parameter description for g_usb_context_set_main_context::main_ctx is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.c:359: warning: Parameter description for g_usb_context_load::context is not used from source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.c:359: warning: Parameter description for g_usb_context_load::self is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.c:405: warning: Parameter description for g_usb_context_save::context is not used from source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-context.c:405: warning: Parameter description for g_usb_context_save::self is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:25: warning: Value descriptions for GUsbDeviceDirection are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:35: warning: Value descriptions for GUsbDeviceRequestType are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:47: warning: Value descriptions for GUsbDeviceRecipient are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:59: warning: Value descriptions for GUsbDeviceError are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:78: warning: Value descriptions for GUsbDeviceClaimInterfaceFlags are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:89: warning: Value descriptions for GUsbDeviceClassCode are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.h:118: warning: Value descriptions for GUsbDeviceLangid are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1365: warning: Parameter description for g_usb_device_get_string_descriptor::self is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1523: warning: Parameter description for g_usb_device_get_string_descriptor_bytes::self is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1439: warning: Parameter description for g_usb_device_get_string_descriptor_bytes_full::self is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1565: warning: Parameter description for g_usb_device_control_transfer::direction is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1565: warning: Parameter description for g_usb_device_control_transfer::recipient is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1915: warning: Parameter description for g_usb_device_control_transfer_async::direction is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1915: warning: Parameter description for g_usb_device_control_transfer_async::request_type is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1915: warning: Parameter description for g_usb_device_control_transfer_async::recipient is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1915: warning: Parameter description for g_usb_device_control_transfer_async::request is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1915: warning: Parameter description for g_usb_device_control_transfer_async::value is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/gusb/gusb-device.c:1915: warning: Parameter description for g_usb_device_control_transfer_async::idx is missing in source code comment block.
unknown:0: warning: Field descriptions for struct GUsbDeviceListClass are missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/gusb/gusb-version.h:46: warning: Parameter description for G_USB_CHECK_VERSION::major is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/gusb/gusb-version.h:46: warning: Parameter description for G_USB_CHECK_VERSION::minor is missing in source code comment block.
/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/gusb/gusb-version.h:46: warning: Parameter description for G_USB_CHECK_VERSION::micro is missing in source code comment block.
./gusb-unused.txt:1: warning: 3 unused declarations. They should be added to gusb-sections.txt in the appropriate place.

ERROR: Error in gtkdoc helper script:

ERROR: ['/usr/bin/gtkdoc-mkhtml', '--path=/buildstream/freedesktop-sdk/components/libgusb.bst/docs/api:/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/docs/api', 'gusb', '../gusb-docs.sgml'] failed with status 6
warning: failed to load external entity "../xml/gusb-source.xml"
../gusb-docs.sgml:50: element include: XInclude error : could not load ../xml/gusb-source.xml, and no fallback was found


--- stderr ---

FAILED: install script '/usr/bin/meson --internal gtkdoc --sourcedir=/buildstream/freedesktop-sdk/components/libgusb.bst --builddir=/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir --subdir=docs/api --headerdirs=/buildstream/freedesktop-sdk/components/libgusb.bst/gusb@@/buildstream/freedesktop-sdk/components/libgusb.bst/_builddir/gusb --mainfile=gusb-docs.sgml --modulename=gusb --moduleversion= --mode=auto --gtkdoc-scan=/usr/bin/gtkdoc-scan --gtkdoc-scangobj=/usr/bin/gtkdoc-scangobj --gtkdoc-mkdb=/usr/bin/gtkdoc-mkdb --gtkdoc-mkhtml=/usr/bin/gtkdoc-mkhtml --gtkdoc-fixxref=/usr/bin/gtkdoc-fixxref --htmlargs= --scanargs= --scanobjsargs= --gobjects-types-file= --fixxrefargs= --mkdbargs= --html-assets= --content-files= --expand-content-files= --ignore-headers= --installdir= --cc=cc --ld=cc --cflags=-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -Waggregate-return -Wunused -Warray-bounds -Wcast-align -Wclobbered -Wdeclaration-after-statement -Wempty-body -Wextra -Wformat=2 -Wformat-nonliteral -Wformat-security -Wformat-signedness -Wignored-qualifiers -Wimplicit-function-declaration -Winit-self -Wmissing-declarations -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wno-discarded-qualifiers -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-suggest-attribute=format -Wno-unused-parameter -Wold-style-definition -Woverride-init -Wpointer-arith -Wreturn-type -Wshadow -Wsign-compare -Wstrict-aliasing -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wtype-limits -Wundef -Wuninitialized -Wunused-but-set-variable -Wwrite-strings -fstack-protector-strong -DGUSB_COMPILATION --ldflags=-Wl,-z,relro,-z,now -Wl,--as-needed -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer' exit code 1, stopped
FAILED: meson-internal__install 
/usr/bin/meson install --no-rebuild
ninja: build stopped: subcommand failed.

Make gobject-introspection optional again

Before the move to meson (libgusb<0.3.0) we had an option to enable/disable to use of gobject-introspection and pulling in it's dependency. It would be nice to have that back for the meson build as well, like e.g. it exists in gcab.

Version parsing moved to a separate Python package

When running build of the package in openSUSE/Factory with Python 3.10 we hit the crash, because pkg_resources package have been removed from the standard library and the functionality moved to the external packaging package on PyPI.

This patch fixes the issue.

Linker error on macOS

Thanks for creating libgusb. I'm using it as an example for binding a gobject-based library in my soon-to-be-published book on Vala. I've noticed that it doesn't compile on macOS though. The offending part is the linker not understanding --version-script:

% ninja                                                                                                                                           mickey@helios
[15/21] Linking target gusb/libgusb.2.dylib.
FAILED: gusb/libgusb.2.dylib
ccache cc  -o gusb/libgusb.2.dylib 'gusb/gusb@sha/gusb-context.c.o' 'gusb/gusb@sha/gusb-device.c.o' 'gusb/gusb@sha/gusb-device-list.c.o' 'gusb/gusb@sha/gusb-interface.c.o' 'gusb/gusb@sha/gusb-source.c.o' 'gusb/gusb@sha/gusb-util.c.o' -Wl,-headerpad_max_install_names -shared -install_name @rpath/libgusb.2.dylib -Wl,--version-script,/Users/mickey/Documents/late/misc/libgusb/gusb/libgusb.ver -L/usr/local/Cellar/glib/2.54.3/lib -L/usr/local/opt/gettext/lib -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation -L/usr/local/Cellar/libusb/1.0.21/lib -lusb-1.0
ld: unknown option: --version-script
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[16/21] Linking target gusb/gusb-self-test.
ninja: build stopped: subcommand failed.

deprecated libusb_set_debug

I noticed this when building libgusb when compiling against libusb v1.0.22.

ninja
[7/12] Compiling C object 'gusb/gusb@@gusb@sha/gusb-context.c.o'.
../gusb/gusb-context.c: In function ‘g_usb_context_set_property’:
../gusb/gusb-context.c:170:3: warning: ‘libusb_set_debug’ is deprecated: Use libusb_set_option instead [-Wdeprecated-declarations]
   libusb_set_debug (priv->ctx, priv->debug_level);
   ^
In file included from ../gusb/gusb-context.c:31:0:
/root/build_dell-accessory-tool/stage/include/libusb-1.0/libusb.h:1300:18: note: declared here
 void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level);
                  ^
../gusb/gusb-context.c: In function ‘g_usb_context_set_debug’:
../gusb/gusb-context.c:721:3: warning: ‘libusb_set_debug’ is deprecated: Use libusb_set_option instead [-Wdeprecated-declarations]
   libusb_set_debug (priv->ctx, debug_level);
   ^
In file included from ../gusb/gusb-context.c:31:0:
/root/build_dell-accessory-tool/stage/include/libusb-1.0/libusb.h:1300:18: note: declared here
 void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level);
                  ^

Wrong symbols versioning?

Hello,

Are there some errors in the symbols versioning in 0.3.3 (again)?

There are a bunch of new symbols that have the version 0.1.0

g_usb_endpoint_get_number@LIBGUSB_0.1.0
g_usb_endpoint_get_refresh@LIBGUSB_0.1.0
g_usb_endpoint_get_synch_address@LIBGUSB_0.1.0
g_usb_endpoint_get_type@LIBGUSB_0.1.0
g_usb_version_string@LIBGUSB_0.1.0

Introspection does not detect most error domains

As of right now, only SourceError is properly declared as an error in generated files (see e.g. valadoc). This is a big issue for language bindings, since it removes the ability to (nicely) selectively catch exceptions from GUsb.

Issue in gusb/meson.build

Is this endif safe? Shouldn't it be after the vapi if-block?

endif

The libgusb_girtarget is not set if introspection is not enabled but vapi is

Using a Yocto build with 636efc0 where this is included:

endif

I get the following error (snipped away some dirs):

Build started at 2020-09-17T16:05:20.241926
Main binary: /<snip>/usr/bin/nativepython3
Build Options: -Ddocs=false -Dintrospection=false -Dprefix=/usr -Dbindir=bin -Ddatadir=share -Dincludedir=include -Dinfodir=share/info -Dlibdir=lib -Dlibexecdir=libexec -Dlocalstatedir=/var -Dmandir=share/man -Dsbindir=sbin -Dsharedstate
dir=/com -Dsysconfdir=/etc -Dbuildtype=plain -Dwrap_mode=nodownload '--cross-file //<snip>/meson.cross'
Python system: Linux
The Meson build system
Version: 0.53.2
Source dir: /<snip>/git
Build dir: /<snip>/build
Build type: cross build
Project name: libgusb
Project version: 0.3.1
No CFLAGS in the environment, not changing global flags.
No LDFLAGS in the environment, not changing global flags.
No CPPFLAGS in the environment, not changing global flags.
Sanity testing C compiler: gcc
Is cross compiler: False.
Sanity check compiler command line: gcc //<snip>/meson-private/sanitycheckc.c -o /<snip>/meson-private/sanitycheckc.exe -pipe -D_FILE_OFFSET_BITS=64
 ...
Compiler stderr:

Run-time dependency gio-2.0 found: YES 2.62.4
Pkg-config binary for MachineChoice.HOST is cached.
Determining dependency 'libusb-1.0' with pkg-config executable '/<snip>/usr/bin/pkg-config'
PKG_CONFIG_PATH: ...
Run-time dependency libusb-1.0 found: YES 1.0.22
Configuring config.h using configuration
Configuring gusb-version.h using configuration

gusb/meson.build:128:6: ERROR: Unknown variable "libgusb_girtarget".```

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.