package() - Discutiamone

Segnalazioni di pacchetti utili, richieste di creazione pacchetti e supporto tecnico
Rispondi
Avatar utente
Bl@ster
Little John
Messaggi: 1452
Iscritto il: 25 maggio 2008, 15:24
Località: Palestrina (RM)
Contatta:

Messaggio da Bl@ster » 22 ottobre 2010, 21:13

Avevo visto in molteplici pacchetti la funzione package(), e sinceramente pensavo fosse un vezzo di alcuni sviluppatori. Oggi però parlando con un altro pacchettizzatore AUR come me è spuntato fuori il tema e ho pensato di chiedere a chi ne sa di più: ma la funzione package() nel pacchetto è obbligatoria? Se si, da quando?

Ho visto che effettivamente anche sul wiki è stato cambiato il prototipo di PKGBUILD aggiungendo tutto ciò.
Faber est suae quisque fortunae.

baghera
Moderatore
Messaggi: 2319
Iscritto il: 30 agosto 2007, 12:40
Località: Pescara

Messaggio da baghera » 22 ottobre 2010, 21:23

Da quanto ne so io nella funzione build() vanno inclusi gli step di compilazione, questo perché la funzione build non viene eseguita in ambiente fakeroot. Nella funzione package() invece bisogna includere il make DESTDIR=$pkgdir install e tutti gli altri passaggi di installazione file in $pkgdir (tipo l'install di file .desktop, icone e cose così).
Questo modo di procedere ha portato due ulteriori cambiamenti:
1 - la funzione build() è opzionale (ci sono pacchetti che fanno solo copia e incolla di file ad esempio)
2 - il repackaging con makepkg -R è possibile solo in presenza della funzione package().

Tutto questo vale da pacman 3.4.0.
La causa della maggior parte dei problemi di un computer si trova tra la tastiera e lo schienale della sedia.
http://xkcd.com/293/

Avatar utente
Bl@ster
Little John
Messaggi: 1452
Iscritto il: 25 maggio 2008, 15:24
Località: Palestrina (RM)
Contatta:

Messaggio da Bl@ster » 22 ottobre 2010, 22:00

baghera ha scritto:Da quanto ne so io nella funzione build() vanno inclusi gli step di compilazione, questo perché la funzione build non viene eseguita in ambiente fakeroot. Nella funzione package() invece bisogna includere il make DESTDIR=$pkgdir install e tutti gli altri passaggi di installazione file in $pkgdir (tipo l'install di file .desktop, icone e cose così).
Questo modo di procedere ha portato due ulteriori cambiamenti:
1 - la funzione build() è opzionale (ci sono pacchetti che fanno solo copia e incolla di file ad esempio)
2 - il repackaging con makepkg -R è possibile solo in presenza della funzione package().

Tutto questo vale da pacman 3.4.0.
Quindi effettivamente package() ha un'utilità pratica: a saperlo quando ho fixato il mondo per Python3 aggiornavo anche tutti i PKGBUILD :D
Grazie delle informazioni, cose che non sapevo e su cui avevo dimenticato di aggiornarmi, non mancherò di rinnovare un po' il mio parco software :P
Faber est suae quisque fortunae.

Demind
Little John
Messaggi: 816
Iscritto il: 6 settembre 2007, 19:37
Località: Massy

Messaggio da Demind » 22 ottobre 2010, 23:43

Non sempre però funziona bene...io ad esempio non son riuscito in nessun modo ad aggiornare il mio PKGBUILD di vlc-3gp e non ho ancora avuto tempo/voglia di scrivere ai dev...se ci metti numeri e simboli in mezzo la funzione package fa le bizze
Linux User: #471778

baghera
Moderatore
Messaggi: 2319
Iscritto il: 30 agosto 2007, 12:40
Località: Pescara

Messaggio da baghera » 23 ottobre 2010, 12:15

Demind ha scritto:Non sempre però funziona bene...io ad esempio non son riuscito in nessun modo ad aggiornare il mio PKGBUILD di vlc-3gp e non ho ancora avuto tempo/voglia di scrivere ai dev...se ci metti numeri e simboli in mezzo la funzione package fa le bizze
Puoi spiegare meglio che intendi?
La causa della maggior parte dei problemi di un computer si trova tra la tastiera e lo schienale della sedia.
http://xkcd.com/293/

Avatar utente
Bl@ster
Little John
Messaggi: 1452
Iscritto il: 25 maggio 2008, 15:24
Località: Palestrina (RM)
Contatta:

Messaggio da Bl@ster » 23 ottobre 2010, 19:51

Demind ha scritto:Non sempre però funziona bene...io ad esempio non son riuscito in nessun modo ad aggiornare il mio PKGBUILD di vlc-3gp e non ho ancora avuto tempo/voglia di scrivere ai dev...se ci metti numeri e simboli in mezzo la funzione package fa le bizze
Fortunatamente sono riuscito ad aggiornare Asterisk all'utilizzo di package() senza fare danni :D
Faber est suae quisque fortunae.

Avatar utente
4javier
Moderatore
Messaggi: 9541
Iscritto il: 5 ottobre 2008, 17:19
Architettura: x86_64 (64bit)

Messaggio da 4javier » 23 ottobre 2010, 19:57

In pratica i programmi in python potranno usare esclusivamente package. Me lo dovrò studiare un po'.
Offertissima: Mi Vendo!!! Cercasi lavoro o corso di formazione finanziato in tutta italia da Roma in su, oppure in provincia di Catanzaro.
In particolare sono interessato ad opportunità su Roma.

Avatar utente
Bl@ster
Little John
Messaggi: 1452
Iscritto il: 25 maggio 2008, 15:24
Località: Palestrina (RM)
Contatta:

Messaggio da Bl@ster » 23 ottobre 2010, 20:18

4javier ha scritto:In pratica i programmi in python potranno usare esclusivamente package. Me lo dovrò studiare un po'.
In realtà quelli più complessi che buildano prima di fare il setup no, però essenzialmente la parte di installazione del codice va in package().
Faber est suae quisque fortunae.

Demind
Little John
Messaggi: 816
Iscritto il: 6 settembre 2007, 19:37
Località: Massy

Messaggio da Demind » 23 ottobre 2010, 20:30

baghera ha scritto:
Demind ha scritto:Non sempre però funziona bene...io ad esempio non son riuscito in nessun modo ad aggiornare il mio PKGBUILD di vlc-3gp e non ho ancora avuto tempo/voglia di scrivere ai dev...se ci metti numeri e simboli in mezzo la funzione package fa le bizze
Puoi spiegare meglio che intendi?
Prendi il pacchetto di vlc di Giovanni (Voidnull), è ben strutturato e fa un uso corretto della funzione package(). Prendi il mio su AUR (vlc-3gp, che non può chiamarsi diversamente per evidenti motivi), e non ha la funzione package() perchè in sostanza, a quanto ho capito nel momento in cui io cerco di compilare i pacchetti vlc-3gp e vlc-3gp-plugin makepkg si arrabbia perchè i nomi non vanno bene...ho provato tutte le combinazioni possibili tra - e _ e compagnai danzante..ma a quanto pare senza successo. Non dubito che mi possa essere sfuggito qualcosa, ma ci ho provato diverse volte e visto che stavo perdendo un mare di tempo mio malgrado ho desistito e ho lasciato il PKGBUILD con la vecchia struttura
Linux User: #471778

baghera
Moderatore
Messaggi: 2319
Iscritto il: 30 agosto 2007, 12:40
Località: Pescara

Messaggio da baghera » 24 ottobre 2010, 18:13

Demind, la funzione package() funziona con qualsiasi nome pacchetto. Guarda il PKGBUILD che sto riportando: ho preso il PKGBUILD di vlc e ho modificato le variabili pkgbase, pkgname e ho aggiunto una variabile _realname, il PKGBUILD crea correttamente due pacchetti vlc-3gp e vlc-3gp-plugin. Tu cosa facevi di diverso per far arrabbiare makepkg?
Se vuoi puoi prendere il PKGBUILD qui sotto e aggiungerci le opzioni di compilazione necessarie a renderlo come il tuo su aur. Comunque c'è una cosa importante: AUR non supporta i pacchetti splittati, quindi un PKGBUILD come questo non potrà essere caricato su AUR. Potrai usarlo solo per compilare localmente.

Codice: Seleziona tutto

# $Id: PKGBUILD 95096 2010-10-14 19:50:47Z ibiru $
# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
# Contributor: Martin Sandsmark <martin.sandsmark@kde.org>

pkgbase=vlc-3gp
pkgname=('vlc-3gp' 'vlc-3gp-plugin')
_realname=vlc
pkgver=1.1.4.1
pkgrel=2
arch=('i686' 'x86_64')
url="http://www.videolan.org/vlc/"
license=('GPL')
makedepends=('a52dec' 'fluidsynth' 'libmtp' 'libdvbpsi' 'lirc-utils'
             'libdca' 'qt' 'libproxy' 'sdl_image' 'libdvdnav' 'mesa'
             'lua' 'v4l-utils' 'libcddb' 'smbclient' 'libmatroska' 'zvbi'
             'taglib' 'sysfsutils' 'libmpcdec' 'ffmpeg' 'faad2'
             'libshout' 'libmad' 'fribidi' 'libmpeg2' 'libmodplug'
             'avahi' 'ttf-freefont' 'libxv' 'libass' 'xdg-utils' 'libxpm'
             'xulrunner' 'pkgconfig' 'live-media' 'libnotify' 'libcdio'
             'flac' 'libtheora' 'alsa-lib' 'jack' 'kdelibs' 'udev'
             'libraw1394' 'libdc1394' 'libavc1394' 'libva')
options=('!libtool')
source=("http://download.videolan.org/pub/videolan/${_realname}/${pkgver}/${_realname}-${pkgver}.tar.bz2")
md5sums=('ce17c335b38b322949694313173fcd49')

build() {
  cd "${srcdir}/${_realname}-${pkgver}"

  sed -i -e 's:truetype/freefont:TTF:g' modules/misc/freetype.c
  ./configure --prefix=/usr 
              --disable-rpath 
              --enable-faad 
              --enable-v4l 
              --enable-snapshot 
              --enable-dbus-control 
              --enable-nls 
              --enable-lirc 
              --enable-pvr 
              --enable-ncurses 
              --enable-mozilla 
              --with-live555-tree=/usr/lib/live 
              --enable-realrtsp
  CFLAGS="-fPIC"
  make
}

package_vlc-3gp() {
  pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
  depends=('a52dec' 'fluidsynth' 'libmtp' 'libdvbpsi' 'libcdio'
           'libdca' 'qt' 'libproxy' 'sdl_image' 'libdvdnav' 'mesa'
           'lua' 'v4l-utils' 'libcddb' 'smbclient' 'libmatroska' 'zvbi'
           'taglib' 'sysfsutils' 'libmpcdec' 'ffmpeg' 'faad2'
           'libshout' 'libmad' 'fribidi' 'libmpeg2' 'libmodplug'
           'ttf-freefont' 'libxv' 'libass' 'xdg-utils')
  optdepends=('avahi: for service discovery using bonjour protocol'
              'libnotify: for notification plugin'
              'ncurses: for ncurses interface support'
              'libdvdcss: for decoding encrypted DVDs'
              'lirc-utils: for lirc plugin'
              'libavc1394: for devices using the 1394ta AV/C'
              'libdc1394: for IEEE 1394 plugin'
              'kdelibs: KDE Solid hardware integration'
              'vdpau-video: VDPAU backend for VA API (for GPU acceleration on Nvidia cards)')
  options=('!libtool')
  install=vlc.install
  cd "${srcdir}/${_realname}-${pkgver}"

  make DESTDIR=${pkgdir}/ install

  for res in 16 32 48 128; do
    install -D -m644 ${srcdir}/${_realname}-${pkgver}/share/icons/${res}x${res}/vlc.png 
        ${pkgdir}/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png
  done

  rm -rf ${pkgdir}/usr/lib/mozilla
}

package_vlc-3gp-plugin() {
  pkgdesc="VLC mozilla browser plugin"
  depends=("vlc-3gp=${pkgver}" 'nspr' 'xulrunner' 'libxpm')
  cd "${srcdir}/${_realname}-${pkgver}"

  #for linking against libvlc
  make -C src DESTDIR="${pkgdir}" install-libLTLIBRARIES

  make -C projects/mozilla DESTDIR=${pkgdir}/ install

  #clean up libvlc
  make -C src DESTDIR="${pkgdir}" uninstall-libLTLIBRARIES
}
La causa della maggior parte dei problemi di un computer si trova tra la tastiera e lo schienale della sedia.
http://xkcd.com/293/

Demind
Little John
Messaggi: 816
Iscritto il: 6 settembre 2007, 19:37
Località: Massy

Messaggio da Demind » 24 ottobre 2010, 20:07

Scusa sono cotto in questi giorni, avevo scritto una vaccata...il pacchetto lo creava correttamente anche a me ma facendo l'upload su AUR mi dava errore..in sostanza non c'è nessun problema con package...le 3 ore le avevo perse per fare l'upload su AUR cambiando di volta in volta parametri nel PKGBUILD pensando di aver fatto errori...ma a distanza di un po' di tempo ho confuso le cose. Chiedo venia :D
Linux User: #471778

baghera
Moderatore
Messaggi: 2319
Iscritto il: 30 agosto 2007, 12:40
Località: Pescara

Messaggio da baghera » 24 ottobre 2010, 20:43

Demind ha scritto:Scusa sono cotto in questi giorni, avevo scritto una vaccata...il pacchetto lo creava correttamente anche a me ma facendo l'upload su AUR mi dava errore..in sostanza non c'è nessun problema con package...le 3 ore le avevo perse per fare l'upload su AUR cambiando di volta in volta parametri nel PKGBUILD pensando di aver fatto errori...ma a distanza di un po' di tempo ho confuso le cose. Chiedo venia :D
Ah ok, allora abbiamo trovato il colpevole :) Purtroppo non ci sono piani per il supporto ai pacchetti splittati in Aur, puoi però votare questo bug, magari prima o poi lo implementeranno :)
La causa della maggior parte dei problemi di un computer si trova tra la tastiera e lo schienale della sedia.
http://xkcd.com/293/

