Fix libusb build fail for golang >= 1.24 #304
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix for issue #303
Problem:
Go version 1.24 doesn't allow defining a method for non-local structs including created structs with type aliases.
Solution:
The solution is to update the libusb's types from type aliases to type definitions. For example,
type Struct_Libusb_Endpoint_Descriptor = C.struct_libusb_endpoint_descriptor
is changed totype Struct_Libusb_Endpoint_Descriptor C.struct_libusb_endpoint_descriptor
. However, this change prevents the defined types and the C interop types to be used interchangeably without the explicit type casting. As a result, we also needs to explicitly cast the variable types when the go codes interact with c codes. With these changes, I can build the project using go 1.24. It can be built with older go version as well.I tested this with my Trezor one and it works great. I can use Trezor Suite in the browser and connect the wallet with Metamask.
Please let me know if you have any suggestions/concerns/comments.
Thank you so much!