Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[ebuild] sed dans un ebuild (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
GentooUser@Clubic
l33t
l33t


Joined: 01 Nov 2004
Posts: 829

PostPosted: Sun Jun 26, 2016 9:38 pm    Post subject: [ebuild] sed dans un ebuild (résolu) Reply with quote

Salut,

J’essaie de créer un ebuild pour le pilote de ma clé wifi afin d'en faciliter la MàJ à même temps que le noyau grâce à la commande emerge @module-rebuild

Mon ebuild fonctionne, mais il se compile pour la version courante du noyau au lieu de celle dans /usr/src/linux (ce qui limite l’intérêt), pire il se compile pour la version courante et s'installe dans le /lib/modules de la nouvelle version...

Pour corriger ça, je doit modifier deux valeurs dans le fichier Makefile et j'utilise sed pour ça, mais :
- Si j’exécute sed manuellement dans le dossier source du module, cela fonctionne parfaitement
- Si je met la même commande dans la fonction src_prepare de mon ebuild elle ne fonctionne plus (le Makefile reste tel-quel)

J'ai essayé d'enlever le -i pour que sed retourne la Makefile après traitement dans le terminal et je constate qu'il arrive bien à le lire mais ne le modifie pas (le fichier n'est pas restauré plus tard par emerge donc)
J'ai aussi modifié mon ebuild pour qu'il affiche la version de sed utilisée, et c'est bien la même que j'utilise manuellement.

l'ebuild : https://raw.githubusercontent.com/g-maxime/rtl8723bu-ebuild/master/net-wireless/rtl8723bu/rtl8723bu-9999.ebuild


Last edited by GentooUser@Clubic on Tue Jun 28, 2016 2:47 pm; edited 1 time in total
Back to top
View user's profile Send private message
guitou
Guru
Guru


Joined: 02 Oct 2003
Posts: 389
Location: France

PostPosted: Mon Jun 27, 2016 5:25 pm    Post subject: Reply with quote

Salut.

A mon avis, c'est un tout bete souci de repertoire courant. un "cd /la/ou/il/faut" avant le sed devrait suffire a le regler ;)

++
Gi)
Back to top
View user's profile Send private message
El_Goretto
Moderator
Moderator


Joined: 29 May 2004
Posts: 3084
Location: Paris

PostPosted: Tue Jun 28, 2016 9:18 am    Post subject: Reply with quote

Effectivement, il doit y avoir une cagade toute bête, car par exemple l'ebuild de gradm modifie aussi son Makefile:
Code:
src_prepare() {
    epatch "${FILESDIR}"/respect-gentoo-env-r3.patch
    sed -i -e "s:/lib/udev:$(get_udevdir):" Makefile || die
    eapply_user
}

Plutôt que de faire un cd avec un path absolu qui risque de péter dans un futur indéterminé, il vaut mieux utiliser sed directement avec le path relatif qui va bien.
_________________
-Gentoo hardened [EoL]: µ-serv Gen8 G1610T, 8Go ECC ; NF9D-2700, 4Go
-FreeBSD 11/Vimage/Jails: DS61, i3 2100T, 16Go ; FreeNAS: µ-serv N40L, 8Go ECC
-Réseau: ERL-3 + ESL-24 + GS108Tv2
-NAS: RN312
Back to top
View user's profile Send private message
netfab
Veteran
Veteran


Joined: 03 Mar 2005
Posts: 1677
Location: 127.0.0.1

PostPosted: Tue Jun 28, 2016 2:15 pm    Post subject: Reply with quote

Salut,

Note que tu tu peux effectuer les deux substitutions en une seule commande :
Code:

--- /tmp/rtl8723bu-9999.ebuild  2016-06-28 15:45:04.774022633 +0200
+++ rtl8723bu-9999.ebuild       2016-06-28 16:03:34.732072160 +0200
@@ -23,10 +23,11 @@
 
 src_prepare() {
        set_arch_to_kernel
-       sed -i -e "s/^SUBARCH\s\+:=.*$/SUBARCH := ${ARCH}/" Makefile || die
+       sed -i.bak \
+               -e "s/^SUBARCH\s\+:=.*$/SUBARCH := ${ARCH}/" \
+               -e "s/^KVER\s\+:=.*$/KVER := ${KV_FULL}/" \
+               Makefile || die "sed failed !"
        set_arch_to_portage
-
-       sed -i -e "s/^KVER\s\+:=.*$/KVER := ${KV_FULL}/" Makefile  || die
 }
 
 pkg_setup() {

Le -i.bak de sed permet de créer automatiquement une copie de backup du fichier modifié.

Après, un :
Code:

$ ebuild rtl8723bu-9999.ebuild prepare



Je compare les deux makefiles :
Code:

--- Makefile.bak        2016-06-28 16:00:51.737064887 +0200
+++ Makefile    2016-06-28 16:00:51.948064896 +0200
@@ -250,10 +250,10 @@
 EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
 EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT # only enable when kernel >= 3.2
 EXTRA_CFLAGS += -DCONFIG_P2P_IPS
-SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ | sed -e s/ppc/powerpc/ | sed -e s/armv.l/arm/)
+SUBARCH := x86
 ARCH ?= $(SUBARCH)
 CROSS_COMPILE ?=
-KVER  := $(shell uname -r)
+KVER := 4.4.6
 KSRC := /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=


Çà fonctionne, non ?
Back to top
View user's profile Send private message
GentooUser@Clubic
l33t
l33t


Joined: 01 Nov 2004
Posts: 829

PostPosted: Tue Jun 28, 2016 2:44 pm    Post subject: Reply with quote

guitou wrote:
Salut.

A mon avis, c'est un tout bete souci de repertoire courant. un "cd /la/ou/il/faut" avant le sed devrait suffire a le regler ;)

++
Gi)


En fait dans un précédente version j'ai ${D}/Makefile mais en fait pas besoin, la fonction src_prepare s’exécute dans le bon dossier. Comme je le dit dans mon message, sed arrive bien à lire le fichier pas de problème de ce coté.

netfab wrote:
Salut,

Note que tu tu peux effectuer les deux substitutions en une seule commande :
Code:

--- /tmp/rtl8723bu-9999.ebuild  2016-06-28 15:45:04.774022633 +0200
+++ rtl8723bu-9999.ebuild       2016-06-28 16:03:34.732072160 +0200
@@ -23,10 +23,11 @@
 
 src_prepare() {
        set_arch_to_kernel
-       sed -i -e "s/^SUBARCH\s\+:=.*$/SUBARCH := ${ARCH}/" Makefile || die
+       sed -i.bak \
+               -e "s/^SUBARCH\s\+:=.*$/SUBARCH := ${ARCH}/" \
+               -e "s/^KVER\s\+:=.*$/KVER := ${KV_FULL}/" \
+               Makefile || die "sed failed !"
        set_arch_to_portage
-
-       sed -i -e "s/^KVER\s\+:=.*$/KVER := ${KV_FULL}/" Makefile  || die
 }
 
 pkg_setup() {

Le -i.bak de sed permet de créer automatiquement une copie de backup du fichier modifié.

Après, un :
Code:

$ ebuild rtl8723bu-9999.ebuild prepare



Je compare les deux makefiles :
Code:

--- Makefile.bak        2016-06-28 16:00:51.737064887 +0200
+++ Makefile    2016-06-28 16:00:51.948064896 +0200
@@ -250,10 +250,10 @@
 EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211
 EXTRA_CFLAGS += -DRTW_USE_CFG80211_STA_EVENT # only enable when kernel >= 3.2
 EXTRA_CFLAGS += -DCONFIG_P2P_IPS
-SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ | sed -e s/ppc/powerpc/ | sed -e s/armv.l/arm/)
+SUBARCH := x86
 ARCH ?= $(SUBARCH)
 CROSS_COMPILE ?=
-KVER  := $(shell uname -r)
+KVER := 4.4.6
 KSRC := /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 INSTALL_PREFIX :=


Çà fonctionne, non ?


En effet, non seulement ça à l'air de fonctionner mais je n'arrive plus à le casser :lol: J'ai l'impression que j'ai un petit problème avec mon environnement de build. Merci !
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum