# [RISOLTO] Richiesta aiuto per creazione ebuild da RPM

## guerro

Ciao,

qualcuno di volonteroso (e sicuramente più esperto di me nella creazione di pacchetti), avrebbe voglia di crearmi un ebuild che installi questo pacchetto RPM (che contiene i driver FULL FEATURES della stampante EPSON STYLUS PHOTO PX720WD?

IL pacchetto lo si scarica da questo indirizzo:

http://a1227.g.akamai.net/f/1227/40484/1d/download.ebz.epson.net/dsc/f/01/00/01/68/37/4079c3d0baec7777ee1b8e348391aed25f0d69dc/epson-inkjet-printer-artisan-725-835-series-1.0.0-1lsb3.2.src.rpm

Nell'ebuild io ipotizzerei di far scaricare manualmente il pacchetto e metterlo nella DISTDIR visto il path assurdo di scarico.

l'indirizzo per farlo scaricare manualmente all'utente è questo:

http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX

Un grazie di cuore a chiunque mi dia una mano e si voglia cimentare

----------

## sabayonino

ciao

mai provato a dare una occhiata a :

app-arch/rpm

dev-util/rpmdevtools

e/o

app-arch/rpm2targz

e relativi --help e http://wiki.gentoo.org/wiki/RPM

ciao   :Wink: 

----------

## guerro

Ho dato un occhio, ma ho l'impressione che servano per installare il contenuto dell'RPM nel sistema, ma quando poi devi ad esempio fare una rimozione, non è così automatica e semplice come con un ebuild, oltre al fatto che non viene tenuta traccia nel sistema dell'installazione....

Inoltre nel pacchetto RPM pare che si debba fare una doppia installazione di 2 subpacchetti contenuti in quello originario di cui 1 (quello dei filtri) secondo specifiche particolari....

Purtroppo per le mie scarse conoscenze non sono in grado di analizzare nel dettaglio e creare un ebuild senza rischiare di s********e il sistema...

 :Crying or Very sad:   :Crying or Very sad:   :Crying or Very sad:   :Crying or Very sad:   :Crying or Very sad: 

----------

## sabayonino

esedno drivers con percorsi statici , credo chje una volta installati e aver dato il ppd a cups , non ci dovrebbero essere altri problemi (credo eh...)

inoltre sul sito SANE http://www.sane-project.org/lists/sane-backends-external.html

per le epson ci stanno i bebckend epwoka sono compatibili con la tua stampante http://www.sane-project.org/lists/sane-backends-external.html#S-EPKOWA

 *Quote:*   

> Stylus Photo PX720WD Series 	USB 	0x04b8/0x0861 	Complete 	network interface supported via DFSG non-free iscan-network-nt package
> 
> all-in-one
> 
> overseas version of the EP-803A

 

```
USE="sane_backends_epson" emerge media-gfx/sane-backends
```

----------

## ago

quell'rmp contiene un tar.gz e un rpm.

Non ho ben capito se sono la stessa cosa o meno, a te quale interessa installare?

----------

## guerro

L'idea che mi sono fatto è che uno installa le librerie, l'altro solo i filtri e i ppd per cups.

Credo addirittura che prima installi il pacchetto vero e proprio, e poi il tar.gz dei filtri...

Per il discorso SANE,  non si riferisce allo SCANNER integrato nella stampante (è una multifunzione...)?

Come USE ho impostato epson2 che mi permette di utilizzare lo scanner via rete Wi-Fi, ...infatti quello funziona divinamente....

PS.

Il tutto è nato fondamentalmente perchè con il driver generico (per intenderci ESC/P-R) la stampante funziona, ma non ho la possibilità di stampare ad esempio sul fronte-retro e altre funzionalità che invece potrei avere se utilizzassi il pacchetto RPM.

----------

## TwoMinds

Buongiorno a tutti. Sperando di essere utile:

Per scrivere ebuild: Gentoo Development Guide .

Mi sono incuriosito, avendo dieci minuti liberi. Mi sono accorto che quel pacchetto fornisce i driver aggiornati per le stampanti inkject Epson. Mi sono ricordato del pacchetto net-print/epson-inkjet-printer-escpr disponibile nell'overlay sunrise. Purtroppo è fermo alla versione 1.1.1, mentre questa sembra essere la 1.2.3.

Ecco la versione aggiornata per net-print/epson-inkjet-printer-escpr-1.2.3.ebuild, se servisse.

```
# Copyright 1999-2013 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header:

EAPI=4

DESCRIPTION="Epson Inkjet Printer Driver (ESC/P-R) for Linux"

HOMEPAGE="http://avasys.jp/eng/linux_driver/index.php"

SRC_URI="http://download2.ebz.epson.net/dsc/f/03/00/02/25/86/5208c494264cd78de5365105fac1e7e94a661bf6/epson-inkjet-printer-escpr-1.2.3-1lsb3.2.tar.gz -> ${P}.tar.gz"

LICENSE="GPL"

SLOT="0"

KEYWORDS="~amd64 ~x86"

IUSE=""

DEPEND="net-print/cups"

RDEPEND="${DEPEND}"

RESTRICT=""
```

Per lo scanner c'è anche media-gfx/iscan.

----------

## guerro

Grazie TwoMinds,

purtroppo però come detto in un mio post precedente, quelli sono i driver generici che non hanno tutte le funzionalità (vedi FRONTE-RETRO ad esempio) e a me serve poter installare quelli con tutte le funzionalità....     :Crying or Very sad:   :Crying or Very sad: 

----------

## djinnZ

Non ho molto tempo quindi ho dato solo uno sguardo distratto e non ho controllato i sorgenti.

Da quel che ho capito è il classico driver proprietario solo che stavolta hanno voluto essere un minimo meno "figli di grandissim..." e lo hanno fatto alla unix-maniera.

Un pacchetto nell'rpm contiene le librerie (compilate statiche o prive di reali dipendenze) con il codice effettivo del filtro, da installare nel sistema secondo quanto riporta il  file .spec (non è difficile da leggere), l'altro è un normalissimo sorgente che compila il binario del filtro (che in realtà non fa altro che eseguire il codice nella libreria) e lo installa.

Il problema è non mi sembra che l'autoconf sia in grado di rilevare le librerie sotto un percorso differente.

Per incominciare a provare metti nell'ebuild delle semplici istruzioni di copia in /var/tmp/portage/vattelappesca/work scompattaci anche il tar.gz e prova a compilarlo solo con un ebuild compile.

Se non ne vuol sapere allora ti tocca spezzare il pacchetto in librerie e sorgente, per quel che so la sandbox non gestisce situazioni del genere.

Approssimativo, molto "a naso" ma di più non posso al momento.

----------

## guerro

Grazie djinnZ,

Io ci provo (anzi RIPROVO), se nel frattempo qualcuno armato di TANTA BUONA VOLONTA' (...e un po' di pazienza nei miei confronti) vuole provare a creare l'ebuild e a passarlo, avrà la mia riconoscenza...

