[RISOLTO] Come creare una patch?

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
tom
Packager
Packager
Messaggi: 407
Iscritto il: dom 1 nov 2009, 12:53
Nome Cognome: Tommaso D'Anna
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: xfce

[RISOLTO] Come creare una patch?

Messaggio da tom »

Come alcuni di voi sanno ho pacchettizzato libreoffice 3.3.0.1 (rc1), ora mi appropinquo a compilare la nuova versione 3.3.0.2 (rc2), ma il download di alcuni sorgenti esterni fallisce:

Codice: Seleziona tutto

bash-4.1# ./download_external_sources.sh 
Setup:
 Source:     'libreoffice-3.3.0.2'
 Apply:      '/tmp/buildpkgs/libreoffice/libreoffice-build-3.3.0.2/patches/dev300/apply'
 Flags:      ''
 Suffix:     ''
 Dir:        '/tmp/buildpkgs/libreoffice/libreoffice-build-3.3.0.2/build'
 DestDir:    ''
 Path:       '/tmp/buildpkgs/libreoffice/libreoffice-build-3.3.0.2/build/bin:/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:/tmp/buildpkgs/libreoffice/libreoffice-build-3.3.0.2/bin'
 Prefix:     '/usr'
 Mandir:     '/usr/man'
 Docdir:     '/usr/doc/libreoffice-3.3.0.2'
 Sysconf:    '/etc'
 OOInBase:   '/usr/lib/libreoffice'
 OOInstall:  '/usr/lib/libreoffice'
 OODestDir:  ''
 Config:     --disable-binfilter --disable-crashdump --with-lang="" --disable-fetch-external --with-vba-package-format=builtin --disable-epm --with-openldap --with-build-version="tag libreoffice-3.3.0.2" --without-fonts --with-system-jpeg --with-system-libxml --with-system-mozilla --with-system-openssl --with-system-python --with-system-stdlibs --with-system-zlib --with-system-poppler --with-unix-wrapper=ooffice --enable-evolution2 --enable-dbus --with-alloc=system --enable-cairo=yes --enable-gtk --enable-kde --enable-kde4 --disable-epm --disable-gconf --disable-gnome-vfs --disable-kde --disable-mono --disable-pam --disable-pam-link --disable-post-install-scripts --enable-binfilter --enable-cairo --enable-crypt-link --enable-dbus --enable-gstreamer --enable-hids --enable-libart --enable-libsn --enable-lockdown --enable-minimizer --enable-odk --enable-ogltrans --enable-opengl --enable-openxml --enable-pdfimport --enable-presenter-console --enable-randr-link --enable-report-builder --enable-systray --enable-wiki-publisher --enable-xrender-link --with-ant-home=/usr/share/ant --with-arch=x86 --with-dict=ALL --with-extension-integration --with-external-dict-dir=/usr/share/hunspell --with-external-hyph-dir=/usr/share/hyphen --with-external-thes-dir=/usr/share/mythes --with-fonts --with-jdk-home=$JAVA_HOME --with-openclipart=/usr/share/openclipart --with-openldap --with-system-boost --with-system-cairo --with-system-curl --with-system-db --with-system-dicts --with-system-expat --with-system-jpeg --with-system-libxml --with-system-libxslt --with-system-mesa-headers --with-system-mozilla=xulrunner --with-system-neon --with-system-openssl --with-system-poppler --with-system-python --with-system-redland --with-system-stdlibs --with-system-zlib --with-vba-package-format=builtin --with-vendor="Slacky.eu" --with-x --without-myspell-dicts --without-junit --without-system-icu --without-system-jars --without-unix-wrapper   '--prefix=/usr' '--libdir=/usr/lib' '--sysconfdir=/etc' '--localstatedir=/var' '--mandir=/usr/man' '--docdir=/usr/doc/libreoffice-3.3.0.2' '--with-arch-flags=-O2 -march=i486 -mtune=i686 -DGL_GLEXT_PROTOTYPES' '--with-distro=Slackware' '--with-docdir=/usr/doc/libreoffice-3.3.0.2' '--with-installed-ooo-dirname=libreoffice' '--with-mirror=http://download.go-oo.org' '--without-binsuffix' '--without-git' '--enable-kde4' '--build=i486-slackware-linux' 'build_alias=i486-slackware-linux' 'CFLAGS=-O2 -march=i486 -mtune=i686 -DGL_GLEXT_PROTOTYPES' 'LDFLAGS='
 ccache:     no
 icecream:   no
 distcc:     no
