aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe
diff options
context:
space:
mode:
authorOtavio Salvador <otavio@ossystems.com.br>2018-11-30 20:43:36 -0200
committerKhem Raj <raj.khem@gmail.com>2018-11-30 17:12:36 -0800
commitf29268ee21106dfd9f578088745c43aa5e6ed3a3 (patch)
tree853ad416cd3f3056b59e94f55a0b361879d92e52 /meta-oe
parentebc7b9e20ac22f6f2ad373621917f53e8a9af81c (diff)
downloadmeta-openembedded-f29268ee21106dfd9f578088745c43aa5e6ed3a3.tar.gz
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 <otavio@ossystems.com.br> Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe')
-rw-r--r--meta-oe/recipes-support/libusbgx/libusbgx-config.bb12
-rw-r--r--meta-oe/recipes-support/libusbgx/libusbgx-config/usbgx.default2
-rw-r--r--meta-oe/recipes-support/libusbgx/libusbgx/gadget-start11
-rw-r--r--meta-oe/recipes-support/libusbgx/libusbgx/usbgx.initd143
-rw-r--r--meta-oe/recipes-support/libusbgx/libusbgx/usbgx.service9
-rw-r--r--meta-oe/recipes-support/libusbgx/libusbgx_git.bb40
6 files changed, 217 insertions, 0 deletions
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"