Intanto GRAZIEEEE     :Smile:   :Smile:   :Smile: 

----------

## TwoMinds

 *guerro wrote:*   

> Grazie djinnZ,
> 
> Io ci provo (anzi RIPROVO), se nel frattempo qualcuno armato di TANTA BUONA VOLONTA' (...e un po' di pazienza nei miei confronti) vuole provare a creare l'ebuild e a passarlo, avrà la mia riconoscenza...
> 
> Intanto GRAZIEEEE      

 

Ok, perché non provi ad aggiornarci delle tue sperimentazioni postandole? Sono solito scrivere ebuild per tutto il software che installo, che sia sorgente, .bin o .rpm. Magari ti posso essere utile con qualche consiglio. Oppure impari con questo primo esperimento (^_^) .

----------

## djinnZ

concordo, anche se sono incasinatissimo uno sguardo ad un tuo ebuild od un log lo posso dare.

Tanto per iniziare e non impazzire ti posso dire che nelle sezioni degli ebuild puoi anche utilizzare dei normali comandi shell come se fosse uno script sh. Non potrai postarlo su bugzilla ma correggerlo è facile.

Inizia a copiare e modificare un ebuild esistente di qualche altro pacchetto. (se qualcuno si ricorda di un ebuild che parte da rpm sarebbe un gradito suggerimento).

La cosa è molto più facile di quel che può sembrare. E procedendo da ebuild il peggio che puoi fare e dover lanciare un emerge -c.

----------

## guerro

Questo è l'ebuild che sono riuscito a fare:

L'installazione non mi da errori, l'unico dubbio è che installa tutto in /opt/.....

Ma non è che debba invece essere distribuito nelle varie cartelle di Gentoo?!?!?!?!? se si qualcuno esperto del sistema me lo potrebbe sistemare?!?!?

Ecco il codice dell'ebuild

```

# Copyright 1999-2011 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

EAPI=4

inherit autotools rpm

MY_P="epson-inkjet-printer-artisan-725-835-series-${PV}-1lsb3.2"

DESCRIPTION="Epson Inkjet Printer Driver (ESC/P) for Linux" # common Linux printer driver

HOMEPAGE="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"

SRC_URI=${MY_P}.src.rpm

RESTRICT="fetch mirror"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="amd64 x86"

IUSE=""

DEPEND="net-print/cups"

RDEPEND="${DEPEND}"

S="${WORKDIR}/epson-inkjet-printer-filter-${PV}"

src_prepare() {

    eautoreconf

    }

pkg_nofetch() {

    einfo "Please download ${MY_P}"

    einfo "from ${HOMEPAGE}"

    einfo "and place it into ${DISTDIR}"

    }

```

Come noterete l'ebuild si deve scaricare manualmente....

per scaricare quello che utilizzo io il modello di stampante è  la PX720WD       :Smile:   :Smile: 

[EDIT]

Googlando in giro sono incappato in un ebuild che installava un driver di una stampante epson utilizzando il mio stesso tipo di RPM....    Riadattandolo un poco ho creato questo ebuild:

epson-inkjet-printer-artisan-725-835-series-1.0.0.ebuild

```

# Copyright 1999-2011 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

EAPI=4

inherit rpm autotools base

MY_P="${P}-1lsb3.2"

TGT="/opt/${PKG}"

DESCRIPTION="Epson Inkjet Printer Driver (ESC/P) for Linux" # common Linux printer driver

HOMEPAGE="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"

SRC_URI=${MY_P}.src.rpm

FILTERDIR=${WORKDIR}/epson-inkjet-printer-filter-1.0.0

RESTRICT="fetch mirror"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="amd64 x86"

IUSE=""

DEPEND="net-print/cups"

RDEPEND="${DEPEND}"

src_unpack() {

    rpm_src_unpack

}

src_prepare() {

    cd ${FILTERDIR}

    sed -i -e 's:/opt/lsb/:/usr/:g' configure.ac || die

    chmod +x configure

    eautoreconf

    # 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=$TGT

}

src_compile() {

    cd ${FILTERDIR}

    make -j1 || die

}

src_install() {

    # install docs

    cd ${S}

    into $TGT

    dodoc AUTHORS COPYING COPYING.EPSON README Manual.txt

    # install ppds-files into /usr/share/ppd/Epson

    cd ppds

    gzip -9 *.ppd

    insinto /usr/share/ppd/Epson

    doins *.ppd.gz       || die

    cd ..

    # install lib's, recources and watermarks

    case `uname -m` in

    x86_64) X86LIB=64 ;;

    *)      ;;

    esac

    insinto $TGT/lib"X86LIB"

    doins lib"$X86LIB"/* || die

    insinto $TGT/watermark

    doins watermark/*    || die

    insinto $TGT/resource

    doins resource/*     || die

    # install filter-binary

    exeinto $TGT/cups/lib/filter

    doexe ${FILTERDIR}/src/epson_inkjet_printer_filter || die

    }

pkg_nofetch() {

    einfo "Please download ${MY_P}"

    einfo "from ${HOMEPAGE}"

    einfo "and place it into ${DISTDIR}"

    }

```

Installare si installa, stassera provo a vedere se funzionano e poi vi farò sapere....  SPERIAMO!!!!

----------

## TwoMinds

Ciao. Bravo. Lo metti in net-print, immagino. Banalmente con

```
SRC_URI="http://a1227.g.akamai.net/f/1227/40484/1d/download.ebz.epson.net/dsc/f/01/00/01/68/37/4079c3d0baec7777ee1b8e348391aed25f0d69dc/${MY_P}.src.rpm"
```

dovrebbe scaricarlo da solo. Più comodo quando crei il Manifest.

----------

## guerro

@TwoMinds: Non metto l'indirizzo completo per scaricarlo in quanto mi da l'idea che sia un indirizzo costrruto dinamicamente e non vorrei mai che (giusto per riciclare il pacchetto per le versioni successive, semmai usciranno) il PATH cambi con le nuove versioni.

Dopo vari rimaneggiamenti e correzioni forse ho completato l'ebuild, stassera quando torno a casa provo a lanciare una stampa e poi vediamo. Dalla prova fatta in ufficio l'unico errore che ricevo è l'impossibilità di contattare la stampante, tutto il passaggio attraverso CUPS e il filtro pare funzionare......  MA LA PROVA DEL 9 l'avrò solo quando sarò a casa.

Stay Tuned!!!!!       :Laughing:   :Laughing:   :Exclamation:   :Exclamation: 

EDIT

Tutto funziona alla perfezione!!!

Ed ecco la versione finale dell'ebuild:

