summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Vroon <chainsaw@gentoo.org>2009-02-18 15:37:39 +0000
committerTony Vroon <chainsaw@gentoo.org>2009-02-18 15:37:39 +0000
commit10e44e6a6bc408ef35c7651233ab03f580fac83e (patch)
tree1bb9cbe0aca66c5fd6c6ac059b2d6e85db51f790 /sys-auth/thinkfinger
parentMasking sci-calculators/tilp and dependencies for removal in 30 days (diff)
downloadgentoo-2-10e44e6a6bc408ef35c7651233ab03f580fac83e.tar.gz
gentoo-2-10e44e6a6bc408ef35c7651233ab03f580fac83e.tar.bz2
gentoo-2-10e44e6a6bc408ef35c7651233ab03f580fac83e.zip
Due to lack of hardware I have been unable to attend to this package. I will now however be proxy maintaining for Víctor Enríquez Miguel <victor.quicksilver@gmail.com> , metadata updated to reflect this. Add a fingerprint group so non-root users can use the software, as per the suggestions by Henning Schild <henning@wh9.tu-dresden.de> in bug #228919. Also add explicit chmod/chown statements to the installed script. Do not apply USB configuration 1 to the device, this was never necessary and broke with kernel 2.6.28 ("hello" patch). Added udev rules to make device handling automatic.
(Portage version: 2.1.6.7/cvs/Linux x86_64)
Diffstat (limited to 'sys-auth/thinkfinger')
-rw-r--r--sys-auth/thinkfinger/ChangeLog20
-rw-r--r--sys-auth/thinkfinger/files/0.3-carriagereturn.patch10
-rw-r--r--sys-auth/thinkfinger/files/0.3-direct_set_config_usb_hello.patch31
-rw-r--r--sys-auth/thinkfinger/files/0.3-tftoolgroup.patch64
-rw-r--r--sys-auth/thinkfinger/files/60-thinkfinger.rules17
-rw-r--r--sys-auth/thinkfinger/metadata.xml5
-rw-r--r--sys-auth/thinkfinger/thinkfinger-0.3-r1.ebuild77
7 files changed, 222 insertions, 2 deletions
diff --git a/sys-auth/thinkfinger/ChangeLog b/sys-auth/thinkfinger/ChangeLog
index ad2f90407d24..818198ca8c8e 100644
--- a/sys-auth/thinkfinger/ChangeLog
+++ b/sys-auth/thinkfinger/ChangeLog
@@ -1,6 +1,22 @@
# ChangeLog for sys-auth/thinkfinger
-# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-auth/thinkfinger/ChangeLog,v 1.6 2007/09/08 18:21:42 vapier Exp $
+# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/thinkfinger/ChangeLog,v 1.7 2009/02/18 15:37:38 chainsaw Exp $
+
+*thinkfinger-0.3-r1 (18 Feb 2009)
+
+ 18 Feb 2009; <chainsaw@gentoo.org> +files/0.3-carriagereturn.patch,
+ +files/0.3-direct_set_config_usb_hello.patch,
+ +files/0.3-tftoolgroup.patch, +files/60-thinkfinger.rules, metadata.xml,
+ +thinkfinger-0.3-r1.ebuild:
+ Due to lack of hardware I have been unable to attend to this package. I
+ will now however be proxy maintaining for Víctor Enríquez Miguel
+ <victor.quicksilver@gmail.com> , metadata updated to reflect this. Add a
+ fingerprint group so non-root users can use the software, as per the
+ suggestions by Henning Schild <henning@wh9.tu-dresden.de> in bug #228919.
+ Also add explicit chmod/chown statements to the installed script. Do not
+ apply USB configuration 1 to the device, this was never necessary and
+ broke with kernel 2.6.28 ("hello" patch). Added udev rules to make device
+ handling automatic.
08 Sep 2007; Mike Frysinger <vapier@gentoo.org> thinkfinger-0.3.ebuild:
Make kernel check a warning and use emake in src_install.
diff --git a/sys-auth/thinkfinger/files/0.3-carriagereturn.patch b/sys-auth/thinkfinger/files/0.3-carriagereturn.patch
new file mode 100644
index 000000000000..731f1531947b
--- /dev/null
+++ b/sys-auth/thinkfinger/files/0.3-carriagereturn.patch
@@ -0,0 +1,10 @@
+--- pam/pam_thinkfinger-uinput.c 2007-02-27 17:52:50.000000000 +0100
++++ pam/pam_thinkfinger-uinput.c 2009-02-17 13:56:02.013033249 +0100
+@@ -95,6 +95,7 @@
+ /* our single key keyboard */
+ i = ioctl (*fd, UI_SET_EVBIT, EV_KEY) < 0;
+ i |= ioctl (*fd, UI_SET_KEYBIT, KEY_ENTER) < 0;
++ i |= ioctl (*fd, UI_SET_KEYBIT, KEY_A) < 0;
+
+ if (write (*fd, &device, device_size) != device_size) {
+ retval = errno;
diff --git a/sys-auth/thinkfinger/files/0.3-direct_set_config_usb_hello.patch b/sys-auth/thinkfinger/files/0.3-direct_set_config_usb_hello.patch
new file mode 100644
index 000000000000..06723ad1306c
--- /dev/null
+++ b/sys-auth/thinkfinger/files/0.3-direct_set_config_usb_hello.patch
@@ -0,0 +1,31 @@
+Index: libthinkfinger/libthinkfinger.c
+===================================================================
+--- libthinkfinger/libthinkfinger.c (revision 118)
++++ libthinkfinger/libthinkfinger.c (working copy)
+@@ -265,18 +265,7 @@
+ int retval = -1;
+ char dummy[] = "\x10";
+
+- /* SET_CONFIGURATION 1 -- should not be relevant */
+ retval = usb_control_msg (handle, // usb_dev_handle *dev
+- 0x00000000, // int requesttype
+- 0x00000009, // int request
+- 0x001, // int value
+- 0x000, // int index
+- dummy, // char *bytes
+- 0x00000000, // int size
+- USB_TIMEOUT); // int timeout
+- if (retval < 0)
+- goto out;
+- retval = usb_control_msg (handle, // usb_dev_handle *dev
+ 0x00000040, // int requesttype
+ 0x0000000c, // int request
+ 0x100, // int value
+@@ -285,7 +274,6 @@
+ 0x00000001, // int size
+ USB_TIMEOUT); // int timeout
+
+-out:
+ return retval;
+ }
+
diff --git a/sys-auth/thinkfinger/files/0.3-tftoolgroup.patch b/sys-auth/thinkfinger/files/0.3-tftoolgroup.patch
new file mode 100644
index 000000000000..169b7cefe286
--- /dev/null
+++ b/sys-auth/thinkfinger/files/0.3-tftoolgroup.patch
@@ -0,0 +1,64 @@
+--- tf-tool/tf-tool.c 2007-03-30 11:00:45.000000000 +0200
++++ tf-tool/tf-tool.c 2009-02-18 14:57:24.316197097 +0100
+@@ -26,6 +26,9 @@
+ #include <errno.h>
+ #include <libgen.h>
+ #include <pwd.h>
++#include <grp.h>
++#include <sys/stat.h>
++#include <unistd.h>
+
+ #include <config.h>
+ #include <libthinkfinger.h>
+@@ -54,6 +57,21 @@
+ int swipe_failed;
+ } s_tfdata;
+
++int changegroup(const char *groupname,const char *filename)
++{
++ struct group *g;
++ g = getgrnam(groupname);
++ if(g == NULL) {
++ perror("getgrnam:");
++ return 1;
++ }
++ if( chown(filename,-1,g->gr_gid) == -1) {
++ perror("chown: ");
++ return 1;
++ }
++ return 0;
++}
++
+ static void print_status (int swipe_success, int swiped_required, int swipe_failed)
+ {
+ printf ("\rPlease swipe your finger (successful swipes %i/%i, failed swipes: %i)...",
+@@ -64,6 +82,8 @@
+ static void callback (libthinkfinger_state state, void *data)
+ {
+ char *str;
++ int err;
++ gid_t gfp;
+ s_tfdata *tfdata = (s_tfdata *) data;
+
+ if (tfdata->verbose == true) {
+@@ -108,8 +128,18 @@
+ case TF_STATE_ENROLL_SUCCESS:
+ print_status (tfdata->swipe_success, 3, tfdata->swipe_failed);
+ printf (" done.\nStoring data (%s)...", tfdata->bir);
+- fflush (stdout);
+- break;
++ /*small hack to change group and chmod 640 on created bir file*/
++ err = chmod(tfdata->bir, S_IRUSR | S_IWUSR | S_IRGRP);
++ if(err == -1) {
++ printf("Couldn't change perms on file %s\n",tfdata->bir);
++ perror("chmod:");
++ fflush(stdout);
++ break;
++ }
++ changegroup("fingerprint",tfdata->bir);
++ fflush(stdout);
++ break;
++ /*done*/
+ case TF_STATE_SWIPE_FAILED:
+ print_status (tfdata->swipe_success, 3, ++tfdata->swipe_failed);
+ break;
diff --git a/sys-auth/thinkfinger/files/60-thinkfinger.rules b/sys-auth/thinkfinger/files/60-thinkfinger.rules
new file mode 100644
index 000000000000..21e1ac9461e3
--- /dev/null
+++ b/sys-auth/thinkfinger/files/60-thinkfinger.rules
@@ -0,0 +1,17 @@
+#
+# udev rules file for the thinkfinger fingerprint scanner
+#
+# gives access to the fingerprint reader to those in the "fingerprint" group
+#
+# Taken from:
+# http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger
+# which was taken and modified from:
+# http://article.gmane.org/gmane.linux.drivers.thinkfinger/329
+#
+
+# SGS Thomson Microelectronics Fingerprint Reader
+SYSFS{idVendor}=="0483", SYSFS{idProduct}=="2016", SYMLINK+="input/thinkfinger-%k", MODE="0660", GROUP="fingerprint"
+
+# the also-needed uinput device
+KERNEL=="uinput", MODE="0660", GROUP="fingerprint"
+
diff --git a/sys-auth/thinkfinger/metadata.xml b/sys-auth/thinkfinger/metadata.xml
index c20e1351f56e..a3b217981493 100644
--- a/sys-auth/thinkfinger/metadata.xml
+++ b/sys-auth/thinkfinger/metadata.xml
@@ -3,8 +3,13 @@
<pkgmetadata>
<herd>no-herd</herd>
<maintainer>
+ <email>victor.quicksilver@gmail.com</email>
+ <name>Víctor Enríquez Miguel</name>
+ </maintainer>
+ <maintainer>
<email>chainsaw@gentoo.org</email>
<name>Tony Vroon</name>
+ <description>Proxy Maintainer</description>
</maintainer>
<longdescription></longdescription>
</pkgmetadata>
diff --git a/sys-auth/thinkfinger/thinkfinger-0.3-r1.ebuild b/sys-auth/thinkfinger/thinkfinger-0.3-r1.ebuild
new file mode 100644
index 000000000000..80b5d14066d3
--- /dev/null
+++ b/sys-auth/thinkfinger/thinkfinger-0.3-r1.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/thinkfinger/thinkfinger-0.3-r1.ebuild,v 1.1 2009/02/18 15:37:38 chainsaw Exp $
+
+inherit pam linux-info eutils
+
+DESCRIPTION="Support for the UPEK/SGS Thomson Microelectronics fingerprint reader, often seen in Thinkpads"
+HOMEPAGE="http://thinkfinger.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="debug pam"
+
+RDEPEND=">=dev-libs/libusb-0.1.12
+ pam? ( virtual/pam )"
+DEPEND="${RDEPEND}
+ sys-devel/libtool
+ >=dev-util/pkgconfig-0.9.0"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}/${PV}-direct_set_config_usb_hello.patch" || die
+ epatch "${FILESDIR}/${PV}-carriagereturn.patch" || die
+ epatch "${FILESDIR}/${PV}-tftoolgroup.patch" || die
+}
+
+pkg_preinst() {
+ enewgroup fingerprint
+}
+
+pkg_setup() {
+ if use pam ; then
+ CONFIG_CHECK="~INPUT_UINPUT"
+ ERROR_CFG="Your kernel needs uinput for the pam module to work"
+ check_extra_config
+ fi
+}
+
+src_compile() {
+ econf \
+ $(use_enable pam) \
+ $(use_enable debug usb-debug) \
+ "--with-securedir=$(getpam_mod_dir)" \
+ || die
+ emake || die
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+ keepdir /etc/pam_thinkfinger
+ dodoc AUTHORS ChangeLog NEWS README
+ insinto /etc/udev/rules.d/
+ doins "${FILESDIR}/60-thinkfinger.rules"
+}
+
+pkg_postinst() {
+ fowners root:fingerprint /etc/pam_thinkfinger
+ fperms 710 /etc/pam_thinkfinger
+ elog "Use tf-tool --acquire to take a finger print"
+ elog "tf-tool will write the finger print file to /tmp/test.bir"
+ elog ""
+ if use pam ; then
+ elog "To add a fingerprint to PAM, use tf-tool --add-user USERNAME"
+ elog ""
+ elog "Add the following to /etc/pam.d/system-auth after pam_env.so"
+ elog "auth sufficient pam_thinkfinger.so"
+ elog ""
+ elog "Your system-auth should look similar to:"
+ elog "auth required pam_env.so"
+ elog "auth sufficient pam_thinkfinger.so"
+ elog "auth sufficient pam_unix.so try_first_pass likeauth nullok"
+ elog ""
+ fi
+}