%define iscanversion 2.29.3 %define major 1 %define libname %mklibname %{name} %{major} %define devname %mklibname %{name} %{major} -d %bcond_without gphoto2 %bcond_without primax %bcond_without v4l %bcond_without epkowa # All sane backends have SONAME libsane.so.1. We do not want # sane-backends-iscan to provide libsane.so.1, so filter these out. %define __noautoprovfiles %{_libdir}/sane %define __libtoolize /bin/true # Setting this makes the /etc/sane.d/dll.conf empty so that scanning apps # do not search for all existing scanner models which makes their startup # slow (the user or "scannerdrake" has to insert the names of the really # installed scanners then) %bcond_with empty_dll_conf Summary: SANE - local and remote scanner access Name: sane Version: 1.0.25 Release: 3 # lib/ is LGPLv2+, backends are GPLv2+ with exceptions # Tools are GPLv2+, docs are public domain License: GPLv2+ and GPLv2+ with exceptions and Public Domain Group: Graphics Url: http://www.sane-project.org/ Source0: http://alioth.debian.org/frs/download.php/file/3958/sane-backends-%{version}.tar.gz Source3: http://downloads.sourceforge.net/project/px-backend/primaxscan-source/1.1.beta1/primaxscan-1.1.beta1.tar.gz Source5: saned-xinetd Source9: http://downloads.sourceforge.net/project/hp44x0backend/hp44x0backend/sane_hp_rts88xx-0.18/sane_hp_rts88xx-0.18.tar.gz Source10: http://downloads.sourceforge.net/project/brother-mfc/brother-mfc/sane-driver/sane-driver-0.2.tar.gz Source11: http://www.geocities.com/trsh0101/SANE/primascan.h Source12: http://www.geocities.com/trsh0101/SANE/primascan.c # The free part of Epson's scanner driver package IScan, full package # downloaded from http://www.avasys.jp/english/linux_e/index.html # Non-free part stripped out with # mkdir x; cd x; tar -xvzf ../iscan_2.21.0-6.tar.gz; rm -f */non-free/EAPL*.txt */non-free/lib*.so; tar -cvjf ../iscan_2.21.0-6-free.tar.bz2 *; cd ..; rm -rf x Source13: iscan-%{iscanversion}-3-free.tar.bz2 Source14: http://downloads.sourceforge.net/project/geniusvp2/sane-backend-geniusvp2/1.0.16.1/sane-backend-geniusvp2_1.0.16.1.tar.gz Source15: sane.rpmlintrc Patch0: sane-backends-1.0.18-plustek-s12.patch # (fc) 1.0.19-12mdv fix group for device Patch1: sane-backends-1.0.20-group.patch # (fc) list Brother MFC-260C, DCP130C as supported (Mdv bug # 52951) Patch2: sane-backends-1.0.22-brother2list.patch Patch3: sane-backends-1.0.20-strformat.patch Patch4: sane-backends-1.0.23-have-pthread.patch # Debian patches # new build system breaks build when using pthreads. Patch10: 01_missing_pthreads.dpatch # add back SANE_CAP_ALWAYS_SETTABLE which was mistakenly # removed from SANE 1.0.20 Patch11: 06_cap_always_settable.dpatch # Use fedora's patch to remove rpath # Patch to the dll backend to look for pieces of dll.conf inside the # /etc/sane.d/dll.d/ directory. This is a facility for packages providing # external backends (like libsane-extras, hpoj and hplip). Patch12: 22_dll_backend_conf.dpatch Patch13: 24_sane-desc.c_debian_mods.dpatch # Fedora patches Patch20: sane-backends-1.0.20-open-macro.patch Patch21: sane-backends-1.0.23-udev.patch Patch30: iscan-2.29.3-fix-link.patch Patch31: iscan-2.20.1-no_non-free_please.diff Patch32: iscan-2.28.1-linkage_fix.patch BuildRequires: gettext BuildRequires: gettext-devel BuildRequires: ieee1284-devel BuildRequires: jpeg-devel BuildRequires: libtool-devel BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: pkgconfig(libtiff-4) %if %{with gphoto2} BuildRequires: pkgconfig(libgphoto2) %endif BuildRequires: pkgconfig(libusb) %if %{with v4l} BuildRequires: pkgconfig(libv4l1) %endif # ensure resmgr is not pulled BuildConflicts: resmgr-devel %description SANE (Scanner Access Now Easy) is a sane and simple interface to both local and networked scanners and other image acquisition devices like digital still and video cameras. SANE currently includes modules for accessing a range of scanners, including models from Agfa SnapScan, Apple, Artec, Canon, CoolScan, Epson, HP, Microtek, Mustek, Nikon, Siemens, Tamarack, UMAX, Connectix, QuickCams and other SANE devices via network. For the latest information on SANE, the SANE standard definition, and mailing list access, see http://www.mostang.com/sane/ This package does not enable network scanning by default; if you wish to enable it, install the saned package. #---------------------------------------------------------------------------- %package -n %{libname} Summary: Shared libraries for SANE License: LGPLv2.1+ Group: System/Libraries %description -n %{libname} This package contains the shared libraries for %{name}. %files -n %{libname} %{_libdir}/libsane.so.%{major}* %dir %{_libdir}/sane %{_libdir}/sane/*.so.%{major}* %if %{with epkowa} %exclude %{_libdir}/sane/libsane-epkowa.so.%{major}* %endif #---------------------------------------------------------------------------- %package -n %{devname} Summary: Development files for SANE License: LGPLv2.1+ Group: Development/C Requires: %{libname} = %{EVRD} Provides: sane-devel = %{EVRD} %description -n %{devname} This package contains the headers and development libraries necessary to develop applications using SANE. %files -n %{devname} %{_bindir}/sane-config %{_libdir}/libsane.so %{_libdir}/sane/*.so %{_includedir}/sane %{_libdir}/pkgconfig/sane-backends.pc %if %{with epkowa} %exclude %{_libdir}/sane/libsane-epkowa.so %endif #---------------------------------------------------------------------------- %package backends Summary: SANE - local and remote scanner access License: LGPLv2.1+ Group: System/Kernel and hardware Provides: %{name} = %{EVRD} %if %{with epkowa} Suggests: iscan %endif Suggests: sane-firmware Requires(pre,postun): rpm-helper %description backends This package contains the backends for different scanners. %files backends -f sane-backends.lang %doc %{_docdir}/sane-backends-%{version} %{_bindir}/sane-find-scanner %{_bindir}/scanimage %{_bindir}/gamma4scanimage %if %{with primax} %{_bindir}/primax_scan %endif %{_bindir}/umax_pp %{_mandir}/man1/* %{_mandir}/man5/* %{_mandir}/man7/* %dir %{_sysconfdir}/sane.d %config(noreplace) %{_sysconfdir}/sane.d/* %{_udevrulesdir}/*-libsane.rules %attr(1777,root,root) %dir /var/lib/lock/sane %if %{with epkowa} # iscan files %exclude %{_sysconfdir}/sane.d/epkowa.conf %exclude %{_mandir}/man5/sane-epkowa.5* %endif %pre backends %_pre_groupadd scanner %postun backends %_postun_groupdel scanner #---------------------------------------------------------------------------- %if %{with epkowa} %package backends-iscan Summary: SANE - local and remote scanner access License: LGPLv2.1+ Group: System/Kernel and hardware Provides: iscan = %{iscanversion} %description backends-iscan This package contains the iscan backend, in order to not conflict with manufacturer-supplied packages. %files backends-iscan %{_libdir}/sane/libsane-epkowa.so.%{major}* %{_libdir}/sane/libsane-epkowa.so %{_sysconfdir}/sane.d/epkowa.conf %{_mandir}/man5/sane-epkowa.5* %{_mandir}/man8/iscan-registry.* %endif #---------------------------------------------------------------------------- %package backends-doc Summary: Documentation for SANE backends Group: Documentation %description backends-doc This package contains the SANE backend documentation for different scanners. %files backends-doc %doc %{_docdir}/sane-backends-doc-%{version} #---------------------------------------------------------------------------- %package -n saned Summary: SANE - local and remote scanner access License: LGPLv2.1+ Group: System/Kernel and hardware Provides: saned = %{EVRD} Requires: sane-backends >= %{EVRD} Requires(post,postun): xinetd Requires(preun,post): rpm-helper %description -n saned This package contains saned, a daemon that allows remote clients to access image acquisition devices available on the local host. %files -n saned %{_sbindir}/* %{_mandir}/man8/saned* %attr(644,root,root) %config(noreplace) %{_sysconfdir}/xinetd.d/saned %post -n saned systemctl restart xinetd %pre -n saned # Add saned to group scanner, cdwriter and usb for scanner access. /usr/sbin/useradd -r -M -s /bin/false -c "system user for saned" saned -G cdwriter,usb,scanner || : %preun -n saned systemctl restart xinetd %postun -n saned systemctl restart xinetd #---------------------------------------------------------------------------- %prep %setup -qn sane-backends-%{version} %patch0 -p1 -b .plusteks12 %patch1 -p1 -b .group %patch2 -p1 -b .brother2list %patch3 -p1 -b .strformat %patch4 -p1 -b .pthread %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 # Fedora patches %patch20 -p1 -b .open-macro %patch21 -p1 -b .udev # Primax parallel port scanners %if %{with primax} %setup -q -T -D -a 3 -n sane-backends-%{version} %endif # "primascan" backend # (commented out in dll.conf, as it claims to support every USB scanner) cat %{SOURCE11} > backend/primascan.h cat %{SOURCE12} > backend/primascan.c echo '#primascan' >> backend/dll.conf.in # Epson Avasys driver for Epson scanners %if %{with epkowa} %setup -q -T -D -a 13 -n sane-backends-%{version} %endif # lib64 fixes (avoid patch) # NOTE: don't regenerate configure script past this line perl -pi -e "s@/lib(\"|\b[^/])@/%_lib\1@g if /LDFLAGS=.*with_ptal/" configure # Reduce number of retries done by the "snapscan" backend when accessing # the scanner perl -p -i -e 's:for \(retries = 20; retries; retries--\):for (retries = 5; retries; retries--):' backend/snapscan-scsi.c %if %{with epkowa} pushd iscan-%{iscanversion} %patch30 -p0 -b .iscan-2.10.0-1_fix_link %patch31 -p0 -b .no_non-free_please %patch32 -p2 -b .linkage_fix popd %endif # Remove the backend/dll.conf file generated by the patches, it prevents # the Makefile from generating the real dll.conf file rm -f backend/dll.conf %build %configure2_5x \ --disable-static \ --enable-rpath=no \ %if !%{with gphoto2} --without-gphoto2 %endif %make # Primax parallel port scanners %if %{with primax} chmod a+rx tools/sane-config cd primaxscan* autoreconf -fi PATH=`pwd`/../tools:${PATH} CFLAGS="${RPM_OPT_FLAGS/-ffast-math/} -fPIC -I`pwd`/../include -L`pwd`/../backend/.libs/"\ %configure2_5x \ --disable-static %make %make primax_scan cd .. %endif # Epson Avasys driver for Epson scanners %if %{with epkowa} chmod a+rx tools/sane-config PATH=`pwd`/tools:${PATH} cd iscan-%{iscanversion} sh ./bootstrap export CFLAGS="${RPM_OPT_FLAGS/-ffast-math/} -I`pwd`/../include -L`pwd`/../backend/ -fPIC" export CXXFLAGS="${RPM_OPT_FLAGS/-ffast-math/} -I`pwd`/../include -L`pwd`/../backend/ -fPIC" export LIBUSB_1_0_LIBS="-lusb" %configure2_5x \ --disable-static \ --disable-frontend %make cd .. %endif %install %makeinstall_std # Create missing lock dir install -d %{buildroot}/var/lib/lock/sane perl -pi -e "s/installed.*/installed=yes/g" %{buildroot}%{_libdir}/libsane.la /sbin/ldconfig -n %{buildroot}%{_libdir} %{buildroot}%{_libdir}/sane # Comment out entry for the "geniusvp2" backend in # /etc/sane.d/dll.conf as it makes SANE hanging on some systems when # the appropriate scanner is not present perl -p -i -e 's/^(\s*geniusvp2)/\#$1/g' %{buildroot}%{_sysconfdir}/sane.d/dll.conf # Enable stocks driver by default sed -i 's/^#epson/epson/g' %{buildroot}%{_sysconfdir}/sane.d/dll.conf # Remove "hpoj" line from /etc/sane.d/dll.con perl -p -i -e 's/HP\s+OfficeJet/HPLIP/g' %{buildroot}%{_sysconfdir}/sane.d/dll.conf perl -p -i -e 's/hpoj.sf.net/hplip.sf.net/g' %{buildroot}%{_sysconfdir}/sane.d/dll.conf perl -p -i -e 's/hpoj/hpaio/g' %{buildroot}%{_sysconfdir}/sane.d/dll.conf %if %{with empty_dll_conf} # The /etc/sane.d/dll.conf contains lines for every backend, so every # backend probes for a scanner when a SANE frontend (e. g. xsane) is # started. With this the user has always to wait around one minute # before he can scan. We simply replace the file by a nearly empty one # and let scannerdrake only insert the needed backends. So the # frontends will start immediately mv %{buildroot}%{_sysconfdir}/sane.d/dll.conf %{buildroot}%{_sysconfdir}/sane.d/dll.conf.orig cat > %{buildroot}%{_sysconfdir}/sane.d/dll.conf <> %{buildroot}%{_sysconfdir}/sane.d/dll.conf cd .. %endif # Xinetd.d entry mkdir %{buildroot}/etc/xinetd.d cat %{SOURCE5} > %{buildroot}/etc/xinetd.d/saned # udev rules for libusb user support mkdir -p %{buildroot}/lib/udev/rules.d install -m644 tools/udev/libsane.rules %{buildroot}/lib/udev/rules.d/60-libsane.rules # Shorten too long comments perl -p -i -e 's/(\#.{500}).*$/$1 .../' %{buildroot}/lib/udev/rules.d/60-libsane.rules %find_lang sane-backends sed -i '/^%dir/d' sane-backends.lang