Pagina 1 di 3
SlackBuild e patch
Inviato: sab 27 ago 2005, 19:45
da elettronicha
Vorrei pacchettizzare una CVS di amule (la CVS-20050727) per la quale ho anche la patch per Adunanza. Per applicare la patch, dall'interno della directory dei sorgenti scompattata, mi sembra dovrei dare il comando
Codice: Seleziona tutto
zcat amule-adunanza-2.0.3+cvs20050727-1.patch.gz | patch -p0
Che modifiche vanno apportate allo SlackBuild che è presente qui sul sito per l'applicazione della patch?
Grazie.
Inviato: sab 27 ago 2005, 20:13
da Loris
La patch la tieni vicino al file sorgente, slack-desc e SlackBuil.
Dopo il tar... inserichi una stringa come questa
Codice: Seleziona tutto
zcat $CWD/tuapatch.diff.gz | patch -p1 -E --backup --verbose
Inviato: sab 27 ago 2005, 20:30
da elettronicha
La mia patch termina in ".patch.gz" e non in ".diff.gz". Devo scrivere comunque .........miapatch.diff.gz?
Da dove ho preso la patch dicono di dare l'opzione -p0. Ho letto il man ma non ho ben capito la differenza tra p0 e p1; deve avere a che fare col percorso in cui è posizionata la patch e con la directory in cui mi trovo, per cui se la metto dentro il sorgente è 0, se sul primo livello superiore è 1?
Inviato: sab 27 ago 2005, 21:00
da samiel
Devi ovviamente lasciare la tua estenzione,
altrimenti zcat non trova il file
Per quanto riguarda il flag -p, esso serve
a togliere un numero stabilito slash di separazione
all'interno dei percorsi indicati per i file
a cui vanno applicate le modifiche.
In pratica, si risale ogin volta di una dir.
Ciò è necessario in presenza di file di differenze
in cui le informazioni sui file contengono un percorso.
Quando invece le differenza queste vengono applicate
in un contesto equivalente a quello nel quale sono state
generate, si usa l'opzione -p0, che indica
il mantenimento della situazione attuale.
Ad es., se nel nel file di differenze si fa riferimento
al file x/y/z/prova, significa che le modifiche relative
vanno applicate localmente al file y/z/prova.
Se però nel file di differenze si facesse riferimento
al file ./x/y/z/prova, eliminando la slash
non si otterrebbe alcun cambiamento,
perché ciò produrrebbe il percorso x/y/z/prova,
uguale al primo.
M.
Inviato: sab 27 ago 2005, 21:41
da elettronicha
Va bene. Ora vediamo qui:
Codice: Seleziona tutto
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Using version in current directory: 2.0.3+cvs20050727
|Current version is: 2.0.3+cvs20050727
|Diffing against tag: upstream_version_2_0_3_cvs20050727
|Index: debian/README.Debian
|===================================================================
|RCS file: debian/README.Debian
|diff -N debian/README.Debian
|--- /dev/null 1 Jan 1970 00:00:00 -0000
|+++ debian/README.Debian 27 Jul 2005 16:27:23 -0000 1.1.118.1
--------------------------
Patching file README.Debian using Plan A...
Hunk #1 succeeded at 1.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: debian/amule-adunanza.dirs
|===================================================================
|RCS file: debian/amule-adunanza.dirs
|diff -N debian/amule-adunanza.dirs
|--- /dev/null 1 Jan 1970 00:00:00 -0000
|+++ debian/amule-adunanza.dirs 27 Jul 2005 16:27:23 -0000 1.1.28.1
--------------------------
Patching file amule-adunanza.dirs using Plan A...
Hunk #1 succeeded at 1.
....
....
....
....
.... /* SERIE LUNGA DI MESSAGGI DELLO STESSO TIPO ! */
....
....
....
....
Hmm... The next patch looks like a unified diff to me...
can't find file to patch at input line 1865
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Index: src/BaseClient.cpp
|===================================================================
|RCS file: /projects/amule/src/BaseClient.cpp,v
|retrieving revision 1.1.1.41
|retrieving revision 1.1.1.41.2.1
|diff -u -r1.1.1.41 -r1.1.1.41.2.1
|--- src/BaseClient.cpp 23 Jul 2005 05:30:46 -0000 1.1.1.41
|+++ src/BaseClient.cpp 27 Jul 2005 16:27:25 -0000 1.1.1.41.2.1
--------------------------
File to patch:
Ho messo un commento in mezzo al codice tagliando un po' di messaggi. Alla fine si aspetta che io gli dica il file da patchare.
Se può servire ho usato questo:
Codice: Seleziona tutto
#!/bin/sh
# Heavily based on the Slackware 10.1 SlackBuild
# http://www.amule.org/
CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi
PKG=$TMP/package-aMule
NAME=aMule
VERSION=CVS-20050727
ARCH=${ARCH:-i486}
BUILD=1ac
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mcpu=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
fi
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi
cd $TMP
mkdir -p $PKG/usr
tar xjvf $CWD/$NAME-$VERSION.tar.bz2
zcat $CWD/amule-adunanza-2.0.3+cvs20050727-1.patch.gz | patch -p1 -E --backup --verbose
cd $NAME-$VERSION
chown -R root.root .
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure --prefix=/usr \
--with-wx-config=/usr/bin/wx-config \
--disable-debug \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
e inoltre:
root@localhost:/home/elettro/packages/amule/CVS# ls -l
total 2410
-rw-r--r-- 1 elettro users 2416555 2005-08-27 16:57 aMule-CVS-20050727.tar.bz2
-rw-r--r-- 1 elettro users 1540 2005-08-27 21:32 aMule.SlackBuild
-rw-r--r-- 1 elettro users 1540 2005-08-27 20:41 aMule.SlackBuild~
-rw-r--r-- 1 elettro users 28812 2005-08-27 16:57 amule-adunanza-2.0.3+cvs20050727-1.patch.gz
-rw-r--r-- 1 elettro users 150 2005-08-27 17:00 amule.desktop
-rw-r--r-- 1 elettro users 928 2005-08-27 16:59 slack-desc
root@localhost:/home/elettro/packages/amule/CVS#
Penso di essere stato esaustivo, sebbene prolisso.

