Page 1 sur 1
[DWM]Patch (résolu)
Publié : dim. 21 août 2011, 21:17
par shom
Salut a tous

J'aurais besoin de votre aide pour appliquer un patch..
Au départ j'ai essayé flextile mais il est écrit que c'est pour la version 5.8 et j'utilise la 5.9.. Adieu flextile
Je pars alors sur Bottom stack :
http://dwm.suckless.org/patches/bottom_stack
Mais la de nouveaux problemes se créent..
- Je place le fichier dwm-5.9-bstack.diff dans le dossier ~/dwm (dossier dans lequel j'ai fait mon makepkg -i apres avoir télécharger le dossier avec abs)
- Lance un "patch -p1 < ./dwm-5.9-bstack.diff"
Et
Code : Tout sélectionner
patching file bstackhoriz.c
patching file config.h
Hunk #1 FAILED at 26.
(d'un autre coté, j'ai enormément commenté mon fichier)
- Je me dis que je peux ajouter les lignes manquantes a la main (sachant que les deux autres fichier ont été créés)
- J'ajoute donc les lignes
Code : Tout sélectionner
#include "bstack.c"
#include "bstackhoriz.c"
{ "TTT", bstack },
{ "===", bstackhoriz },
dans mon config.h comme indiqué dans le fichier .diff
- Mais quand je fais un makepkg -g >> PKGBUILD et un makepkg -efi --skipinteg (comme indiqué dans le wiki) j'obtiens un
Code : Tout sélectionner
==> Création du paquet dwm 5.9-2 (dim. août 21 21:12:56 CEST 2011)
==> Vérification des dépendances pour l'exécution...
==> Vérification des dépendances pour la compilation...
==> ATTENTION: Passe la récupération des sources -- utilise l'arbre src/ existant
==> ATTENTION: Passe la vérification des sources -- utilise l'arbre src/ existant
==> ATTENTION: Passe l'extraction des sources -- utilise l'arbre src/ existant
==> Suppression du répertoire pkg/ existant...
==> Lancement de build()...
dwm build options:
CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/include/X11 -DVERSION="5.9" -DXINERAMA
LDFLAGS = -s -L/usr/lib -lc -L/usr/lib/X11 -lX11 -L/usr/lib/X11 -lXinerama
CC = cc
CC dwm.c
In file included from dwm.c:280:0:
config.h:40:20: erreur fatale: bstack.c : Aucun fichier ou dossier de ce type
compilation terminée.
make: *** [dwm.o] Erreur 1
==> ERREUR: Une erreur s'est produite dans build().
Abandon...
PS : J'ai aussi essayer de faire les manips dans le dossier ./src/dwn-5.9 mais ca n'a rien donné..
PPS : Je cherche une option depuis que j'utilise dwm, vous pourrez peut etre m'aider, je cherche a changer la fenetre "master", la plus grande..
Merci

Re: [DWM]Patch (en cours)
Publié : dim. 21 août 2011, 21:46
par shom
Je viens de télécharger et patcher la version qui est sur le site de l'éditeur (au format .tar.gz). Elle fonctionne sans aucun probleme..
Pourquoi s'encombre de MAKEPKG et de commande compliqué ? Pourquoi cette technique n'est pas dispo dans le wiki ?
Re: [DWM]Patch
Publié : dim. 21 août 2011, 22:08
par tuxce
De quelle page de wiki parles tu ? "makepkg -g" suivi de "makepkg --skipinteg", ça sert à rien. De plus le "-e" ne récupère pas les sources et ne vérifie donc pas les sommes d'intégrité.
Sans "makepkg", tu installes un programme en dehors du gestionnaire de paquet.
Pour le patch, je saisis pas, tu postes un "patching config.h" alors que le patch en question ne concerne pas ce fichier.
Sinon, les modifications était à faire dans le "src/dwm-5.9"
Re: [DWM]Patch
Publié : dim. 21 août 2011, 22:18
par shom
Merci pour ta réponse

Je parlais de cette page de wiki
https://wiki.archlinux.org/index.php/Dwm
Mais ca a beaucoup d'importance si c'est installé en dehors du gestionnaire de paquets ?
Et c'est makepkg -g >> PKGBUILD et un makepkg
-efi --skipinteg (ce qu'il est marqué dans le wiki)
J'ai simplement appliqué le patch avec la commande que j'ai indiqué plus haut et cela n'a pas fonctionné..
Les commande makepkg etaient aussi a faire dans le dossier src/dwm-5.9 ? Dans ce cas la pourquoi s'encombre-t'on d'autres fichiers config.c ?
Merci encore

Re: [DWM]Patch
Publié : dim. 21 août 2011, 22:33
par tuxce
shom a écrit :
Mais ca a beaucoup d'importance si c'est installé en dehors du gestionnaire de paquets ?
Ca dépend de ton utilisation.
shom a écrit :Et c'est makepkg -g >> PKGBUILD et un makepkg -efi --skipinteg (ce qu'il est marqué dans le wiki)
Je saisis pas comment on peut arriver à utiliser un gestionnaire de fenêtre demandant des modifications de source en guise de configuration et ne pas se renseigner sur les commandes qu'on tape

le ">> ..." et le "-efi" ne changent
strictement rien à ce que j'ai dit avant.
shom a écrit :
J'ai simplement appliqué le patch avec la commande que j'ai indiqué plus haut et cela n'a pas fonctionné..
Ce patch :
http://dwm.suckless.org/patches/dwm-5.9-bstack.diff ne contient aucune référence à "config.h"
shom a écrit :
Les commande makepkg etaient aussi a faire dans le dossier src/dwm-5.9 ?
makepkg
Re: [DWM]Patch
Publié : dim. 21 août 2011, 23:51
par shom
Donc si j'ai bien compris, il faut
- télécharger la source et l'extraire dans .dwm/src
- Créer un fichier PKGBUILD a la main comme décrit dans le wiki ou en télécharger un avec abs (
mais ca me donne des ficheir config.h, dw.desktop, dwm.install en plus et je ne sais pas ce que je dois en faire)
- Compiler et installer avec la commande makepkg -e(pour utiliser ./src)-s(pour construire le paquet)-f(pour ecraser l'ancien paquet)-i(pour installer)
J'ai bon ?
Mais en quoi cela pourrait etre utile dans mon cas (utilisation simple) de l'installer via le gestionnaire de paquet ? Qu'est ce que cela apporte ? (si t'as des liens, des wiki, je suis preneur

)
Et effectivement, ce n'était pas config.h mais config.def.h, mais je m'étais emmeler les pinceaux entre tous mes fichiers (lorsque la commande me disait qu'elle ne trouvait pas de fichier config.def.h, je lui disais d'utiliser le fichier config.def.h), je ne comprends toujours pas a quoi cela sert, d'avoir un config.h avec le PKGBUILD, un lien symbolique dans src et un autre dans le dossier src/dwm-5.9, lequel est réelement utilisé ?
Je ne comprends pas non plus pourquoi tu dis que makepkg -efi ne sert a rien .. Il est pourtant sensé installer (-i !)
Re: [DWM]Patch
Publié : lun. 22 août 2011, 09:39
par FoolEcho
shom a écrit :- Compiler et installer avec la commande makepkg -e(pour utiliser ./src)-s(pour construire le paquet)-f(pour ecraser l'ancien paquet)-i(pour installer)
J'ai bon ?
'-s' est pour récupérer les dépendances manquantes.
shom a écrit :Mais en quoi cela pourrait etre utile dans mon cas (utilisation simple) de l'installer via le gestionnaire de paquet ? Qu'est ce que cela apporte ? (si t'as des liens, des wiki, je suis preneur

)
C'est
essentiel si tu veux conserver un système propre, c'est-à-dire ne pas avoir des bouts de fichiers dont tu ne sauras plus dans 6 mois à quoi les rattacher et pour pouvoir les gèrer facilement (les enlever par exemple ou résoudre des conflits de fichiers). Si tu utilises une application qu'au niveau de ton home, tu peux ne rien installer, mais si tu mets ça au niveau système, c'est un coup à mettre la pagaille («oh, le beau fichier déjà présent que je m'en vais écraser sans avertir»... «ah, bah, le machin d'à côté marche nettement moins bien maintenant»... ou pire).
shom a écrit :Je ne comprends pas non plus pourquoi tu dis que makepkg -efi ne sert a rien .. Il est pourtant sensé installer (-i !)
Tuxce ne parlait pas de -efi mais de -g puis --skipinteg: tu mets les sommes de contrôle, puis tu ne les utilises pas. Et pareil, tu pointes quel wiki ?
shom a écrit :je ne comprends toujours pas a quoi cela sert, d'avoir un config.h avec le PKGBUILD, un lien symbolique dans src et un autre dans le dossier src/dwm-5.9, lequel est réelement utilisé ?
Pour l'intérêt du config.h... ben faut voir ce qui en est fait...

Ce qui est utilisé: en théorie tout ce qui est contenu au niveau du PKGBUILD + les sources éventuelles.
EDIT: Pour appliquer ton patch (dwm-5.9-bstack.diff, à mettre dans le même répertoire que le PKGBUILD), apparemment il te suffit de modifier le PKGBUILD comme suit (je ne mets que ce qui change + répères... un diff quoi...

):
Code : Tout sélectionner
...
pkgrel=2
...
source=(http://dl.suckless.org/dwm/dwm-$pkgver.tar.gz
config.h
dwm.desktop
dwm-5.9-bstack.diff
)
md5sums=('2799f885c05817ca112d521bb247f797'
'f0ba59bf77a53e3a2fc8596740ee5cb8'
'939f403a71b6e85261d09fc3412269ee'
'58cb00cb3117025af64f065fddb2359e')
build() {
...
patch -Np1 < $srcdir/dwm-5.9-bstack.diff
make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
}
package() {
...
}
Re: [DWM]Patch
Publié : lun. 22 août 2011, 11:00
par tuxce
shom a écrit :
- télécharger la source et l'extraire dans .dwm/src
fait cela très bien.
Pour le reste, FoolEcho a tout dit.
Re: [DWM]Patch
Publié : lun. 22 août 2011, 11:34
par Ypnose
Si tu utilises des patches un peu exotiques, moi je te conseille de rester en 5.8.2 (c'est mon cas). Pour appliquer un patch:
Chope les sources via abs. Ensuite tu fais un makepkg tout court. Et ensuite tu modifies le config.h et là tu fais makepkg -efi
Et

Re: [DWM]Patch
Publié : lun. 22 août 2011, 13:09
par FoolEcho
Ypnose a écrit :Et ensuite tu modifies le config.h et là tu fais makepkg -efi
C'est bon pour tester si on est pas sûr de comment appliquer le patch ou pour débugguer, mais il est préférable que ça soit fait au niveau du PKGBUILD au bout du compte (maintenance, tout ça...).
(et en l'occurence, il n'y a pas de modification du config.h par le patch)
Re: [DWM]Patch
Publié : lun. 22 août 2011, 13:20
par shom
tuxce a écrit :shom a écrit :
- télécharger la source et l'extraire dans .dwm/src
fait cela très bien.
Oui mais il faut un PKGBUILD avant non ? Donc il faut d'abord faire abs community/dwm et ensuite makepkg -o ?
FoolEcho a écrit :Pour le reste, FoolEcho a tout dit.
J'ai bien etudié le PKGBUILD et le probleme c'est que mon patch patche plusieurs fichiers qui doivent etre situés dans src/dwl-5.9 MAIS : le config.h de src/dwm-5.9 et remplacé par celui avec PKGBUILD.
Donc si j'aplique le patch dans src/dwm5.9 le config.h est remplacé, et si j'applique le patch avec le PKGBUILD seul le config.h est patché
La solution était de patcher le config.h dans le PKGBUILD et de patcher les autres fichier dans src/dwm-5.9 OU de modifier le PKGBUILD, pour lui dire de ne pas remplacer le config.h des sources par celui avec le PKGBUILD..
Et je parlais du wiki
https://wiki.archlinux.org/index.php/Dwm
Re: [DWM]Patch
Publié : lun. 22 août 2011, 13:48
par tuxce
Tu tournes en rond

Tu parlais d'un PKBUILD, tu l'as mis en 2ème point après le téléchargement des sources, je t'ai juste indiqué que la 1ere étape n'était pas nécessaire car vu que tu as le PKGBUILD, "makepkg -o" s'en occupe.
Tu reparles de patcher le config.h, or le patch ne concerne pas ce fichier et de toute façon, dans le PKGBUILD que t'as fourni FoolEcho, la commande "patch" est lancée après la copie du "config.h" qui est avec le PKGBUILD, donc y a pas de double ou triple patch à faire.
Sinon juste pour parler de la même chose:
ça c'est les fichiers de l'
archive abs histoire de plus parler du "config.h dans le PKGBUILD"
Ce qui dans "./src/dwm-5.9", c'est les
sources de dwm.
Re: [DWM]Patch
Publié : lun. 22 août 2011, 14:00
par FoolEcho
shom a écrit :La solution était de patcher le config.h dans le PKGBUILD et de patcher les autres fichier dans src/dwm-5.9 OU de modifier le PKGBUILD, pour lui dire de ne pas remplacer le config.h des sources par celui avec le PKGBUILD..
Pour avoir regardé d'un peu plus près, il faut effectivement enlever la copie initiale du config.h

, afin que la première compilation en génére un correct à partir de config.def.h (le patch modifiant dwm.c et config.
def.h)... sinon, la compilation se baserait sur le config.h importé, qu'il faudrait aussi patcher... (pour t'en convaincre, fais différentes constructions avec/sans la copie du config.h avec/sans le patch et fais des diff sur le config.h initial et celui du src...)
Donc petite correction du PKGBUILD précédent:
Code : Tout sélectionner
pkgname=dwm
pkgver=5.9
pkgrel=3
pkgdesc="A dynamic window manager for X"
url="http://dwm.suckless.org"
arch=('i686' 'x86_64')
license=('MIT')
options=(zipman)
depends=('libx11' 'libxinerama')
install=dwm.install
source=(http://dl.suckless.org/dwm/dwm-$pkgver.tar.gz
dwm.desktop
dwm-5.9-bstack.diff
)
md5sums=('2799f885c05817ca112d521bb247f797'
'939f403a71b6e85261d09fc3412269ee'
'58cb00cb3117025af64f065fddb2359e')
build() {
cd $srcdir/$pkgname-$pkgver
sed -i 's/CPPFLAGS =/CPPFLAGS +=/g' config.mk
sed -i 's/^CFLAGS = -g/#CFLAGS += -g/g' config.mk
sed -i 's/^#CFLAGS = -std/CFLAGS += -std/g' config.mk
sed -i 's/^LDFLAGS = -g/#LDFLAGS += -g/g' config.mk
sed -i 's/^#LDFLAGS = -s/LDFLAGS += -s/g' config.mk
patch -Np1 < $srcdir/dwm-5.9-bstack.diff
make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
}
package() {
cd $srcdir/$pkgname-$pkgver
make PREFIX=/usr DESTDIR=$pkgdir install
install -m644 -D LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
install -m644 -D README $pkgdir/usr/share/doc/$pkgname/README
install -m644 -D $srcdir/dwm.desktop $pkgdir/usr/share/xsessions/dwm.desktop
}
Puis fais mumuse et dis-nous si ça fait ce que tu veux.

Re: [DWM]Patch
Publié : lun. 22 août 2011, 15:44
par shom
En fait, j'ai appliqué le patch directement dans les sources et effectivement ca marche bien

Merci
Et j'ai ajouté une ligne dans le PKGBUILD pour copier le config.def.h en config.h
Merci encore

Re: [DWM]Patch (résolu)
Publié : lun. 22 août 2011, 16:50
par FoolEcho
shom a écrit :Et j'ai ajouté une ligne dans le PKGBUILD pour copier le config.def.h en config.h
Y a pas besoin de le copier, appliquer le patch est suffisant (
à la condition justement qu'il n'y ait pas le config.h de départ, non patché sinon c'est lui qui sert lors des compilations). Regarde le PKGBUILD précédent: il faut simplement enlever la ligne du cp config.h.
Re: [DWM]Patch (résolu)
Publié : lun. 22 août 2011, 19:04
par shom
Oui mais le patch, patche le config.def.h
Re: [DWM]Patch (résolu)
Publié : lun. 22 août 2011, 19:42
par FoolEcho
Ooouuuuuuiiiiii, mais quand tu compiles une première fois sans avoir aucun config.h, c'est justement le config.def.h qui te sert de base.
Fais donc l'essai du dernier PKGBUILD que je t'ai proposé et tu verras qu'au final il y aura bien un config.h... celui issu du config.def.h patché.
En substance:
Code : Tout sélectionner
$ makepkg -srf
==> Création du paquet dwm 5.9-3 (lun. août 22 19:37:44 CEST 2011)
==> Vérification des dépendances pour l'exécution...
==> Vérification des dépendances pour la compilation...
==> Récupération des sources...
-> dwm-5.9.tar.gz trouvé
-> dwm.desktop trouvé
-> dwm-5.9-bstack.diff trouvé
==> Validation des fichiers sources avec md5sums...
dwm-5.9.tar.gz ... Réussite
dwm.desktop ... Réussite
dwm-5.9-bstack.diff ... Réussite
==> Extraction des sources...
-> Extraction de dwm-5.9.tar.gz avec bsdtar
==> Lancement de build()...
patching file bstack.c
patching file bstackhoriz.c
patching file config.def.h
creating config.h from config.def.h
dwm build options:
CC dwm.c
CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/include/X11 -DVERSION="5.9" -DXINERAMA
LDFLAGS = -s -L/usr/lib -lc -L/usr/lib/X11 -lX11 -L/usr/lib/X11 -lXinerama
CC = cc
CC -o dwm
==> Entre dans l'environnement fakeroot...
==> Lancement de package()...
dwm build options:
CFLAGS = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/X11R6/include -DVERSION="5.9" -DXINERAMA
LDFLAGS = -s -L/usr/lib -lc -L/usr/X11R6/lib -lX11 -L/usr/X11R6/lib -lXinerama
CC = cc
installing executable file to /home/ylange/abs/dwm/pkg/usr/bin
installing manual page to /home/ylange/abs/dwm/pkg/usr/share/man/man1
==> Nettoyage de l'installation...
-> Suppression d'autres fichiers...
-> Compression des pages de man/info...
-> Strip des symboles inutiles dans les binaires et les bibliothèques...
==> Création du paquet...
-> Génération du fichier .PKGINFO...
-> Ajout du fichier install...
-> Compression du paquet...
==> Quitte l'environnement fakeroot.
==> Création finie: dwm 5.9-3 (lun. août 22 19:37:50 CEST 2011)
Note bien la ligne qui suit le build après application du patch:
"creating config.h from config.def.h"
Re: [DWM]Patch (résolu)
Publié : lun. 22 août 2011, 22:40
par shom
Ah okay

Autant pour moi ! Merci
