linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] scripts: Extract kernel headers for out of tree modules build
@ 2015-08-19  6:50 Daniel Baluta
  2015-08-19 12:50 ` Michal Marek
  2015-08-19 19:09 ` Ken Moffat
  0 siblings, 2 replies; 4+ messages in thread
From: Daniel Baluta @ 2015-08-19  6:50 UTC (permalink / raw)
  To: mmarek, linux-kbuild, linux-kernel
  Cc: daniel.baluta, octavian.purdila, bogdan.m.davidoaia

scripts/package/builddeb already creates a linux-keader .deb
package, but we need this feature also for non-Debian distros
(e.g. Android or LFS).

Signed-off-by: Daniel Baluta <daniel.baluta@intel.com>
---
 Makefile                           | 10 +++++++++-
 scripts/modules_headers_install.sh | 40 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100755 scripts/modules_headers_install.sh

diff --git a/Makefile b/Makefile
index 35b4c19..839416d 100644
--- a/Makefile
+++ b/Makefile
@@ -1042,6 +1042,7 @@ firmware_install: FORCE
 
 #Default location for installed headers
 export INSTALL_HDR_PATH = $(objtree)/usr
+export INSTALL_MODULES_HDR_PATH = $(objtree)/usr/src
 
 # If we do an all arch process set dst to asm-$(hdr-arch)
 hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)
@@ -1076,6 +1077,10 @@ headers_check: headers_install
 	$(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1
 	$(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/uapi/asm $(hdr-dst) HDRCHECK=1
 
+PHONY += modules_headers_install
+modules_headers_install:
+	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/modules_headers_install.sh
+
 # ---------------------------------------------------------------------------
 # Kernel selftest
 
@@ -1274,7 +1279,10 @@ help:
 	@echo  '  kernelversion	  - Output the version stored in Makefile (use with make -s)'
 	@echo  '  image_name	  - Output the image name (use with make -s)'
 	@echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
-	 echo  '                    (default: $(INSTALL_HDR_PATH))'; \
+	 echo  '                    (default: $(INSTALL_HDR_PATH))';
+	@echo  '  modules_headers_install - Install kernel headers to INSTALL_MODULES_HDR_PATH'; \
+	 echo  '                            to be used for out of tree modules build'; \
+	 echo  '                            (default: $(INSTALL_MODULES_HDR_PATH))'; \
 	 echo  ''
 	@echo  'Static analysers'
 	@echo  '  checkstack      - Generate a list of stack hogs'
diff --git a/scripts/modules_headers_install.sh b/scripts/modules_headers_install.sh
new file mode 100755
index 0000000..ebced17
--- /dev/null
+++ b/scripts/modules_headers_install.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# modules_headers_install.sh
+#
+# Simple script to extract linux headers and friends needed to build
+# out of tree modules without having the all source tree around.
+#
+# Inspired from scripts/package/builddeb
+
+HDR_SRC_FILES=$objtree/hdrsrcfiles
+HDR_OBJ_FILES=$objtree/hdrobjfiles
+DEST_DIR=linux-modules-headers
+
+if [ -n "$INSTALL_MODULES_HDR_PATH" ]; then
+	DEST_DIR="$INSTALL_MODULES_HDR_PATH"
+fi
+
+#fresh start
+rm -f $HDR_SRC_FILES
+rm -f $HDR_OBJ_FILES
+
+#build list of headers and friends
+(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) \
+	> "$HDR_SRC_FILES"
+(cd $srctree; find arch/$SRCARCH/include include scripts -type f) \
+	>> "$HDR_SRC_FILES"
+(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms \
+	-o -name Platform) >> "$HDR_SRC_FILES"
+(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts \
+	-type d) -type f) >> "$HDR_SRC_FILES"
+(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts \
+	-type f) >> "$HDR_OBJ_FILES"
+
+mkdir -p "$DEST_DIR"
+
+(cd $srctree; tar -c -f - -T -) < "$HDR_SRC_FILES" | (cd $DEST_DIR; tar -xf -)
+(cd $objtree; tar -c -f - -T -) < "$HDR_OBJ_FILES" | (cd $DEST_DIR; tar -xf -)
+
+# copy .config manually to be where it's expected to be
+(cd $objtree; cp $KCONFIG_CONFIG $DEST_DIR/.config)
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] scripts: Extract kernel headers for out of tree modules build
  2015-08-19  6:50 [PATCH] scripts: Extract kernel headers for out of tree modules build Daniel Baluta
