Da git a tarball

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3221
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Da git a tarball

Messaggio da joe »

Sto cercando di sfruttare le nuove funzionalità di un programma il cui progetto è gestito via GIT.
Nella fattispecie si tratta di "libmbim":
http://www.freedesktop.org/wiki/Software/libmbim

Uno sviluppatore ha rilasciato una patch attraverso la mailing list del progetto.
L'idea sarebbe stata quella di applicarla e reimpacchettare i sorgenti, quindi darli in pasto allo slackbuild che già ho reperito dal repo di slack current:
http://ftp.osuosl.org/pub/slackware/sla ... n/libmbim/

La dir del repo src della slackware-current contiene:

Codice: Seleziona tutto

-rw-r--r--         388K  2015-01-28 19:44  libmbim-1.12.2.tar.xz
-rw-r--r--         3.9K  2013-10-08 04:56  libmbim.SlackBuild
-rw-r--r--          829  2013-08-07 18:49  slack-desc
Quel tarball è in pratica preso dal ramo stabile di libmbim:
http://www.freedesktop.org/software/libmbim/

Quello che vorrei ottenere è semplicemente un tarball del ramo di sviluppo, ma che sia quanto più simile ai tarball della versione stabile.
Bisogna notare che il contenuto delramo git, è differente da quello del tarball dei sorgenti sabili.
Per esempio è necessario lanciare "autogen.sh" per creare i makefile e configure corretti.
Inoltre mancano diversi files in git più che altro di documentazione (tipo INSTALL, il man ecc)... penso che manchino quelli elencati in .gitignore, ma non ci ho capito granchè.

Il mio tentativo:

Codice: Seleziona tutto

$ git clone git://anongit.freedesktop.org/libmbim/libmbim
$ cd libmbim
$ git am /path/to/0001-mbimcli-report-IP-configuration-on-connect.patch
$ autogen.sh
$ cd ..
$ cp -a libmbim libmbim-13.0
$ tar cvJf libmbim-13.0.tar.xz libmbim-13.0
A questo punto, piazzando il tarball così creato nella dir dello slackbuild e modificando la versione nello slackbuild stesso, si ottiene un pacchetto txz slackware con cui si può aggiornare libmbim attualmente installata.

Il punto è che il paccehtto così creato non è perfetto, manca della documentazione ecc. Le stesse cose che mancano nel tarball creato partendo dal ramo git.
Torno allora alla domanda, secondo voi, come si ottiene un tarball di sorgenti adeguato e completo partendo dal ramo git di un progetto?
Può essere anche che ogni progetto abbia le proprie particolarità ma immagino che ci sia un certo standard...

Ne sapete nulla?

Riassumo meglio la domanda:

- C'è un progetto di svilupp basato su git
- C'è un repo in cui sono pubblicati i tarball del software stabile

Come vengono prodotti i tarball partendo dal relativo ramo git?

Avatar utente
conraid
Staff
Staff
Messaggi: 13469
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Da git a tarball

Messaggio da conraid »

Non ti conviene prendere la patch ed applicarla ai sorgenti, come viene fatto in quasi tutti gli SlackBuild in casi simili?

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3221
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Da git a tarball

Messaggio da joe »

Però quella patch penso sia relativa al ramo git...
non al ramo stabile...
Penso... non sono sicuro...

Mi spiego io immaginavo che il ramo git di un certo progetto partisse dal ramo stabile ma poi evolvesse patch dopo patch per conto suo...
Quindi se abbiamo un file "pippo" nel pacchetto dei sorgenti stabili...
Nel ramo GIT questo verrà modificato da non una ma potenzialmente diverse patch. Per cui la prima sarà relativa allo stesso "pipo" dell'ultimo ramo stabile stabile, ma la seconda patch no, sarà da applicare al nuovo pippo del ramo di sviluppo e non più al pippo stabile...
O no?

Può darsi che stia dicendo delle stupidaggine, è che proprio non ne so nulla di git e di come viene gestito un progetto del genere.
Comunque la patch era questa, tanto per capire come eventualmente applicarla..
http://people.redhat.com/dcbw/0001-mbim ... nect.patch

Avatar utente
conraid
Staff
Staff
Messaggi: 13469
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Da git a tarball

Messaggio da conraid »

Dipende dal numero di commit del progetto. Guarda il commit che ti interessa cosa va a modificare, la history, etc...

rik70
Iper Master
Iper Master
Messaggi: 2173
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 64-current
Kernel: 5.6.x-ck1
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Da git a tarball

Messaggio da rik70 »

[cancellato]
Scusate, avevo sbagliato discussione.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3221
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Da git a tarball

Messaggio da joe »

Sembra che grosso modo per il progetto di cui parlavo funzioni così:

Codice: Seleziona tutto

$ NOCONFIGURE=1 ./autogen.sh
$ ./configure --enable-gtk-doc
$ make
$ make distcheck
Il comando "make distcheck" produce proprio un tarball pronto ad essere distribuito sul ramo stabile.
C'è un problemino ancora però, che non c'entra forse granchè con la mia domanda iniziale...
Le manpages così prodotte sono vuote...
Vengono prodotte già dal primo "make".
Però, appunto sono due files vuoti:

Codice: Seleziona tutto

mbimcli.1
mbim-network.1

rik70
Iper Master
Iper Master
Messaggi: 2173
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 64-current
Kernel: 5.6.x-ck1
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Da git a tarball

Messaggio da rik70 »

Scusate se m'intrometto, ma come diceva conraid se dai uno sguardo ai commit la patch è stata aggiunta al ramo stabile:
http://cgit.freedesktop.org/libmbim/lib ... =mbim-1-12

Nota anche come l'ultima modifica che hanno fatto prima della patch è solo il cambio di versione del sofware.

Quindi scricati la patch, modifica lo Slackbuild in modo da 'patchare' i sorgenti dopo la decompressione ed il gioco è fatto.

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3221
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Da git a tarball

Messaggio da joe »

Quali sorgenti intendi però?
Quelli delle libmbim-1.12.2?
Cioè quelli presi dal repo della slack current, per capirci?

Ma siamo sicuri che quella patch si applichi direttamente ai sorgenti della versione stabile (1.12.2)?

E poi come si applica una patch di quel tipo (prodotta da git) a dei sorgenti che invece sono rilasciati fuori dal repo git?

Non so se ho reso il mio dubbio comprensibile...

Ad ogni modo mancava un tassello per le man pages, cioè il pacchetto help2man deve essere installato... Gli sviluppatori provvederanno ad aggiungere un messaggio d'errore al comando:
"make distcheck"
Se manca help2man la produzione del tarball fallisce.

In ogni caso mi pare più sensato passare per git se si vuole mettere la versione di sviluppo aggiornata alle ultime aggiunte..
D'altra parte lo slackbuild continua a funzionare bene dal 2013... Se gli si dà in pasto un tarball corretto.
Ora vedo di installare questo help2man...
....

Fatto!
Confermo che funziona tutto ora.
Pacchetto tarball sorgenti ricreato (lo chiama 1.13.0...).
Slackbuild avviato
Pacchetto slackware creato e installato
test del programma ok, manpages incluse.


Solo una domanda su git:
ma come si fà a ripulire il repository locale???

Io alla fine ho fatto così:

Codice: Seleziona tutto

libmbim :$ cd ..
build :$ rm -rf libmbim
build :$ git clone git://anongit.freedesktop.org/libmbim/libmbim
e ho ottenuto il repo remoto pulito in locale...
Ma non c'è un comando GIT che riporta il repo locale alla situazione di partenza quando si era clonato? Senza doverla rimuovere e ricrearla?
Perchè ovviamente quando si lavorano i sorgenti si generano un sacco di altri files... e se si vuole poi ricompilare partendo da una situazione pulita farebbe comodo un comando del genere...

rik70
Iper Master
Iper Master
Messaggi: 2173
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 64-current
Kernel: 5.6.x-ck1
Desktop: Xfce 4.14
Distribuzione: Arch Linux

Re: Da git a tarball

Messaggio da rik70 »

joe ha scritto:Quali sorgenti intendi però?
Quelli delle libmbim-1.12.2?
Cioè quelli presi dal repo della slack current, per capirci?
Sì.
joe ha scritto:Ma siamo sicuri che quella patch si applichi direttamente ai sorgenti della versione stabile (1.12.2)?
Sì, e lo si evince dallo storico dei commit - come dicevamo sopra.
joe ha scritto:E poi come si applica una patch di quel tipo (prodotta da git) a dei sorgenti che invece sono rilasciati fuori dal repo git?

Codice: Seleziona tutto

wget --content-disposition 'http://cgit.freedesktop.org/libmbim/libmbim/patch/?id=d939587ef7fff0195a45fb8418d2911dfbb52c99' -O quello_che_vuoi.patch

tar xvf libmbim-1.12.2.tar.xz

cd libmbim-1.12.2/

cat ../quello_che_vuoi.patch | patch -p1
Edit
per lo SlackBuild:
dopo

Codice: Seleziona tutto

tar xf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
cd $PKGNAM-$VERSION || exit 1

chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;
basta aggiungere:

Codice: Seleziona tutto

cat $CWD/quello_che_vuoi.patch | patch -p1 || exit 1

Avatar utente
conraid
Staff
Staff
Messaggi: 13469
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Da git a tarball

Messaggio da conraid »

