pcsc-lite/pcsc-lite.spec

276 lines
8.6 KiB
RPMSpec

#
# spec file for package pcsc-lite
#
# Copyright (c) 2016 SUSE LINUX 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/
#
# FIXME: Maybe we should use /usr/lib/pcsc/drivers as others do:
%define ifddir %{_libdir}/readers
%define USER scard
%define GROUP scard
Name: pcsc-lite
Version: 1.8.17
Release: 0
Summary: PCSC Smart Cards Library
License: BSD-3-Clause
Group: Productivity/Security
Url: http://pcsclite.alioth.debian.org/
Source: %{name}-%{version}.tar.bz2
Source1: %{name}.sysconfig
Source2: README.SUSE
Source3: pre_checkin.sh
Source4: baselibs.conf
Source5: pcsc-lite-init
Source6: pcsc-lite-reader-conf
Source7: %{name}-%{version}.tar.bz2.asc
Source8: %{name}.keyring
Patch0: systemd-service.patch
BuildRequires: gcc
BuildRequires: libtool
BuildRequires: pkg-config
BuildRequires: readline-devel
Requires: libpcsclite1 = %{version}
Requires(post): %fillup_prereq
Requires(pre): pwdutils
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version} >= 1320
BuildRequires: polkit-devel
%endif
%if 0%{?suse_version} >= 1120
BuildRequires: libudev-devel
%else
BuildRequires: libusb-1_0-devel
%endif
%if 0%{?suse_version} > 1140
BuildRequires: systemd-rpm-macros
%{?systemd_requires}
%else
Requires(post): %insserv_prereq
Requires(post): sysvinit(syslog)
%endif
%description
The purpose of PCSC Lite is to provide a Windows(R) SCard interface in
a very small form factor for communication with smart cards and
readers. PCSC Lite can be compiled directly for a desired reader driver
or can be used to dynamically allocate/deallocate reader drivers at
runtime (the default behavior).
PCSC Lite uses the same winscard API as used in Windows(R).
Security aware people should read the SECURITY file for possible
vulnerabilities of pcsclite and how to fix them. For information on how
to install drivers please read the DRIVERS file.
Memory cards will be supported through the MCT specification, which is
an APDU like manner sent normally through the SCardTransmit() function.
This functionality is exercised in the driver.
%package -n libpcsclite1
Summary: PCSC Smart Card Library
License: BSD-3-Clause
Group: System/Libraries
Recommends: pcsc-lite >= %{version}
%description -n libpcsclite1
The purpose of PCSC Lite is to provide a Windows(R) SCard interface in
a very small form factor for communication with smart cards and
readers. PCSC Lite can be compiled directly for a desired reader driver
or can be used to dynamically allocate/deallocate reader drivers at
runtime (the default behavior).
PCSC Lite uses the same winscard API as used in Windows(R).
Security aware people should read the SECURITY file for possible
vulnerabilities of pcsclite and how to fix them. For information on how
to install drivers please read the DRIVERS file.
Memory cards will be supported through the MCT specification, which is
an APDU like manner sent normally through the SCardTransmit() function.
This functionality is exercised in the driver.
%package -n libpcscspy0
Summary: PCSC Smart Card Library
License: GPL-3.0+
Group: System/Libraries
%description -n libpcscspy0
Supporting library for the PC/SC spy tool.
%package devel
Summary: Development package for the MUSCLE project SmartCards library
License: BSD-3-Clause and GPL-3.0+
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Requires: glibc-devel
Requires: libpcsclite1 = %{version}
Requires: libpcscspy0 = %{version}
%description devel
This package contains the development files for pcsc-lite. It allows to
compile plugins for the pcsc-lite package.
%prep
%setup -q
%patch0 -p1
cp -a %{SOURCE1} %{SOURCE2} %{SOURCE5} %{SOURCE6} .
%build
%configure\
--docdir=%{_docdir}/%{name} \
--enable-usbdropdir=%{ifddir} \
%if 0%{?suse_version} <= 1110
--disable-libudev \
%endif
%if 0%{?suse_version} > 1140
--with-systemdsystemunitdir=%{_unitdir} \
%endif
%if 0%{?suse_version} >= 1320
--enable-polkit \
%else
--disable-polkit \
%endif
--disable-static
make %{?_smp_mflags}
%install
make DESTDIR=%{buildroot} install %{?_smp_mflags}
mkdir -p %{buildroot}%{ifddir}
mkdir -p %{buildroot}%{_sysconfdir}/reader.conf.d/
sed s:@ifddir@:%{ifddir}: <pcsc-lite-reader-conf >%{buildroot}%{_sysconfdir}/reader.conf.d/reader.conf
%if 0%{?suse_version} < 1310
install -D -m 755 pcsc-lite-init %{buildroot}%{_initddir}/pcscd
ln -sf %{_initddir}/pcscd %{buildroot}%{_sbindir}/rcpcscd
%else
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcpcscd
%endif
mkdir -p %{buildroot}%{_localstatedir}/adm/fillup-templates
cp %{name}.sysconfig %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.pcscd
mkdir -p %{buildroot}%{_docdir}/%{name}
cp -a AUTHORS ChangeLog COPYING DRIVERS HELP NEWS README README.SUSE SECURITY TODO %{buildroot}%{_docdir}/%{name}
# Use socket activated pcscd by default.
%if 0%{?suse_version} > 1140
mkdir -p %{buildroot}%{_libexecdir}/systemd/system-preset
echo -e 'enable pcscd.socket\nenable pcscd.service' >%{buildroot}%{_libexecdir}/systemd/system-preset/50-pcscd.preset
%endif
# Remove useless la files
find %{buildroot} -type f -name "*.la" -delete -print
%pre
getent group %{GROUP} >/dev/null || groupadd -r %{GROUP}
getent passwd %{USER} >/dev/null || useradd -r -g %{GROUP} -s %{_sbindir}/nologin -c "Smart Card Reader" -d %{_localstatedir}/run/pcscd %{USER}
%if 0%{?suse_version} > 1140
%service_add_pre pcscd.service pcscd.socket
# trick: service existed before, but it had no preset before 13.2 and in SLE12. Force %%service_add_post to run preset.
if [ $1 -gt 1 ] ; then
if ! test -f %{_libexecdir}/systemd/system-preset/50-pcscd.preset ; then
echo -n "" >/run/rpm-%{name}-update-pcscd.socket-new-in-upgrade
echo -n "" >/run/rpm-%{name}-update-pcscd.service-new-in-upgrade
fi
fi
%endif
%post
%if 0%{?suse_version} > 1140
%service_add_post pcscd.service pcscd.socket
%else
%fillup_and_insserv -y -n pcscd pcscd
%endif
%fillup_only -n pcscd
%preun
%if 0%{?suse_version} > 1140
%service_del_preun pcscd.service pcscd.socket
%endif
%if 0%{?suse_version} < 1310
%stop_on_removal pcscd
%endif
%postun
%if 0%{?suse_version} > 1140
%service_del_postun pcscd.service pcscd.socket
# make sure to reload systemd for possible downgrades
if [ "$1" = "1" ]; then
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi
%endif
%if 0%{?suse_version} < 1310
%restart_on_update pcscd
%insserv_cleanup
%endif
%post -n libpcsclite1 -p /sbin/ldconfig
%postun -n libpcsclite1 -p /sbin/ldconfig
%post -n libpcscspy0 -p /sbin/ldconfig
%postun -n libpcscspy0 -p /sbin/ldconfig
%files
%defattr(-,root,root)
%docdir %{_docdir}/%{name}
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/AUTHORS
%{_docdir}/%{name}/COPYING
%{_docdir}/%{name}/DRIVERS
%{_docdir}/%{name}/HELP
%{_docdir}/%{name}/NEWS
%{_docdir}/%{name}/README
%{_docdir}/%{name}/README.DAEMON
%{_docdir}/%{name}/README.SUSE
%{_docdir}/%{name}/README.polkit
%{_docdir}/%{name}/SECURITY
%{_docdir}/%{name}/TODO
%doc %{_mandir}/man?/*.*
%{_sbindir}/*
%dir %{_sysconfdir}/reader.conf.d
%config(noreplace) %{_sysconfdir}/reader.conf.d/reader.conf
%{ifddir}
%if 0%{?suse_version} > 1140
%{_unitdir}/*
%{_libexecdir}/systemd/system-preset/
%else
%{_initddir}/pcscd
%endif
%{_localstatedir}/adm/fillup-templates/sysconfig.pcscd
# libpcsclite.so should stay in the main package (#732911). Third party packages may need it for dlopen().
%{_libdir}/libpcsclite.so
%if 0%{?suse_version} >= 1320
%{_datadir}/polkit-1/actions/org.debian.pcsc-lite.policy
%endif
%files -n libpcsclite1
%defattr(-,root,root)
%{_libdir}/libpcsclite.so.*
%files -n libpcscspy0
%defattr(-,root,root)
%{_libdir}/libpcscspy.so.*
%files devel
%defattr(-,root,root)
%docdir %{_docdir}/%{name}
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/Change*
%{_includedir}/*
%{_libdir}/pkgconfig/*.pc
%{_libdir}/*.so
%{_bindir}/*
# libpcsclite.so should stay in the main package (#732911). Third party packages may need it for dlopen().
%exclude %{_libdir}/libpcsclite.so
%changelog