commit:     10e6975acb6a5ea460c4f51f137af57e02d619e5
Author:     David Roman <davidroman96 <AT> gmail <DOT> com>
AuthorDate: Thu Nov 21 13:11:50 2024 +0000
Commit:     Julien Roy <julien <AT> jroy <DOT> ca>
CommitDate: Thu Nov 21 13:13:13 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=10e6975a

net-p2p/trezord-go: fix build for newer golang versions

Closes: https://bugs.gentoo.org/919284
Closes: https://github.com/gentoo/guru/pull/264
Signed-off-by: David Roman <davidroman96 <AT> gmail.com>

 .../files/trezord-go-2.0.33_libusb.patch           | 393 +++++++++++++++++++++
 net-p2p/trezord-go/trezord-go-2.0.33.ebuild        |   2 +
 2 files changed, 395 insertions(+)

diff --git a/net-p2p/trezord-go/files/trezord-go-2.0.33_libusb.patch 
b/net-p2p/trezord-go/files/trezord-go-2.0.33_libusb.patch
new file mode 100644
index 000000000..28d0562d2
--- /dev/null
+++ b/net-p2p/trezord-go/files/trezord-go-2.0.33_libusb.patch
@@ -0,0 +1,393 @@
+From 616473d53a8ae49f1099e36ab05a2981a08fa606 Mon Sep 17 00:00:00 2001
+From: Pisit Wajanasara <[email protected]>
+Date: Wed, 3 Jan 2024 15:33:49 -0800
+Subject: [PATCH] Fix libusb for newer golang version
+
+---
+ usb/lowlevel/libusb/libusb.go | 121 ++++++++++++++++++++++------------
+ 1 file changed, 80 insertions(+), 41 deletions(-)
+
+diff --git a/usb/lowlevel/libusb/libusb.go b/usb/lowlevel/libusb/libusb.go
+index abc289e..001a4d6 100644
+--- a/usb/lowlevel/libusb/libusb.go
++++ b/usb/lowlevel/libusb/libusb.go
+@@ -389,8 +389,11 @@ const HOTPLUG_MATCH_ANY = C.LIBUSB_HOTPLUG_MATCH_ANY
+ // A structure representing the standard USB endpoint descriptor.
+ // This descriptor is documented in section 9.6.6 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_Endpoint_Descriptor = C.struct_libusb_endpoint_descriptor
++
+ type Endpoint_Descriptor struct {
+-      ptr              *C.struct_libusb_endpoint_descriptor
++      ptr              *Struct_Libusb_Endpoint_Descriptor
+       BLength          uint8
+       BDescriptorType  uint8
+       BEndpointAddress uint8
+@@ -402,7 +405,7 @@ type Endpoint_Descriptor struct {
+       Extra            []byte
+ }
+ 
+-func (x *C.struct_libusb_endpoint_descriptor) c2go() *Endpoint_Descriptor {
++func (x *Struct_Libusb_Endpoint_Descriptor) c2go() *Endpoint_Descriptor {
+       return &Endpoint_Descriptor{
+               ptr:              x,
+               BLength:          uint8(x.bLength),
+@@ -437,8 +440,11 @@ func (x *Endpoint_Descriptor) String() string {
+ // A structure representing the standard USB interface descriptor.
+ // This descriptor is documented in section 9.6.5 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_Interface_Descriptor = C.struct_libusb_interface_descriptor
++
+ type Interface_Descriptor struct {
+-      ptr                *C.struct_libusb_interface_descriptor
++      ptr                *Struct_Libusb_Interface_Descriptor
+       BLength            uint8
+       BDescriptorType    uint8
+       BInterfaceNumber   uint8
+@@ -452,8 +458,8 @@ type Interface_Descriptor struct {
+       Extra              []byte
+ }
+ 
+-func (x *C.struct_libusb_interface_descriptor) c2go() *Interface_Descriptor {
+-      var list []C.struct_libusb_endpoint_descriptor
++func (x *Struct_Libusb_Interface_Descriptor) c2go() *Interface_Descriptor {
++      var list []Struct_Libusb_Endpoint_Descriptor
+       hdr := (*reflect.SliceHeader)(unsafe.Pointer(&list))
+       hdr.Cap = int(x.bNumEndpoints)
+       hdr.Len = int(x.bNumEndpoints)
+@@ -501,14 +507,17 @@ func (x *Interface_Descriptor) String() string {
+ 
//-----------------------------------------------------------------------------
+ 
+ // A collection of alternate settings for a particular USB interface.
++
++type Struct_Libusb_Interface = C.struct_libusb_interface
++
+ type Interface struct {
+-      ptr            *C.struct_libusb_interface
++      ptr            *Struct_Libusb_Interface
+       Num_altsetting int
+       Altsetting     []*Interface_Descriptor
+ }
+ 
+-func (x *C.struct_libusb_interface) c2go() *Interface {
+-      var list []C.struct_libusb_interface_descriptor
++func (x *Struct_Libusb_Interface) c2go() *Interface {
++      var list []Struct_Libusb_Interface_Descriptor
+       hdr := (*reflect.SliceHeader)(unsafe.Pointer(&list))
+       hdr.Cap = int(x.num_altsetting)
+       hdr.Len = int(x.num_altsetting)
+@@ -540,8 +549,11 @@ func Interface_str(x *Interface) string {
+ // A structure representing the standard USB configuration descriptor.
+ // This descriptor is documented in section 9.6.3 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_Config_Descriptor = C.struct_libusb_config_descriptor
++
+ type Config_Descriptor struct {
+-      ptr                 *C.struct_libusb_config_descriptor
++      ptr                 *Struct_Libusb_Config_Descriptor
+       BLength             uint8
+       BDescriptorType     uint8
+       WTotalLength        uint16
+@@ -554,8 +566,8 @@ type Config_Descriptor struct {
+       Extra               []byte
+ }
+ 
+-func (x *C.struct_libusb_config_descriptor) c2go() *Config_Descriptor {
+-      var list []C.struct_libusb_interface
++func (x *Struct_Libusb_Config_Descriptor) c2go() *Config_Descriptor {
++      var list []Struct_Libusb_Interface
+       hdr := (*reflect.SliceHeader)(unsafe.Pointer(&list))
+       hdr.Cap = int(x.bNumInterfaces)
+       hdr.Len = int(x.bNumInterfaces)
+@@ -603,8 +615,11 @@ func (x *Config_Descriptor) String() string {
+ // A structure representing the superspeed endpoint companion descriptor.
+ // This descriptor is documented in section 9.6.7 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_SS_Endpoint_Companion_Descriptor = 
C.struct_libusb_ss_endpoint_companion_descriptor
++
+ type SS_Endpoint_Companion_Descriptor struct {
+-      ptr               *C.struct_libusb_ss_endpoint_companion_descriptor
++      ptr               *Struct_Libusb_SS_Endpoint_Companion_Descriptor
+       BLength           uint8
+       BDescriptorType   uint8
+       BMaxBurst         uint8
+@@ -612,7 +627,7 @@ type SS_Endpoint_Companion_Descriptor struct {
+       WBytesPerInterval uint16
+ }
+ 
+-func (x *C.struct_libusb_ss_endpoint_companion_descriptor) c2go() 
*SS_Endpoint_Companion_Descriptor {
++func (x *Struct_Libusb_SS_Endpoint_Companion_Descriptor) c2go() 
*SS_Endpoint_Companion_Descriptor {
+       return &SS_Endpoint_Companion_Descriptor{
+               ptr:               x,
+               BLength:           uint8(x.bLength),
+@@ -628,15 +643,18 @@ func (x 
*C.struct_libusb_ss_endpoint_companion_descriptor) c2go() *SS_Endpoint_C
+ // A generic representation of a BOS Device Capability descriptor.
+ // It is advised to check BDevCapabilityType and call the matching
+ // Get_*_Descriptor function to get a structure fully matching the type.
++
++type Struct_Libusb_BOS_Dev_Capability_Descriptor = 
C.struct_libusb_bos_dev_capability_descriptor
++
+ type BOS_Dev_Capability_Descriptor struct {
+-      ptr                 *C.struct_libusb_bos_dev_capability_descriptor
++      ptr                 *Struct_Libusb_BOS_Dev_Capability_Descriptor
+       BLength             uint8
+       BDescriptorType     uint8
+       BDevCapabilityType  uint8
+       Dev_capability_data []byte
+ }
+ 
+-func (x *C.struct_libusb_bos_dev_capability_descriptor) c2go() 
*BOS_Dev_Capability_Descriptor {
++func (x *Struct_Libusb_BOS_Dev_Capability_Descriptor) c2go() 
*BOS_Dev_Capability_Descriptor {
+       return &BOS_Dev_Capability_Descriptor{
+               ptr:                 x,
+               BLength:             uint8(x.bLength),
+@@ -651,16 +669,19 @@ func (x *C.struct_libusb_bos_dev_capability_descriptor) 
c2go() *BOS_Dev_Capabili
+ // A structure representing the Binary Device Object Store (BOS) descriptor.
+ // This descriptor is documented in section 9.6.2 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_BOS_Descriptor = C.struct_libusb_bos_descriptor
++
+ type BOS_Descriptor struct {
+-      ptr             *C.struct_libusb_bos_descriptor
++      ptr             *Struct_Libusb_BOS_Descriptor
+       BLength         uint8
+       BDescriptorType uint8
+       WTotalLength    uint16
+       Dev_capability  []*BOS_Dev_Capability_Descriptor
+ }
+ 
+-func (x *C.struct_libusb_bos_descriptor) c2go() *BOS_Descriptor {
+-      var list []*C.struct_libusb_bos_dev_capability_descriptor
++func (x *Struct_Libusb_BOS_Descriptor) c2go() *BOS_Descriptor {
++      var list []*Struct_Libusb_BOS_Dev_Capability_Descriptor
+       hdr := (*reflect.SliceHeader)(unsafe.Pointer(&list))
+       hdr.Cap = int(x.bNumDeviceCaps)
+       hdr.Len = int(x.bNumDeviceCaps)
+@@ -683,15 +704,18 @@ func (x *C.struct_libusb_bos_descriptor) c2go() 
*BOS_Descriptor {
+ // A structure representing the USB 2.0 Extension descriptor
+ // This descriptor is documented in section 9.6.2.1 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_USB_2_0_Extension_Descriptor = 
C.struct_libusb_usb_2_0_extension_descriptor
++
+ type USB_2_0_Extension_Descriptor struct {
+-      ptr                *C.struct_libusb_usb_2_0_extension_descriptor
++      ptr                *Struct_Libusb_USB_2_0_Extension_Descriptor
+       BLength            uint8
+       BDescriptorType    uint8
+       BDevCapabilityType uint8
+       BmAttributes       uint32
+ }
+ 
+-func (x *C.struct_libusb_usb_2_0_extension_descriptor) c2go() 
*USB_2_0_Extension_Descriptor {
++func (x *Struct_Libusb_USB_2_0_Extension_Descriptor) c2go() 
*USB_2_0_Extension_Descriptor {
+       return &USB_2_0_Extension_Descriptor{
+               ptr:                x,
+               BLength:            uint8(x.bLength),
+@@ -706,8 +730,11 @@ func (x *C.struct_libusb_usb_2_0_extension_descriptor) 
c2go() *USB_2_0_Extension
+ // A structure representing the SuperSpeed USB Device Capability descriptor
+ // This descriptor is documented in section 9.6.2.2 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_SS_USB_Device_Capability_Descriptor = 
C.struct_libusb_ss_usb_device_capability_descriptor
++
+ type SS_USB_Device_Capability_Descriptor struct {
+-      ptr                   
*C.struct_libusb_ss_usb_device_capability_descriptor
++      ptr                   *Struct_Libusb_SS_USB_Device_Capability_Descriptor
+       BLength               uint8
+       BDescriptorType       uint8
+       BDevCapabilityType    uint8
+@@ -718,7 +745,7 @@ type SS_USB_Device_Capability_Descriptor struct {
+       BU2DevExitLat         uint16
+ }
+ 
+-func (x *C.struct_libusb_ss_usb_device_capability_descriptor) c2go() 
*SS_USB_Device_Capability_Descriptor {
++func (x *Struct_Libusb_SS_USB_Device_Capability_Descriptor) c2go() 
*SS_USB_Device_Capability_Descriptor {
+       return &SS_USB_Device_Capability_Descriptor{
+               ptr:                   x,
+               BLength:               uint8(x.bLength),
+@@ -737,8 +764,11 @@ func (x 
*C.struct_libusb_ss_usb_device_capability_descriptor) c2go() *SS_USB_Dev
+ // A structure representing the Container ID descriptor.
+ // This descriptor is documented in section 9.6.2.3 of the USB 3.0 
specification.
+ // All multiple-byte fields, except UUIDs, are represented in host-endian 
format.
++
++type Struct_Libusb_Container_ID_Descriptor = 
C.struct_libusb_container_id_descriptor
++
+ type Container_ID_Descriptor struct {
+-      ptr                *C.struct_libusb_container_id_descriptor
++      ptr                *Struct_Libusb_Container_ID_Descriptor
+       BLength            uint8
+       BDescriptorType    uint8
+       BDevCapabilityType uint8
+@@ -746,7 +776,7 @@ type Container_ID_Descriptor struct {
+       ContainerID        []byte
+ }
+ 
+-func (x *C.struct_libusb_container_id_descriptor) c2go() 
*Container_ID_Descriptor {
++func (x *Struct_Libusb_Container_ID_Descriptor) c2go() 
*Container_ID_Descriptor {
+       return &Container_ID_Descriptor{
+               ptr:                x,
+               BLength:            uint8(x.bLength),
+@@ -775,8 +805,11 @@ struct libusb_control_setup {
+ // A structure representing the standard USB device descriptor.
+ // This descriptor is documented in section 9.6.1 of the USB 3.0 
specification.
+ // All multiple-byte fields are represented in host-endian format.
++
++type Struct_Libusb_Device_Descriptor = C.struct_libusb_device_descriptor
++
+ type Device_Descriptor struct {
+-      ptr                *C.struct_libusb_device_descriptor
++      ptr                *Struct_Libusb_Device_Descriptor
+       BLength            uint8
+       BDescriptorType    uint8
+       BcdUSB             uint16
+@@ -793,7 +826,7 @@ type Device_Descriptor struct {
+       BNumConfigurations uint8
+ }
+ 
+-func (x *C.struct_libusb_device_descriptor) c2go() *Device_Descriptor {
++func (x *Struct_Libusb_Device_Descriptor) c2go() *Device_Descriptor {
+       return &Device_Descriptor{
+               ptr:                x,
+               BLength:            uint8(x.bLength),
+@@ -859,17 +892,20 @@ struct libusb_transfer {
+ // then submits it in order to request a transfer. After the transfer has
+ // completed, the library populates the transfer with the results and passes
+ // it back to the user.
++
++type Struct_Libusb_Transfer = C.struct_libusb_transfer
++
+ type Transfer struct {
+-      ptr *C.struct_libusb_transfer
++      ptr *Struct_Libusb_Transfer
+ }
+ 
+-func (x *C.struct_libusb_transfer) c2go() *Transfer {
++func (x *Struct_Libusb_Transfer) c2go() *Transfer {
+       return &Transfer{
+               ptr: x,
+       }
+ }
+ 
+-func (x *Transfer) go2c() *C.struct_libusb_transfer {
++func (x *Transfer) go2c() *Struct_Libusb_Transfer {
+       return x.ptr
+ }
+ 
+@@ -882,8 +918,11 @@ func (x *Transfer) String() string {
+ 
//-----------------------------------------------------------------------------
+ 
+ // Structure providing the version of the libusb runtime.
++
++type Struct_Libusb_Version = C.struct_libusb_version
++
+ type Version struct {
+-      ptr      *C.struct_libusb_version
++      ptr      *Struct_Libusb_Version
+       Major    uint16
+       Minor    uint16
+       Micro    uint16
+@@ -892,7 +931,7 @@ type Version struct {
+       Describe string
+ }
+ 
+-func (x *C.struct_libusb_version) c2go() *Version {
++func (x *Struct_Libusb_Version) c2go() *Version {
+       return &Version{
+               ptr:      x,
+               Major:    uint16(x.major),
+@@ -1146,7 +1185,7 @@ func Error_Name(code int) string {
+ }
+ 
+ func Get_Version() *Version {
+-      ver := 
(*C.struct_libusb_version)(unsafe.Pointer(C.libusb_get_version()))
++      ver := (*Struct_Libusb_Version)(unsafe.Pointer(C.libusb_get_version()))
+       return ver.c2go()
+ }
+ 
+@@ -1173,7 +1212,7 @@ func Strerror(errcode int) string {
+ // USB descriptors
+ 
+ func Get_Device_Descriptor(dev Device) (*Device_Descriptor, error) {
+-      var desc C.struct_libusb_device_descriptor
++      var desc Struct_Libusb_Device_Descriptor
+       rc := int(C.libusb_get_device_descriptor(dev, &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1182,7 +1221,7 @@ func Get_Device_Descriptor(dev Device) 
(*Device_Descriptor, error) {
+ }
+ 
+ func Get_Active_Config_Descriptor(dev Device) (*Config_Descriptor, error) {
+-      var desc *C.struct_libusb_config_descriptor
++      var desc *Struct_Libusb_Config_Descriptor
+       rc := int(C.libusb_get_active_config_descriptor(dev, &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1191,7 +1230,7 @@ func Get_Active_Config_Descriptor(dev Device) 
(*Config_Descriptor, error) {
+ }
+ 
+ func Get_Config_Descriptor(dev Device, config_index uint8) 
(*Config_Descriptor, error) {
+-      var desc *C.struct_libusb_config_descriptor
++      var desc *Struct_Libusb_Config_Descriptor
+       rc := int(C.libusb_get_config_descriptor(dev, 
(C.uint8_t)(config_index), &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1200,7 +1239,7 @@ func Get_Config_Descriptor(dev Device, config_index 
uint8) (*Config_Descriptor,
+ }
+ 
+ func Get_Config_Descriptor_By_Value(dev Device, bConfigurationValue uint8) 
(*Config_Descriptor, error) {
+-      var desc *C.struct_libusb_config_descriptor
++      var desc *Struct_Libusb_Config_Descriptor
+       rc := int(C.libusb_get_config_descriptor_by_value(dev, 
(C.uint8_t)(bConfigurationValue), &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1213,7 +1252,7 @@ func Free_Config_Descriptor(config *Config_Descriptor) {
+ }
+ 
+ func Get_SS_Endpoint_Companion_Descriptor(ctx Context, endpoint 
*Endpoint_Descriptor) (*SS_Endpoint_Companion_Descriptor, error) {
+-      var desc *C.struct_libusb_ss_endpoint_companion_descriptor
++      var desc *Struct_Libusb_SS_Endpoint_Companion_Descriptor
+       rc := int(C.libusb_get_ss_endpoint_companion_descriptor(ctx, 
endpoint.ptr, &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1226,7 +1265,7 @@ func Free_SS_Endpoint_Companion_Descriptor(ep_comp 
*SS_Endpoint_Companion_Descri
+ }
+ 
+ func Get_BOS_Descriptor(hdl Device_Handle) (*BOS_Descriptor, error) {
+-      var desc *C.struct_libusb_bos_descriptor
++      var desc *Struct_Libusb_BOS_Descriptor
+       rc := int(C.libusb_get_bos_descriptor(hdl, &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1239,7 +1278,7 @@ func Free_BOS_Descriptor(bos *BOS_Descriptor) {
+ }
+ 
+ func Get_USB_2_0_Extension_Descriptor(ctx Context, dev_cap 
*BOS_Dev_Capability_Descriptor) (*USB_2_0_Extension_Descriptor, error) {
+-      var desc *C.struct_libusb_usb_2_0_extension_descriptor
++      var desc *Struct_Libusb_USB_2_0_Extension_Descriptor
+       rc := int(C.libusb_get_usb_2_0_extension_descriptor(ctx, dev_cap.ptr, 
&desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1252,7 +1291,7 @@ func Free_USB_2_0_Extension_Descriptor(usb_2_0_extension 
*USB_2_0_Extension_Desc
+ }
+ 
+ func Get_SS_USB_Device_Capability_Descriptor(ctx Context, dev_cap 
*BOS_Dev_Capability_Descriptor) (*SS_USB_Device_Capability_Descriptor, error) {
+-      var desc *C.struct_libusb_ss_usb_device_capability_descriptor
++      var desc *Struct_Libusb_SS_USB_Device_Capability_Descriptor
+       rc := int(C.libusb_get_ss_usb_device_capability_descriptor(ctx, 
dev_cap.ptr, &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}
+@@ -1265,7 +1304,7 @@ func 
Free_SS_USB_Device_Capability_Descriptor(ss_usb_device_cap *SS_USB_Device_C
+ }
+ 
+ func Get_Container_ID_Descriptor(ctx Context, dev_cap 
*BOS_Dev_Capability_Descriptor) (*Container_ID_Descriptor, error) {
+-      var desc *C.struct_libusb_container_id_descriptor
++      var desc *Struct_Libusb_Container_ID_Descriptor
+       rc := int(C.libusb_get_container_id_descriptor(ctx, dev_cap.ptr, &desc))
+       if rc != 0 {
+               return nil, &libusb_error{rc}

diff --git a/net-p2p/trezord-go/trezord-go-2.0.33.ebuild 
b/net-p2p/trezord-go/trezord-go-2.0.33.ebuild
index 5861209bc..af32c7a5e 100644
--- a/net-p2p/trezord-go/trezord-go-2.0.33.ebuild
+++ b/net-p2p/trezord-go/trezord-go-2.0.33.ebuild
@@ -48,6 +48,8 @@ DEPEND="
        acct-group/plugdev
 "
 
+PATCHES=( "${FILESDIR}/${P}_libusb.patch" )
+
 src_compile() {
        default
        go build -v -work -x -o ${PN} || die

Reply via email to