Przeglądaj źródła

package/usbip: new package

usbip allows configuring a client and a server, to share a USB device
across the network.

As explained in the .mk, usbip has been part from the kernel since
linux-3.17. This would call for making it part of linux-tools, but this
is a bit unwieldy: usbip is an autotools package, so trying to do a
proper integration in linux-tools would basically need a complete
duplication of the autotools infra [0].

Instead, we decided to go with a full-blown package of its own, that
just uses the current-latest kernel version. This makes for a nice,
little autotools package as we like them. Nothing fancy.

To be noted, though: usbip has its own license and license file, so
that's what we use, and we do not reference those for the rest of the
kernel: its GPL-2.0-or-later, not GPL-2.0(-only).

Finally, we only enable the core usbip support in the kernel, and leave
it to the user whether they should enable server and/or client support.

[0] been there, done that; that was ugly and incomplete, what with the
    libtool patches, autoreconf, and what not.

Signed-off-by: Yann E. MORIN <yann.morin@orange.com>
Cc: Julien BOIBESSOT <julien.boibessot@armadeus.com>
Cc: Tal Shorer <tal.shorer@gmail.com>
Cc: Marcin Bis <marcin@bis.org.pl>
[Julien Olivain:
  - Config.in: add hwdata comment
  - Config.in: add a package homepage url
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
Yann E. MORIN 7 miesięcy temu
rodzic
commit
f05f2c1ad7
4 zmienionych plików z 63 dodań i 0 usunięć
  1. 1 0
      package/Config.in
  2. 18 0
      package/usbip/Config.in
  3. 5 0
      package/usbip/usbip.hash
  4. 39 0
      package/usbip/usbip.mk

+ 1 - 0
package/Config.in

@@ -655,6 +655,7 @@ endmenu
 	source "package/usb_modeswitch/Config.in"
 	source "package/usb_modeswitch_data/Config.in"
 	source "package/usbguard/Config.in"
+	source "package/usbip/Config.in"
 	source "package/usbmount/Config.in"
 	source "package/usbutils/Config.in"
 	source "package/w_scan/Config.in"

+ 18 - 0
package/usbip/Config.in

@@ -0,0 +1,18 @@
+config BR2_PACKAGE_USBIP
+	bool "usbip"
+	depends on BR2_PACKAGE_HAS_UDEV
+	help
+	  The USB-over-IP suite of tools.
+
+	  Note: you'll have to enable either (or both) of "VHCI hcd"
+	  (CONFIG_USBIP_VHCI_HCD) if you want to access a remote USB
+	  device, or "Host driver" (CONFIG_USBIP_HOST) if you want
+	  to share a USB device, in your kernel configuration. The
+	  Buildroot package "hwdata" with the "usb.ids" file is also
+	  useful (but not mandatory) to list and identify USB device
+	  by name.
+
+	  https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/tools/usb/usbip
+
+comment "usbip needs udev /dev management"
+	depends on !BR2_PACKAGE_HAS_UDEV

+ 5 - 0
package/usbip/usbip.hash

@@ -0,0 +1,5 @@
+# From https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc
+sha256  d450ab215de4e1f8bb85e0f4216760fa33fd024b4526b144f4ce0d9012b29c9e  linux-6.12.6.tar.xz
+
+# Locally computed
+sha256  cd5c66af63b509ccd75ec85fee41b6e5cbb77cd6bf9392a54900acc0f02be4a6  tools/usb/usbip/COPYING

+ 39 - 0
package/usbip/usbip.mk

@@ -0,0 +1,39 @@
+################################################################################
+#
+# usbip
+#
+################################################################################
+
+# Since linux 3.17, usbip is part of the linux source tree. Usually, we'd add
+# such a tool in the linux-tools package.
+#
+# However, usbip is autotools-based, so we'd have to duplicate the autotools
+# infra in linux-tools; the basic infra is easy to duplicate, but then come
+# the conditional libtool patches, and it's not trivial to do. And of course,
+# there would be the maintenance cost...
+#
+# usbip is not very tied to the kernel, in fact. It is pretty stable, API-wise,
+# so we can just use a recent kernel version.
+USBIP_VERSION = 6.12.6
+USBIP_SOURCE = linux-$(USBIP_VERSION).tar.xz
+USBIP_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v6.x
+USBIP_DL_SUBDIR = linux
+
+# usbip's licensing diverges from that of the rest of the kernel
+USBIP_LICENSE = GPL-2.0-or-later
+USBIP_LICENSE_FILES = tools/usb/usbip/COPYING
+
+USBIP_DEPENDENCIES = udev
+
+USBIP_SUBDIR = tools/usb/usbip
+USBIP_INSTALL_STAGING = YES
+
+USBIP_AUTORECONF = YES
+USBIP_CONFIGURE_OPTS = --without-tcp-wrappers
+
+define USBIP_LINUX_CONFIG_FIXUPS
+	$(call KCONFIG_ENABLE_OPT,CONFIG_USB_SUPPORT)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_USBIP_CORE)
+endef
+
+$(eval $(autotools-package))