Beaglebone: Extending Angstrom / OE / BB - own recipes, own patches

Hi!

I want to use the Angstrom build environment for building own kernels
and userspace tools. After some time (some evenings), I somehow
understand how the particular recipes work for applying the patches to
the kernel. I am particularly interested in using the SPI and the
second I2C on P9.

When I keep all modified files by commenting out "rm_work" in the
local.conf, I can see how each patch alters for example "board-
am335xevm.c", which is of interest for me because of the pin-muxing.
There are dozen versions at "build/tmp-angstrom_2010_x-eglibc/work/
beaglebone-angstrom-linux-gnueabi/linux-ti33x-psp-3.1-r2h-
xxxxxxxxxxxxxxxxxx/git/.pc/PATCHNAME.patch/arch/arm/mach_omap2/board-
am335xevm.c". By looking at the recipe at "sources/meta-ti/recipes-
kernel/linux/linux-ti33x-psp-3.1.bb" I can determine which patch is
applied last and therefore could take this file, modify it, create a
patch from that and then try to create my own recipe - is that the way
it is supposed to be? Or is there some more obvious path where I can
get the "latest" version of a particular file to create a patch from?

Next, I want to have some extra programs in the rootfs-image OR want
at least to create some opkg to install them afterwards. Is there some
example how to do this? Where to put the recipe in all this meta-
folders, how to trigger the compilation, where to find the package?

Thank you!

Best regards,
Robert

Hi!

I want to use the Angstrom build environment for building own kernels
and userspace tools. After some time (some evenings), I somehow
understand how the particular recipes work for applying the patches to
the kernel. I am particularly interested in using the SPI and the
second I2C on P9.

When I keep all modified files by commenting out "rm_work" in the
local.conf, I can see how each patch alters for example "board-
am335xevm.c", which is of interest for me because of the pin-muxing.
There are dozen versions at "build/tmp-angstrom_2010_x-eglibc/work/
beaglebone-angstrom-linux-gnueabi/linux-ti33x-psp-3.1-r2h-
xxxxxxxxxxxxxxxxxx/git/.pc/PATCHNAME.patch/arch/arm/mach_omap2/board-
am335xevm.c". By looking at the recipe at "sources/meta-ti/recipes-
kernel/linux/linux-ti33x-psp-3.1.bb" I can determine which patch is
applied last and therefore could take this file, modify it, create a
patch from that and then try to create my own recipe - is that the way
it is supposed to be? Or is there some more obvious path where I can
get the "latest" version of a particular file to create a patch from?

Have a look at http://www.angstrom-distribution.org/some-usefull-workflow-blogs

When working with the kernel, there's an easier way:

1) apply http://dominion.thruhere.net/koen/angstrom/0001-patch.bbclass-add-incredibly-naive-git-am-mode.patch to your openembedded-core tree (wget ; git am *.patch)

2) In local.conf:

ASSUME_PROVIDED += "gitam-native"
PATCHTOOL_pn-linux-ti33x-psp = "gitam"

3) recreate the kernel tree: bitbake -c cleansstate virtual/kernel ; bitbake -c patch virtual/kernel

That will apply all patches as git commits so you can do 'git diff' and 'git commit' as usual.

Next, I want to have some extra programs in the rootfs-image OR want
at least to create some opkg to install them afterwards. Is there some
example how to do this? Where to put the recipe in all this meta-
folders, how to trigger the compilation, where to find the package?

find sources/ -name "*image.bb"

regards,

Koen

Hi Robert,

I posted instructions on how to add your own packages to Angstrom without disturbing the rest of the distribution on this group back a few days ago: you can check it out here: https://groups.google.com/d/msg/beagleboard/yO70oZmkleE/EMEmJvuqAnQJ

Let me know if those instructions can be improved in any way!

Hope this helps,

Ed