Skip to contentSkip to conversation

kernel: building target-arch scripts/* to include in kernel-headers package

DISCUSSION Darren Hart 3 participants 7 messages Jun 25, 2012 – Jun 26, 2012

lore
Share & tools
lore
#0 lore raw

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

	# cd /usr/src/kernel-headers
	# make scripts

Then I can build modules:

	# cd /home/root/hello-mod/files
	# export KERNEL_SRC=/usr/src/kernel-headers
	# make

And test:

	# insmod hello.ko
	# rmmod hello.ko
	# dmesg | tail -n2
	Hello World!
	Goodbye Cruel World!

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

Signature · 3 lines
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
#1 lore raw
Quoted 22 lines · Darren Hart

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

       # cd /usr/src/kernel-headers
       # make scripts

Then I can build modules:

       # cd /home/root/hello-mod/files
       # export KERNEL_SRC=/usr/src/kernel-headers
       # make

And test:

       # insmod hello.ko
       # rmmod hello.ko
       # dmesg | tail -n2
       Hello World!
       Goodbye Cruel World!
Quoted 7 lines

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

the hostprogs there are a bit hairy. you could set HOSTCC to point to cross compiler and build scripts dir in some O=foo after copying .config into it but the problem would be that build system expects the hosttools in build tree at exact same location
e.g. fixdep would be needed even to build other hosttools e.g. recordmcount etc. and thats where you have to patch kbuild such that it could reference another fixdep tool which then will be built for the host you are compiling kernel on.

I have a reverse problem, I want to package the scripts/ for cross building :)

Quoted 10 lines

--
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

#2 lore raw
Quoted 31 lines · Khem Raj
Quoted 22 lines · Darren Hart

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

       # cd /usr/src/kernel-headers
       # make scripts

Then I can build modules:

       # cd /home/root/hello-mod/files
       # export KERNEL_SRC=/usr/src/kernel-headers
       # make

And test:

       # insmod hello.ko
       # rmmod hello.ko
       # dmesg | tail -n2
       Hello World!
       Goodbye Cruel World!
Quoted 7 lines

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

Quoted 8 lines

the hostprogs there are a bit hairy. you could set HOSTCC to point to cross compiler and build scripts dir in some O=foo after copying .config into it but the problem would be that build system expects the hosttools in build tree at exact same location
e.g. fixdep would be needed even to build other hosttools e.g. recordmcount etc. and thats where you have to patch kbuild such that it could reference another fixdep tool which then will be built for the host you are compiling kernel on.

another option is to add a completely new makefile to build
the necessary tools the way we want them and not use make scripts target at all

#4 lore raw
In reply to Khem Raj
Quoted 31 lines · Khem Raj
Quoted 22 lines · Darren Hart

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

       # cd /usr/src/kernel-headers
       # make scripts

Then I can build modules:

       # cd /home/root/hello-mod/files
       # export KERNEL_SRC=/usr/src/kernel-headers
       # make

And test:

       # insmod hello.ko
       # rmmod hello.ko
       # dmesg | tail -n2
       Hello World!
       Goodbye Cruel World!
Quoted 7 lines

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

Quoted 9 lines

the hostprogs there are a bit hairy. you could set HOSTCC to point to cross compiler and build scripts dir in some O=foo after copying .config into it but the problem would be that build system expects the hosttools in build tree at exact same location
e.g. fixdep would be needed even to build other hosttools e.g. recordmcount etc. and thats where you have to patch kbuild such that it could reference another fixdep tool which then will be built for the host you are compiling kernel on.

Ewe, what a mess.

Another option would be to add:

        # cd /usr/src/kernel-headers
        # make scripts

To the kernel-headers post-inst script. It feels hackish, but perhaps it's a reasonable path to getting the functionality people are looking for. I still content one should be building modules as either part of the kernel build or as recipes styled after hello-mod.

Quoted 1 line

I have a reverse problem, I want to package the scripts/ for cross building :)

So do you need a kernel-headers-native package then? Do we possibly need to tackle both these issues at once? I can send out my patches if you think there is overlap.

Signature · 3 lines
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
#3 lore raw
In reply to Khem Raj
Quoted 42 lines · Khem Raj
Quoted 31 lines · Khem Raj
Quoted 22 lines · Darren Hart

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

       # cd /usr/src/kernel-headers
       # make scripts

Then I can build modules:

       # cd /home/root/hello-mod/files
       # export KERNEL_SRC=/usr/src/kernel-headers
       # make

And test:

       # insmod hello.ko
       # rmmod hello.ko
       # dmesg | tail -n2
       Hello World!
       Goodbye Cruel World!
Quoted 7 lines

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

Quoted 8 lines

the hostprogs there are a bit hairy. you could set HOSTCC to point to cross compiler and build scripts dir in some O=foo after copying .config into it but the problem would be that build system expects the hosttools in build tree at exact same location
e.g. fixdep would be needed even to build other hosttools e.g. recordmcount etc. and thats where you have to patch kbuild such that it could reference another fixdep tool which then will be built for the host you are compiling kernel on.

Quoted 2 lines

another option is to add a completely new makefile to build
the necessary tools the way we want them and not use make scripts target at all

While tempting, it sounds like a fragile mechanism with the potential for maintenance issues.

Signature · 3 lines
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
#5 lore raw
In reply to Darren Hart

Op 26 jun. 2012, om 17:58 heeft Darren Hart het volgende geschreven:

Quoted 44 lines · Khem Raj
Quoted 31 lines · Darren Hart
Quoted 22 lines

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

      # cd /usr/src/kernel-headers
      # make scripts

Then I can build modules:

      # cd /home/root/hello-mod/files
      # export KERNEL_SRC=/usr/src/kernel-headers
      # make

And test:

      # insmod hello.ko
      # rmmod hello.ko
      # dmesg | tail -n2
      Hello World!
      Goodbye Cruel World!
Quoted 7 lines

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

Quoted 9 lines

the hostprogs there are a bit hairy. you could set HOSTCC to point to cross compiler and build scripts dir in some O=foo after copying .config into it but the problem would be that build system expects the hosttools in build tree at exact same location
e.g. fixdep would be needed even to build other hosttools e.g. recordmcount etc. and thats where you have to patch kbuild such that it could reference another fixdep tool which then will be built for the host you are compiling kernel on.

Quoted 8 lines

Ewe, what a mess.

Another option would be to add:

       # cd /usr/src/kernel-headers
       # make scripts

To the kernel-headers post-inst script. =

or you could document it and have people do it manually.

regards,

Koen

#6 lore raw
Quoted 49 lines · Koen Kooi

Op 26 jun. 2012, om 17:58 heeft Darren Hart het volgende geschreven:

Quoted 46 lines · Khem Raj
Quoted 31 lines · Darren Hart
Quoted 22 lines

I'm working on a patch series to provide a kernel-headers package which allows for the compilation of Linux kernel modules on the target. I currently have something working, but it requires that I first build the scripts/* binaries on the target, prior to trying to build a module.

      # cd /usr/src/kernel-headers
      # make scripts

Then I can build modules:

      # cd /home/root/hello-mod/files
      # export KERNEL_SRC=/usr/src/kernel-headers
      # make

And test:

      # insmod hello.ko
      # rmmod hello.ko
      # dmesg | tail -n2
      Hello World!
      Goodbye Cruel World!
Quoted 7 lines

I would like to package the target-arch scripts binaries with the kernel-headers package, but I'm not sure how to go about building both the native and the target binaries as part of the kernel building process. Does it make sense to build these as part of the do_install() task after I've moved the files from the linux recipe's workdir and removed the host-arch binaries from scripts?

Quoted 9 lines

the hostprogs there are a bit hairy. you could set HOSTCC to point to cross compiler and build scripts dir in some O=foo after copying .config into it but the problem would be that build system expects the hosttools in build tree at exact same location
e.g. fixdep would be needed even to build other hosttools e.g. recordmcount etc. and thats where you have to patch kbuild such that it could reference another fixdep tool which then will be built for the host you are compiling kernel on.

Ewe, what a mess.

Quoted 9 lines
Quoted 6 lines

Another option would be to add:

       # cd /usr/src/kernel-headers
       # make scripts

To the kernel-headers post-inst script. =

or you could document it and have people do it manually.

While I would like it to work "out of the box", that would require me to either RDEPEND on make and gcc, or gracefully handle the postinst failure if make and gcc are not available. Perhaps just documenting it is the best plan for now.

Signature · 3 lines
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel