[DWM]Patch (résolu)

Xorg, Compiz, KDE / Gnome / Xfce / Fluxbox / e17 / fvwm ... GDM/KDM/XDM...
Répondre
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

[DWM]Patch (résolu)

Message 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 :)
Dernière modification par shom le lun. 22 août 2011, 15:44, modifié 1 fois.
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch (en cours)

Message 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 ?
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [DWM]Patch

Message 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"
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch

Message 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 :)
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [DWM]Patch

Message 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
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch

Message 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 (

Code : Tout sélectionner

# abs community/dwm
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 !)
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [DWM]Patch

Message 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 ? :shock:
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... :mrgreen:
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... :mrgreen: ):

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() {
...
}
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [DWM]Patch

Message par tuxce »

shom a écrit : - télécharger la source et l'extraire dans .dwm/src

Code : Tout sélectionner

makepkg -o
fait cela très bien.
Pour le reste, FoolEcho a tout dit.
Avatar de l’utilisateur
Ypnose
Maître du Kyudo
Messages : 1363
Inscription : sam. 01 mai 2010, 13:17

Re: [DWM]Patch

Message 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:

Code : Tout sélectionner

patch -p1 < /patch/to/file.diff
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 :rtfm2:
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [DWM]Patch

Message 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)
«The following statement is not true. The previous statement is true.» :nage:
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch

Message par shom »

tuxce a écrit :
shom a écrit : - télécharger la source et l'extraire dans .dwm/src

Code : Tout sélectionner

makepkg -o
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
Dernière modification par FoolEcho le lun. 22 août 2011, 14:02, modifié 1 fois.
Raison : balise quote ouvrante manquante
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [DWM]Patch

Message 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:

Code : Tout sélectionner

.
|-- config.h
|-- dwm.desktop
|-- dwm.install
`-- PKGBUILD
ç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.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [DWM]Patch

Message 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 :chinois: , 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. :chinois:
«The following statement is not true. The previous statement is true.» :nage:
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch

Message 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 :)
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [DWM]Patch (résolu)

Message 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.
«The following statement is not true. The previous statement is true.» :nage:
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch (résolu)

Message par shom »

Oui mais le patch, patche le config.def.h
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [DWM]Patch (résolu)

Message 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"
«The following statement is not true. The previous statement is true.» :nage:
shom
Chu Ko Nu
Messages : 419
Inscription : jeu. 26 mai 2011, 22:44

Re: [DWM]Patch (résolu)

Message par shom »

Ah okay :) Autant pour moi ! Merci :)
Répondre