@ 2015-08-19 12:50 ` Michal Marek
  2015-08-19 19:09 ` Ken Moffat
  1 sibling, 0 replies; 4+ messages in thread
From: Michal Marek @ 2015-08-19 12:50 UTC (permalink / raw)
  To: Daniel Baluta
  Cc: linux-kbuild, linux-kernel, octavian.purdila, bogdan.m.davidoaia

On 2015-08-19 08:50, Daniel Baluta wrote:
> scripts/package/builddeb already creates a linux-keader .deb
> package, but we need this feature also for non-Debian distros
> (e.g. Android or LFS).

Kbuild supports building out-of-tree modules by providing the
/lib/modules/*/build and /lib/modules/*/source symlinks, pointing to the
whole build/source trees. IMO, an optimization like your script should
remain part of the distro packaging, which also takes care of the symlinks.

Michal

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] scripts: Extract kernel headers for out of tree modules build
  2015-08-19  6:50 [PATCH] scripts: Extract kernel headers for out of tree modules build Daniel Baluta
  2015-08-19 12:50 ` Michal Marek
@ 2015-08-19 19:09 ` Ken Moffat
  2015-08-20  9:56   ` Daniel Baluta
  1 sibling, 1 reply; 4+ messages in thread
From: Ken Moffat @ 2015-08-19 19:09 UTC (permalink / raw)
  To: Daniel Baluta
  Cc: mmarek, linux-kbuild, linux-kernel, octavian.purdila, bogdan.m.davidoaia

On Wed, Aug 19, 2015 at 09:50:36AM +0300, Daniel Baluta wrote:
> scripts/package/builddeb already creates a linux-keader .deb
> package, but we need this feature also for non-Debian distros
> (e.g. Android or LFS).
> 
> Signed-off-by: Daniel Baluta <daniel.baluta@intel.com>

In general, LFS does not need this - but obviously we give you the
freedom to change whatever you do ("your system, your rules").

In particular, we assume that you will build on the machine where
the kernel will run, and also that you may need to rebuild the kernel
several times (for additional .config choices) depending on what
parts of BLFS you build.  And we do not provide a package manager.
So I submit that we are the people least likely to need this.

ĸen
-- 
This one goes up to eleven: but only on a clear day, with the wind in
the right direction.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] scripts: Extract kernel headers for out of tree modules build
  2015-08-19 19:09 ` Ken Moffat
@ 2015-08-20  9:56   ` Daniel Baluta
  0 siblings, 0 replies; 4+ messages in thread
From: Daniel Baluta @ 2015-08-20  9:56 UTC (permalink / raw)
  To: Ken Moffat
  Cc: Daniel Baluta, mmarek, linux-kbuild, Linux Kernel Mailing List,
	octavian.purdila, bogdan.m.davidoaia

On Wed, Aug 19, 2015 at 10:09 PM, Ken Moffat <zarniwhoop@ntlworld.com> wrote:
> On Wed, Aug 19, 2015 at 09:50:36AM +0300, Daniel Baluta wrote:
>> scripts/package/builddeb already creates a linux-keader .deb
>> package, but we need this feature also for non-Debian distros
>> (e.g. Android or LFS).
>>
>> Signed-off-by: Daniel Baluta <daniel.baluta@intel.com>
>
> In general, LFS does not need this - but obviously we give you the
> freedom to change whatever you do ("your system, your rules").
>
> In particular, we assume that you will build on the machine where
> the kernel will run, and also that you may need to rebuild the kernel
> several times (for additional .config choices) depending on what
> parts of BLFS you build.  And we do not provide a package manager.
> So I submit that we are the people least likely to need this.
>
> ĸen

Hi Ken / Michal,

While I don't see a huge problem having this script inside the kernel sources, I
agree that we can push this to the distro packaging scripts.

Thanks a lot for your feedback ;).

Daniel.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-08-20  9:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-19  6:50 [PATCH] scripts: Extract kernel headers for out of tree modules build Daniel Baluta
2015-08-19 12:50 ` Michal Marek
2015-08-19 19:09 ` Ken Moffat
2015-08-20  9:56   ` Daniel Baluta

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).