[oe-commits] Li xin : openct: add new recipe

git at git.openembedded.org git at git.openembedded.org
Tue Dec 9 18:48:37 UTC 2014


Module: meta-openembedded.git
Branch: master-next
Commit: a406eca729e09a8e1424deddf292d26ea4a74012
URL:    http://git.openembedded.org/?p=meta-openembedded.git&a=commit;h=a406eca729e09a8e1424deddf292d26ea4a74012

Author: Li xin <lixin.fnst at cn.fujitsu.com>
Date:   Tue Dec  9 09:36:12 2014 +0800

openct: add new recipe

OpenCT implements drivers for several smart card readers.
It comes as driver in ifdhandler format for PC/SC-Lite,
as CT-API driver, or as a small and lean middleware,
so applications can use it with minimal overhead.
OpenCT also has a primitive mechanism to export smart card
readers to remote machines via TCP/IP.

Signed-off-by: Li Xin <lixin.fnst at cn.fujitsu.com>
Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>

---

 .../openct/etc-openct.udev.in-disablePROGRAM.patch | 31 ++++++++
 .../openct/etc-openct_usb.in-modify-UDEVINFO.patch | 35 +++++++++
 meta-oe/recipes-support/openct/openct/openct.init  | 89 ++++++++++++++++++++++
 .../recipes-support/openct/openct/openct.service   | 13 ++++
 .../recipes-support/openct/openct/openct.sysconfig |  5 ++
 meta-oe/recipes-support/openct/openct_0.6.20.bb    | 83 ++++++++++++++++++++
 6 files changed, 256 insertions(+)

diff --git a/meta-oe/recipes-support/openct/openct/etc-openct.udev.in-disablePROGRAM.patch b/meta-oe/recipes-support/openct/openct/etc-openct.udev.in-disablePROGRAM.patch
new file mode 100644
index 0000000..745f923
--- /dev/null
+++ b/meta-oe/recipes-support/openct/openct/etc-openct.udev.in-disablePROGRAM.patch
@@ -0,0 +1,31 @@
+From e0d3e0bb1e38ff851696a7d8826e651d364ad8ce Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst at cn.fujitsu.com>
+Date: Fri, 5 Dec 2014 02:00:57 +0900
+Subject: [PATCH 1/2] etc/openct.udev.in: disablePROGRAM
+
+Bug fix: https://bugzilla.redhat.com/show_bug.cgi?id=287871
+
+Upstream-status: Pending
+
+Signed-off-by: Li Xin <lixin.fnst at cn.fujitsu.com>
+---
+ etc/openct.udev.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/etc/openct.udev.in b/etc/openct.udev.in
+index d11d0e1..48083c9 100644
+--- a/etc/openct.udev.in
++++ b/etc/openct.udev.in
+@@ -22,7 +22,8 @@ ACTION!="add", GOTO="openct_usb_rules_end"
+ # 2010-01-06 removed, as latest udev doesn't know WAIT_FOR_ATTR any more.
+ 
+ # sleep for 100ms - the wait_for_sysfs might not be enough
+-PROGRAM="/bin/sleep 0.1"
++# Disabled in this package - see https://bugzilla.redhat.com/287871
++# PROGRAM="/bin/sleep 0.1"
+ 
+ # ccid
+ ATTR{bInterfaceClass}=="0b", ATTR{bInterfaceSubClass}=="00", ATTR{bInterfaceProtocol}=="00", ATTRS{idVendor}=="?*"  RUN+="@udevdir@/openct_usb /dev/$parent"
+-- 
+1.8.4.2
+
diff --git a/meta-oe/recipes-support/openct/openct/etc-openct_usb.in-modify-UDEVINFO.patch b/meta-oe/recipes-support/openct/openct/etc-openct_usb.in-modify-UDEVINFO.patch
new file mode 100644
index 0000000..d5e3fe5
--- /dev/null
+++ b/meta-oe/recipes-support/openct/openct/etc-openct_usb.in-modify-UDEVINFO.patch
@@ -0,0 +1,35 @@
+From d93985a137b553b2723235d03bda341dab14064f Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst at cn.fujitsu.com>
+Date: Fri, 5 Dec 2014 02:04:03 +0900
+Subject: [PATCH 2/2] etc/openct_usb.in: modify UDEVINFO
+
+this patch is from Fedora
+
+Upstream-status: Pending
+
+Signed-off-by: Li Xin <lixin.fnst at cn.fujitsu.com>
+---
+ etc/openct_usb.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/etc/openct_usb.in b/etc/openct_usb.in
+index 32f91aa..917467d 100644
+--- a/etc/openct_usb.in
++++ b/etc/openct_usb.in
+@@ -15,10 +15,10 @@ if [ -z "$DEVNAME" ]; then
+ 	# Guess udev info interface.
+ 	# Newer udev uses udevadm
+ 	#
+-	if which udevinfo > /dev/null 2>&1; then
+-		UDEVINFO="udevinfo"
+-	else
++	if which udevadm > /dev/null 2>&1; then
+ 		UDEVINFO="udevadm info"
++	else
++		UDEVINFO="udevinfo"
+ 	fi
+ 	DEVNAME=/dev/$($UDEVINFO --query=name --path=$(dirname $DEVPATH))
+ fi
+-- 
+1.8.4.2
+
diff --git a/meta-oe/recipes-support/openct/openct/openct.init b/meta-oe/recipes-support/openct/openct/openct.init
new file mode 100644
index 0000000..c689609
--- /dev/null
+++ b/meta-oe/recipes-support/openct/openct/openct.init
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+# openct       This shell script takes care of starting and stopping OpenCT.
+#
+# chkconfig:   2345 24 89
+# description: OpenCT is a middleware framework for smart card terminals.
+#
+# processname: ifdhandler
+# config:      /etc/openct.conf
+
+### BEGIN INIT INFO
+# Provides: openct
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Should-Start: $syslog $network
+# Should-Stop: $syslog $network
+# Short-Description: Middleware framework for smart card terminals
+# Description: This starts/stops the OpenCT middleware framework support
+#              for smart card terminals.
+### END INIT INFO
+
+. /etc/init.d/functions
+
+exec="/usr/sbin/openct-control"
+prog=openct
+proc=ifdhandler
+
+OPENCT_OPTIONS=
+[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+
+lockfile=/var/lock/subsys/$prog
+
+start() {
+    retval=0
+    if ! status $proc >/dev/null 2>&1 ; then
+        action $"Initializing OpenCT smart card terminals: " \
+            $exec $OPENCT_OPTIONS init
+        retval=$?
+        [ $retval -eq 0 ] && touch $lockfile
+    fi
+    return $retval
+}
+
+stop() {
+    if status $proc >/dev/null 2>&1 ; then
+        action $"Stopping OpenCT smart card terminals: " \
+            $exec $OPENCT_OPTIONS shutdown
+    fi
+    retval=$?
+    if [ $retval -eq 0 ] ; then
+        rm -f /var/run/openct/status
+        rm -f $lockfile
+    fi
+    return $retval
+}
+
+restart() {
+    stop
+    start
+}
+
+oct_status() {
+    status $proc
+    retval=$?
+    if [ -e /var/run/openct/status ] ; then
+        $exec $OPENCT_OPTIONS status
+        [ -e /var/run/openct/status ] && \
+            echo $"Waiting for reader attach/detach events..."
+    fi
+    return $retval
+}
+
+case "$1" in
+    start|stop|restart)
+        $1
+        ;;
+    reload|force-reload)
+        restart
+        ;;
+    status)
+        oct_status
+        ;;
+    try-restart|condrestart)
+  	[ ! -f $lockfile ] || restart
+	;;
+    *)
+        echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
+        exit 2
+esac
diff --git a/meta-oe/recipes-support/openct/openct/openct.service b/meta-oe/recipes-support/openct/openct/openct.service
new file mode 100644
index 0000000..c9ec497
--- /dev/null
+++ b/meta-oe/recipes-support/openct/openct/openct.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Openct Middleware framework for smart card terminals
+After=syslog.target network.target
+
+[Service]
+EnvironmentFile=-/etc/sysconfig/openct
+ExecStart=/usr/sbin/openct-control $OPENCT_OPTIONS init 
+ExecStop=/usr/sbin/openct-control $OPENCT_OPTIONS shutdown
+RemainAfterExit=yes
+KillMode=none
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-oe/recipes-support/openct/openct/openct.sysconfig b/meta-oe/recipes-support/openct/openct/openct.sysconfig
new file mode 100644
index 0000000..ffc2707
--- /dev/null
+++ b/meta-oe/recipes-support/openct/openct/openct.sysconfig
@@ -0,0 +1,5 @@
+#                                                                    -*- sh -*-
+# Extra options to pass to openct-control.
+# Consult "/usr/sbin/openct-control -h" for available options.
+#
+OPENCT_OPTIONS=""
diff --git a/meta-oe/recipes-support/openct/openct_0.6.20.bb b/meta-oe/recipes-support/openct/openct_0.6.20.bb
new file mode 100644
index 0000000..29c2419
--- /dev/null
+++ b/meta-oe/recipes-support/openct/openct_0.6.20.bb
@@ -0,0 +1,83 @@
+Summanry = "Middleware framework for smart card terminals"
+DESCRIPTION = "OpenCT implements drivers for several smart card readers. \
+It comes as driver in ifdhandler format for PC/SC-Lite, \
+as CT-API driver, or as a small and lean middleware, \
+so applications can use it with minimal overhead. \
+OpenCT also has a primitive mechanism to export smart card \
+readers to remote machines via TCP/IP."
+
+DEPENDS += "libtool pcsc-lite libusb-compat"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/o/${PN}/${PN}_${PV}.orig.tar.gz \
+    file://etc-openct.udev.in-disablePROGRAM.patch \
+    file://etc-openct_usb.in-modify-UDEVINFO.patch \
+    file://openct.init \
+    file://openct.sysconfig \
+    file://openct.service"
+
+SRC_URI[md5sum] = "a1da3358ab798f1cb9232f1dbababc21"
+SRC_URI[sha256sum] = "6cd3e2933d29eb1f875c838ee58b8071fd61f0ec8ed5922a86c01c805d181a68"
+
+LICENSE = "LGPLv2+"
+LIC_FILES_CHKSUM = "file://LGPL-2.1;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+inherit ${@base_contains('VIRTUAL-RUNTIME_init_manager','systemd','systemd','', d)}
+SYSTEMD_SERVICE_${PN} += "openct.service "
+SYSTEMD_AUTO_ENABLE = "enable"
+
+EXTRA_OECONF=" \
+    --disable-static \
+    --enable-usb \
+    --enable-pcsc \
+    --enable-doc \
+    --enable-api-doc \
+    --with-udev=/lib/udev \
+    --with-bundle=${libdir}/pcsc/drivers \
+"
+
+inherit autotools pkgconfig
+
+FILES_${PN} += " \
+    ${libdir}/ctapi \
+    /lib/udev \
+    ${libdir}/openct-ifd.so \
+    ${libdir}/pcsc \
+    /run/openct/status \
+"
+
+FILES_${PN}-dbg += " \
+    ${libdir}/ctapi/.debug \
+    ${libdir}/pcsc/drivers/openct-ifd.bundle/Contents/Linux/.debug \
+"
+
+INSANE_SKIP_${PN} += "dev-deps"
+
+do_install () {
+    rm -rf ${D}
+    install -d ${D}/etc
+    install -dm 755 ${D}/lib/udev
+    # fix up hardcoded paths
+    sed -i -e 's,/etc/,${sysconfdir}/,' -e 's,/usr/sbin/,${sbindir}/,' \
+        ${WORKDIR}/openct.service ${WORKDIR}/openct.init
+    oe_runmake install DESTDIR=${D}
+    install -dm 755 ${D}${libdir}/ctapi
+    mv ${D}${libdir}/{libopenctapi.so,ctapi}
+    install -Dpm 644 etc/openct.udev ${D}/etc/udev/rules.d/60-openct.rules
+    install -pm 644 etc/openct.conf ${D}/etc/openct.conf
+    install -Dpm 755 ${WORKDIR}/openct.init ${D}/etc/init.d/openct
+    install -Dpm 644 ${WORKDIR}/openct.sysconfig ${D}/etc/sysconfig/openct
+    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/openct.service ${D}/${systemd_unitdir}/system
+    fi
+    so=$(find ${D} -name \*.so | sed "s|^${D}||")
+    sed -i -e 's|\\(LIBPATH\\s*\\).*|\\1$so|' etc/reader.conf
+    install -Dpm 644 etc/reader.conf ${D}/etc/reader.conf.d/openct.conf
+    install -dm 755 ${D}${localstatedir}/run/openct
+    touch ${D}${localstatedir}/run/openct/status
+    chmod 644 ${D}${localstatedir}/run/openct/status
+}
+
+pkg_postinst_${PN} () {
+    ln -sf ctapi/libopenctapi.so ${libdir}/libopenctapi.so
+}



More information about the Openembedded-commits mailing list