* [RFC 1/1] add support for the barebox bootloader
@ 2014-07-30 11:49 Stefan Müller-Klieser
2014-07-30 14:19 ` David Vincent
2014-07-30 16:53 ` Saul Wold
0 siblings, 2 replies; 5+ messages in thread
From: Stefan Müller-Klieser @ 2014-07-30 11:49 UTC (permalink / raw)
To: openembedded-core
Barebox is a bootloader that inherits the best of U-Boot and the Linux
kernel. The barebox uses kconfig and kbuild mechanisms similar to the
Linux kernel. This is reflected in the recipe. As soon as this
functionality gets more abstraction in classes, the barebox recipe can
be simplified. The recipe supports: kconfig handling, kconfig fragments,
packages for dev tools and support for the initial program loader
creation.
Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
---
meta/recipes-bsp/barebox/barebox-ipl.inc | 37 +++++
meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb | 4 +
meta/recipes-bsp/barebox/barebox.inc | 161 ++++++++++++++++++++++
meta/recipes-bsp/barebox/barebox_2014.07.0.bb | 4 +
4 files changed, 206 insertions(+)
create mode 100644 meta/recipes-bsp/barebox/barebox-ipl.inc
create mode 100644 meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
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-ipl.inc b/meta/recipes-bsp/barebox/barebox-ipl.inc
new file mode 100644
index 0000000..f388522
--- /dev/null
+++ b/meta/recipes-bsp/barebox/barebox-ipl.inc
@@ -0,0 +1,37 @@
+# Copyright (C) 2014 Stefan Mueller-Klieser <s.mueller-klieser@phytec.de> \
+# PHYTEC Messtechnik GmbH
+# Recipe released under the GPL-3.0 license
+
+require barebox.inc
+
+DESCRIPTION = "Barebox IPL Inintial Program Loader: some machines need \
+ a pre-bootloader. This one gets build by the barebox."
+PROVIDES = "barebox-ipl"
+S = "${WORKDIR}/barebox-${PV}"
+
+# Pre Bootloader
+BAREBOX_IPL_BIN ?= "barebox.bin"
+BAREBOX_IPL_BIN_DEPLOY ?= "IPL-${MACHINE}-${PV}-${PR}.bin"
+BAREBOX_IPL_BIN_SYMLINK ?= "IPL"
+BAREBOX_IPL_DEFAULT_DEFCONFIG ?= "am335x_mlo_defconfig"
+
+do_default_defconfig () {
+ bbnote "generating .config for target ${BAREBOX_IPL_DEFAULT_DEFCONFIG}"
+ unset CFLAGS LDFLAGS
+ oe_runmake ${BAREBOX_IPL_DEFAULT_DEFCONFIG}
+}
+
+do_install () {
+ bbnote "Installing barebox-ipl image on target rootfs"
+ install -d ${D}${base_bootdir}
+ install ${S}/${BAREBOX_IPL_BIN} ${D}${base_bootdir}/${BAREBOX_IPL_BIN_DEPLOY}
+ ln -sf ${BAREBOX_IPL_BIN_DEPLOY} ${D}${base_bootdir}/${BAREBOX_IPL_BIN_SYMLINK}
+}
+FILES_${PN} = ""
+FILES_${PN} = "${base_bootdir}"
+
+do_deploy () {
+ bbnote "Deploying barebox ipl"
+ install ${S}/${BAREBOX_IPL_BIN} ${DEPLOYDIR}/${BAREBOX_IPL_BIN_DEPLOY}
+ ln -sf ${BAREBOX_IPL_BIN_DEPLOY} ${DEPLOYDIR}/${BAREBOX_IPL_BIN_SYMLINK}
+}
diff --git a/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
new file mode 100644
index 0000000..372828a
--- /dev/null
+++ b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
@@ -0,0 +1,4 @@
+require barebox-ipl.inc
+
+SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
+SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
diff --git a/meta/recipes-bsp/barebox/barebox.inc b/meta/recipes-bsp/barebox/barebox.inc
new file mode 100644
index 0000000..b7885df
--- /dev/null
+++ b/meta/recipes-bsp/barebox/barebox.inc
@@ -0,0 +1,161 @@
+# Copyright (C) 2014 Stefan Mueller-Klieser <s.mueller-klieser@phytec.de>
+# PHYTEC Messtechnik GmbH
+# Recipe released under the GPL-3.0 license
+#
+# TODO: see if there is some development towards moving all kconfig
+# funcionality into the kconfig-frontends package and adjust
+# the recipe accordingly.
+#
+
+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. \
+ The bb recipe adds config fragment support and kconfig \
+ command handling using the yocto kern-tools-native."
+HOMEPAGE = "http://www.barebox.org"
+SECTION = "bootloaders"
+PROVIDES = "virtual/bootloader barebox"
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=057bf9e50e1ca857d0eb97bfe4ba8e5d"
+SRC_URI = "http://barebox.org/download/barebox-${PV}.tar.bz2"
+
+inherit kernel-arch cml1 deploy
+DEPENDS += "kern-tools-native"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+# verbose build 0/1
+VERBOSE_BUILD ?= "0"
+EXTRA_OEMAKE = 'V=${VERBOSE_BUILD} CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}"'
+# target rootfs boot directory
+base_bootdir = "/boot"
+
+# these variables need to be assigned in the machine.conf
+# name of the image created by barebox Makefile
+BAREBOX_BIN ?= "barebox.bin"
+# filename of file to be deployed by this recipe
+BAREBOX_BIN_DEPLOY ?= "barebox-${MACHINE}-${PV}-${PR}.bin"
+BAREBOX_BIN_SYMLINK ?= "barebox.bin"
+BAREBOX_DEFAULT_DEFCONFIG ?= ""
+# barebox environment
+BAREBOX_ENV ?= "defaultenv/barebox_default_env"
+BAREBOX_ENV_DEPLOY ?= "bareboxenv-${MACHINE}-${PV}-${PR}"
+BAREBOX_ENV_SYMLINK ?= "barebox.env"
+
+# returns .scc and .cfg filenames from SRC_URI
+def find_sccs(d):
+ sources=src_patches(d, True)
+ sources_list=[]
+ for s in sources:
+ base, ext = os.path.splitext(os.path.basename(s))
+ if ext and ext in [".scc", ".cfg"]:
+ sources_list.append(s)
+ return sources_list
+
+# uses kern-tools-native to merge the config fragments
+python do_prepare_configure() {
+ import shutil, subprocess
+ workdir = d.getVar('WORKDIR', True)
+ S = d.getVar('S', True)
+ defconfig = os.path.join(workdir , 'defconfig')
+ if not os.path.isfile(defconfig):
+ bb.note("No defconfig file provided for the barebox recipe")
+ config = os.path.join(S, '.config')
+ if not os.path.isfile(config):
+ bb.note("barebox is not configured")
+ bb.build.exec_func("do_default_defconfig",d)
+ bb.build.exec_func("do_savedefconfig",d)
+ defconfig = os.path.join(workdir , 'defconfig.temp')
+ os.chdir(workdir)
+ fragments = find_sccs(d)
+ if not fragments:
+ bb.note("no config fragments will be merged")
+ else:
+ bb.note("combining kconfig fragments into .config for barebox")
+ cmd = 'merge_config.sh -m -O %s %s %s' % (S, defconfig, ' '.join(map(str,fragments)))
+ subprocess.call(cmd, shell=True)
+ localversion = "-${DISTRO}-${DISTRO_VERSION}"
+ bb.note("Setting LOCALVERSION in .config to %s" % localversion)
+ bareboxconfig = os.path.join(S, '.config')
+ cmd = 'kconfig-tweak --file %s --set-str LOCALVERSION %s' % (bareboxconfig, localversion)
+ subprocess.call(cmd,shell=True)
+}
+do_configure[prefuncs] += "do_prepare_configure"
+
+do_default_defconfig () {
+ bbnote "generating .config for target ${BAREBOX_DEFAULT_DEFCONFIG}"
+ unset CFLAGS LDFLAGS
+ oe_runmake ${BAREBOX_DEFAULT_DEFCONFIG}
+}
+
+do_savedefconfig() {
+ bbplain "saving defconfig to ${WORKDIR}/defconfig.temp"
+ oe_runmake savedefconfig
+ install -m 644 ${S}/defconfig ${WORKDIR}/defconfig.temp
+}
+addtask savedefconfig after do_configure
+
+do_compile () {
+ unset CFLAGS LDFLAGS
+ oe_runmake all
+}
+
+do_install () {
+ bbnote "Installing barebox image on target rootfs"
+ install -d ${D}${base_bootdir}
+ install ${S}/${BAREBOX_BIN} ${D}${base_bootdir}/${BAREBOX_BIN_DEPLOY}
+ ln -sf ${BAREBOX_BIN_DEPLOY} ${D}${base_bootdir}/${BAREBOX_BIN_SYMLINK}
+
+ if [ -e ${S}/${BAREBOX_ENV} ] ; then
+ bbnote "Installing barebox-env on target rootfs"
+ install ${S}/${BAREBOX_ENV} ${D}${base_bootdir}/${BAREBOX_ENV_DEPLOY}
+ ln -sf ${BAREBOX_ENV_DEPLOY} ${D}${base_bootdir}/${BAREBOX_ENV_SYMLINK}
+ fi
+
+ if [ -e ${S}/scripts/bareboxenv-target ] ; then
+ bbnote "Installing target env tool"
+ install -d ${D}${base_sbindir}
+ install -m 744 ${S}/scripts/bareboxenv-target ${D}${base_sbindir}/bareboxenv
+ fi
+
+ if [ -e ${S}/scripts/bareboxcrc32-target ] ; then
+ bbnote "Installing target crc32 tool"
+ install -d ${D}${base_sbindir}
+ install -m 744 ${S}/scripts/bareboxcrc32-target ${D}${base_sbindir}/bareboxcrc32
+ fi
+
+ if [ -e ${S}/scripts/kernel-install-target ] ; then
+ bbnote "Installing target kernel-install tool"
+ install -d ${D}${base_sbindir}
+ install -m 744 ${S}/scripts/kernel-install-target ${D}${base_sbindir}/barebox-kernel-install
+ fi
+}
+FILES_${PN} = ""
+FILES_${PN} += "${base_bootdir}"
+FILES_${PN}-dev = ""
+RDEPENDS_${PN}-dev = ""
+FILES_${PN}-dev += "${base_sbindir}"
+
+
+do_deploy () {
+ bbnote "Deploying barebox"
+ install -d ${DEPLOYDIR}
+ install ${S}/${BAREBOX_BIN} ${DEPLOYDIR}/${BAREBOX_BIN_DEPLOY}
+ cd ${DEPLOYDIR}
+ rm -f ${BAREBOX_BIN_SYMLINK}
+ ln -sf ${BAREBOX_BIN_DEPLOY} ${BAREBOX_BIN_SYMLINK}
+
+ if [ -e ${S}/${BAREBOX_ENV} ] ; then
+ bbnote "Deploying barebox env"
+ install ${S}/${BAREBOX_ENV} ${DEPLOYDIR}/${BAREBOX_ENV_DEPLOY}
+ cd ${DEPLOYDIR}
+ rm -f ${BAERBOX_ENV_SYMLINK}
+ ln -sf ${BAREBOX_ENV_DEPLOY} ${BAREBOX_ENV_SYMLINK}
+ fi
+
+ bbnote "Installing host barebox toolset"
+ install -d ${STAGING_BINDIR_NATIVE}
+ cd ${S}
+ install -m 755 scripts/bareboxenv ${STAGING_BINDIR_NATIVE}/
+}
+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..a311ca9
--- /dev/null
+++ b/meta/recipes-bsp/barebox/barebox_2014.07.0.bb
@@ -0,0 +1,4 @@
+require barebox.inc
+
+SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
+SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [RFC 1/1] add support for the barebox bootloader
2014-07-30 11:49 [RFC 1/1] add support for the barebox bootloader Stefan Müller-Klieser
@ 2014-07-30 14:19 ` David Vincent
2014-07-30 16:53 ` Saul Wold
1 sibling, 0 replies; 5+ messages in thread
From: David Vincent @ 2014-07-30 14:19 UTC (permalink / raw)
To: Stefan Müller-Klieser; +Cc: openembedded-core
Hi Stefan,
This recipe is more complete than what I've previously submitted and,
I think, is a better base for barebox initial support in OE-Core. Just
like it has already been said, maybe barebox target tools should have
their own recipe. However, I'd be happy to help further developments
on this recipe.
Greetings,
David
2014-07-30 13:49 GMT+02:00 Stefan Müller-Klieser <s.mueller-klieser@phytec.de>:
> Barebox is a bootloader that inherits the best of U-Boot and the Linux
> kernel. The barebox uses kconfig and kbuild mechanisms similar to the
> Linux kernel. This is reflected in the recipe. As soon as this
> functionality gets more abstraction in classes, the barebox recipe can
> be simplified. The recipe supports: kconfig handling, kconfig fragments,
> packages for dev tools and support for the initial program loader
> creation.
>
> Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
> ---
> meta/recipes-bsp/barebox/barebox-ipl.inc | 37 +++++
> meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb | 4 +
> meta/recipes-bsp/barebox/barebox.inc | 161 ++++++++++++++++++++++
> meta/recipes-bsp/barebox/barebox_2014.07.0.bb | 4 +
> 4 files changed, 206 insertions(+)
> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl.inc
> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> 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-ipl.inc b/meta/recipes-bsp/barebox/barebox-ipl.inc
> new file mode 100644
> index 0000000..f388522
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox-ipl.inc
> @@ -0,0 +1,37 @@
> +# Copyright (C) 2014 Stefan Mueller-Klieser <s.mueller-klieser@phytec.de> \
> +# PHYTEC Messtechnik GmbH
> +# Recipe released under the GPL-3.0 license
> +
> +require barebox.inc
> +
> +DESCRIPTION = "Barebox IPL Inintial Program Loader: some machines need \
> + a pre-bootloader. This one gets build by the barebox."
> +PROVIDES = "barebox-ipl"
> +S = "${WORKDIR}/barebox-${PV}"
> +
> +# Pre Bootloader
> +BAREBOX_IPL_BIN ?= "barebox.bin"
> +BAREBOX_IPL_BIN_DEPLOY ?= "IPL-${MACHINE}-${PV}-${PR}.bin"
> +BAREBOX_IPL_BIN_SYMLINK ?= "IPL"
> +BAREBOX_IPL_DEFAULT_DEFCONFIG ?= "am335x_mlo_defconfig"
> +
> +do_default_defconfig () {
> + bbnote "generating .config for target ${BAREBOX_IPL_DEFAULT_DEFCONFIG}"
> + unset CFLAGS LDFLAGS
> + oe_runmake ${BAREBOX_IPL_DEFAULT_DEFCONFIG}
> +}
> +
> +do_install () {
> + bbnote "Installing barebox-ipl image on target rootfs"
> + install -d ${D}${base_bootdir}
> + install ${S}/${BAREBOX_IPL_BIN} ${D}${base_bootdir}/${BAREBOX_IPL_BIN_DEPLOY}
> + ln -sf ${BAREBOX_IPL_BIN_DEPLOY} ${D}${base_bootdir}/${BAREBOX_IPL_BIN_SYMLINK}
> +}
> +FILES_${PN} = ""
> +FILES_${PN} = "${base_bootdir}"
> +
> +do_deploy () {
> + bbnote "Deploying barebox ipl"
> + install ${S}/${BAREBOX_IPL_BIN} ${DEPLOYDIR}/${BAREBOX_IPL_BIN_DEPLOY}
> + ln -sf ${BAREBOX_IPL_BIN_DEPLOY} ${DEPLOYDIR}/${BAREBOX_IPL_BIN_SYMLINK}
> +}
> diff --git a/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> new file mode 100644
> index 0000000..372828a
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> @@ -0,0 +1,4 @@
> +require barebox-ipl.inc
> +
> +SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
> +SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
> diff --git a/meta/recipes-bsp/barebox/barebox.inc b/meta/recipes-bsp/barebox/barebox.inc
> new file mode 100644
> index 0000000..b7885df
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox.inc
> @@ -0,0 +1,161 @@
> +# Copyright (C) 2014 Stefan Mueller-Klieser <s.mueller-klieser@phytec.de>
> +# PHYTEC Messtechnik GmbH
> +# Recipe released under the GPL-3.0 license
> +#
> +# TODO: see if there is some development towards moving all kconfig
> +# funcionality into the kconfig-frontends package and adjust
> +# the recipe accordingly.
> +#
> +
> +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. \
> + The bb recipe adds config fragment support and kconfig \
> + command handling using the yocto kern-tools-native."
> +HOMEPAGE = "http://www.barebox.org"
> +SECTION = "bootloaders"
> +PROVIDES = "virtual/bootloader barebox"
> +LICENSE = "GPL-2.0"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=057bf9e50e1ca857d0eb97bfe4ba8e5d"
> +SRC_URI = "http://barebox.org/download/barebox-${PV}.tar.bz2"
> +
> +inherit kernel-arch cml1 deploy
> +DEPENDS += "kern-tools-native"
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +# verbose build 0/1
> +VERBOSE_BUILD ?= "0"
> +EXTRA_OEMAKE = 'V=${VERBOSE_BUILD} CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}"'
> +# target rootfs boot directory
> +base_bootdir = "/boot"
> +
> +# these variables need to be assigned in the machine.conf
> +# name of the image created by barebox Makefile
> +BAREBOX_BIN ?= "barebox.bin"
> +# filename of file to be deployed by this recipe
> +BAREBOX_BIN_DEPLOY ?= "barebox-${MACHINE}-${PV}-${PR}.bin"
> +BAREBOX_BIN_SYMLINK ?= "barebox.bin"
> +BAREBOX_DEFAULT_DEFCONFIG ?= ""
> +# barebox environment
> +BAREBOX_ENV ?= "defaultenv/barebox_default_env"
> +BAREBOX_ENV_DEPLOY ?= "bareboxenv-${MACHINE}-${PV}-${PR}"
> +BAREBOX_ENV_SYMLINK ?= "barebox.env"
> +
> +# returns .scc and .cfg filenames from SRC_URI
> +def find_sccs(d):
> + sources=src_patches(d, True)
> + sources_list=[]
> + for s in sources:
> + base, ext = os.path.splitext(os.path.basename(s))
> + if ext and ext in [".scc", ".cfg"]:
> + sources_list.append(s)
> + return sources_list
> +
> +# uses kern-tools-native to merge the config fragments
> +python do_prepare_configure() {
> + import shutil, subprocess
> + workdir = d.getVar('WORKDIR', True)
> + S = d.getVar('S', True)
> + defconfig = os.path.join(workdir , 'defconfig')
> + if not os.path.isfile(defconfig):
> + bb.note("No defconfig file provided for the barebox recipe")
> + config = os.path.join(S, '.config')
> + if not os.path.isfile(config):
> + bb.note("barebox is not configured")
> + bb.build.exec_func("do_default_defconfig",d)
> + bb.build.exec_func("do_savedefconfig",d)
> + defconfig = os.path.join(workdir , 'defconfig.temp')
> + os.chdir(workdir)
> + fragments = find_sccs(d)
> + if not fragments:
> + bb.note("no config fragments will be merged")
> + else:
> + bb.note("combining kconfig fragments into .config for barebox")
> + cmd = 'merge_config.sh -m -O %s %s %s' % (S, defconfig, ' '.join(map(str,fragments)))
> + subprocess.call(cmd, shell=True)
> + localversion = "-${DISTRO}-${DISTRO_VERSION}"
> + bb.note("Setting LOCALVERSION in .config to %s" % localversion)
> + bareboxconfig = os.path.join(S, '.config')
> + cmd = 'kconfig-tweak --file %s --set-str LOCALVERSION %s' % (bareboxconfig, localversion)
> + subprocess.call(cmd,shell=True)
> +}
> +do_configure[prefuncs] += "do_prepare_configure"
> +
> +do_default_defconfig () {
> + bbnote "generating .config for target ${BAREBOX_DEFAULT_DEFCONFIG}"
> + unset CFLAGS LDFLAGS
> + oe_runmake ${BAREBOX_DEFAULT_DEFCONFIG}
> +}
> +
> +do_savedefconfig() {
> + bbplain "saving defconfig to ${WORKDIR}/defconfig.temp"
> + oe_runmake savedefconfig
> + install -m 644 ${S}/defconfig ${WORKDIR}/defconfig.temp
> +}
> +addtask savedefconfig after do_configure
> +
> +do_compile () {
> + unset CFLAGS LDFLAGS
> + oe_runmake all
> +}
> +
> +do_install () {
> + bbnote "Installing barebox image on target rootfs"
> + install -d ${D}${base_bootdir}
> + install ${S}/${BAREBOX_BIN} ${D}${base_bootdir}/${BAREBOX_BIN_DEPLOY}
> + ln -sf ${BAREBOX_BIN_DEPLOY} ${D}${base_bootdir}/${BAREBOX_BIN_SYMLINK}
> +
> + if [ -e ${S}/${BAREBOX_ENV} ] ; then
> + bbnote "Installing barebox-env on target rootfs"
> + install ${S}/${BAREBOX_ENV} ${D}${base_bootdir}/${BAREBOX_ENV_DEPLOY}
> + ln -sf ${BAREBOX_ENV_DEPLOY} ${D}${base_bootdir}/${BAREBOX_ENV_SYMLINK}
> + fi
> +
> + if [ -e ${S}/scripts/bareboxenv-target ] ; then
> + bbnote "Installing target env tool"
> + install -d ${D}${base_sbindir}
> + install -m 744 ${S}/scripts/bareboxenv-target ${D}${base_sbindir}/bareboxenv
> + fi
> +
> + if [ -e ${S}/scripts/bareboxcrc32-target ] ; then
> + bbnote "Installing target crc32 tool"
> + install -d ${D}${base_sbindir}
> + install -m 744 ${S}/scripts/bareboxcrc32-target ${D}${base_sbindir}/bareboxcrc32
> + fi
> +
> + if [ -e ${S}/scripts/kernel-install-target ] ; then
> + bbnote "Installing target kernel-install tool"
> + install -d ${D}${base_sbindir}
> + install -m 744 ${S}/scripts/kernel-install-target ${D}${base_sbindir}/barebox-kernel-install
> + fi
> +}
> +FILES_${PN} = ""
> +FILES_${PN} += "${base_bootdir}"
> +FILES_${PN}-dev = ""
> +RDEPENDS_${PN}-dev = ""
> +FILES_${PN}-dev += "${base_sbindir}"
> +
> +
> +do_deploy () {
> + bbnote "Deploying barebox"
> + install -d ${DEPLOYDIR}
> + install ${S}/${BAREBOX_BIN} ${DEPLOYDIR}/${BAREBOX_BIN_DEPLOY}
> + cd ${DEPLOYDIR}
> + rm -f ${BAREBOX_BIN_SYMLINK}
> + ln -sf ${BAREBOX_BIN_DEPLOY} ${BAREBOX_BIN_SYMLINK}
> +
> + if [ -e ${S}/${BAREBOX_ENV} ] ; then
> + bbnote "Deploying barebox env"
> + install ${S}/${BAREBOX_ENV} ${DEPLOYDIR}/${BAREBOX_ENV_DEPLOY}
> + cd ${DEPLOYDIR}
> + rm -f ${BAERBOX_ENV_SYMLINK}
> + ln -sf ${BAREBOX_ENV_DEPLOY} ${BAREBOX_ENV_SYMLINK}
> + fi
> +
> + bbnote "Installing host barebox toolset"
> + install -d ${STAGING_BINDIR_NATIVE}
> + cd ${S}
> + install -m 755 scripts/bareboxenv ${STAGING_BINDIR_NATIVE}/
> +}
> +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..a311ca9
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox_2014.07.0.bb
> @@ -0,0 +1,4 @@
> +require barebox.inc
> +
> +SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
> +SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC 1/1] add support for the barebox bootloader
2014-07-30 11:49 [RFC 1/1] add support for the barebox bootloader Stefan Müller-Klieser
2014-07-30 14:19 ` David Vincent
@ 2014-07-30 16:53 ` Saul Wold
2014-07-31 7:04 ` Stefan Müller-Klieser
1 sibling, 1 reply; 5+ messages in thread
From: Saul Wold @ 2014-07-30 16:53 UTC (permalink / raw)
To: Stefan Müller-Klieser, openembedded-core
On 07/30/2014 04:49 AM, Stefan Müller-Klieser wrote:
> Barebox is a bootloader that inherits the best of U-Boot and the Linux
> kernel. The barebox uses kconfig and kbuild mechanisms similar to the
> Linux kernel. This is reflected in the recipe. As soon as this
> functionality gets more abstraction in classes, the barebox recipe can
> be simplified. The recipe supports: kconfig handling, kconfig fragments,
> packages for dev tools and support for the initial program loader
> creation.
>
> Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
> ---
> meta/recipes-bsp/barebox/barebox-ipl.inc | 37 +++++
> meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb | 4 +
> meta/recipes-bsp/barebox/barebox.inc | 161 ++++++++++++++++++++++
> meta/recipes-bsp/barebox/barebox_2014.07.0.bb | 4 +
> 4 files changed, 206 insertions(+)
> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl.inc
> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> 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-ipl.inc b/meta/recipes-bsp/barebox/barebox-ipl.inc
> new file mode 100644
> index 0000000..f388522
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox-ipl.inc
> @@ -0,0 +1,37 @@
> +# Copyright (C) 2014 Stefan Mueller-Klieser <s.mueller-klieser@phytec.de> \
> +# PHYTEC Messtechnik GmbH
> +# Recipe released under the GPL-3.0 license
> +
Before I review this much further, I have to ask why are you licensing
the recipe meta-data as GPL-3.0? All the rest of the meta-data is MIT.
I also note that barebox itself is GPL-2.0.
Thanks
Sau!
> +require barebox.inc
> +
> +DESCRIPTION = "Barebox IPL Inintial Program Loader: some machines need \
> + a pre-bootloader. This one gets build by the barebox."
> +PROVIDES = "barebox-ipl"
> +S = "${WORKDIR}/barebox-${PV}"
> +
> +# Pre Bootloader
> +BAREBOX_IPL_BIN ?= "barebox.bin"
> +BAREBOX_IPL_BIN_DEPLOY ?= "IPL-${MACHINE}-${PV}-${PR}.bin"
> +BAREBOX_IPL_BIN_SYMLINK ?= "IPL"
> +BAREBOX_IPL_DEFAULT_DEFCONFIG ?= "am335x_mlo_defconfig"
> +
> +do_default_defconfig () {
> + bbnote "generating .config for target ${BAREBOX_IPL_DEFAULT_DEFCONFIG}"
> + unset CFLAGS LDFLAGS
> + oe_runmake ${BAREBOX_IPL_DEFAULT_DEFCONFIG}
> +}
> +
> +do_install () {
> + bbnote "Installing barebox-ipl image on target rootfs"
> + install -d ${D}${base_bootdir}
> + install ${S}/${BAREBOX_IPL_BIN} ${D}${base_bootdir}/${BAREBOX_IPL_BIN_DEPLOY}
> + ln -sf ${BAREBOX_IPL_BIN_DEPLOY} ${D}${base_bootdir}/${BAREBOX_IPL_BIN_SYMLINK}
> +}
> +FILES_${PN} = ""
> +FILES_${PN} = "${base_bootdir}"
> +
> +do_deploy () {
> + bbnote "Deploying barebox ipl"
> + install ${S}/${BAREBOX_IPL_BIN} ${DEPLOYDIR}/${BAREBOX_IPL_BIN_DEPLOY}
> + ln -sf ${BAREBOX_IPL_BIN_DEPLOY} ${DEPLOYDIR}/${BAREBOX_IPL_BIN_SYMLINK}
> +}
> diff --git a/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> new file mode 100644
> index 0000000..372828a
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> @@ -0,0 +1,4 @@
> +require barebox-ipl.inc
> +
> +SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
> +SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
> diff --git a/meta/recipes-bsp/barebox/barebox.inc b/meta/recipes-bsp/barebox/barebox.inc
> new file mode 100644
> index 0000000..b7885df
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox.inc
> @@ -0,0 +1,161 @@
> +# Copyright (C) 2014 Stefan Mueller-Klieser <s.mueller-klieser@phytec.de>
> +# PHYTEC Messtechnik GmbH
> +# Recipe released under the GPL-3.0 license
> +#
> +# TODO: see if there is some development towards moving all kconfig
> +# funcionality into the kconfig-frontends package and adjust
> +# the recipe accordingly.
> +#
> +
> +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. \
> + The bb recipe adds config fragment support and kconfig \
> + command handling using the yocto kern-tools-native."
> +HOMEPAGE = "http://www.barebox.org"
> +SECTION = "bootloaders"
> +PROVIDES = "virtual/bootloader barebox"
> +LICENSE = "GPL-2.0"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=057bf9e50e1ca857d0eb97bfe4ba8e5d"
> +SRC_URI = "http://barebox.org/download/barebox-${PV}.tar.bz2"
> +
> +inherit kernel-arch cml1 deploy
> +DEPENDS += "kern-tools-native"
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +# verbose build 0/1
> +VERBOSE_BUILD ?= "0"
> +EXTRA_OEMAKE = 'V=${VERBOSE_BUILD} CROSS_COMPILE=${TARGET_PREFIX} CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}"'
> +# target rootfs boot directory
> +base_bootdir = "/boot"
> +
> +# these variables need to be assigned in the machine.conf
> +# name of the image created by barebox Makefile
> +BAREBOX_BIN ?= "barebox.bin"
> +# filename of file to be deployed by this recipe
> +BAREBOX_BIN_DEPLOY ?= "barebox-${MACHINE}-${PV}-${PR}.bin"
> +BAREBOX_BIN_SYMLINK ?= "barebox.bin"
> +BAREBOX_DEFAULT_DEFCONFIG ?= ""
> +# barebox environment
> +BAREBOX_ENV ?= "defaultenv/barebox_default_env"
> +BAREBOX_ENV_DEPLOY ?= "bareboxenv-${MACHINE}-${PV}-${PR}"
> +BAREBOX_ENV_SYMLINK ?= "barebox.env"
> +
> +# returns .scc and .cfg filenames from SRC_URI
> +def find_sccs(d):
> + sources=src_patches(d, True)
> + sources_list=[]
> + for s in sources:
> + base, ext = os.path.splitext(os.path.basename(s))
> + if ext and ext in [".scc", ".cfg"]:
> + sources_list.append(s)
> + return sources_list
> +
> +# uses kern-tools-native to merge the config fragments
> +python do_prepare_configure() {
> + import shutil, subprocess
> + workdir = d.getVar('WORKDIR', True)
> + S = d.getVar('S', True)
> + defconfig = os.path.join(workdir , 'defconfig')
> + if not os.path.isfile(defconfig):
> + bb.note("No defconfig file provided for the barebox recipe")
> + config = os.path.join(S, '.config')
> + if not os.path.isfile(config):
> + bb.note("barebox is not configured")
> + bb.build.exec_func("do_default_defconfig",d)
> + bb.build.exec_func("do_savedefconfig",d)
> + defconfig = os.path.join(workdir , 'defconfig.temp')
> + os.chdir(workdir)
> + fragments = find_sccs(d)
> + if not fragments:
> + bb.note("no config fragments will be merged")
> + else:
> + bb.note("combining kconfig fragments into .config for barebox")
> + cmd = 'merge_config.sh -m -O %s %s %s' % (S, defconfig, ' '.join(map(str,fragments)))
> + subprocess.call(cmd, shell=True)
> + localversion = "-${DISTRO}-${DISTRO_VERSION}"
> + bb.note("Setting LOCALVERSION in .config to %s" % localversion)
> + bareboxconfig = os.path.join(S, '.config')
> + cmd = 'kconfig-tweak --file %s --set-str LOCALVERSION %s' % (bareboxconfig, localversion)
> + subprocess.call(cmd,shell=True)
> +}
> +do_configure[prefuncs] += "do_prepare_configure"
> +
> +do_default_defconfig () {
> + bbnote "generating .config for target ${BAREBOX_DEFAULT_DEFCONFIG}"
> + unset CFLAGS LDFLAGS
> + oe_runmake ${BAREBOX_DEFAULT_DEFCONFIG}
> +}
> +
> +do_savedefconfig() {
> + bbplain "saving defconfig to ${WORKDIR}/defconfig.temp"
> + oe_runmake savedefconfig
> + install -m 644 ${S}/defconfig ${WORKDIR}/defconfig.temp
> +}
> +addtask savedefconfig after do_configure
> +
> +do_compile () {
> + unset CFLAGS LDFLAGS
> + oe_runmake all
> +}
> +
> +do_install () {
> + bbnote "Installing barebox image on target rootfs"
> + install -d ${D}${base_bootdir}
> + install ${S}/${BAREBOX_BIN} ${D}${base_bootdir}/${BAREBOX_BIN_DEPLOY}
> + ln -sf ${BAREBOX_BIN_DEPLOY} ${D}${base_bootdir}/${BAREBOX_BIN_SYMLINK}
> +
> + if [ -e ${S}/${BAREBOX_ENV} ] ; then
> + bbnote "Installing barebox-env on target rootfs"
> + install ${S}/${BAREBOX_ENV} ${D}${base_bootdir}/${BAREBOX_ENV_DEPLOY}
> + ln -sf ${BAREBOX_ENV_DEPLOY} ${D}${base_bootdir}/${BAREBOX_ENV_SYMLINK}
> + fi
> +
> + if [ -e ${S}/scripts/bareboxenv-target ] ; then
> + bbnote "Installing target env tool"
> + install -d ${D}${base_sbindir}
> + install -m 744 ${S}/scripts/bareboxenv-target ${D}${base_sbindir}/bareboxenv
> + fi
> +
> + if [ -e ${S}/scripts/bareboxcrc32-target ] ; then
> + bbnote "Installing target crc32 tool"
> + install -d ${D}${base_sbindir}
> + install -m 744 ${S}/scripts/bareboxcrc32-target ${D}${base_sbindir}/bareboxcrc32
> + fi
> +
> + if [ -e ${S}/scripts/kernel-install-target ] ; then
> + bbnote "Installing target kernel-install tool"
> + install -d ${D}${base_sbindir}
> + install -m 744 ${S}/scripts/kernel-install-target ${D}${base_sbindir}/barebox-kernel-install
> + fi
> +}
> +FILES_${PN} = ""
> +FILES_${PN} += "${base_bootdir}"
> +FILES_${PN}-dev = ""
> +RDEPENDS_${PN}-dev = ""
> +FILES_${PN}-dev += "${base_sbindir}"
> +
> +
> +do_deploy () {
> + bbnote "Deploying barebox"
> + install -d ${DEPLOYDIR}
> + install ${S}/${BAREBOX_BIN} ${DEPLOYDIR}/${BAREBOX_BIN_DEPLOY}
> + cd ${DEPLOYDIR}
> + rm -f ${BAREBOX_BIN_SYMLINK}
> + ln -sf ${BAREBOX_BIN_DEPLOY} ${BAREBOX_BIN_SYMLINK}
> +
> + if [ -e ${S}/${BAREBOX_ENV} ] ; then
> + bbnote "Deploying barebox env"
> + install ${S}/${BAREBOX_ENV} ${DEPLOYDIR}/${BAREBOX_ENV_DEPLOY}
> + cd ${DEPLOYDIR}
> + rm -f ${BAERBOX_ENV_SYMLINK}
> + ln -sf ${BAREBOX_ENV_DEPLOY} ${BAREBOX_ENV_SYMLINK}
> + fi
> +
> + bbnote "Installing host barebox toolset"
> + install -d ${STAGING_BINDIR_NATIVE}
> + cd ${S}
> + install -m 755 scripts/bareboxenv ${STAGING_BINDIR_NATIVE}/
> +}
> +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..a311ca9
> --- /dev/null
> +++ b/meta/recipes-bsp/barebox/barebox_2014.07.0.bb
> @@ -0,0 +1,4 @@
> +require barebox.inc
> +
> +SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
> +SRC_URI[sha256sum] = "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC 1/1] add support for the barebox bootloader
2014-07-30 16:53 ` Saul Wold
@ 2014-07-31 7:04 ` Stefan Müller-Klieser
2014-07-31 7:30 ` Richard Purdie
0 siblings, 1 reply; 5+ messages in thread
From: Stefan Müller-Klieser @ 2014-07-31 7:04 UTC (permalink / raw)
To: Saul Wold, openembedded-core
On 30.07.2014 18:53, Saul Wold wrote:
> On 07/30/2014 04:49 AM, Stefan Müller-Klieser wrote:
>> Barebox is a bootloader that inherits the best of U-Boot and the Linux
>> kernel. The barebox uses kconfig and kbuild mechanisms similar to the
>> Linux kernel. This is reflected in the recipe. As soon as this
>> functionality gets more abstraction in classes, the barebox recipe can
>> be simplified. The recipe supports: kconfig handling, kconfig fragments,
>> packages for dev tools and support for the initial program loader
>> creation.
>>
>> Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
>> ---
>> meta/recipes-bsp/barebox/barebox-ipl.inc | 37 +++++
>> meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb | 4 +
>> meta/recipes-bsp/barebox/barebox.inc | 161
>> ++++++++++++++++++++++
>> meta/recipes-bsp/barebox/barebox_2014.07.0.bb | 4 +
>> 4 files changed, 206 insertions(+)
>> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl.inc
>> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
>> 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-ipl.inc
>> b/meta/recipes-bsp/barebox/barebox-ipl.inc
>> new file mode 100644
>> index 0000000..f388522
>> --- /dev/null
>> +++ b/meta/recipes-bsp/barebox/barebox-ipl.inc
>> @@ -0,0 +1,37 @@
>> +# Copyright (C) 2014 Stefan Mueller-Klieser
>> <s.mueller-klieser@phytec.de> \
>> +# PHYTEC Messtechnik GmbH
>> +# Recipe released under the GPL-3.0 license
>> +
> Before I review this much further, I have to ask why are you licensing
> the recipe meta-data as GPL-3.0? All the rest of the meta-data is MIT.
> I also note that barebox itself is GPL-2.0.
>
> Thanks
> Sau!
Thats our default license. GPL3 is modern and better compatible with the
huge number of other free licenses. I can easily remove the line for
upstream work, so it will be MIT too.
>
>> +require barebox.inc
>> +
>> +DESCRIPTION = "Barebox IPL Inintial Program Loader: some machines need \
>> + a pre-bootloader. This one gets build by the barebox."
>> +PROVIDES = "barebox-ipl"
>> +S = "${WORKDIR}/barebox-${PV}"
>> +
>> +# Pre Bootloader
>> +BAREBOX_IPL_BIN ?= "barebox.bin"
>> +BAREBOX_IPL_BIN_DEPLOY ?= "IPL-${MACHINE}-${PV}-${PR}.bin"
>> +BAREBOX_IPL_BIN_SYMLINK ?= "IPL"
>> +BAREBOX_IPL_DEFAULT_DEFCONFIG ?= "am335x_mlo_defconfig"
>> +
>> +do_default_defconfig () {
>> + bbnote "generating .config for target
>> ${BAREBOX_IPL_DEFAULT_DEFCONFIG}"
>> + unset CFLAGS LDFLAGS
>> + oe_runmake ${BAREBOX_IPL_DEFAULT_DEFCONFIG}
>> +}
>> +
>> +do_install () {
>> + bbnote "Installing barebox-ipl image on target rootfs"
>> + install -d ${D}${base_bootdir}
>> + install ${S}/${BAREBOX_IPL_BIN}
>> ${D}${base_bootdir}/${BAREBOX_IPL_BIN_DEPLOY}
>> + ln -sf ${BAREBOX_IPL_BIN_DEPLOY}
>> ${D}${base_bootdir}/${BAREBOX_IPL_BIN_SYMLINK}
>> +}
>> +FILES_${PN} = ""
>> +FILES_${PN} = "${base_bootdir}"
>> +
>> +do_deploy () {
>> + bbnote "Deploying barebox ipl"
>> + install ${S}/${BAREBOX_IPL_BIN}
>> ${DEPLOYDIR}/${BAREBOX_IPL_BIN_DEPLOY}
>> + ln -sf ${BAREBOX_IPL_BIN_DEPLOY}
>> ${DEPLOYDIR}/${BAREBOX_IPL_BIN_SYMLINK}
>> +}
>> diff --git a/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
>> b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
>> new file mode 100644
>> index 0000000..372828a
>> --- /dev/null
>> +++ b/meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
>> @@ -0,0 +1,4 @@
>> +require barebox-ipl.inc
>> +
>> +SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
>> +SRC_URI[sha256sum] =
>> "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
>> diff --git a/meta/recipes-bsp/barebox/barebox.inc
>> b/meta/recipes-bsp/barebox/barebox.inc
>> new file mode 100644
>> index 0000000..b7885df
>> --- /dev/null
>> +++ b/meta/recipes-bsp/barebox/barebox.inc
>> @@ -0,0 +1,161 @@
>> +# Copyright (C) 2014 Stefan Mueller-Klieser
>> <s.mueller-klieser@phytec.de>
>> +# PHYTEC Messtechnik GmbH
>> +# Recipe released under the GPL-3.0 license
>> +#
>> +# TODO: see if there is some development towards moving all kconfig
>> +# funcionality into the kconfig-frontends package and adjust
>> +# the recipe accordingly.
>> +#
>> +
>> +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. \
>> + The bb recipe adds config fragment support and kconfig \
>> + command handling using the yocto kern-tools-native."
>> +HOMEPAGE = "http://www.barebox.org"
>> +SECTION = "bootloaders"
>> +PROVIDES = "virtual/bootloader barebox"
>> +LICENSE = "GPL-2.0"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=057bf9e50e1ca857d0eb97bfe4ba8e5d"
>> +SRC_URI = "http://barebox.org/download/barebox-${PV}.tar.bz2"
>> +
>> +inherit kernel-arch cml1 deploy
>> +DEPENDS += "kern-tools-native"
>> +PACKAGE_ARCH = "${MACHINE_ARCH}"
>> +# verbose build 0/1
>> +VERBOSE_BUILD ?= "0"
>> +EXTRA_OEMAKE = 'V=${VERBOSE_BUILD} CROSS_COMPILE=${TARGET_PREFIX}
>> CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}"'
>> +# target rootfs boot directory
>> +base_bootdir = "/boot"
>> +
>> +# these variables need to be assigned in the machine.conf
>> +# name of the image created by barebox Makefile
>> +BAREBOX_BIN ?= "barebox.bin"
>> +# filename of file to be deployed by this recipe
>> +BAREBOX_BIN_DEPLOY ?= "barebox-${MACHINE}-${PV}-${PR}.bin"
>> +BAREBOX_BIN_SYMLINK ?= "barebox.bin"
>> +BAREBOX_DEFAULT_DEFCONFIG ?= ""
>> +# barebox environment
>> +BAREBOX_ENV ?= "defaultenv/barebox_default_env"
>> +BAREBOX_ENV_DEPLOY ?= "bareboxenv-${MACHINE}-${PV}-${PR}"
>> +BAREBOX_ENV_SYMLINK ?= "barebox.env"
>> +
>> +# returns .scc and .cfg filenames from SRC_URI
>> +def find_sccs(d):
>> + sources=src_patches(d, True)
>> + sources_list=[]
>> + for s in sources:
>> + base, ext = os.path.splitext(os.path.basename(s))
>> + if ext and ext in [".scc", ".cfg"]:
>> + sources_list.append(s)
>> + return sources_list
>> +
>> +# uses kern-tools-native to merge the config fragments
>> +python do_prepare_configure() {
>> + import shutil, subprocess
>> + workdir = d.getVar('WORKDIR', True)
>> + S = d.getVar('S', True)
>> + defconfig = os.path.join(workdir , 'defconfig')
>> + if not os.path.isfile(defconfig):
>> + bb.note("No defconfig file provided for the barebox recipe")
>> + config = os.path.join(S, '.config')
>> + if not os.path.isfile(config):
>> + bb.note("barebox is not configured")
>> + bb.build.exec_func("do_default_defconfig",d)
>> + bb.build.exec_func("do_savedefconfig",d)
>> + defconfig = os.path.join(workdir , 'defconfig.temp')
>> + os.chdir(workdir)
>> + fragments = find_sccs(d)
>> + if not fragments:
>> + bb.note("no config fragments will be merged")
>> + else:
>> + bb.note("combining kconfig fragments into .config for barebox")
>> + cmd = 'merge_config.sh -m -O %s %s %s' % (S, defconfig, '
>> '.join(map(str,fragments)))
>> + subprocess.call(cmd, shell=True)
>> + localversion = "-${DISTRO}-${DISTRO_VERSION}"
>> + bb.note("Setting LOCALVERSION in .config to %s" % localversion)
>> + bareboxconfig = os.path.join(S, '.config')
>> + cmd = 'kconfig-tweak --file %s --set-str LOCALVERSION %s' %
>> (bareboxconfig, localversion)
>> + subprocess.call(cmd,shell=True)
>> +}
>> +do_configure[prefuncs] += "do_prepare_configure"
>> +
>> +do_default_defconfig () {
>> + bbnote "generating .config for target ${BAREBOX_DEFAULT_DEFCONFIG}"
>> + unset CFLAGS LDFLAGS
>> + oe_runmake ${BAREBOX_DEFAULT_DEFCONFIG}
>> +}
>> +
>> +do_savedefconfig() {
>> + bbplain "saving defconfig to ${WORKDIR}/defconfig.temp"
>> + oe_runmake savedefconfig
>> + install -m 644 ${S}/defconfig ${WORKDIR}/defconfig.temp
>> +}
>> +addtask savedefconfig after do_configure
>> +
>> +do_compile () {
>> + unset CFLAGS LDFLAGS
>> + oe_runmake all
>> +}
>> +
>> +do_install () {
>> + bbnote "Installing barebox image on target rootfs"
>> + install -d ${D}${base_bootdir}
>> + install ${S}/${BAREBOX_BIN}
>> ${D}${base_bootdir}/${BAREBOX_BIN_DEPLOY}
>> + ln -sf ${BAREBOX_BIN_DEPLOY}
>> ${D}${base_bootdir}/${BAREBOX_BIN_SYMLINK}
>> +
>> + if [ -e ${S}/${BAREBOX_ENV} ] ; then
>> + bbnote "Installing barebox-env on target rootfs"
>> + install ${S}/${BAREBOX_ENV}
>> ${D}${base_bootdir}/${BAREBOX_ENV_DEPLOY}
>> + ln -sf ${BAREBOX_ENV_DEPLOY}
>> ${D}${base_bootdir}/${BAREBOX_ENV_SYMLINK}
>> + fi
>> +
>> + if [ -e ${S}/scripts/bareboxenv-target ] ; then
>> + bbnote "Installing target env tool"
>> + install -d ${D}${base_sbindir}
>> + install -m 744 ${S}/scripts/bareboxenv-target
>> ${D}${base_sbindir}/bareboxenv
>> + fi
>> +
>> + if [ -e ${S}/scripts/bareboxcrc32-target ] ; then
>> + bbnote "Installing target crc32 tool"
>> + install -d ${D}${base_sbindir}
>> + install -m 744 ${S}/scripts/bareboxcrc32-target
>> ${D}${base_sbindir}/bareboxcrc32
>> + fi
>> +
>> + if [ -e ${S}/scripts/kernel-install-target ] ; then
>> + bbnote "Installing target kernel-install tool"
>> + install -d ${D}${base_sbindir}
>> + install -m 744 ${S}/scripts/kernel-install-target
>> ${D}${base_sbindir}/barebox-kernel-install
>> + fi
>> +}
>> +FILES_${PN} = ""
>> +FILES_${PN} += "${base_bootdir}"
>> +FILES_${PN}-dev = ""
>> +RDEPENDS_${PN}-dev = ""
>> +FILES_${PN}-dev += "${base_sbindir}"
>> +
>> +
>> +do_deploy () {
>> + bbnote "Deploying barebox"
>> + install -d ${DEPLOYDIR}
>> + install ${S}/${BAREBOX_BIN} ${DEPLOYDIR}/${BAREBOX_BIN_DEPLOY}
>> + cd ${DEPLOYDIR}
>> + rm -f ${BAREBOX_BIN_SYMLINK}
>> + ln -sf ${BAREBOX_BIN_DEPLOY} ${BAREBOX_BIN_SYMLINK}
>> +
>> + if [ -e ${S}/${BAREBOX_ENV} ] ; then
>> + bbnote "Deploying barebox env"
>> + install ${S}/${BAREBOX_ENV} ${DEPLOYDIR}/${BAREBOX_ENV_DEPLOY}
>> + cd ${DEPLOYDIR}
>> + rm -f ${BAERBOX_ENV_SYMLINK}
>> + ln -sf ${BAREBOX_ENV_DEPLOY} ${BAREBOX_ENV_SYMLINK}
>> + fi
>> +
>> + bbnote "Installing host barebox toolset"
>> + install -d ${STAGING_BINDIR_NATIVE}
>> + cd ${S}
>> + install -m 755 scripts/bareboxenv ${STAGING_BINDIR_NATIVE}/
>> +}
>> +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..a311ca9
>> --- /dev/null
>> +++ b/meta/recipes-bsp/barebox/barebox_2014.07.0.bb
>> @@ -0,0 +1,4 @@
>> +require barebox.inc
>> +
>> +SRC_URI[md5sum] = "f3a93950777916d4b1c2cd366aec8d91"
>> +SRC_URI[sha256sum] =
>> "6dca5c78de8565a15aaa404edbf1bc4663415f0dc69e094f3b621636876285f2"
>>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC 1/1] add support for the barebox bootloader
2014-07-31 7:04 ` Stefan Müller-Klieser
@ 2014-07-31 7:30 ` Richard Purdie
0 siblings, 0 replies; 5+ messages in thread
From: Richard Purdie @ 2014-07-31 7:30 UTC (permalink / raw)
To: Stefan Müller-Klieser; +Cc: openembedded-core
On Thu, 2014-07-31 at 09:04 +0200, Stefan Müller-Klieser wrote:
> On 30.07.2014 18:53, Saul Wold wrote:
> > On 07/30/2014 04:49 AM, Stefan Müller-Klieser wrote:
> >> Barebox is a bootloader that inherits the best of U-Boot and the Linux
> >> kernel. The barebox uses kconfig and kbuild mechanisms similar to the
> >> Linux kernel. This is reflected in the recipe. As soon as this
> >> functionality gets more abstraction in classes, the barebox recipe can
> >> be simplified. The recipe supports: kconfig handling, kconfig fragments,
> >> packages for dev tools and support for the initial program loader
> >> creation.
> >>
> >> Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de>
> >> ---
> >> meta/recipes-bsp/barebox/barebox-ipl.inc | 37 +++++
> >> meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb | 4 +
> >> meta/recipes-bsp/barebox/barebox.inc | 161
> >> ++++++++++++++++++++++
> >> meta/recipes-bsp/barebox/barebox_2014.07.0.bb | 4 +
> >> 4 files changed, 206 insertions(+)
> >> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl.inc
> >> create mode 100644 meta/recipes-bsp/barebox/barebox-ipl_2014.07.0.bb
> >> 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-ipl.inc
> >> b/meta/recipes-bsp/barebox/barebox-ipl.inc
> >> new file mode 100644
> >> index 0000000..f388522
> >> --- /dev/null
> >> +++ b/meta/recipes-bsp/barebox/barebox-ipl.inc
> >> @@ -0,0 +1,37 @@
> >> +# Copyright (C) 2014 Stefan Mueller-Klieser
> >> <s.mueller-klieser@phytec.de> \
> >> +# PHYTEC Messtechnik GmbH
> >> +# Recipe released under the GPL-3.0 license
> >> +
> > Before I review this much further, I have to ask why are you licensing
> > the recipe meta-data as GPL-3.0? All the rest of the meta-data is MIT.
> > I also note that barebox itself is GPL-2.0.
> >
> > Thanks
> > Sau!
>
> Thats our default license. GPL3 is modern and better compatible with the
> huge number of other free licenses. I can easily remove the line for
> upstream work, so it will be MIT too.
Our metadata is MIT and I'd much prefer to try and keep it simple with
one license if at all possible.
Cheers,
Richard
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-07-31 7:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-30 11:49 [RFC 1/1] add support for the barebox bootloader Stefan Müller-Klieser
2014-07-30 14:19 ` David Vincent
2014-07-30 16:53 ` Saul Wold
2014-07-31 7:04 ` Stefan Müller-Klieser
2014-07-31 7:30 ` Richard Purdie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox