Search Linux Wireless

Some remarks about compat-wireless KBuild system

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Current compat-wireless build system has some inconveniences for distribution packaging:


- In Makefile, KLIB is set to /lib/modules/$(uname -r) which avoids compiling the stack
against a non-running kernel. In several other external kernel drivers this can be bypassed
by giving KERNELRELEASE=something to "make" but it's not working for compat-wireless.

- In gen_compat_autoconf.sh and config.mk there are two calls to $(MAKE) for determining KERNEL_SUBLEVEL:

(gen_compat_autoconf.sh) -> SUBLEVEL=$(make -C $KLIB_BUILD kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
(config.mk) -> KERNEL_SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')

The problem with that calls is that they're executing make in $KLIB_BUILD for version parsing which creates
temporary .tmp files in that directory causing sandboxed builds fail.

KERNELRELEASE=something should also allow bypassing those make calls with something like below:

if KERNELRELEASE is set
 SUBLEVEL=$(echo "@KERNELRELEASE@" | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')


- It's impossible to install the modules under a DESTDIR/BUILD_ROOT. KMODPATH_ARG in Makefile
can be used for this purpose but it's not set until the following condition is met:

ifneq ($(origin KLIB), undefined)
KMODPATH_ARG:=  "INSTALL_MOD_PATH=$(KLIB)"

I couldn't figure out the evaluation of the expression and simplified it in the following way in my package:

Index: compat-wireless-2010-01-06/Makefile
===================================================================
--- compat-wireless-2010-01-06.orig/Makefile
+++ compat-wireless-2010-01-06/Makefile
@@ -1,10 +1,6 @@
 export KMODDIR?=       updates
 KMODDIR_ARG:=   "INSTALL_MOD_DIR=$(KMODDIR)"
-ifneq ($(origin KLIB), undefined)
-KMODPATH_ARG:=  "INSTALL_MOD_PATH=$(KLIB)"
-else
-export KLIB:=          /lib/modules/$(shell uname -r)
-endif
+export KLIB:=          /lib/modules/$(shell uname -r)
 export KLIB_BUILD ?=	$(KLIB)/build
 # Sometimes not available in the path
 MODPROBE := /sbin/modprobe
@@ -12,6 +8,7 @@ MADWIFI=$(shell $(MODPROBE) -l ath_pci)
 OLD_IWL=$(shell $(MODPROBE) -l iwl4965)
 
 DESTDIR?=
+KMODPATH_ARG:=  "INSTALL_MOD_PATH=$(DESTDIR)"
 
 ifneq ($(KERNELRELEASE),)


This way calling 

make DESTDIR=/path/to/buildroot install

works correctly.


I may be misusing the kbuild system but just wanted to share these in case there's anything to be done
in upstream,

Thanks!
Ozan Caglayan
 

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux