diff options
author | Ryan Harkin <ryan.harkin@linaro.org> | 2015-06-09 10:15:54 +0100 |
---|---|---|
committer | Ryan Harkin <ryan.harkin@linaro.org> | 2015-06-09 14:15:24 +0100 |
commit | a28a63dc4fda2ff7e9ec598e83b9469197434795 (patch) | |
tree | 38b7f35f9dfaea36bed694af282c7862cd4820b8 | |
parent | e73c6e7d8e7960ea3c7c1fe62e61faa486599c8a (diff) |
Add busybox build
Added the files needed to create a busybox Juno variant.
The user can now invoke the scripts thus:
./build-scripts/build-all.sh juno-busybox
./build-scripts/build-all.sh juno-busybox package
The output directory will have a juno-busybox dir with both uboot and
uefi variants inside.
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
-rwxr-xr-x | build-busybox.sh | 65 | ||||
-rwxr-xr-x | build-ramdisk.sh | 75 | ||||
-rwxr-xr-x | build-target-bins.sh | 17 | ||||
-rw-r--r-- | variants/juno-busybox | 90 |
4 files changed, 246 insertions, 1 deletions
diff --git a/build-busybox.sh b/build-busybox.sh new file mode 100755 index 0000000..470fdbd --- /dev/null +++ b/build-busybox.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +# Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +do_build () +{ + if [ "$BUSYBOX_BUILD_ENABLED" == "1" ]; then + export ARCH=$BUSYBOX_ARCH + + pushd $TOP_DIR/$BUSYBOX_PATH + make defconfig + sed -i 's/# CONFIG_STATIC is not set/CONFIG_STATIC=y/g' .config + make -j $PARALLELISM install + # do some commands to build + popd + fi +} + +do_clean () +{ + if [ "$BUSYBOX_BUILD_ENABLED" == "1" ]; then + export ARCH=$BUSYBOX_ARCH + + pushd $TOP_DIR/$BUSYBOX_PATH + make clean + + popd + fi +} + +do_package () +{ + if [ "$BUSYBOX_BUILD_ENABLED" == "1" ]; then + echo "Packaging BUSYBOX... $VARIANT"; + fi +} + +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +source $DIR/framework.sh $1 $2 diff --git a/build-ramdisk.sh b/build-ramdisk.sh new file mode 100755 index 0000000..a4ffdbd --- /dev/null +++ b/build-ramdisk.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +# Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# +# This script uses the following environment variables from the variant +# +# VARIANT - build variant name +# TOP_DIR - workspace root directory +# RAMDISK_BUILD_ENABLED - Flag to enable building ramdisk +# RAMDISK_PATH - sub-directory containing ramdisk code +# RAMDISK_LINUX_GEN_CPIO - path to gen_init_cpio tool +# RAMDISK_BUSYBOX_PATH - path to built busybox image + +do_build () +{ + if [ "$RAMDISK_BUILD_ENABLED" == "1" ]; then + echo "Building... $VARIANT"; + fi +} + +do_clean () +{ + if [ "$RAMDISK_BUILD_ENABLED" == "1" ]; then + pushd $TOP_DIR/$RAMDISK_PATH + rm -f ramdisk.img busybox + popd + fi +} + +do_package () +{ + if [ "$RAMDISK_BUILD_ENABLED" == "1" ]; then + echo "Packaging ramdisk... $VARIANT"; + # create the ramdisk + pushd $TOP_DIR/$RAMDISK_PATH + cp $TOP_DIR/$RAMDISK_BUSYBOX_PATH . + $TOP_DIR/$RAMDISK_LINUX_GEN_CPIO files.txt > ramdisk.img + popd + # Copy binary to output folder + pushd $TOP_DIR + mkdir -p ${OUTDIR} + cp $RAMDISK_PATH/ramdisk.img ${OUTDIR}/ + popd + fi +} + +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +source $DIR/framework.sh $1 $2 diff --git a/build-target-bins.sh b/build-target-bins.sh index 167f1ac..ee303c3 100755 --- a/build-target-bins.sh +++ b/build-target-bins.sh @@ -57,7 +57,13 @@ populate_variant() # copy ramdisk to the variant if [ "$TARGET_BINS_HAS_OE" = "1" ]; then cp ${OUTDIR}/uInitrd-oe.$TARGET_BINS_UINITRD_ADDRS $outdir/ramdisk.img - else + elif [ "$TARGET_BINS_HAS_BUSYBOX" = "1" ]; then + if [ "$boot_type" = "uboot" ]; then + cp ${OUTDIR}/uInitrd-busybox.$TARGET_BINS_UINITRD_ADDRS $outdir/ramdisk.img + else + cp ${OUTDIR}/ramdisk.img $outdir/ramdisk.img + fi + elif [ "$TARGET_BINS_HAS_ANDROID" = "1" ]; then if [ "$boot_type" = "uboot" ]; then cp ${OUTDIR}/uInitrd-android.$TARGET_BINS_UINITRD_ADDRS $outdir/ramdisk.img else @@ -144,6 +150,12 @@ do_package() ${uboot_mkimage} ${common_flags} -T ramdisk -n ramdisk -a $addr -e $addr -n "Dummy ramdisk" -d ramdisk-oe.img uInitrd-oe.$addr done fi + if [ "$TARGET_BINS_HAS_BUSYBOX" = "1" ]; then + mkdir -p busybox + for addr in $TARGET_BINS_UINITRD_ADDRS; do + ${uboot_mkimage} ${common_flags} -T ramdisk -n ramdisk -a $addr -e $addr -n "BusyBox ramdisk" -d ${OUTDIR}/ramdisk.img uInitrd-busybox.$addr + done + fi popd # Add chosen node for ramdisk to dtbs @@ -157,6 +169,9 @@ do_package() if [ "$TARGET_BINS_HAS_OE" = "1" ]; then append_chosen_node ${item}-chosen-oe ramdisk-oe.img $item fi + if [ "$TARGET_BINS_HAS_BUSYBOX" = "1" ]; then + append_chosen_node ${item}-chosen-busybox ramdisk.img $item + fi done popd fi diff --git a/variants/juno-busybox b/variants/juno-busybox new file mode 100644 index 0000000..26173e4 --- /dev/null +++ b/variants/juno-busybox @@ -0,0 +1,90 @@ +# Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +VARIANT_DESC="Juno kernel for BusyBox Software Stack" + +# Absolute path to the aarch64 GCC compoiler binaries (plus prefix) +# If you wish to specify a path relative to the workspace root, prefix it with "$TOP_DIR/" +# If your compiler is on your path, you can simply add the prefix, as per the default example. +export CROSS_COMPILE=${CROSS_COMPILE:-aarch64-linux-gnu-} +BUILD_SCRIPTS="" + +LINUX_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-linux.sh " +LINUX_PATH=linux +LINUX_CONFIGS_BASE="linaro-base vexpress64 big-LITTLE-MP" +LINUX_CONFIGS="${LINUX_CONFIGS_BASE} distribution" +LINUX_DEFCONFIG=defconfig +LINUX_ARCH=arm64 +DEVTREE_TREES="juno juno-r1" + +UBOOT_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-uboot.sh " +UBOOT_PATH=u-boot +UBOOT_ARCH=aarch64 +UBOOT_BOARDS="vexpress_aemv8a_juno" +UBOOT_OUTPUT_DESTS[vexpress_aemv8a_juno]=juno + +UEFI_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-uefi.sh " +UEFI_PATH=uefi/edk2 +UEFI_TOOLS_PATH=uefi/uefi-tools +UEFI_PLATFORMS="ArmPlatformPkg/ArmJunoPkg/Makefile" +UEFI_BUILD_MODE=DEBUG +UEFI_TOOLCHAIN=GCC49 +UEFI_OUTPUT_PLATFORMS="ArmJuno" +UEFI_OUTPUT_DESTS[juno]=juno + +ARM_TF_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-arm-tf.sh " +ARM_TF_PATH=arm-tf +ARM_TF_PLATS="juno" +ARM_TF_ARCH=aarch64 +ARMTF_DEBUG_ENABLED=1 + +BUSYBOX_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-busybox.sh " +BUSYBOX_PATH=busybox +BUSYBOX_ARCH=arm + +RAMDISK_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-ramdisk.sh " +RAMDISK_PATH=ramdisk +RAMDISK_LINUX_GEN_CPIO=$LINUX_PATH/usr/gen_init_cpio +RAMDISK_BUSYBOX_PATH=$BUSYBOX_PATH/_install/bin/busybox +# this must be the last step for low level code. +TARGET_BINS_BUILD_ENABLED=1 +BUILD_SCRIPTS=$BUILD_SCRIPTS"build-target-bins.sh " +TARGET_BINS_UINITRD_ADDRS="0x84000000" +TARGET_BINS_PLATS="juno" +TARGET_BINS_HAS_BUSYBOX=1 + +TARGET_ARM_TF_juno="juno" +TARGET_SCP_juno="recovery/SOFTWARE" +TARGET_UBOOT_juno="juno" +TARGET_UEFI_juno="juno" |