106 lines
2.5 KiB
Bash
Executable file
106 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (C) 2020-present Fewtarius
|
|
|
|
###
|
|
### Simple script to build JELOS
|
|
###
|
|
|
|
if [ !"${ARCH}" == true ]
|
|
then
|
|
echo "export ARCH before building."
|
|
exit 1
|
|
fi
|
|
|
|
. config/options ""
|
|
. projects/${PROJECT}/devices/${DEVICE}/options
|
|
|
|
echo "Building ${DISTRO} for ${DEVICE}"
|
|
|
|
# If DEVICE_ROOT is defined and not the device being built, make sure that the
|
|
# build folder is a link to root rather than a folder.
|
|
|
|
if [ -n "${DEVICE_ROOT}" ]
|
|
then
|
|
|
|
if [ ! "${DEVICE_ROOT}" = "${DEVICE}" ]
|
|
then
|
|
# Ensure there isn't a left over build directory.
|
|
if [ -d "build.${DISTRO}-${DEVICE}.${ARCH}" ]
|
|
then
|
|
echo "Removing stale build root."
|
|
rm -rf build.${DISTRO}-${DEVICE}.${ARCH}
|
|
fi
|
|
|
|
if [ ! -d "build.${DISTRO}-${DEVICE_ROOT}.${ARCH}" ]
|
|
then
|
|
echo "Building the device root (${DEVICE_ROOT})."
|
|
make ${DEVICE_ROOT}
|
|
fi
|
|
|
|
# Link back to the DEVICE_ROOT so we can re-use the build directory to save space.
|
|
if [ ! -L "build.${DISTRO}-${DEVICE}.${ARCH}" ]
|
|
then
|
|
ln -sf build.${DISTRO}-${DEVICE_ROOT}.${ARCH} build.${DISTRO}-${DEVICE}.${ARCH}
|
|
fi
|
|
fi
|
|
|
|
# If DEVICE_ROOT is defined, take additional clean steps to ensure everything is built
|
|
# properly for all devices including the root device.
|
|
|
|
PKG_CLEAN+=" ${CLEAN_OS_DEEP} ${CLEAN_EMU_TOOLS}"
|
|
|
|
fi
|
|
|
|
if [ "${ENABLE_32BIT}" == "true" ]
|
|
then
|
|
PKG_CLEAN+=" ${CLEAN_EMU_32BIT}"
|
|
fi
|
|
|
|
# Clean necessary packages.
|
|
PKG_CLEAN+=" lib32 initramfs modules autostart splash jelos"
|
|
|
|
if [ ! -n "${DIRTY}" ]
|
|
then
|
|
if [ -d "build.${DISTRO}-${DEVICE_ROOT}.${ARCH}/initramfs" ]
|
|
then
|
|
rm -rf build.${DISTRO}-${DEVICE_ROOT}.${ARCH}/initramfs
|
|
fi
|
|
|
|
# Clean a few packages to ensure the build date and version are updated
|
|
for package in ${PKG_CLEAN}
|
|
do
|
|
echo "Clean: ${package}"
|
|
./scripts/clean ${package}
|
|
done
|
|
fi
|
|
|
|
# Clean out old builds before starting the new one.
|
|
echo "Prune old releases: ${DISTRO}-${DEVICE}.${ARCH}-*"
|
|
rm -f ./release/${DISTRO}-${DEVICE}.${ARCH}-*
|
|
|
|
# Remove the image root as it should be regenerated for every build.
|
|
rm -rf ./build.${DISTRO}-${DEVICE}.${ARCH}/image
|
|
|
|
case ${ARCH} in
|
|
arm)
|
|
[ "${BASE_ONLY}" == "true" ] || [ ! "${ENABLE_32BIT}" == "true" ] && exit 0
|
|
export PKG_BUILD_PERF=no
|
|
scripts/build_compat arm
|
|
scripts/install arm
|
|
;;
|
|
i686)
|
|
[ "${BASE_ONLY}" == "true" ] || [ ! "${ENABLE_32BIT}" == "true" ] && exit 0
|
|
export PKG_BUILD_PERF=no
|
|
scripts/build_compat x86
|
|
scripts/install x86
|
|
;;
|
|
*)
|
|
make image
|
|
esac
|
|
|
|
if [ ! $? == 0 ]
|
|
then
|
|
echo "Build failed..exiting."
|
|
exit 1
|
|
fi
|