--2010-12-27 19:11:18--  http://cgit.freedesktop.org/libreoffice/bootstrap/plain/fetch_tarballs.sh?id=LIBREOFFICE_3_3_0_2
Resolving cgit.freedesktop.org (cgit.freedesktop.org)... 131.252.210.176
Connecting to cgit.freedesktop.org (cgit.freedesktop.org)|131.252.210.176|:80... connected.
HTTP request sent, awaiting response... 404 Not found
2010-12-27 19:11:19 ERROR 404: Not found.

--2010-12-27 19:11:19--  http://cgit.freedesktop.org/libreoffice/bootstrap/plain/ooo.lst?id=LIBREOFFICE_3_3_0_2
Resolving cgit.freedesktop.org (cgit.freedesktop.org)... 131.252.210.176
Connecting to cgit.freedesktop.org (cgit.freedesktop.org)|131.252.210.176|:80... connected.
HTTP request sent, awaiting response... 404 Not found
2010-12-27 19:11:20 ERROR 404: Not found.

./download_external_sources.sh: line 17: ./fetch_tarballs.sh: Permission denied
rmdir: failed to remove `/tmp/tmp.Y0qh9Y': Directory not empty
Ho pure scoperto l'inghippo: un file chiamato download_external_sources.sh tenta di scaricare questi 2 file (inesistenti)

Codice: Seleziona tutto

http://cgit.freedesktop.org/libreoffice/bootstrap/plain/fetch_tarballs.sh?id=LIBREOFFICE_3_3_0_2
http://cgit.freedesktop.org/libreoffice/bootstrap/plain/ooo.lst?id=LIBREOFFICE_3_3_0_2
piuttosto che questi 2 (esistenti)

Codice: Seleziona tutto

http://cgit.freedesktop.org/libreoffice/bootstrap/plain/fetch_tarballs.sh?id=libreoffice-3.3.0.2
http://cgit.freedesktop.org/libreoffice/bootstrap/plain/ooo.lst?id=libreoffice-3.3.0.2
Questo è il file download_external_sources.sh in questione

Codice: Seleziona tutto

#!/bin/sh

. ./bin/setup

export TARFILE_LOCATION
export CLONEDIR

if test -e $CLONEDIR/bootstrap/fetch_tarballs.sh -a -e $CLONEDIR/bootstrap/ooo.lst; then
    $CLONEDIR/bootstrap/fetch_tarballs.sh $CLONEDIR/bootstrap/ooo.lst
else
    GIT_TAG=`echo $OOO_SOURCEDIRNAME | tr "a-z.-" "A-Z__"`
    tmp=`mktemp -q -d`

    cd $tmp
    wget http://cgit.freedesktop.org/libreoffice/bootstrap/plain/fetch_tarballs.sh?id=$GIT_TAG -O fetch_tarballs.sh && chmod 755 fetch_tarballs.sh
    wget http://cgit.freedesktop.org/libreoffice/bootstrap/plain/ooo.lst?id=$GIT_TAG -O ooo.lst
    ./fetch_tarballs.sh ooo.lst &&  rm -f fetch_tarballs.sh ooo.lst
    cd ..
    rmdir $tmp
fi
L'errore sta alla linea 11 dove

Codice: Seleziona tutto

GIT_TAG=`echo $OOO_SOURCEDIRNAME | tr "a-z.-" "A-Z__"`
dovrebbe essere sostituito con

Codice: Seleziona tutto

GIT_TAG=`echo $OOO_SOURCEDIRNAME`
Ora, poichè non ho mai avuto a che fare con patch non so come si creano. Qualcuno mi dà qualche dritta, così a che ci sono imparo qualcosa?
Esistono tool appositi?
Ultima modifica di tom il lun 27 dic 2010, 20:48, modificato 1 volta in totale.

Avatar utente
neongen
Packager
Packager
Messaggi: 827
Iscritto il: ven 25 mag 2007, 12:37
Nome Cognome: Enrico
Slackware: 14.0_64
Kernel: 3.4.4
Desktop: KDE 4.5.5
Distribuzione: Maemo 5
Contatta:

Re: Come creare una patch?

Messaggio da neongen »

diff(1)
es:

Codice: Seleziona tutto

 diff -Naur download_external_sources.sh download_external_sources.sh_nuovo  > ecco_una.patch 

Avatar utente
anycolouryoulike
Packager
Packager
Messaggi: 1158
Iscritto il: ven 10 ago 2007, 0:00
Slackware: 12.2
Kernel: 2.6.34.8
Desktop: KDE 3.5.10

Re: Come creare una patch?

Messaggio da anycolouryoulike »

Per una modifica del genere una patch mi sembra esagerata, io userei sed così:

Codice: Seleziona tutto

sed -i 's/\(GIT_TAG=`echo $OOO_SOURCEDIRNAME\).*/\1/' download_external_sources.sh