Avatar utente
Bl@ster
Little John
Messaggi: 1452
Iscritto il: 25 maggio 2008, 15:24
Località: Palestrina (RM)
Contatta:

Messaggio da Bl@ster » 24 ottobre 2010, 21:21

baghera ha scritto:
Demind ha scritto:Scusa sono cotto in questi giorni, avevo scritto una vaccata...il pacchetto lo creava correttamente anche a me ma facendo l'upload su AUR mi dava errore..in sostanza non c'è nessun problema con package...le 3 ore le avevo perse per fare l'upload su AUR cambiando di volta in volta parametri nel PKGBUILD pensando di aver fatto errori...ma a distanza di un po' di tempo ho confuso le cose. Chiedo venia :D
Ah ok, allora abbiamo trovato il colpevole :) Purtroppo non ci sono piani per il supporto ai pacchetti splittati in Aur, puoi però votare questo bug, magari prima o poi lo implementeranno :)
Davvero AUR non supporta gli splittati? Grazie dell'informazione anche in questo caso, e grazie anche di avermi fatto vedere un PKGBUILD che crea un pacchetto splittato :D
Faber est suae quisque fortunae.

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 24 ottobre 2010, 22:05

Hehe io ci ho perso le ore prima di scoprire che non era un mio PKGBUILD sbagliato ma aur che non supporta questo tipo di pacchetti...Secondo me è una cosa da uniformare ai repo..
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Demind
Little John
Messaggi: 816
Iscritto il: 6 settembre 2007, 19:37
Località: Massy

