1595f6308SAndrew Geissler# Recipe for building userspace part of USB/IP 2595f6308SAndrew Geissler# 3595f6308SAndrew Geissler# Started with work from chuck kamas - 2021-11-05 4595f6308SAndrew Geissler# https://lists.yoctoproject.org/g/yocto/topic/86249103?p=,,,20,0,0,0::recentpostdate/sticky,,,20,0,0,86249103 5595f6308SAndrew Geissler# Though have rewritten all the logic to be much simpler 6595f6308SAndrew Geissler# 7595f6308SAndrew Geissler# SPDX-License-Identifier: MIT 8595f6308SAndrew Geissler# 9595f6308SAndrew Geissler# Author(s) 10595f6308SAndrew Geissler# clst@ambu.com (Claus Stovgaard) 11595f6308SAndrew Geissler# 12595f6308SAndrew Geissler 13595f6308SAndrew GeisslerSUMMARY = "userspace usbip from Linux kernel tools" 14595f6308SAndrew GeisslerDESCRIPTION = " USB/IP protocol allows to pass USB device from server to \ 15595f6308SAndrew Geisslerclient over the network. Server is a machine which provides (shares) a \ 16595f6308SAndrew GeisslerUSB device. Client is a machine which uses USB device provided by server \ 17595f6308SAndrew Geisslerover the network. The USB device may be either physical device connected \ 18595f6308SAndrew Geisslerto a server or software entity created on a server using USB gadget subsystem." 19595f6308SAndrew Geissler 209aee5003SAndrew GeisslerLICENSE = "GPL-2.0-only" 21595f6308SAndrew GeisslerLIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" 22595f6308SAndrew GeisslerDEPENDS = "virtual/kernel udev" 23595f6308SAndrew GeisslerPROVIDES = "virtual/usbip-tools" 24595f6308SAndrew Geissler 25595f6308SAndrew Geisslerinherit kernelsrc autotools-brokensep 26595f6308SAndrew Geissler 27595f6308SAndrew Geisslerdo_configure[depends] += "virtual/kernel:do_shared_workdir" 28595f6308SAndrew Geissler 29595f6308SAndrew Geissler# We need to set S, for not being set to STAGING_KERNEL_DIR, and by that 30595f6308SAndrew Geissler# be wiped when we prune dest below. We just set it to usbip-tools-1.0 31595f6308SAndrew GeisslerS = "${WORKDIR}/${BP}" 32595f6308SAndrew Geissler 33595f6308SAndrew Geissler# Copy the source files from KERNEL/tools/usb/usbip to ${S} 34595f6308SAndrew Geisslerdo_configure[prefuncs] += "copy_usbip_source_from_kernel" 35595f6308SAndrew Geisslerpython copy_usbip_source_from_kernel() { 36595f6308SAndrew Geissler dir_in_kernel = "tools/usb/usbip" 37595f6308SAndrew Geissler src_dir = d.getVar("STAGING_KERNEL_DIR") 38595f6308SAndrew Geissler src = oe.path.join(src_dir, dir_in_kernel) 39595f6308SAndrew Geissler dest = d.getVar("S") 40595f6308SAndrew Geissler bb.utils.mkdirhier(dest) 41595f6308SAndrew Geissler bb.utils.prunedir(dest) 42595f6308SAndrew Geissler # copy src to dest folder 43595f6308SAndrew Geissler if not os.path.exists(src): 44595f6308SAndrew Geissler bb.fatal("Path does not exist: %s. Maybe dir_in_kernel does not match the kernel version." % src) 45595f6308SAndrew Geissler if os.path.isdir(src): 46595f6308SAndrew Geissler oe.path.copyhardlinktree(src, dest) 47595f6308SAndrew Geissler else: 48595f6308SAndrew Geissler src_path = os.path.dirname(src) 49595f6308SAndrew Geissler os.makedirs(os.path.join(dest,src_path),exist_ok=True) 50595f6308SAndrew Geissler bb.utils.copyfile(src, dest) 51595f6308SAndrew Geissler} 52595f6308SAndrew Geissler 53595f6308SAndrew Geissler# Use local scripts before relying on inherited autotools 54595f6308SAndrew Geisslerdo_configure () { 55595f6308SAndrew Geissler # We are in ${B} - equal to ${S}, so just run the scripts 56595f6308SAndrew Geissler ./cleanup.sh || bbnote "${PN} failed to cleanup.sh" 57595f6308SAndrew Geissler ./autogen.sh || bbnote "${PN} failed to autogen.sh" 58595f6308SAndrew Geissler oe_runconf 59595f6308SAndrew Geissler} 60595f6308SAndrew Geissler 61595f6308SAndrew Geissler# As usbip integrate with the kernel module, we set this package to be build specific for 62595f6308SAndrew Geissler# this machine, and not generally for the architecture 63595f6308SAndrew GeisslerPACKAGE_ARCH = "${MACHINE_ARCH}" 64595f6308SAndrew Geissler 65595f6308SAndrew Geissler# Even though the libusbip is set to version 0.0.1, set the package version to match kernel 66595f6308SAndrew Geissler# e.g. usbip-tools-5.14.21-r0.qemux86_64.rpm for qemu package using kernel 5.14.21 67595f6308SAndrew Geisslerpython do_package:prepend() { 68*864cc43bSPatrick Williams d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) 69595f6308SAndrew Geissler}