Extending buildroot functionality for creating board support packages (BSP) out of buildroot tree
Dear all,
we are using buildroot for porting an existing embedded PowerPC board to linux. For this purpose we have to make modifications to the kernel (adding and changing files to support custom hardware). This can easily be done by enabling custom patches in the menuconfig.
This is a wonderful solution when the development of the kernel modifications is done and the patches are existing but during development this could be time consuming. The reason is that we can not do the kernel modifcations in the kernel tree itself but in a completely separated directory structure. This is caused by our existing version control system and by project development requirements.
Imagine that you made a small modification to one of the custom files (e.g. changing a printk() statement) and you want to re-build the kernel. You have to develop a script which takes a virgin kernel, extracts the gz file, makes a copy of the tree, modifies the files in the copy and then creates the patch and copies this patch to the buildroot tree. Even on a fast hardware this takes some time and you have to do it for every change.
I spent some time this morning to evaluate if there could be a more elegant solution. Here is what I've done:
1) In linux/Config.in: Add a new entry to the kernel menuconfig which allows to enter a script name or a directory name (similar to the custom patch option)
2) In linux/linux.mk: After unpacking the kernel and applying the patches (if any) the given script or all scripts in the given directory are executed.
This allows me to make modification to the unpacked kernel tree without the need to create patch files but also opens up flexibility for other functionality which may arise in the future.
Let me know what you think about this. If you are interested in incorporating these changes into the official buildroot suite, l can provide the changes I made.
Regards,
Andreas
hello
I had a similar problem, but more generic. the simplest way is to use the OVERRIDE_SRCDIR feature
* create a file called local.mk at the $(TOPDIR) of your buildroot install
* add a single line inside
LINUX_OVERRIDE_SRCDIR=<path to the linux kernel tree>
and you should be good.
Note that this command will rsync the tree into the buildroot tree, (which should be fine, rsync is very fast once the initial sync is done)
Cordialement
J?r?my Rosen
fight key loggers : write some perl using vim
----- Mail original -----
Quoted 53 lines
Dear all,
we are using buildroot for porting an existing embedded PowerPC board to
linux. For this purpose we have to make modifications to the kernel (adding and changing files to support custom hardware). This can easily
be done by enabling custom patches in the menuconfig.
This is a wonderful solution when the development of the kernel modifications is done and the patches are existing but during development this could be time consuming. The reason is that we can not
do the kernel modifcations in the kernel tree itself but in a completely
separated directory structure. This is caused by our existing version control system and by project development requirements.Imagine that you made a small modification to one of the custom files (e.g. changing a
printk()statement) and you want to re-build the kernel. You have to develop a script which takes a virgin kernel, extracts the gz file, makes a copy of the tree, modifies the files in the copy and then creates the patch and copies this patch to the buildroot tree. Even on a fast hardware this takes some time and you have to do it for every change.I spent some time this morning to evaluate if there could be a more elegant solution. Here is what I've done:
1) In linux/Config.in: Add a new entry to the kernel menuconfig which allows to enter a script name or a directory name (similar to the custom
patch option)
2) Inlinux/linux.mk: After unpacking the kernel and applying the patches (if any) the given script or all scripts in the given directory
are executed.This allows me to make modification to the unpacked kernel tree without
the need to create patch files but also opens up flexibility for other
functionality which may arise in the future.Let me know what you think about this. If you are interested in incorporating these changes into the official buildroot suite, l can provide the changes I made.
Regards,
Andreas_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Jeremy,
If I understand you correctly this means that I have to hold a complete copy of the kernel tree where I do the modifications?
The requirement for me is that I have to store only the modified and new files in a different directory tree (under version control). So rsync does not work for me and I have to write a small script which is invoked by buildroot and copies my local files to the right directories in the kernel tree.
Regards,
Andreas
?
Gesendet:?Freitag, 12. April 2013 um 11:58 Uhr
Von:?"Jeremy Rosen" <[email protected]>
An:?"universe II" <[email protected]>
Cc:?buildroot at busybox.net
Betreff:?Re: [Buildroot] Extending buildroot functionality for creating board support packages (BSP) out of buildroot tree hello
I had a similar problem, but more generic. the simplest way is to use the OVERRIDE_SRCDIR feature
* create a file called local.mk at the $(TOPDIR) of your buildroot install
* add a single line inside
LINUX_OVERRIDE_SRCDIR=<path to the linux kernel tree>
and you should be good.
Note that this command will rsync the tree into the buildroot tree, (which should be fine, rsync is very fast once the initial sync is done)
Cordialement
J?r?my Rosen
fight key loggers : write some perl using vim
----- Mail original -----
Quoted 45 lines
Dear all,
we are using buildroot for porting an existing embedded PowerPC board to
linux. For this purpose we have to make modifications to the kernel (adding and changing files to support custom hardware). This can easily
be done by enabling custom patches in the menuconfig.
This is a wonderful solution when the development of the kernel modifications is done and the patches are existing but during development this could be time consuming. The reason is that we can not
do the kernel modifcations in the kernel tree itself but in a completely
separated directory structure. This is caused by our existing version control system and by project development requirements.Imagine that you made a small modification to one of the custom files (e.g. changing a
printk()statement) and you want to re-build the kernel. You have to develop a script which takes a virgin kernel, extracts the gz file, makes a copy of the tree, modifies the files in the copy and then creates the patch and copies this patch to the buildroot tree. Even on a fast hardware this takes some time and you have to do it for every change.I spent some time this morning to evaluate if there could be a more elegant solution. Here is what I've done:
1) In linux/Config.in: Add a new entry to the kernel menuconfig which allows to enter a script name or a directory name (similar to the custom
patch option)
2) Inlinux/linux.mk: After unpacking the kernel and applying the patches (if any) the given script or all scripts in the given directory
are executed.This allows me to make modification to the unpacked kernel tree without
the need to create patch files but also opens up flexibility for other
functionality which may arise in the future.Let me know what you think about this. If you are interested in incorporating these changes into the official buildroot suite, l can provide the changes I made.
Quoted 8 lines
Regards,
Andreas_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
?
?
Hello Andreas,
Quoted 7 lines · universeII at gmx.de
If I understand you correctly this means that I have to hold a complete copy of the kernel tree where I do the modifications? The requirement for me is that I have to store only the modified and new files in a different directory tree (under version control). So rsync does not work for me and I have to write a small script which is invoked by buildroot and copies my local files to the right directories in the kernel tree.
While we certainly aim at supporting a custom external tree for the Linux kernel sources to help using Buildroot during kernel development, we will certainly never support your use case of a partial kernel tree that contains only the modified and new files. This is just a very uncommon (and in my opinion completely wrong) way of handling source code changes. You should instead be using a git tree to do your kernel developments, and point LINUX_OVERRIDE_SRCDIR to it.
Best regards,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
Is there interest in incorporating this feature into buildroot? I prepared a patch for it, please see attachment.
Regards,
Andreas
Quoted 37 lines · universe II
Dear all,
we are using buildroot for porting an existing embedded PowerPC board to linux. For this purpose we have to make modifications to the kernel (adding and changing files to support custom hardware). This can easily be done by enabling custom patches in the menuconfig. This is a wonderful solution when the development of the kernel modifications is done and the patches are existing but during development this could be time consuming. The reason is that we can not do the kernel modifcations in the kernel tree itself but in a completely separated directory structure. This is caused by our existing version control system and by project development requirements.Imagine that you made a small modification to one of the custom files (e.g. changing a
printk()statement) and you want to re-build the kernel. You have to develop a script which takes a virgin kernel, extracts the gz file, makes a copy of the tree, modifies the files in the copy and then creates the patch and copies this patch to the buildroot tree. Even on a fast hardware this takes some time and you have to do it for every change.I spent some time this morning to evaluate if there could be a more elegant solution. Here is what I've done:
1) In linux/Config.in: Add a new entry to the kernel menuconfig which allows to enter a script name or a directory name (similar to the custom patch option)
2) Inlinux/linux.mk: After unpacking the kernel and applying the patches (if any) the given script or all scripts in the given directory are executed.This allows me to make modification to the unpacked kernel tree without the need to create patch files but also opens up flexibility for other functionality which may arise in the future.
Let me know what you think about this. If you are interested in incorporating these changes into the official buildroot suite, l can provide the changes I made.
Quoted 7 lines
Regards,
Andreas_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Add_Pre_Compile_Script_Option_to_buildroot.patch
Type: text/x-patch
Size: 1580 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20130414/24d59b34/attachment.bin>