tom
Packager
Packager
Messaggi: 407
Iscritto il: dom 1 nov 2009, 12:53
Nome Cognome: Tommaso D'Anna
Slackware: 13.37
Kernel: 2.6.37.6
Desktop: xfce

Re: Come creare una patch?

Messaggio da tom »

@neongen: grazie mille, ho provato e sono riuscito con il comando diff a creare la patch in questione, tuttavia forse è preferibile il suggerimento di anycolouryoulike



@anycolouryoulike: ho provato con il tuo suggerimento, ma questo va a modificare la riga in questione in questo modo

Codice: Seleziona tutto

GIT_TAG=`echo $OOO_SOURCEDIRNAME
senza l'apostrofetto (non so come si chiama) alla fine ( ` ), ho provato a modificare con

Codice: Seleziona tutto

sed -i 's/\(GIT_TAG=`echo $OOO_SOURCEDIRNAME`\).*/\1/' download_external_sources.sh
ma non sortisce alcun effetto, come posso modificare?






EDIT: ho trovato da me la soluzione:

Codice: Seleziona tutto

sed -i 's/ | tr "a-z.-" "A-Z__"//' download_external_sources.sh
Grazie per avermi introdotto diff e sed.

Avatar utente
anycolouryoulike
Packager
Packager
Messaggi: 1158
Iscritto il: ven 10 ago 2007, 0:00
Slackware: 12.2
Kernel: 2.6.34.8
Desktop: KDE 3.5.10

Re: [RISOLTO] Come creare una patch?

Messaggio da anycolouryoulike »

tasodan ha scritto:@anycolouryoulike: ho provato con il tuo suggerimento, ma questo va a modificare la riga in questione in questo modo

Codice: Seleziona tutto

GIT_TAG=`echo $OOO_SOURCEDIRNAME
senza l'apostrofetto (non so come si chiama) alla fine ( ` ), ho provato a modificare con

Codice: Seleziona tutto

sed -i 's/\(GIT_TAG=`echo $OOO_SOURCEDIRNAME`\).*/\1/' download_external_sources.sh
ma non sortisce alcun effetto, come posso modificare?.
È vero, mi era sfuggito.
Quello che hai provato tu non modifica nulla perché la stringa da sostituire non viene trovata, e infatti così come l'hai scritta tu non c'è nel file.
Vedo che comunque hai risolto.
Per la cronaca, si poteva anche aggiungere così (anche se ora preferisco la tua soluzione):

Codice: Seleziona tutto

sed -i 's/\(GIT_TAG=`echo $OOO_SOURCEDIRNAME\).*/\1`/' download_external_sources.sh
Forse però con la tua soluzione è opportuno specificare anche il numero della linea, per evitare di eliminare altri eventuali tr siffatti dal file:

Codice: Seleziona tutto

sed -i '11s/ | tr "a-z.-" "A-Z__"//' download_external_sources.sh

Rispondi