File openct.spec of Package openct
#
# spec file for package openct
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: openct
Version: 0.6.20
Release: 1
BuildRequires: db-devel doxygen krb5-devel libusb-devel openldap2-devel pcsc-lite-devel pkg-config udev
PreReq: %insserv_prereq %fillup_prereq
Group: Productivity/Security
License: BSD3c(or similar) ; LGPLv2.1+
Url: http://www.opensc-project.org/openct/
Summary: Tools for Smart Card Readers
Source: %{name}-%{version}.tar.bz2
Source2: README.SUSE
Source3: baselibs.conf
Source4: %{name}-rpmlintrc
Patch1: %{name}-init.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# These UID and GID must be equal to values in the pcsc-lite.spec:
%define USER scard
%define GROUP scard
# openSUSE package pcsc-lite 1.6.6 is the first one which creates the scard UID and GID:
Requires(post): pcsc-lite >= 1.6.6
%define ifddir %(pkg-config libpcsclite --variable=usbdropdir)
%define LBRACE (
%define RBRACE )
%define QUOTE "
%define BACKSLASH \\
%define USBDRIVERS %(set -x ; bunzip2 <%{S:0} | sed -n 's/^ENV{MODALIAS}==%{QUOTE}%{BACKSLASH}%{LBRACE}usb:[^{QUOTE}]*%{BACKSLASH}%{RBRACE}%{BACKSLASH}*%{QUOTE}.*$/modalias%{LBRACE}%{BACKSLASH}1d*dc*dsc*dp*ic*isc*ip*%{RBRACE}/p' | tr '%{BACKSLASH}n' ' ')
# We are not using Supplements here. User may want to choose between openct and pcsc-lite:
Enhances: %USBDRIVERS
# Generic CCID devices:
Enhances: modalias(usb:*ic0Bisc00d*dc*dsc*dp*ic*isc*ip*)
%description
OpenCT is a set of library and tools to talk to smart card readers.
OpenCT is used by the OpenSC Smart Card library.
For a list of supported readers, please read documentation in
/usr/share/doc/packages/openct/wiki/index.html - some readers may be
supported only with particular firmware or particular connection type.
There are other packages that may support your reader in a different
way. Name of all these packages starts with "pcsc-".
Authors:
--------
Olaf Kirch <okir@suse.de>
Andreas Jellinghaus <aj@dungeon.inka.de>
%package -n libopenct1
License: BSD3c(or similar) ; LGPLv2.1+
Group: System/Libraries
Summary: Library for Smart Card Readers
%description -n libopenct1
OpenCT is a set of library and tools to talk to smart card readers.
OpenCT is used by the OpenSC Smart Card library.
For a list of supported readers, please read documentation in
/usr/share/doc/packages/openct/wiki/index.html - some readers may be
supported only with particular firmware or particular connection type.
There are other packages that may support your reader in a different
way. Name of all these packages starts with "pcsc-".
Authors:
--------
Olaf Kirch <okir@suse.de>
Andreas Jellinghaus <aj@dungeon.inka.de>
%package -n pcsc-openct
License: BSD3c(or similar) ; LGPLv2.1+
Group: Productivity/Security
Summary: PC/SC IFD Handler for OpenCT Smart Card Drivers
%description -n pcsc-openct
PC/SC Connector for OpenCT. It allows to use any of OpenCT Smart Card
drivers with the PCSC-Lite daemon from the pcsc-lite package.
OpenCT is a set of library and tools to talk to smart card readers.
OpenCT is used by the OpenSC Smart Card library.
For a list of supported readers, please read documentation in
/usr/share/doc/packages/openct/wiki/index.html - some readers may be
supported only with particular firmware or particular connection type.
There are other packages that may support your reader in a different
way. Name of all these packages starts with "pcsc-".
Authors:
--------
Olaf Kirch <okir@suse.de>
Andreas Jellinghaus <aj@dungeon.inka.de>
%package devel
License: BSD3c(or similar) ; LGPLv2.1+
Group: Development/Libraries/C and C++
Summary: Library for Smart Card Readers
Requires: libopenct1 = %{version} glibc-devel
%description devel
OpenCT is a set of library and tools to talk to smart card readers.
OpenCT is used by the OpenSC Smart Card library.
For a list of supported readers, please read documentation in
/usr/share/doc/packages/openct/wiki/index.html - some readers may be
supported only with particular firmware or particular connection type.
There are other packages that may support your reader in a different
way. Name of all these packages starts with "pcsc-".
Authors:
--------
Olaf Kirch <okir@suse.de>
Andreas Jellinghaus <aj@dungeon.inka.de>
%prep
%setup -q -n %{name}-%{version}
cp -a %{S:2} .
%patch1
sed -i 's/@USER@/%{USER}/g;s/@GROUP@/%{GROUP}/g' etc/init-script.in
tr -d \\r <doc/nonpersistent/wiki.out/trac.css >doc/nonpersistent/wiki.out/trac.css.unix
touch -r doc/nonpersistent/wiki.out/trac.css doc/nonpersistent/wiki.out/trac.css.unix
mv doc/nonpersistent/wiki.out/trac.css.unix doc/nonpersistent/wiki.out/trac.css
%build
%if %suse_version > 1110
ACLOCAL="aclocal -I m4" autoreconf -f -i
%endif
%configure\
--docdir=%{_docdir}/%{name}\
--disable-static\
--enable-doc\
--enable-api-doc\
--enable-usb\
--enable-pcsc\
--enable-non-privileged\
--with-daemon-user=%{USER}\
--with-daemon-groups=%{GROUP}\
--with-bundle=%{ifddir}\
--with-ifddir=%{ifddir}\
--with-udev=/lib/udev/rules.d
make %{?jobs:-j%jobs}
%install
%makeinstall
#
# Create directory
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/openct
# NOTE: Example in the source recommends 750, but this value allows
# access only to dedicated users and root.
chmod 0755 $RPM_BUILD_ROOT%{_localstatedir}/run/openct
#
# Install init script
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d
install etc/init-script $RPM_BUILD_ROOT%{_sysconfdir}/init.d/openct
ln -s ../..%{_sysconfdir}/init.d/openct $RPM_BUILD_ROOT%{_sbindir}/rcopenct
#
# Copy the rest of documentation
cp LGPL-2.1 README.SUSE TODO doc/nonpersistent/ChangeLog etc/openct-disable.fdi $RPM_BUILD_ROOT%{_docdir}/%{name}
# And remove pointless .la file
rm $RPM_BUILD_ROOT%{_libdir}/libopenct.la
%preun
%{stop_on_removal openct}
%post
# Remove possible orphans created by openct<=0.6.15 before openct-status-lock-orphans.patch (openSUSE <= 11.1, SLE <= 11):
rm -f %{_localstatedir}/run/openct/status.lock.*
%{fillup_and_insserv -y openct}
%postun
%{restart_on_update openct}
%{insserv_cleanup}
%post -n libopenct1 -p /sbin/ldconfig
%postun -n libopenct1 -p /sbin/ldconfig
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
%doc %dir %{_docdir}/%{name}
%doc %{_docdir}/%{name}/ChangeLog
%doc %{_docdir}/%{name}/LGPL-2.1
%doc %{_docdir}/%{name}/NEWS
%doc %{_docdir}/%{name}/README
%doc %{_docdir}/%{name}/README.SUSE
%doc %{_docdir}/%{name}/TODO
%doc %{_docdir}/%{name}/openct-disable.fdi
%doc %{_docdir}/%{name}/wiki
%{_bindir}/*
%ghost %dir %{_localstatedir}/run/openct
%doc %{_mandir}/man?/*.*
%{_sbindir}/*
%{_sysconfdir}/init.d/openct
%config(noreplace) %{_sysconfdir}/openct.conf
/lib/udev/rules.d/*
%files -n libopenct1
%defattr(-,root,root)
%{_libdir}/*.so.*
%files -n pcsc-openct
%defattr(-,root,root)
%{ifddir}/openct-ifd.bundle
%files devel
%defattr(-,root,root)
%doc %{_docdir}/%{name}/api
%{_includedir}/openct
%{_libdir}/*.so
%{_libdir}/*.*a
%{_libdir}/pkgconfig/libopenct.pc
%changelog