SBC_builder/tmp/all.sh
2025-06-01 01:05:27 +02:00

193 lines
4.6 KiB
Bash
Executable File

#!/bin/sh
set -e # Any subsequent(*) commands which fail will cause the shell script to exit immediately
set -o errtrace # trace ERR through - enabled
set -o errexit ## set -e : exit the script if any statement returns a non-true return value - enabled
invalid_param()
{
echo "Invalid parameters!"
exit 1
}
if [ "$#" -lt 2 ]; then
invalid_param
fi
ROOT_DIR="$(realpath $(dirname "$0"))"
GIT_BARE_ROOT="${ROOT_DIR}/git_bare"
DONE_MARKER=".done_marker"
source ${ROOT_DIR}/scripts/boards/${1}.sh
source ${ROOT_DIR}/scripts/host/binfmt.sh
source ${ROOT_DIR}/scripts/host/chroot.sh
source ${ROOT_DIR}/scripts/host/sources.sh
now=$(date +"%Y_%m_%d")
BACK_FN="back_os_${TARGET}_${now}.tar.xz"
SQH_FS="root_${TARGET}.sqh"
TMP_DIR="${ROOT_DIR}/tmp"
CFG_DIR="${ROOT_DIR}/cfg/${TARGET}"
OUT_DIR="${ROOT_DIR}/out/${TARGET}"
OS_DIR_DEF="${ROOT_DIR}/root"
CROSS_COMP=aarch64-unknown-linux-gnu-
MOD_1_NAME="klipper"
MOD_1_GIT="https://github.com/Klipper3d/klipper.git"
MOD_2_NAME="klipper_katapult"
MOD_2_GIT="https://github.com/Arksine/katapult.git"
INST_DEV=/dev/sdc
mkdir -p ${OUT_DIR}
mkdir -p ${CFG_DIR}
uboot_prepare()
{
source_prepare git "${UBOOT_GIT_URL}" "${UBOOT_GIT_DIR}" "${UBOOT_DIR}" "${UBOOT_TAG}" "${UBOOT_PATCH_DIR}"
}
uboot_config()
{
uboot_prepare
if [ -f "${CFG_DIR}/${CFG_UBOOT}" ]
then
cp "${CFG_DIR}/${CFG_UBOOT}" "${UBOOT_DIR}/.config"
fi
cd ${UBOOT_DIR} &&
make CROSS_COMPILE=${CROSS_COMP} ${UBOOT_ARGS} -j menuconfig &&
cp "${UBOOT_DIR}/.config" "${CFG_DIR}/${CFG_UBOOT}"
}
uboot_build()
{
uboot_extras_build
uboot_prepare
echo "Build U-Boot..."
if [ -f "${CFG_DIR}/${CFG_UBOOT}" ]
then
cp "${CFG_DIR}/${CFG_UBOOT}" "${UBOOT_DIR}/.config"
fi
cd ${UBOOT_DIR} &&
make CROSS_COMPILE=${CROSS_COMP} ${UBOOT_ARGS} clean &&
make CROSS_COMPILE=${CROSS_COMP} ${UBOOT_ARGS} -j
for str in ${UBOOT_FILES[@]}; do
cp "${UBOOT_DIR}/${str}" "${OUT_DIR}/${str}"
done
}
kernel_prepare()
{
source_prepare git "${KERNEL_GIT_URL}" "${KERNEL_GIT_DIR}" "${KERNEL_DIR}" "${KERNEL_TAG}" "${KERNEL_PATCH_DIR}"
}
kernel_config()
{
kernel_prepare
if [ -f "${CFG_DIR}/${CFG_KERNEL}" ]
then
cp "${CFG_DIR}/${CFG_KERNEL}" "${KERNEL_SDIR}/.config"
fi
cd ${KERNEL_SDIR} &&
make ${KERNEL_PARAMS} menuconfig &&
cp "${KERNEL_SDIR}/.config" "${CFG_DIR}/${CFG_KERNEL}"
}
kernel_build()
{
kernel_prepare
if [ -f "${CFG_DIR}/${CFG_KERNEL}" ]
then
cp "${CFG_DIR}/${CFG_KERNEL}" "${KERNEL_SDIR}/.config"
fi
cd ${KERNEL_SDIR} &&
make ${KERNEL_PARAMS} Image dtbs -j8 &&
cp "${KERNEL_SDIR}/arch/${KARCH}/boot/Image" "${OUT_DIR}/Image" &&
cp "${KERNEL_SDIR}/arch/${KARCH}/boot/dts/${KERNEL_DT_DIR}/${KERNEL_DT_NAME}.dtb" "${OUT_DIR}/${KERNEL_DT_NAME}.dtb"
}
sqh_root()
{
if [ -e "${TMP_DIR}" ]
then
rm -rf "${TMP_DIR}"
fi
mkdir -p "${TMP_DIR}"
chmod u+s ${ROOT_DIR}/root/usr/bin/Xorg
cd ${ROOT_DIR}/root && "${ROOT_DIR}/scripts/back.sh" && cd ${ROOT_DIR}
cd "${TMP_DIR}" && tar xf "${ROOT_DIR}/${BACK_FN}" && cd ${ROOT_DIR}
#${ROOT_DIR}/root/chroot.sh ${TMP_DIR} 'emerge -ac --with-bdeps=n && exit'
if [ -f "${OUT_DIR}/${SQH_FS}" ]
then
mv "${OUT_DIR}/${SQH_FS}" "${OUT_DIR}/${SQH_FS}".old
fi
mksquashfs "${TMP_DIR}" "${OUT_DIR}/${SQH_FS}" -comp xz
}
source_sync()
{
prepare_uboot
prepare_kernel
}
case "$2" in
bundle)
bundle
;;
sync)
source_sync
;;
chroot)
do_chroot $3
;;
uboot_config)
uboot_config
;;
uboot)
uboot_build
;;
kernel_config)
kernel_config
;;
kernel)
kernel_build
;;
ramdisk)
mkramdisk
;;
sqh_root)
sqh_root
;;
cleanup)
rm -rf "${GIT_BARE_ROOT}"
;;
*)
invalid_param
;;
esac
#diff -Naur linux-6.8.9-gentoo_or linux-6.8.9-gentoo --exclude=*.conf* --exclude=*generated* --exclude=*scripts* > 1.patch
#make -C /lib/modules/5.16.17/build M=/usr/src/w1-gpio-cl modules V=1
#install -m644 w1-gpio-cl.ko /lib/modules/5.16.17/kernel/drivers/w1/masters
#--depclean --with-bdeps=n
# RAM-disk image
#
#if [ -e "${TMP_DIR}" ]; then
# rm -rf "${TMP_DIR}"
#fi
#for i in $(seq 1 20); do
# MOD_NAME="MOD_${i}_NAME"
# MOD_GIT="MOD_${i}_GIT"
# if [ -n "${!MOD_NAME}" ]; then
# mod_tmp="${TMP_DIR}/home/biqu/${!MOD_NAME}"
# mkdir -p "${mod_tmp}"
# git clone "${!MOD_GIT}" "${mod_tmp}" --depth=1
# mksquashfs "${TMP_DIR}" "./${!MOD_NAME}.lzm" -comp xz -force-uid 1000 -force-gid 1000
# rm -rf "${TMP_DIR}"
# fi
#done