Che poi bastava aggiungere la patch indicata al primo post
http://people.redhat.com/dcbw/0001-mbim ... nect.patch
ai sorgenti.

Quando fai un pacchetto, usa sempre (ove possibile) i sorgenti reperibili. Di solito se la patch non è applicabile direttamente ai sorgenti rilasciati, si fa il classico backport, se uno non ha le competenze (come me in molti casi) le cerca da altre distribuzioni o si fa aiutare.

Questo perché nella maggior parte dei casi (non è questo il caso visto che dopo il rilascio c'è solo questa patch) il codice in sviluppo ha anche molte cose nuove, spesso non stabili essendo appunto in sviluppo, e rilasciarlo come pacchetto non conviene. A meno che non sia voluto, io per esempio per alcuni pacchetti di slackers.it lo faccio, ma son pacchetti per current (anch'essa in sviluppo) ed è indicato chiaramente.
Ed in quel caso metto autogen.sh nello script di build senza fare un pacchetto sorgenti.

Se invece lo usi per te, fai come ti torna meglio :-)

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3221
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 14.2
Kernel: 4.4.38
Desktop: KDE-4.14.21

Re: Da git a tarball

Messaggio da joe »

Si si il pacchetto lo faccio esclusivamente per utilizzo personale.

Se si vuole pubblicare un pacchetto di sviluppo, a quel punto come hai ben spiegato ha più senso la soluzione che dicevi ovvero farsi uno slackbuild che vada a prendersi direttamente i sorgenti dal repo GIT e quindi applichi autogen.sh e tutte le altre azioni necessarie per compilare correttamente tutte le parti del programma partendo dal repo git stesso.

Visto che io sono piuttosto pigro e visto che avevo già lo slackbuild di Robby Workman bell'eppronto, e che per di più era di corredo ad una versione molto più recente rispetto alla stesura dello slackbuild (significa che i sorgenti del tarball dovrebbero continuare a seguire lo stesso standard...)... A quel punto invece di star lì a riscrivere uno slackbuild o introdurvi modifiche che poi vanno testate ecc... ho preferito prendere brutalmente il repo git e produrmi un tarball dei sorgenti simile a quello della versione stabile... per darlo poi in pasto alllo slackbuild vecchio e testato.

Avevo scelto questa strada anche perchè non ero sicuro che la patch da applicare fosse compatibile direttamente con "patch", ho pensato che sicuramente fosse invece applicabile senza probelmi al repo git.

Avatar utente
nyquist
Linux 2.x
Linux 2.x
Messaggi: 268
Iscritto il: sab 2 ago 2008, 16:02
Nome Cognome: Cristiano Urban
Slackware: 14.2 multilib
Kernel: 4.4.208
Desktop: KDE
Località: Gonars (UD)
Contatta:

Re: Da git a tarball

Messaggio da nyquist »

Scusate l'intromissione ma credo di avere un problema simile.
Vorrei creare uno slackbuild per libcpuid. Anche questo progetto è su git.
Qui nel readme però dicono che vanno lanciati due comandi (libtoolize e autoreconf --install) per generare il configure. Inoltre poi c'è il comando make dist che crea un tarball e che funziona solo dopo aver lanciato il comando ./configure. Fin qui tutto ok.
La mia domanda è questa: posso dare in pasto allo slackbuild quel tarball generato in quel modo lì? Il fatto di lanciare il configure sul mio sistema prima di poter creare il tarball è un problema a livello di portabilità?
Nei giorni scorsi stavo guardando i template presenti su slackbuilds.org e mi sono accorto che ce n'è uno chiamato autotools-template.SlackBuild. Può andare bene quello come scheletro?
Vi ringrazio in anticipo.

Avatar utente
conraid
Staff
Staff
Messaggi: 13469
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Da git a tarball

Messaggio da conraid »

nyquist ha scritto: La mia domanda è questa: posso dare in pasto allo slackbuild quel tarball generato in quel modo lì?

nyquist ha scritto:Il fatto di lanciare il configure sul mio sistema prima di poter creare il tarball è un problema a livello di portabilità?
No, perché rilancerai configure e comunque il makefile non è compreso e va rigenerato con il configure.
nyquist ha scritto: Nei giorni scorsi stavo guardando i template presenti su slackbuilds.org e mi sono accorto che ce n'è uno chiamato autotools-template.SlackBuild. Può andare bene quello come scheletro?

Avatar utente
nyquist
Linux 2.x
Linux 2.x
Messaggi: 268
Iscritto il: sab 2 ago 2008, 16:02
Nome Cognome: Cristiano Urban
Slackware: 14.2 multilib
Kernel: 4.4.208
Desktop: KDE
Località: Gonars (UD)
Contatta:

Re: Da git a tarball

Messaggio da nyquist »

Grazie mille! Appena ho un attimo provo allora :D

Rispondi