From f29268ee21106dfd9f578088745c43aa5e6ed3a3 Mon Sep 17 00:00:00 2001 From: Otavio Salvador Date: Fri, 30 Nov 2018 20:43:36 -0200 Subject: libusbgx: Add recipe The libusbgx allow easier use and setup of USB gadgets. To easy integration on different systems a libusbgx-config package is provided so it can be used to start and enable respective USB gadget schema. Signed-off-by: Otavio Salvador Signed-off-by: Khem Raj --- .../recipes-support/libusbgx/libusbgx-config.bb | 12 ++ .../libusbgx/libusbgx-config/usbgx.default | 2 + .../recipes-support/libusbgx/libusbgx/gadget-start | 11 ++ .../recipes-support/libusbgx/libusbgx/usbgx.initd | 143 +++++++++++++++++++++ .../libusbgx/libusbgx/usbgx.service | 9 ++ meta-oe/recipes-support/libusbgx/libusbgx_git.bb | 40 ++++++ 6 files changed, 217 insertions(+) create mode 100644 meta-oe/recipes-support/libusbgx/libusbgx-config.bb create mode 100644 meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default create mode 100644 meta-oe/recipes-support/libusbgx/libusbgx/gadget-start create mode 100644 meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd create mode 100644 meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service create mode 100644 meta-oe/recipes-support/libusbgx/libusbgx_git.bb (limited to 'meta-oe') diff --git a/meta-oe/recipes-support/libusbgx/libusbgx-config.bb b/meta-oe/recipes-support/libusbgx/libusbgx-config.bb new file mode 100644 index 0000000000..b269e33c44 --- /dev/null +++ b/meta-oe/recipes-support/libusbgx/libusbgx-config.bb @@ -0,0 +1,12 @@ +SUMMARY = "USB Gadget Configuration Files" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://usbgx.default" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +do_install() { + install -Dm 0644 ${WORKDIR}/usbgx.default ${D}${sysconfdir}/default/usbgx +} diff --git a/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default b/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default new file mode 100644 index 0000000000..f690dfe2ab --- /dev/null +++ b/meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default @@ -0,0 +1,2 @@ +IMPORT_SCHEMAS="" +ENABLED_SCHEMAS="$IMPORT_SCHEMAS" diff --git a/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start b/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start new file mode 100644 index 0000000000..1a106b7851 --- /dev/null +++ b/meta-oe/recipes-support/libusbgx/libusbgx/gadget-start @@ -0,0 +1,11 @@ +#!/bin/sh + +[ -r /etc/default/usbgx ] && . /etc/default/usbgx + +for i in $IMPORT_SCHEMAS; do + /usr/bin/gadget-import "$i" /etc/usbgx/"$i".schema +done + +for i in $ENABLED_SCHEMAS; do + ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/"$i"/UDC +done diff --git a/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd b/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd new file mode 100644 index 0000000000..d1938078f0 --- /dev/null +++ b/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd @@ -0,0 +1,143 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: usbg +# Required-Start: $local_fs +# Should-Start: +# Required-Stop: $local_fs +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Example initscript +# Description: This file should be used to construct scripts to be +# placed in /etc/init.d +### END INIT INFO + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin + +DESC="Load USB gadget schemas" +NAME="usbgx" +DAEMON=/usr/bin/gadget-start +DAEMON_ARGS="" +PIDFILE=/var/run/$NAME.pid + +. /etc/init.d/functions || exit 1 + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# +# Function that starts the daemon/service +# +do_start() { + local status pid + + status=0 + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "$DESC already running ($pid)." + exit 1 + ;; + *) + echo "Starting $DESC ..." + exec $DAEMON $DAEMON_ARGS >/dev/null 2>&1 || status=$? + echo "ERROR: Failed to start $DESC." + exit $status + ;; + esac +} + +# +# Function that stops the daemon/service +# +do_stop() { + local pid status + + status=0 + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + # Exit when fail to stop, the kill would complain when fail + kill -s 15 $pid >/dev/null && rm -f $PIDFILE && \ + echo "Stopped $DESC ($pid)." || exit $? + ;; + *) + echo "$DESC is not running; none killed." >&2 + ;; + esac + + return $status +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + local pid status + + status=0 + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "Reloading $DESC ..." + kill -s 1 $pid || exit $? + ;; + *) + echo "$DESC is not running; none reloaded." >&2 + ;; + esac + exit $status +} + + +# +# Function that shows the daemon/service status +# +status_of_proc () { + local pid status + + status=0 + # pidof output null when no program is running, so no "2>/dev/null". + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "$DESC is running ($pid)." + exit 0 + ;; + *) + echo "$DESC is not running." >&2 + exit $status + ;; + esac +} + +case "$1" in + start) + do_start + ;; + stop) + do_stop || exit $? + ;; + status) + status_of_proc + ;; + restart) + # Always start the service regardless the status of do_stop + do_stop + do_start + ;; + try-restart|force-reload) + do_stop && do_start + ;; + *) + echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" >&2 + exit 3 + ;; +esac diff --git a/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service b/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service new file mode 100644 index 0000000000..74541d3c2d --- /dev/null +++ b/meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service @@ -0,0 +1,9 @@ +[Unit] +Description=Load USB gadget schemas + +[Service] +Type=oneshot +ExecStart=/usr/bin/gadget-start + +[Install] +WantedBy=multi-user.target diff --git a/meta-oe/recipes-support/libusbgx/libusbgx_git.bb b/meta-oe/recipes-support/libusbgx/libusbgx_git.bb new file mode 100644 index 0000000000..d73ca61060 --- /dev/null +++ b/meta-oe/recipes-support/libusbgx/libusbgx_git.bb @@ -0,0 +1,40 @@ +SUMMARY = "USB Gadget neXt Configfs Library" +LICENSE = "GPLv2 & LGPLv2.1" +LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c" + +DEPENDS = "libconfig" + +inherit autotools pkgconfig systemd update-rc.d + +PV = "0.2.0+git${SRCPV}" +SRCREV = "45c14ef4d5d7ced0fbf984208de44ced6d5ed898" +SRCBRANCH = "master" +SRC_URI = " \ + git://github.com/libusbgx/libusbgx.git;branch=${SRCBRANCH} \ + file://gadget-start \ + file://usbgx.initd \ + file://usbgx.service \ +" + +S = "${WORKDIR}/git" + +SYSTEMD_PACKAGES = "${PN}" +SYSTEMD_SERVICE_${PN} = "usbgx.service" + +INITSCRIPT_NAME = "usbgx" +INITSCRIPT_PARAMS = "defaults" + +EXTRA_OECONF = "--includedir=${includedir}/usbgx" + +do_install_append() { + install -Dm 0755 ${WORKDIR}/gadget-start ${D}/${bindir}/gadget-start + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + install -Dm 0644 ${WORKDIR}/usbgx.service ${D}${systemd_system_unitdir}/usbgx.service + fi + if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then + install -Dm 0755 ${WORKDIR}/usbgx.initd ${D}${sysconfdir}/init.d/usbgx + fi +} + +RDEPENDS_${PN} += "libusbgx-config" -- cgit 1.2.3-korg