[OE-core] [PATCH] barebox: Add recipe

David Vincent freesilicon at gmail.com
Mon Jul 28 09:55:04 UTC 2014


barebox (formerly known as u-boot-v2) is a bootloader that inherits the
best of U-Boot and the Linux kernel. This commit adds the possibility to
use it as a virtual/bootloader instead of U-Boot.

Signed-off-by: David Vincent <freesilicon at gmail.com>
---
 meta/recipes-bsp/barebox/barebox.inc          |   73 +++++++++++++++++++++++++
 meta/recipes-bsp/barebox/barebox_2014.07.0.bb |   15 +++++
 2 files changed, 88 insertions(+)
 create mode 100644 meta/recipes-bsp/barebox/barebox.inc
 create mode 100644 meta/recipes-bsp/barebox/barebox_2014.07.0.bb

diff --git a/meta/recipes-bsp/barebox/barebox.inc b/meta/recipes-bsp/barebox/barebox.inc
new file mode 100644
index 0000000..68aeb68
--- /dev/null
+++ b/meta/recipes-bsp/barebox/barebox.inc
@@ -0,0 +1,73 @@
+SUMMARY = "The Barebox Bootloader"
+DESCRIPTION = "Barebox (formerly known as u-boot-v2) is a bootloader that inherits the best of U-Boot and the Linux kernel: The size and look-and-feel of u-boot, with driver model and lots of design concepts from the kernel."
+HOMEPAGE = "http://www.barebox.org"
+SECTION = "bootloaders"
+PROVIDES = "virtual/bootloader"
+
+inherit cml1 deploy kernel-arch
+
+EXTRA_OEMAKE = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}"'
+
+BAREBOX_BINARY ?= "barebox.bin"
+BAREBOX_IMAGE ?= "barebox-${MACHINE}-${PV}-${PR}.bin"
+BAREBOX_SYMLINK ?= "barebox-${MACHINE}.bin"
+
+do_configure () {
+	# Copy defconfig to .config if .config does not exist. This allows
+	# recipes to manage the .config themselves in do_configure_prepend().
+	if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then
+		cp "${WORKDIR}/defconfig" "${B}/.config"
+	fi
+
+	# Use board default defconfig if .config does not exist. This allows
+	# recipes to manage the .config themselves in do_configure_prepend().
+	if [ ! -f "${B}/.config" ]; then
+		oe_runmake_call ${BAREBOX_TARGET}
+	fi
+
+	cml1_do_configure
+}
+
+do_compile () {
+	if [ "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'ld-is-gold', '', d)}" = "ld-is-gold" ] ; then
+		sed -i 's/$(CROSS_COMPILE)ld$/$(CROSS_COMPILE)ld.bfd/g' ${S}/Makefile
+	fi
+
+	unset CFLAGS CPPFLAGS LDFLAGS
+	oe_runmake
+}
+
+do_install () {
+	install -d ${D}/boot
+	install ${S}/barebox-flash-image ${D}/boot/${BAREBOX_IMAGE}
+	ln -sf ${BAREBOX_IMAGE} ${D}/boot/${BAREBOX_BINARY}
+
+	# Install target tools if available
+	install -d ${D}${sbindir}
+
+	if [ -e ${WORKDIR}/scripts/bareboxenv-target ]; then
+		install -m 0755 ${WORKDIR}/scripts/bareboxenv-target ${D}${sbindir}/bareboxenv
+	fi
+
+	if [ -e ${WORKDIR}/scripts/bareboxcrc32-target ]; then
+		install -m 0755 ${WORKDIR}/scripts/bareboxcrc32-target ${D}${sbindir}/bareboxcrc32
+	fi
+
+	if [ -e ${WORKDIR}/scripts/kernel-install-target ]; then
+		install -m 0755 ${WORKDIR}/scripts/kernel-install-target ${D}${sbindir}/kernel-install
+	fi
+}
+
+FILES_${PN} = "/boot ${sbindir}"
+
+do_deploy () {
+	install -d ${DEPLOYDIR}
+	install ${S}/barebox-flash-image ${DEPLOYDIR}/${BAREBOX_IMAGE}
+
+	cd ${DEPLOYDIR}
+	rm -f ${BAREBOX_BINARY} ${BAREBOX_SYMLINK}
+	ln -sf ${BAREBOX_IMAGE} ${BAREBOX_SYMLINK}
+	ln -sf ${BAREBOX_IMAGE} ${BAREBOX_BINARY}
+}
+
+addtask deploy before do_build after do_compile
diff --git a/meta/recipes-bsp/barebox/barebox_2014.07.0.bb b/meta/recipes-bsp/barebox/barebox_2014.07.0.bb
new file mode 100644
index 0000000..6adbff4
--- /dev/null
+++ b/meta/recipes-bsp/barebox/barebox_2014.07.0.bb
@@ -0,0 +1,15 @@
+require barebox.inc
+
+# To build barebox for your machine, provide the following lines in your machine
+# config, replacing the assignments as appropriate for your machine.
+# BAREBOX_MACHINE = "sandbox"
+# BAREBOX_TARGET = "sandbox_defconfig"
+
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=057bf9e50e1ca857d0eb97bfe4ba8e5d"
+
+SRC_URI = "http://www.barebox.org/download/${PN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
+SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
-- 
1.7.10.4




More information about the Openembedded-core mailing list