Messaggio da Demind » 24 ottobre 2010, 22:28

dieghen89 ha scritto:Hehe io ci ho perso le ore prima di scoprire che non era un mio PKGBUILD sbagliato ma aur che non supporta questo tipo di pacchetti...Secondo me è una cosa da uniformare ai repo..

già
Linux User: #471778

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 26 ottobre 2010, 13:33

@Bl@ster e chiunque sia interessato

Per AUR che non supporta i PKGBUILD splittati ho trovato un rimedio che sto usando già da qualche mese sul kernel-netbook...Date un occhiata al suo PKGBUILD per capire...

Secondo me questa è la soluzione più comoda, se qualcuno usa yaourt e vuole un pacchetto splittato basta che edita il pkgbuild quando richiesto e mette splitted=y...
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Avatar utente
Bl@ster
Little John
Messaggi: 1452
Iscritto il: 25 maggio 2008, 15:24
Località: Palestrina (RM)
Contatta:

Messaggio da Bl@ster » 26 ottobre 2010, 14:04

dieghen89 ha scritto:@Bl@ster e chiunque sia interessato

Per AUR che non supporta i PKGBUILD splittati ho trovato un rimedio che sto usando già da qualche mese sul kernel-netbook...Date un occhiata al suo PKGBUILD per capire...

Secondo me questa è la soluzione più comoda, se qualcuno usa yaourt e vuole un pacchetto splittato basta che edita il pkgbuild quando richiesto e mette splitted=y...
Un lavoretto titanico insomma :D
Faber est suae quisque fortunae.

Demind
Little John
Messaggi: 816
Iscritto il: 6 settembre 2007, 19:37
Località: Massy

Messaggio da Demind » 26 ottobre 2010, 15:19

No no la mia era solo voglia di uniformarmi...ma direi che non muoio dalla voglia di splittare!Il tuo lavoro cmq è degno di nota bravo :)
Linux User: #471778

Avatar utente
dieghen89
Little John
Messaggi: 1310
Iscritto il: 28 novembre 2008, 17:53
Località: Provincia di Udine
Contatta:

Messaggio da dieghen89 » 26 ottobre 2010, 15:41

Beh in pratica sono solo tre if da aggiungere, quindi non è niente di che :)
XPS 13 Developer Edition i7-4650U/hd5000 + KDE
Eeepc 1015PEM Black + KDE Minimal + kernel-netbook + acpi-eeepc-1015pem --> GUIDA

Rispondi