problème pour appliquer un patch a dwm

Bonjour à tous,

J’ai un petit soucis pour appliquer un patch a dwm.

Je vous explique comment j’ai procédé :
J’ai télécharger les sources ainsi que le patch suivant : dwm.suckless.org/patches/systray (dwm-6.0-systray.diff)

Je me suis ensuite placé dans le dossier contenant la source que j’ai télé chargé et j’y ai appliqué le patch de cette manière : patch -p1 < chemin/vers/le/patch.diff

Jusque la tout s’est bien passé. J’ai donc lancé la compilation de cette manière : dpkg-buildpackage -rfakeroot -uc -b

C’est la que ça pose problème :

[code]$ dpkg-buildpackage -rfakeroot -uc -b
dpkg-buildpackage: paquet source dwm
dpkg-buildpackage: version source 6.0-4
dpkg-buildpackage: source changé par Vasudev Kamath kamathvasudev@gmail.com
dpkg-buildpackage: architecture hôte amd64
dpkg-source --before-build dwm-6.0
dpkg-source: info: utilisation des options depuis dwm-6.0/debian/source/options : --compression=gzip --compression-level=9
fakeroot debian/rules clean
dh clean
dh_testdir
debian/rules override_dh_auto_clean
make[1]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
rm -f config.h
/usr/bin/make clean
make[2]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
cleaning
rm -f dwm dwm.o dwm-6.0.tar.gz
make[2]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
make[1]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
dh_clean
debian/rules build
dh build
dh_testdir
dh_auto_configure
dh_auto_build
make[1]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
dwm build options:
CFLAGS = -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA
LDFLAGS = -Wl,-z,relro -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
CC = cc
creating config.h from config.def.h
cp config.def.h config.h
CC dwm.c
cc -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA dwm.c
dwm.c: In function ‘keypress’:
dwm.c:1194:2: warning: ‘XKeycodeToKeysym’ is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
CC -o dwm
cc -o dwm dwm.o -Wl,-z,relro -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
make[1]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
dh_auto_test
fakeroot debian/rules binary
dh binary
dh_testroot
dh_prep
dh_installdirs
debian/rules override_dh_auto_install
make[1]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
/usr/bin/make install DESTDIR=/home/matthieu/dwm/dwm-6.0/debian/dwm PREFIX=/usr
make[2]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
dwm build options:
CFLAGS = -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA
LDFLAGS = -Wl,-z,relro -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
CC = cc
creating config.h from config.def.h
cp config.def.h config.h
CC dwm.c
cc -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA dwm.c
dwm.c: In function ‘keypress’:
dwm.c:1194:2: warning: ‘XKeycodeToKeysym’ is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
CC -o dwm
cc -o dwm dwm.o -Wl,-z,relro -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
make[1]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
dh_auto_test
fakeroot debian/rules binary
dh binary
dh_testroot
dh_prep
dh_installdirs
debian/rules override_dh_auto_install
make[1]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
/usr/bin/make install DESTDIR=/home/matthieu/dwm/dwm-6.0/debian/dwm PREFIX=/usr
make[2]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
dwm build options:
CFLAGS = -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA
LDFLAGS = -Wl,-z,relro -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
CC = cc
installing executable file to /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/bin
mkdir -p /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/bin
cp -f dwm /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/bin
chmod 755 /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/bin/dwm
installing manual page to /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/share/man/man1
sed « s/VERSION/6.0/g » < dwm.1 > /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/share/man/man1/dwm.1
chmod 644 /home/matthieu/dwm/dwm-6.0/debian/dwm/usr/share/man/man1/dwm.1
make[2]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
mv debian/dwm/usr/bin/dwm debian/dwm/usr/bin/dwm.default
ln -s dwm.1.gz debian/dwm/usr/share/man/man1/dwm.default.1.gz

Building alternatives

for ALTERNATIVE in debian/local/config.*.h;
do
/usr/bin/make clean;
cp ${ALTERNATIVE} config.h;
CFLAGS="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security" /usr/bin/make PREFIX=/usr;
install -m 0755 dwm debian/dwm/usr/bin/dwm.basename ${ALTERNATIVE} | cut -d'.' -f 2;
ln -s dwm.1.gz debian/dwm/usr/share/man/man1/dwm.basename ${ALTERNATIVE} | cut -d'.' -f 2.1.gz;
done
make[2]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
cleaning
rm -f dwm dwm.o dwm-6.0.tar.gz
make[2]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
make[2]: entrant dans le répertoire « /home/matthieu/dwm/dwm-6.0 »
dwm build options:
CFLAGS = -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA
LDFLAGS = -Wl,-z,relro -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
CC = cc
CC dwm.c
cc -c -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -std=c99 -pedantic -Wall -I. -I/usr/include -I/usr/X11R6/include -D_FORTIFY_SOURCE=2 -DVERSION=« 6.0 » -DXINERAMA dwm.c
dwm.c: In function ‘cleanup’:
dwm.c:536:5: error: ‘showsystray’ undeclared (first use in this function)
dwm.c:536:5: note: each undeclared identifier is reported only once for each function it appears in
dwm.c: In function ‘clientmessage’:
dwm.c:579:5: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘drawbar’:
dwm.c:833:6: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘getsystraywidth’:
dwm.c:1067:5: error: ‘showsystray’ undeclared (first use in this function)
dwm.c:1068:42: error: ‘systrayspacing’ undeclared (first use in this function)
dwm.c:1068:56: warning: left-hand operand of comma expression has no effect [-Wunused-value]
dwm.c: In function ‘keypress’:
dwm.c:1194:2: warning: ‘XKeycodeToKeysym’ is deprecated (declared at /usr/include/X11/Xlib.h:1695) [-Wdeprecated-declarations]
dwm.c: In function ‘removesystrayicon’:
dwm.c:1471:6: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘resizebarwin’:
dwm.c:1489:5: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘togglebar’:
dwm.c:1909:5: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘updatebars’:
dwm.c:2023:6: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘updatesystrayiconstate’:
dwm.c:2235:6: error: ‘showsystray’ undeclared (first use in this function)
dwm.c: In function ‘updatesystray’:
dwm.c:2264:6: error: ‘showsystray’ undeclared (first use in this function)
dwm.c:2294:8: error: ‘systrayspacing’ undeclared (first use in this function)
dwm.c: In function ‘wintosystrayicon’:
dwm.c:2383:6: error: ‘showsystray’ undeclared (first use in this function)
make[2]: *** [dwm.o] Erreur 1
make[2]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
make[1]: *** [override_dh_auto_install] Erreur 2
make[1]: quittant le répertoire « /home/matthieu/dwm/dwm-6.0 »
make: *** [binary] Erreur 2
dpkg-buildpackage: erreur: fakeroot debian/rules binary a produit une erreur de sortie de type 2[/code]

Voici le retour que j’ai lors de la compilation.

On voit qu’il a plusieurs erreur de variables non déclarées apparemment.

Donc ma question : d’ou vient ce problème? Est ce que j’ai mal fait quelque chose?

Ton erreur est de vouloir reconstruire un paquet à partir d’une archive .tar.gz banale. Pour faire un paquet, utilise les sources de debian, qui sont en fait les mêmes que le .tar.gz mais avec les instructions pour construire un paquet.

PEtit résumé :
Récupération des sources

Application du patch

cd dwm* patch -p1 < chemin/vers/le/patch.diff

Reconstruction du paquet

Je pars bien des sources, mais ça ne fonctionne pas.

Il y’a surement une étape que je fais mal, mais je ne vois pas laquelle…

Voici pas à pas, ce que j’ai fais :

~$ mkdir dwm dwm/source dwm/patch ~$ cd dwm/source/ ~/dwm/source$ apt-get source dwm
La je télécharge le patch dans le répertoire patch.

~/dwm/source$ cd ~/dwm/patch/ ~/dwm/patch$ ls dwm-6.0-systray.diff

Puis j’applique le patch :

~/dwm/patch$ cd ~/dwm/source/dwm-6.0/ ~/dwm/source/dwm-6.0$ patch -p1 < ~/dwm/patch/dwm-6.0-systray.diff patching file config.def.h patching file dwm.c

A ce moment la je compile :

~/dwm/source/dwm-6.0$ dpkg-buildpackage -rfakeroot -uc -b

Et j’ai la compile qui plante, comme je l’ai marqué dans mon premier post.

Je pense pourtant que ma méthode est bonne. Si ce n’est pas le cas dites moi ce que je fais mal.

Merci

Non, ta méthode est bonne alors.
On dirait plutôt que c’est à cause du patch. Il doit avoir un souci, qui empêche la compilation.
Il indique entre autre que les fonctions ne sont pas déclarées…

À tout hasard, tu n’as pas de config.h, mais seulement un config.def.h?

Message a supprimer : merci

Je n’utilise pas de config.h. Le problème vient t’il de la?

Si j’ai un config.def.h et un config.h et que je fais mes modifs dans le config.h celles-ci ne sont pas prises en compte. Par contre si je fais mes modifs dans le config.def.h celle-ci sont bien prises en compte.

C’est pour ça que je n’ai pas de config.h.

[quote=“Arisoy”]Je n’utilise pas de config.h. Le problème vient t’il de la?

Si j’ai un config.def.h et un config.h et que je fais mes modifs dans le config.h celles-ci ne sont pas prises en compte. Par contre si je fais mes modifs dans le config.def.h celle-ci sont bien prises en compte.

C’est pour ça que je n’ai pas de config.h.[/quote]
Exact, je demandais au cas où.

J’ai testé sur ma machine, et y suis parvenu malgré tout. Tu appliques la patch 1 fois. Tu refais le paquet -> erreur. Tu appliques à nouveau le patch, en autorisant la réécriture (y). Refaire le paquet -> ça marche.

Moi pas comprendre par contre.

[quote=“Arisoy”]Je n’utilise pas de config.h. Le problème vient t’il de la?
Si j’ai un config.def.h et un config.h et que je fais mes modifs dans le config.h celles-ci ne sont pas prises en compte. Par contre si je fais mes modifs dans le config.def.h celle-ci sont bien prises en compte.
C’est pour ça que je n’ai pas de config.h.[/quote]
Ca c’est normal, dans ton makefile tu as “cp config.def.h config.h”

[quote]# Building alternatives
for ALTERNATIVE in debian/local/config.*.h;
do
/usr/bin/make clean;
cp ${ALTERNATIVE} config.h;
[/quote]
Je pense que ton problème vient de là.
Essaye en patchant le fichier dans debian/local car le config.h ne contient pas les refs du patchs.

@thuban
Peux-tu vérifier si ta compil la 2nde fois est repartie du début ou si elle a repris au niveau de l’erreur?
Je pense qu’elle est repartie au niveau de l’erreur car le fait de repatcher ce config.h a débloqué le problème.

[quote=“sebB”]
Peux-tu vérifier si ta compil la 2nde fois est repartie du début ou si elle a repris au niveau de l’erreur?
Je pense qu’elle est repartie au niveau de l’erreur car le fait de repatcher ce config.h a débloqué le problème.[/quote]
Normalement c’est le config.def.h qui est parché, pas le config.h.

Après essai : ça reprend bien du début.

En effet cela fonctionne.

Moi non plus…

[quote=“Arisoy”]

Moi non plus…[/quote]
Et moi aimerai
Peux-tu poster le log de la compil au 2ème passage.

Peux-tu vérifier que quand tu patche pour la 2ème fois les fichiers ne le sont pas déjà.