AW: Scanner Lide 20 unter openSuse 10.3
OK, da das tar.gz bei der Versionsnummer "-" enthält, muß man ein wenig tricksen, denn dieses Zeichen ist im SPEC bei Version oder Release nicht erlaubt.
Außerdem heisst der Ordner, der sich in dem tar.gz befindet nur "sane-backends" auch hier muß man entsprechend eingreifen.
Hier die Änderungen (rot)
1. Zunächst definieren wir eine Variable cvsversion, damit wir die Quelle korrekt einbinden können.
Code:
# usedforbuild ConsoleKit ConsoleKit-64bit Mesa PolicyKit aaa_base acl attr audit-libs audit-libs-64bit autoconf automake bash binutils bzip2 cairo coreutils cpio cpp cpp42 cracklib cracklib-64bit cups-libs cvs cyrus-sasl dbus-1 dbus-1-64bit dbus-1-glib diffutils file filesystem fillup findutils fontconfig freetype2 gawk gcc gcc42 gd gdbm gettext gettext-devel ghostscript-fonts-std ghostscript-library ghostscript-x11 glib2 glibc glibc-64bit glibc-devel glibc-locale glitz grep groff gzip hal info insserv less libacl libart_lgpl libattr libbz2-1 libbz2-devel libdb-4_5 libdb-4_5-64bit libdrm libexif libexif-devel libexpat1 libgcc42 libgimpprint libgomp42 libgphoto2 libgphoto2-devel libgphoto2-lang libieee1284 libjpeg libjpeg-devel libltdl-3 libmudflap42 libnscd libopenssl-devel libopenssl0_9_8 libpng libreadline5 libsnmp15 libstdc++42 libtiff3 libtool libusb libusb-devel libuuid1 libvolume_id libxcrypt libxcrypt-64bit libxml2 libzio linux-kernel-headers logrotate m4 make man mktemp module-init-tools ncurses net-snmp net-snmp-devel net-tools netcfg openldap2-client openssl-certs pam pam-64bit pam-config pam-modules parted patch perl perl-TermReadKey perl-Tk perl-base permissions pkg-config poppler popt popt-devel pwdutils resmgr rpm rpm-devel rrdtool sed sensors snmp-mibs sysfsutils sysvinit t1lib tar tcpd tcpd-devel texinfo texlive texlive-bin texlive-bin-latex texlive-latex timezone udev util-linux xaw3d xorg-x11-libICE xorg-x11-libSM xorg-x11-libX11 xorg-x11-libXau xorg-x11-libXext xorg-x11-libXfixes xorg-x11-libXmu xorg-x11-libXp xorg-x11-libXpm xorg-x11-libXprintUtil xorg-x11-libXrender xorg-x11-libXt xorg-x11-libXv xorg-x11-libfontenc xorg-x11-libs xorg-x11-libxcb
xorg-x11-libxkbfile zlib zlib-devel
[COLOR='Red']%define cvsversion 2007-10-20[/COLOR]
Name: sane-backends
2. Änderung des Releases und Einbinden der Quelle:
Code:
Summary: SANE (Scanner Access Now Easy) Scanner Drivers
Version: 1.0.18
[COLOR='red']Release: 20071020CVS[/COLOR]
Url: http://www.sane-project.org/
# URL for Source0: http://alioth.debian.org/download.php/1669/sane-backends-1.0.18.tar.gz
[COLOR='red']Source0: sane-backends-%{cvsversion}.tar.gz[/COLOR]
# Source100... is SUSE specific stuff:
Source100: sane-dev
Source101: sane-port
Source102: sane.reg
Sollte man einen anderen CVS-Snapshot verwenden, dann muß man nur die Zeile "%define cvsversion" ändern, wobei es allerdings dann auch Sinn macht, die Zeile "Release" abzuändern. Dabei dürfen wie schon oben angemerkt _keine_ "-" auftauchen (deshalb auch der kleine Trick ganz am Anfang).
Der Release ist so gewählt (erst Datum, dann CVS), daß ein eventuelles Update von openSUSE, sofern dieses immer noch Version 1.0.18 ist, sehr wahrscheinlich nicht dieses Paket ersetzt, das ist so beabsichtigt.
Sollte jedoch ein Update auf eine neuere Version (1.0.19 o.ä.) erfolgen, dann würde das Paket ersetzt.
3. Änderung des Makros "setup"
Code:
%debug_package
%prep
[COLOR='red']%setup -q -n %{name}[/COLOR]
# locale rename: no -> nb:
%patch1 -b .nb
Per default erwartet %setup, daß der Ordner, der sich im tar.gz befindet, genau so wie das tar.gz heisst.
Dies ist aber nicht der Fall, deshalb setzt man den Schalter "-n" und gibt den Namen des Ordners an.
Da der Ordner genau so wie das Paket heisst, kann man auch die Variable "%{name}" verwenden.
4. Änderung des Changelogs (wenn schon, denn schon, auch wenn es auf die Funktionalität des Paketes keinen Einfluß hat.
Code:
%changelog
[COLOR='red']* Sun Oct 21 2007 - <*Deine-Email-Adresse*>
- updated to cvs-snapshot version 2007-10-20[/COLOR]
Damit dürfte zumindest das setup bis zu den Patches selbst funktionieren und die Patches müssten gefunden werden.
Das nächste potentielle Problem dürften nun die Patches selbst sein.
Es ist davon auszugehen, daß einige dieser Patches mittlerweile in den Quellcode eingeflossen und deshalb nicht mehr nötig sind, andere wiederum immer noch angewendet werden können und auch angewendet werden sollten.
Es wird also wahrscheinlich folgendes passieren.
Code:
Patch #[B]*NummerdesPatches*[/B] (*NamedesPatches*):
+ patch -p0 -s
Reversed (or previously applied) patch detected! Assume -R? [n]
und rpmbuild wird abbrechen.
Dann muß der entsprechende Patch auskommentiert werden, das geschieht hier:
Code:
%setup -q -n %{name}
# locale rename: no -> nb:
%patch1 -b .nb
mv po/sane-backends.no.po po/sane-backends.nb.po
# Patch2 fixes a too small char array which causes a buffer overflow if SANE_DEBUG_EPSON is set:
%patch2
# Patch3 replaces fixed HZ compile-time value by sysconf(_SC_CLK_TCK) runtime value:
%patch3
Patch4 disables hw_ink_remain which causes a buffer overflow in fujitsu.c:
#%patch4
# Patch5 fixes an uninitialized variable in teco2.c:
%patch5
# Patch6 fixes an ambiguous post/pre increment in canon-sane.c:
%patch6
# Patch100... is SUSE specific stuff:
# Patch100 lets the "canon" backend do scanner auto-recognition:
%patch100
# Patch101 disables the special resmgr support in SANE (resmgr works now via ACLs):
%patch101
# Patch102 builds libsane-* modules as libtool modules:
%patch102
# Source100... is SUSE specific stuff:
# Remove hpoj.desc completely to avoid confusion with its successor hpaio.desc
# because since openSUSE 10.3 the package hp-officeJet (for hpoj.desc) is dropped.
Wie man sieht, sind schon im Verlauf der letzten Monate/Jahre mehrere Patches aus oben genannntem Grund auskommentiert worden, hier also einfach vor die entsprechende "%patch*Nummer*"-Zeile eine Raute
# setzen, das SPECfile abspeichern und danach auf ein Neues.
Diese Prozedur so lange wiederholen, bis alle nicht mehr anwendbaren Patches (keiner mehr und keiner weniger) auskommentiert sind.
Danach ein kleines Gebet sprechen und hoffen, daß der Build durchläuft.
Greetz,
RM