#
# spec file for package libgusb
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           libgusb
Version:        0.3.5
Release:        2.6
Summary:        GObject-based library for libusb1
License:        LGPL-2.1-or-later
Group:          Development/Libraries/GNOME
URL:            https://github.com/hughsie/libgusb
Source0:        http://people.freedesktop.org/~hughsient/releases/%{name}-%{version}.tar.xz
Source99:       baselibs.conf
BuildRequires:  gtk-doc
BuildRequires:  meson
BuildRequires:  pkgconfig
BuildRequires:  vala
BuildRequires:  pkgconfig(glib-2.0) >= 2.44.0
BuildRequires:  pkgconfig(gobject-introspection-1.0) >= 1.29
BuildRequires:  pkgconfig(gudev-1.0)
BuildRequires:  pkgconfig(libusb-1.0) >= 1.0.19

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

%package -n libgusb2
Summary:        GObject-based library for libusb1
Group:          System/Libraries

%description -n libgusb2
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.

%package -n typelib-1_0-GUsb-1_0
Summary:        Introspection bindings for libgusb, a GObject-based wrapper for libusb1
Group:          System/Libraries

%description -n typelib-1_0-GUsb-1_0
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.

%package devel
Summary:        Development files for libgusb, a GObject-based wrapper for libusb1
Group:          Development/Libraries/C and C++
Requires:       libgusb2 = %{version}
Requires:       typelib-1_0-GUsb-1_0 = %{version}

%description devel
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.

%prep
%setup -q

%build
%meson
%meson_build

%install
%meson_install

%post -n libgusb2 -p /sbin/ldconfig
%postun -n libgusb2 -p /sbin/ldconfig

%files -n libgusb2
%license COPYING
%doc AUTHORS NEWS
%{_libdir}/libgusb.so.?
%{_libdir}/libgusb.so.?.0.*

%files -n typelib-1_0-GUsb-1_0
%{_libdir}/girepository-1.0/GUsb-1.0.typelib

%files devel
%doc %{_datadir}/gtk-doc/html/gusb/
%{_bindir}/gusbcmd
%{_datadir}/gir-1.0/GUsb-1.0.gir
%dir %{_datadir}/vala/vapi
%{_datadir}/vala/vapi/gusb.deps
%{_datadir}/vala/vapi/gusb.vapi
%{_includedir}/gusb-1/
%{_libdir}/libgusb.so
%{_libdir}/pkgconfig/gusb.pc

%changelog
* Fri Jan  8 2021 Dominique Leuenberger <dimstar@opensuse.org>
- Add baselibs.conf: build libgusb2-32bit, which is a dependency to
  libfprint-2-2-32bit. Due to a installcheck bot issue, this
  happened to be undetected for a while though.
* Mon Sep 14 2020 Dirk Mueller <dmueller@suse.com>
- update to 0.3.5:
  - Add a way to get iConfiguration (Benson Leung)
  - Allow building GtkDoc when building as a subproject (Richard Hughes)
  - Fix version script to be more portable (Laurent Bigonville, Ting-Wei Lan)
  - Include methods on plain structs in the version script (Simon McVittie)
  - This fixes the symbol version for g_usb_version_string() to be in the right
    place, so update this library alongside with external programs if you've
    already started using this symbol for example in fwupd. We've put a mechanism
    in place so this kind of thing can't happen again. Sorry!
  - Validate the exported symbol list during check (Richard Hughes)
  - Include the USB bus in the generated platform_id (Richard Hughes)
  - Add a thin glib wrapper around libusb_endpoint_descriptor (Emmanuel Pacaud)
  - Fix high number of wakeups when checking the GUsbContext (Richard Hughes)
  - Use '#pragma once' to reduce boilerplate (Richard Hughes)
  - Wrap the upstream libusb_strerror() (Richard Hughes)
  - Do not use deprecated libusb API (Richard Hughes)
  - Fix compilation on macOS (Richard Hughes)
  - Use a 1ms timeout in the Windows event thread (Richard Hughes)
  - Use has_link_argument() to detect linker flags (Richard Hughes)
  - Add g_usb_device_get_spec() (Richard Hughes)
  - Add g_usb_version_string() for fwupd (Richard Hughes)
  - Add -Wswitch-enum (Benjamin Berg)
  - Fix GI length introspection annotations (grindhold)
  - Make gir generation optional (maxice8)
* Thu Mar  8 2018 dimstar@opensuse.org
- Update to version 0.3.0:
  + New Features:
  - Add Travis integration.
  - Allow changing the path to usb.ids file.
  - Port to the Meson build system.
  + Replace libusb-1.0/libusb.h with libusb.h.
- Port to meson build system:
  + Add meson BuildRequires.
  + Replace configure/make/make_install with
    meson/meson_build/meson_install.