```

# Copyright 1999-2011 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

EAPI=5

inherit rpm autotools base

MY_P="${P}-1lsb3.2.src.rpm"

TGT="/opt/${PN}"

DESCRIPTION="Epson Inkjet Printer Driver (ESC/P) for Linux" # common Linux printer driver

HOMEPAGE="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"

SRC_URI=${MY_P}

FILTERDIR=${WORKDIR}/epson-inkjet-printer-filter-1.0.0

RESTRICT="fetch mirror"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="amd64 x86"

IUSE=""

DEPEND="net-print/cups

   x11-misc/colord"

RDEPEND="${DEPEND}"

src_unpack() {

    rpm_src_unpack

}

src_prepare() {

    cd ${FILTERDIR}

    sed -i -e 's:/opt/lsb/:/usr/:g' configure.ac || die

    chmod +x configure

    eautoreconf

    # 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=$TGT

}

src_compile() {

    cd ${FILTERDIR}

    make -j1 || die

}

src_install() {

    # install docs

    cd ${S}

    into $TGT

    dodoc AUTHORS COPYING COPYING.EPSON README Manual.txt

    # install ppds-files into /usr/share/ppd/Epson

    cd ppds

    gzip -9 *.ppd

    insinto /usr/share/ppd/Epson

    doins *.ppd.gz       || die

    cd ..

    # install lib's, recources and watermarks

    case `uname -m` in

    x86_64) X86LIB=64 ;;

    *)      ;;

    esac

    insinto $TGT/lib"$X86LIB"

    doins lib"$X86LIB"/* || die

    insinto $TGT/watermark

    doins watermark/*    || die

    insinto $TGT/resource

    doins resource/*     || die

    # install filter-binary

    exeinto $TGT/cups/lib/filter

    doexe ${FILTERDIR}/src/epson_inkjet_printer_filter || die

}

pkg_nofetch() {

    einfo "Please download ${MY_P}"

    einfo "from ${HOMEPAGE}"

    einfo "and place it into ${DISTDIR}"

}

```

----------

## djinnZ

Scusa ma ho avuto un tantino da fare in questi giorni, mi fa piacere che hai risolto. Come vedi era più facile di quello che pensavi.

Comunque i pacchetti basati su binari e librerie "esterni", sviluppati ed assemblati al di fuori della distribuzione, dovrebbero andare in /opt, quindi quello che avevi fatto è giustissimo.

Per la restrizione al fetch ti chiarisco che non è possibile senza un accordo scritto tra la fondazione gentoo e la epson inserire il download automatico, quindi hai ragione a lasciarlo così.

Ti manca solo postarlo sul bugzilla di gentoo a futura memoria o nella speranza che qualche devel lo adotti.

```
# Copyright 1999-2011 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

EAPI=5

inherit rpm autotools base

MY_P="${P}-1lsb3.2.src.rpm"

TGT="/opt/${PN}"

DESCRIPTION="Epson Inkjet Printer Driver (ESC/P) for Linux" # common Linux printer driver

HOMEPAGE="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX"

SRC_URI=${MY_P}

FILTERDIR=${WORKDIR}/epson-inkjet-printer-filter-1.0.0

RESTRICT="fetch mirror"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~amd64 ~x86"

IUSE="debug"

DEPEND="net-print/cups

        x11-misc/colord"

RDEPEND="${DEPEND}"

pkg_nofetch() {

    einfo "Please download ${MY_P}"

    einfo "from ${HOMEPAGE}"

    einfo "and place it into ${DISTDIR}"

} 

src_unpack() {

    rpm_src_unpack

}

src_prepare() {

    cd ${FILTERDIR}

    sed -i -e 's:/opt/lsb/:/usr/:g' configure.ac || die

    chmod +x configure

    eautoreconf

    filter-ldflags "-Wl,--as-needed" 

    # if you have runtime problems: add "--enable-debug" and look into /tmp/epson-inkjet-printer-filter.txt

    ./configure --prefix=$TGT

}

src_compile() {

    cd ${FILTERDIR}

    make -j1 || die

}

src_install() {

    # install docs

    cd ${S}

    into $TGT

    dodoc AUTHORS COPYING COPYING.EPSON README Manual.txt

    # install ppds-files into /usr/share/ppd/Epson

    cd ppds

    gzip -9 *.ppd

    insinto /usr/share/ppd/Epson

    doins *.ppd.gz       || die

    # install lib's, recources and watermarks

    case `uname -m` in

    x86_64) X86LIB=64 ;;

    *)      ;;

    esac

    insinto $TGT/lib"$X86LIB"

    doins lib"$X86LIB"/* || die

    insinto $TGT/watermark

    doins watermark/*    || die

    insinto $TGT/resource

    doins resource/*     || die

    # install filter-binary

    exeinto $TGT/cups/lib/filter

    doexe ${FILTERDIR}/src/epson_inkjet_printer_filter || die

}
```

----------

