[epson-inkjet-printer-201209w] Mise en ligne (Résolu)

Mise à jour / Création /debug de paquetages
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

[epson-inkjet-printer-201209w] Mise en ligne (Résolu)

Message par Pafrapé »

Bonsoir.

Je viens de m'acheter une nouvelle imprimante, mon ancienn m'ayant lachée après 8 ans de bons et loyaux services.
J'ai mis mon dévolu sur une EPSON XP-750.

Le logiciel n'étant pas disponible actuellement sur archlinux, je viens donc d'écrire un PKGBUILD (en m'inspirant de ce qui existe déjà sur AUR) afin de pouvoir mettre se logiciel sur AUR.

Mais n'étant pas un pro merci de vérifier et me dire si ce PKGBUILD est correct et me dire ou modifier ce qui ne convient pas avant que l'un d'entre vous ne le dépose dans AUR.

Merci d'avance.

Voici le PKGBUILD :

Code : Tout sélectionner

pkgname=epson-inkjet-printer-201209w
pkgname_filter=epson-inkjet-printer-filter
pkgver=1.0.1
pkgrel=1
pkgdesc="Epson Inkjet Printer Driver - XP-750 Series, XP-850 Series"
arch=('i686' 'x86_64')
url="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
license=('LGPL' 'custom:EPSON LICENSE AGREEMENT')
depends=('cups')
makedepends=('rpmextract' 'libtool' 'make' 'automake' 'autoconf')
source=(http://a1227.g.akamai.net/f/1227/40484/1d/download.ebz.epson.net/dsc/f/01/00/01/98/21/5a400e1e9ff60e9c66e3481710b7d606f76d5833/epson-inkjet-printer-201209w-1.0.1-1lsb3.2.src.rpm)

build() {
  cd "$startdir/src"
  rpmextract.sh $pkgname-$pkgver-1lsb3.2.src.rpm || return 1
  tar xzf $pkgname-$pkgver.tar.gz || return 1
  FILTER_FILE=`ls $_pkgname_filter*.tar.gz`
  tar xzf $FILTER_FILE || return 1

  cd "${FILTER_FILE%.tar.gz}"
  aclocal
  libtoolize
  chmod +x configure
  # if you have runtime problems: add "--enable-debug" and look into /tmp/epson-inkjet-printer-filter.txt
  ./configure LDFLAGS="$LDFLAGS -Wl,--no-as-needed" --prefix=/opt/$pkgname || return 1
  make || return 1
}

package() {
  cd "$srcdir/$pkgname-$pkgver"
  install -d "$pkgdir/opt/$pkgname/"
  if [ "$CARCH" = "x86_64" ]; then
     cp -r lib64 "$pkgdir/opt/$pkgname/"
  else
     cp -r lib "$pkgdir/opt/$pkgname/"
  fi
  cp -r resource "$pkgdir/opt/$pkgname/"

  if [ -e "watermark" ]; then
      cp -r watermark "$pkgdir/opt/$pkgname/"
  fi
  install -d "$pkgdir/usr/share/cups/model/$pkgname"
  install -m 644 ppds/* "$pkgdir/usr/share/cups/model/$pkgname"

  cd "$srcdir"
  FILTER_FILE=`ls $_pkgname_filter*.tar.gz`
  cd "${FILTER_FILE%.tar.gz}"
  install -d "$pkgdir/opt/$pkgname/cups/lib/filter/"
  install -m 755 src/epson_inkjet_printer_filter "$pkgdir/opt/$pkgname/cups/lib/filter/epson_inkjet_printer_filter"
}
sha256sums=('ec0471ed0733269f9e7a831542c7a59ce03c654d20ad7f59a7d56401573bbd9d')
Dernière modification par Pafrapé le ven. 14 déc. 2012, 22:02, modifié 1 fois.
Pafrapé, car il faudrait être frappé pour... :paf:
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [epson-inkjet-printer-201209w] Vérification et mise en l

Message par Tristelune »

Salut,

tu peux enlever tous les

Code : Tout sélectionner

|| return 1
Il y a des explications ici: http://forums.archlinux.fr/topic12177.html.

Pour le reste je laisse quelqu'un avec plus d'expérience juger.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [epson-inkjet-printer-201209w] Vérification et mise en l

Message par FoolEcho »

Pafrapé a écrit :pkgname_filter=epson-inkjet-printer-filter
Tu as testé ton PKGBUILD ? :copain:
Parce que là est une coquille très bête que je n'ai pas remarqué de suite, mais qui est très fâcheuse (esthétiquement/pour les standards et surtout pour le code qui s'en suit). :fou:
Il faut un tiret devant: [b][size=150]_[/size][/b]pkgname_filter.

En dehors de ça, voilà un PKGBUILD très légérement remanié:

Code : Tout sélectionner

pkgname=epson-inkjet-printer-201209w
_pkgname_filter=epson-inkjet-printer-filter
pkgver=1.0.1
pkgrel=1
pkgdesc="Epson Inkjet Printer Driver - XP-750 Series, XP-850 Series"
arch=('i686' 'x86_64')
url="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
license=('LGPL' 'custom:EPSON LICENSE AGREEMENT')
depends=('cups')
source=(http://a1227.g.akamai.net/f/1227/40484/1d/download.ebz.epson.net/dsc/f/01/00/01/98/21/5a400e1e9ff60e9c66e3481710b7d606f76d5833/epson-inkjet-printer-201209w-1.0.1-1lsb3.2.src.rpm)
sha256sums=('ec0471ed0733269f9e7a831542c7a59ce03c654d20ad7f59a7d56401573bbd9d')

build() {
  cd "$srcdir"
  tar xzf $pkgname-$pkgver.tar.gz
  FILTER_FILE=`ls ${_pkgname_filter}*.tar.gz`
  tar xzf $FILTER_FILE

  cd "${FILTER_FILE%.tar.gz}"
  aclocal
  libtoolize
  chmod +x configure
  # if you have runtime problems: add "--enable-debug" and look into /tmp/epson-inkjet-printer-filter.txt
  ./configure LDFLAGS="$LDFLAGS -Wl,--no-as-needed" --prefix=/opt/$pkgname || return 1
  make || return 1
}

package() {
  cd "$srcdir/$pkgname-$pkgver"
  install -d "$pkgdir/opt/$pkgname/"
  if [ "$CARCH" = "x86_64" ]; then
     cp -r lib64 "$pkgdir/opt/$pkgname/"
  else
     cp -r lib "$pkgdir/opt/$pkgname/"
  fi
  cp -r resource "$pkgdir/opt/$pkgname/"

  if [ -e "watermark" ]; then
      cp -r watermark "$pkgdir/opt/$pkgname/"
  fi
  install -d "$pkgdir/usr/share/cups/model/$pkgname"
  install -m 644 ppds/* "$pkgdir/usr/share/cups/model/$pkgname"

  cd "$srcdir"
  FILTER_FILE=`ls $_pkgname_filter*.tar.gz`
  cd "${FILTER_FILE%.tar.gz}"
  install -d "$pkgdir/opt/$pkgname/cups/lib/filter/"
  install -m 755 src/epson_inkjet_printer_filter "$pkgdir/opt/$pkgname/cups/lib/filter/epson_inkjet_printer_filter"

  #license
  install -d "${pkgdir}/usr/share/licenses/${pkgname}"
  install -D -m644 COPYING{,.EPSON,.LIB} "${pkgdir}/usr/share/licenses/${pkgname}/"
}
Outre l'histoire du tiret:
-on utilise $srcdir plutôt que $startdir/src
-suppression de rpmextract (truc que je n'avais pas remarqué avant: en dépit du rpm source, l'extraction peut désormais se faire sans... même si je ne sais pas qui le fait d'ailleurs :) )
-rajout de la licence EPSON
-suppression de makedepends (tout est membre de base-devel)

Après je ne suis pas fan du /opt (plutôt /usr/share/$pkgname et voir si ça peut s'affiner)... mais bon, ça évite de modifier les ppds...

Essaie ça + utilisation via cups, on verra pour AUR après (j'ai compilé sous x86_64, pas de lib32 à l'horizon). Moi ou un autre (c'est mieux si c'est quelqu'un qui a le matériel mais bon...). :chinois:
Dernière modification par FoolEcho le ven. 14 déc. 2012, 11:09, modifié 1 fois.
Raison : base-devel !
«The following statement is not true. The previous statement is true.» :nage:
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

Re: [epson-inkjet-printer-201209w] Vérification et mise en l

Message par Pafrapé »

Je vous remercie tous les deux de votre aide.

J'ai compilé avec la proposition de FoolEcho, à savoir :

Code : Tout sélectionner

pkgname=epson-inkjet-printer-201209w
_pkgname_filter=epson-inkjet-printer-filter
pkgver=1.0.1
pkgrel=1
pkgdesc="Epson Inkjet Printer Driver - XP-750 Series, XP-850 Series"
arch=('i686' 'x86_64')
url="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"
license=('LGPL' 'custom:EPSON LICENSE AGREEMENT')
depends=('cups')
makedepends=('libtool' 'make' 'automake' 'autoconf')
source=(http://a1227.g.akamai.net/f/1227/40484/1d/download.ebz.epson.net/dsc/f/01/00/01/98/21/5a400e1e9ff60e9c66e3481710b7d606f76d5833/epson-inkjet-printer-201209w-1.0.1-1lsb3.2.src.rpm)
sha256sums=('ec0471ed0733269f9e7a831542c7a59ce03c654d20ad7f59a7d56401573bbd9d')

build() {
  cd "$srcdir"
  tar xzf $pkgname-$pkgver.tar.gz
  FILTER_FILE=`ls ${_pkgname_filter}*.tar.gz`
  tar xzf $FILTER_FILE

  cd "${FILTER_FILE%.tar.gz}"
  aclocal
  libtoolize
  chmod +x configure
  # if you have runtime problems: add "--enable-debug" and look into /tmp/epson-inkjet-printer-filter.txt
  ./configure LDFLAGS="$LDFLAGS -Wl,--no-as-needed" --prefix=/opt/$pkgname || return 1
  make || return 1
}

package() {
  cd "$srcdir/$pkgname-$pkgver"
  install -d "$pkgdir/opt/$pkgname/"
  if [ "$CARCH" = "x86_64" ]; then
     cp -r lib64 "$pkgdir/opt/$pkgname/"
  else
     cp -r lib "$pkgdir/opt/$pkgname/"
  fi
  cp -r resource "$pkgdir/opt/$pkgname/"

  if [ -e "watermark" ]; then
      cp -r watermark "$pkgdir/opt/$pkgname/"
  fi
  install -d "$pkgdir/usr/share/cups/model/$pkgname"
  install -m 644 ppds/* "$pkgdir/usr/share/cups/model/$pkgname"

  cd "$srcdir"
  FILTER_FILE=`ls $_pkgname_filter*.tar.gz`
  cd "${FILTER_FILE%.tar.gz}"
  install -d "$pkgdir/opt/$pkgname/cups/lib/filter/"
  install -m 755 src/epson_inkjet_printer_filter "$pkgdir/opt/$pkgname/cups/lib/filter/epson_inkjet_printer_filter"

  #license
  install -d "${pkgdir}/usr/share/licenses/${pkgname}"
  install -D -m644 COPYING{,.EPSON,.LIB} "${pkgdir}/usr/share/licenses/${pkgname}/"
}
, sans rien modifier d'autre.

La compilation se déroule sans problème. :bravo:

Je n'ai plus qu'à sortir l'imprimante de son emballage, la brancher et voir si tout marche.

Dès que c'est fait, je vous donne des nouvelles pour vous dire si tout fonctionne correctement.

:merci: encore de votre aide.
Pafrapé, car il faudrait être frappé pour... :paf:
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

Re: [epson-inkjet-printer-201209w] Vérification et mise en l

Message par Pafrapé »

Ça y est, je viens de brancher l'imprimante et cela fonctionne à la perfection.

Une question à FoolEcho : comme toi, je préfère le /usr/share/ au /opt
Si dans mon PKGBUILD, je remplace /opt par /usr/share/, y a t-il d'autres choses à modifier ?
Pafrapé, car il faudrait être frappé pour... :paf:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [epson-inkjet-printer-201209w] Vérification et mise en l

Message par FoolEcho »

Modifier le prefix à passer dans le configure et bien évidemment dans la fonction package.
Cependant, ça obligerait à modifier aussi les chemins dans les ppds.

On peut en discuter 10 plombes mais pour moi, le respect des standards d'empaquetage sous Arch fait qu'on doit en passer par /opt. Je ne dis pas ça parce que tous les paquets faits sur ce modèle sur AUR utilise /opt pour cette partie (*) :wink: mais parce qu'il faudrait modifier les ppds (ils ne sont pas produits par la compilation, ni adaptés après), ce qui revient à patcher du code source (et sous Arch on patche un minimum). L'opération en elle-même est triviale ici mais tu risques de faire dysfonctionner tout ou partie si tu oublies quelque chose.

Je le publierai sur AUR dans la journée sauf si toi (ou quelqu'un d'autre) veux le maintenir (sachant que je ne peux "que" faire l'empaquetage).



(*) à ce sujet, j'ai édité le message qui présente le PKGBUILD + rectifications. Il est inutile ici de mettre les makedepends, car tout fait partie de base-devel qui est un prérequis (la plupart des paquets epson-inkjet-printer que j'ai vu sur AUR sont donc incorrects :copain: ).

EDIT: publié: epson-inkjet-printer-201209w (mais si tu le veux, je te l'abandonne :chinois: )
«The following statement is not true. The previous statement is true.» :nage:
Pafrapé
Chu Ko Nu
Messages : 401
Inscription : mar. 29 juin 2010, 09:24

Re: [epson-inkjet-printer-201209w] Vérification et mise en l

Message par Pafrapé »

Je te remercie pour toutes les informations que tu as apporté.
Je te laisse le mettre sur Aur, car je n'ai encore jamais rien mis dessus et je n'ai pas créé de compte.
Par contre, j'ai appris pas mal de choses en quelques messages.
Merci encore
Pafrapé, car il faudrait être frappé pour... :paf:
Répondre