Previously, I used the below recipe to build a kernel module (.ko) for a driver that I wrote for the BeagleBoard. Since I upgraded to the new OE/Angstrom tree it has stopped working and is showing the most confusing symptoms. There must have been some fundamental change in the way OE builds these modules, but my google searches have not provided any clues on what changed.

Recipe:
DESCRIPTION = "Kernel driver to control digital servomotors."
HOMEPAGE = "http://www.rafresearch.com";
SECTION = "kernel/modules"
PRIORITY = "optional"
LICENSE = "none"
#added by Bob 20100805
KERNEL_VERSION="2.6.33"

#RDEPENDS = "kernel (${KERNEL_VERSION})"
RDEPENDS = "kernel (2.6.33)"
DEPENDS = "virtual/kernel"
PR = "r0"


SRC_URI = " \
    file://rtservo-driver_1.0.0/rtservo-driver.c \
    file://rtservo-driver_1.0.0/rtservo-driver.h \
    file://rtservo-driver_1.0.0/servo-interface.h \
    file://rtservo-driver_1.0.0/Makefile \
"

WORKDIR = "${OE_BASE}/build/tmp-angstrom_2008_1/work/beagleboard-angstrom-linux-gnueabi/MyModules"

S = "${WORKDIR}/rtservo-driver_1.0.0"

inherit module

do_compile () {
    unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
    env
oe_runmake 'MODPATH="${D}${base_libdir}/modules/2.6.33/kernel/drivers/test"' \ 'KERNEL_SOURCE="${OE_BASE}/build/tmp-angstrom_2008_1/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.33-r100/git"' \ 'KDIR="${OE_BASE}/build/tmp-angstrom_2008_1/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.33-r100/git"' \
        'KERNEL_VERSION="2.6.33"' \
        'CC="${KERNEL_CC}"' \
        'LD="${KERNEL_LD}"'

}

do_install () {
    install -d ${D}${base_libdir}/modules/2.6.33/kernel/drivers/test
install -m 0644 ${S}/rtservo-driver*${KERNEL_OBJECT_SUFFIX} ${D}${base_libdir}/modules/2.6.33/kernel/drivers/test
}


Current results:
[Bob@beagleboard setup-scripts]$ bitbake -c compile -b /media/LINUX/AngstromDist7/setup-scripts/local/recipes/MyModules/rtservo-driver_1.0.0.bb

Build Configuration:
BB_VERSION        = "1.12.0"
METADATA_BRANCH   = "org.openembedded.dev"
METADATA_REVISION = "50e7d72"
TARGET_ARCH       = "arm"
TARGET_OS         = "linux-gnueabi"
MACHINE           = "beagleboard"
DISTRO            = "angstrom"
DISTRO_VERSION    = "2010.7-test-20110228"
TARGET_FPU        = "hard"

NOTE: Preparing runqueue
NOTE: Executing RunQueue Tasks
NOTE: Running task 1 of 7 (ID: 3, /media/LINUX/AngstromDist7/setup-scripts/local/recipes/MyModules/rtservo-driver_1.0.0.bb, do_setscene)
NOTE: package rtservo-driver-1.0.0-r100: task do_setscene: Started
ERROR: Error executing a python function in /media/LINUX/AngstromDist7/setup-scripts/local/recipes/MyModules/rtservo-driver_1.0.0.bb: IOError: [Errno 2] No such file or directory: '${OE_BASE}/build/tmp-angstrom_2008_1/work/beagleboard-angstrom-linux-gnueabi/MyModules/temp/run.staging_helper.30029'

It is creating the directory build/${OE_BASE} to operate in instead of substituting the contents of the OE_BASE variable. Even if I bypass that using a relative location, the same error appears. (run.staging_helper.xxx not found. There is no run.staging_helper file in the tmp directory, although the other run. files and log. files are there.)

Does anyone have a current working recipe to build a single kernel driver module? How does it differ?

Regards,
Bob Feretich


_______________________________________________
Angstrom-distro-devel mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel

Reply via email to