View previous topic :: View next topic |
Author |
Message |
GentooUser@Clubic l33t
Joined: 01 Nov 2004 Posts: 829
|
Posted: Sun Jun 26, 2016 9:38 pm Post subject: [ebuild] sed dans un ebuild (résolu) |
|
|
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 |
|
|
guitou Guru
Joined: 02 Oct 2003 Posts: 534 Location: France
|
Posted: Mon Jun 27, 2016 5:25 pm Post subject: |
|
|
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 |
|
|
El_Goretto Moderator
Joined: 29 May 2004 Posts: 3169 Location: Paris
|
Posted: Tue Jun 28, 2016 9:18 am Post subject: |
|
|
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. _________________ -TrueNAS & jails: µ-serv Gen8 E3-1260L, 16Go ECC + µ-serv N40L, 10Go ECC
-Réseau: APU2C4 (OpenWRT) + GS726Tv3 + 2x GS108Tv2 + Archer C5v1 (OpenWRT) |
|
Back to top |
|
|
netfab Veteran
Joined: 03 Mar 2005 Posts: 1891 Location: 127.0.0.1
|
Posted: Tue Jun 28, 2016 2:15 pm Post subject: |
|
|
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 |
|
|
GentooUser@Clubic l33t
Joined: 01 Nov 2004 Posts: 829
|
Posted: Tue Jun 28, 2016 2:44 pm Post subject: |
|
|
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 J'ai l'impression que j'ai un petit problème avec mon environnement de build. Merci ! |
|
Back to top |
|
|
|
|
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
|
|