- Add gtk-doc BuildRequires: the meson-based tarball no longer
  ships pre-built documentation.
- Drop xz BuildRequires: this is implicit in all openSUSE
  buildroots.
* Mon Mar  5 2018 jengelh@inai.de
- Fix SRPM group. Update summaries.
* Wed Feb 28 2018 dimstar@opensuse.org
- Modernize spec-file by calling spec-cleaner
* Wed Sep  6 2017 dimstar@opensuse.org
- Update to version 0.2.11:
  + New Features: Add g_usb_context_set_flags().
  + Bugfix: Fix the actual required GLib version.
* Tue Jun 13 2017 dimstar@opensuse.org
- Update to version 0.2.10:
  + Correctly detect removed devices when rescanning.
  + Fix a memory leak when using control tranfers.
  + Fix gtk-doc build when builddir != srcdir.
  + Fix symbol version table up to version 0.2.9.
* Thu Apr 14 2016 idonmez@suse.com
- Update to GNOME 3.20  Fate#318572
* Wed Mar 23 2016 zaitor@opensuse.org
- Update to version 0.2.9:
  + Add g_usb_context_wait_for_replug().
  + Install gusbcmd as a debugging aid.
* Thu Dec 10 2015 dimstar@opensuse.org
- Update to version 0.2.8:
  + New Features:
  - Add a PERMISSION_DENIED error enum.
  - Add a thin glib wrapper around a libusb_interface_descriptor.
  - Add g_usb_device_get_interfaces().
  - Add g_usb_device_get_release().
  - Add g_usb_device_set_interface_alt().
  + Bugfix: Ignore the not-found error when resetting a device.
* Wed Sep 16 2015 dimstar@opensuse.org
- Update to version 0.2.7:
  + Support g_autoptr() for all gusb object types.
  + Bugfixes:
  - Add missing element-type annotations.
- Changes from version 0.2.6:
  + Bugfixes:
  - Do not unref the GMainContext after each request.
* Thu Jun 18 2015 zaitor@opensuse.org
- Update to version 0.2.5:
  + Add g_usb_device_get_custom_index().
  + Allow setting the GMainContext when used for sync methods.
  + Include all the USB device class codes.
  + Use symbol versioning.
* Sun Feb 22 2015 benoit.monin@gmx.fr
- Update to version 0.2.4:
  + Various API extensions.
  + Bugfixes:
  - Don't filter out hub devices when getting the device list.
  - Make the platform ID persistent across re-plug.
  - Port to GTask.
  - Use new Glib features for various code cleanups.
* Fri Dec 19 2014 kkaempf@suse.com
- Update to version 0.2.3:
  + Bugfixes: Correctly terminate the libusb event thread.
- Changes from version 0.2.2:
  + New Features: Official Windows support!
  + Bugfixes:
  - No longer require G_USB_API_IS_SUBJECT_TO_CHANGE.
  - Use a thread to process libusb1 events.
- Changes from version 0.2.1:
  + Bugfixes:
  - Always set a device platform ID.
  - Ignore 'unsupported' as a return value for kernel drivers.
- Changes from version 0.2.0:
  + Notes:
  - This release raises the GLib requirement to 2.32 and libusb
    to 1.0.19.
  - No GUdev functionality is now required.
  + New Features:
  - Add g_usb_device_get_device_class().
  - Use the native hotplug support in libusb 1.0.19.
  + Bugfixes:
  - Fix a crash where libusb_get_pollfds() is unavailable.
  - Manually coldplug devices and poll if hotplugging is not
    available.
* Tue Mar 12 2013 dimstar@opensuse.org
- Update to version 0.1.6:
  + Do not use deprecated GLib functionality.
  + Remove duplicate gtk-doc check in configure.
  + Unref the GMainloop after it has been run, not when just quit.
- Changes from version 0.1.5:
  + Don't use the deprecated INCLUDES in Makefile.am.
  + Fix documentation build.
  + Fix obvious typo in README.
* Tue Nov 13 2012 dimstar@opensuse.org
- Update to version 0.1.4:
  + Add GObject Introspection support.
  + Add g_usb_device_reset() to reset a connected device.
  + Add Vala bindings.
  + Assorted introspection annotation fixes.
  + Rename inconsistently named gusb_* symbols to g_usb_*.
- Add pkgconfig(gobject-introspection-1.0) and vala BuildRequires:
  New dependency for the GObject introspection support and the vala
  bindings.
- Create new typelib-1_0-GUsb-1_0 subpackage.
* Fri Jan 13 2012 vuntz@opensuse.org
- Cleanup packaging so it can get pushed to Factory.
* Mon Jan  2 2012 kkaempf@suse.com
- Initial package, version 0.1.3