Inviato: dom 28 ago 2005, 2:19
da useless
prova a spostare lo zcat dopo il comando cd. se ancora non va prova valori di -p diversi: -p0, -p1, -p2 (anche se direi che -p0 è quello giusto).
Inviato: dom 28 ago 2005, 11:26
da elettronicha
Per evitare casini ho fatto come segue. Ho estratto il mio aMule-CVS-20050727.tar.bz2 a mano, ho copiato dentro la patch e l'ho applicata con
zcat amule-adunanza-2.0.3+cvs20050727-1.patch.gz | patch -p0
come dicono sul sito della patch. Ho ricompresso in tar.bz2, avendo però corretto il nome della directory principale dell'archivio, poiché mi dava solo amule-cvs, mentre serviva un aMule-CVS-20052707 stando a quanto riportato nello Slackbuild.
Rilancio lo stesso SlackBuild di Lorys, sembra tutto a posto ma... il tgz creato non contiene /bin con i binari.
Ora riprovo aggiungendo come suggeriva Lorys
-E --backup --verbose
Inviato: lun 29 ago 2005, 12:49
da elettronicha
Aggiornamento:
Ho usato questa porzione di SlackBuild, con zcat ... dopo il tar ... e il successivo cd ... :
Codice: Seleziona tutto
CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi
PKG=$TMP/package-aMule
NAME=aMule
VERSION=CVS-20050728
ARCH=${ARCH:-i486}
BUILD=1ac
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mcpu=i686"
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
fi
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi
cd $TMP
mkdir -p $PKG/usr
tar xjvf $CWD/$NAME-$VERSION.tar.bz2
cd $NAME-$VERSION
zcat $CWD/amule-adunanza-2.0.3+cvs20050727-1.patch.gz | patch -p0 /*QUI IL COMANDO PER APPLICARE PATCH*/
Ad un primo momento sembra andare tutto bene, ma il pacchetto creato continua a non avere /bin e il bello è che se compilo i sorgenti con lo SlackBuild senza il zcat ..., ossia se non applico la patch, i binari vengono creati!! Deduco che o sbaglio io o la patch incasina tutto.
Inviato: lun 29 ago 2005, 13:05
da Loris
Dimmi dove prendere la pezza.
Inviato: lun 29 ago 2005, 13:08
da elettronicha
Inviato: lun 29 ago 2005, 13:30
da Loris
No scherzi

io mi scoccio solo al lavoro dopo 8 ore di telefono e grane

per me questo è un piacere, altrimenti non rispondevo neppure al tuo post

Inviato: lun 29 ago 2005, 13:35
da Loris
Cavolo che sfiga

i sorgenti 20050727 non si recuperano, partono dal 20050728 in su 8O me li mandi per posta ?
Inviato: lun 29 ago 2005, 14:16
da elettronicha
Doh! L'ho cancellato!

... Fino a ieri c'era quello del 20052707, solo che ora leggo:
Notice that tarballs get removed after 30 days.
Pazienza, fa niente. Grazie ugualmente.
Inviato: lun 29 ago 2005, 19:29
da Loris
Ma che sfiga

Inviato: mer 31 ago 2005, 15:31
da delonghilongo
dammi la mail:)
comunque a me funzia ma si blocca,