Difference between revisions of "Building Software from an External Source"
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | == Building Software from an External Source using Yocto Project | + | == Building Software from an External Source using Yocto Project - local source tree == |
I have a local source tree I want to build instead of the upstream source a recipe normally fetches, how do I do that? | I have a local source tree I want to build instead of the upstream source a recipe normally fetches, how do I do that? | ||
Line 12: | Line 12: | ||
inherit externalsrc | inherit externalsrc | ||
EXTERNALSRC = "/path/to/sources" | EXTERNALSRC = "/path/to/sources" | ||
+ | |||
+ | |||
+ | Depending on the type of build (eg, 'inherit module' for out of tree Linux kernel modules) you may or may not need to set EXTERNALSRC_BUILD. | ||
+ | |||
+ | inherit externalsrc | ||
+ | EXTERNALSRC = "/some/path" | ||
+ | EXTERNALSRC_BUILD = "/some/path" | ||
+ | |||
Line 18: | Line 26: | ||
INHERIT += "externalsrc" | INHERIT += "externalsrc" | ||
EXTERNALSRC_pn-<recipename> = "/path/to/sources" | EXTERNALSRC_pn-<recipename> = "/path/to/sources" | ||
+ | |||
+ | |||
+ | Recipe example using an external source for nInvaders package | ||
+ | |||
+ | <pre><nowiki> | ||
+ | |||
+ | # | ||
+ | # Recipe example with externalsrc | ||
+ | # | ||
+ | # (C)2019 Marco Cavallini - KOAN - <https://koansoftware.com> | ||
+ | # | ||
+ | |||
+ | LICENSE = "CLOSED" | ||
+ | LIC_FILES_CHKSUM = "" | ||
+ | |||
+ | inherit externalsrc | ||
+ | |||
+ | EXTERNALSRC = "/home/koan/yocto-qemuarm-sumo/ninvaders-0.1.1" | ||
+ | EXTERNALSRC_BUILD = "${EXTERNALSRC}" | ||
+ | |||
+ | DEPENDS = "ncurses" | ||
+ | |||
+ | EXTRA_OEMAKE = "-e" | ||
+ | |||
+ | |||
+ | do_install() { | ||
+ | install -d ${D}${bindir} | ||
+ | install -m 0755 nInvaders ${D}${bindir} | ||
+ | } | ||
+ | |||
+ | FILES_${PN} = "${bindir}/*" | ||
+ | |||
+ | </nowiki></pre> |
Latest revision as of 07:15, 3 August 2023
Building Software from an External Source using Yocto Project - local source tree
I have a local source tree I want to build instead of the upstream source a recipe normally fetches, how do I do that?
By default, the OpenEmbedded build system uses the Build Directory when building source code. The build process involves fetching the source files, unpacking them, and then patching them if necessary before the build takes place.
Situations exist where you might want to build software from source files that are external to and thus outside of the OpenEmbedded build system. For example, suppose you have a project that includes a new BSP with a heavily customized kernel. And, you want to minimize exposing the build system to the development team so that they can focus on their project and maintain everyone's workflow as much as possible. In this case, you want a kernel source directory on the development machine where the development occurs. You want the recipe's SRC_URI variable to point to the external directory and use it as is, not copy it.
in this case use the externalsrc class - you can inherit this in the original bb recipe or a bbappend:
inherit externalsrc EXTERNALSRC = "/path/to/sources"
Depending on the type of build (eg, 'inherit module' for out of tree Linux kernel modules) you may or may not need to set EXTERNALSRC_BUILD.
inherit externalsrc EXTERNALSRC = "/some/path" EXTERNALSRC_BUILD = "/some/path"
If you're going to use it across a number of recipes you can inherit it globally at the configuration level (perhaps via an inc file that you include/require there):
INHERIT += "externalsrc" EXTERNALSRC_pn-<recipename> = "/path/to/sources"
Recipe example using an external source for nInvaders package
# # Recipe example with externalsrc # # (C)2019 Marco Cavallini - KOAN - <https://koansoftware.com> # LICENSE = "CLOSED" LIC_FILES_CHKSUM = "" inherit externalsrc EXTERNALSRC = "/home/koan/yocto-qemuarm-sumo/ninvaders-0.1.1" EXTERNALSRC_BUILD = "${EXTERNALSRC}" DEPENDS = "ncurses" EXTRA_OEMAKE = "-e" do_install() { install -d ${D}${bindir} install -m 0755 nInvaders ${D}${bindir} } FILES_${PN} = "${bindir}/*"