Add --image option to build.sh and fix Build_FusionX.sh paths
- Added build_image() function and --image flag to build.sh that invokes Build_FusionX.sh to create the Linux SD card image for the SSD202 SOM - Fixed all hardcoded paths in Build_FusionX.sh to use relative paths derived from the script's directory location - Image outputs (sdrootfs.tar.gz, SigmastarUpgradeSD.bin) can be included in Gitea releases Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
54
build.sh
54
build.sh
@@ -91,6 +91,7 @@ usage() {
|
||||
echo " --drivers Build kernel modules and user-space apps only"
|
||||
echo " --spi Build SPI tools only"
|
||||
echo " --cpld Build CPLD bitstreams only (requires Quartus Docker)"
|
||||
echo " --image Build Linux SD card image (requires ARM cross-compiler)"
|
||||
echo " --clean Clean all build artifacts"
|
||||
echo " --help Show this help"
|
||||
echo ""
|
||||
@@ -352,6 +353,56 @@ build_cpld() {
|
||||
done
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------------------------------
|
||||
# Build Linux SD card image using Build_FusionX.sh.
|
||||
#-------------------------------------------------------------------------------------------------------
|
||||
|
||||
build_image() {
|
||||
log_info "Building Linux SD card image..."
|
||||
|
||||
local BUILD_SCRIPT="${SOFTDIR}/linux/Build_FusionX.sh"
|
||||
local IMAGE_OUTPUT="${SOFTDIR}/linux/project/image/output/images"
|
||||
|
||||
if [ ! -f "${BUILD_SCRIPT}" ]; then
|
||||
log_skip "Build_FusionX.sh not found at ${BUILD_SCRIPT}"
|
||||
return
|
||||
fi
|
||||
|
||||
if ! command -v ${CROSS_PREFIX}gcc &>/dev/null; then
|
||||
log_skip "ARM cross-compiler (${CROSS_PREFIX}gcc) not found - cannot build Linux image"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ ! -d "${SOFTDIR}/linux/kernel" ] || [ ! -d "${SOFTDIR}/linux/boot" ]; then
|
||||
log_skip "Linux kernel/boot source tree not found"
|
||||
return
|
||||
fi
|
||||
|
||||
chmod +x "${BUILD_SCRIPT}"
|
||||
log_info " Running Build_FusionX.sh -f nand -p ssd202 -o 2D06 ..."
|
||||
if "${BUILD_SCRIPT}" -f nand -p ssd202 -o 2D06 2>&1; then
|
||||
# Check for output images.
|
||||
local has_output=false
|
||||
if [ -f "${IMAGE_OUTPUT}/sdrootfs.tar.gz" ]; then
|
||||
log_ok "Image: sdrootfs.tar.gz"
|
||||
has_output=true
|
||||
fi
|
||||
if [ -f "${IMAGE_OUTPUT}/SigmastarUpgradeSD.bin" ]; then
|
||||
log_ok "Image: SigmastarUpgradeSD.bin"
|
||||
has_output=true
|
||||
fi
|
||||
if [ -f "${IMAGE_OUTPUT}/SigmastarUpgrade.bin" ]; then
|
||||
log_ok "Image: SigmastarUpgrade.bin"
|
||||
has_output=true
|
||||
fi
|
||||
if ! ${has_output}; then
|
||||
log_fail "Linux image build produced no output files"
|
||||
fi
|
||||
else
|
||||
log_fail "Linux image build (Build_FusionX.sh)"
|
||||
fi
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------------------------------
|
||||
# Clean all build artifacts.
|
||||
#-------------------------------------------------------------------------------------------------------
|
||||
@@ -386,6 +437,7 @@ BUILD_CPM=false
|
||||
BUILD_DRIVERS=false
|
||||
BUILD_SPI=false
|
||||
BUILD_CPLD=false
|
||||
BUILD_IMAGE=false
|
||||
BUILD_ALL=false
|
||||
DO_CLEAN=false
|
||||
|
||||
@@ -402,6 +454,7 @@ while [ $# -gt 0 ]; do
|
||||
--drivers) BUILD_DRIVERS=true ;;
|
||||
--spi) BUILD_SPI=true ;;
|
||||
--cpld) BUILD_CPLD=true ;;
|
||||
--image) BUILD_IMAGE=true ;;
|
||||
--clean) DO_CLEAN=true ;;
|
||||
--help|-h) usage ;;
|
||||
*) echo "Unknown option: $1"; usage ;;
|
||||
@@ -425,6 +478,7 @@ if ${BUILD_ALL} || ${BUILD_CPM}; then build_cpm; fi
|
||||
if ${BUILD_ALL} || ${BUILD_DRIVERS}; then build_drivers; fi
|
||||
if ${BUILD_ALL} || ${BUILD_SPI}; then build_spi; fi
|
||||
if ${BUILD_ALL} || ${BUILD_CPLD}; then build_cpld; fi
|
||||
if ${BUILD_ALL} || ${BUILD_IMAGE}; then build_image; fi
|
||||
|
||||
echo ""
|
||||
echo "========================================"
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
## This script builds the complete OS and software set required for FusionX.
|
||||
## It builds the Linux kernel, rootfs filesystem, U-boot loader and apps.
|
||||
##
|
||||
## Credits:
|
||||
## Credits:
|
||||
## Copyright: (c) SigmaStar, tailoring by Philip Smart for FusionX
|
||||
##
|
||||
## History: October 2022 - Initial tailoring for FusionX
|
||||
## March 2026 - Fixed hardcoded paths to be relative to project root.
|
||||
##
|
||||
## Synopsis: Build_FusionX.sh -f nand -p ssd202 -o 2D06 -m 256
|
||||
##
|
||||
@@ -47,20 +48,14 @@ done
|
||||
|
||||
DATE=$(date +%m%d)
|
||||
BACKUPDIR=$(date +%m%d%H%M)
|
||||
#images will output in ${RELEASEDIR}/images/
|
||||
RELEASEDIR=`pwd`
|
||||
FUSIONXDIR=`pwd`\..\FusionX
|
||||
WEBSRVDIR=`pwd`\..\WebServer
|
||||
Z80EMUDIR=`pwd`\..\Z80emu
|
||||
#release source code
|
||||
#find ./boot/ | grep -v boot/.git | cpio -pdm ${RELEASEDIR}/
|
||||
#find ./project/ | grep -v project/.git | cpio -pdm ${RELEASEDIR}/
|
||||
#find ./kernel/ | grep -v kernel/.git | cpio -pdm ${RELEASEDIR}/
|
||||
#find ./sdk/ | grep sdk/verify | grep -v sdk/verify/application/smarttalk | cpio -pdm ${RELEASEDIR}/
|
||||
|
||||
#save code version
|
||||
#repo manifest -o snapshot.xml -r
|
||||
#cp snapshot.xml ${RELEASEDIR}/sdk_version.xml
|
||||
# Resolve the script's directory to establish relative paths.
|
||||
SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
RELEASEDIR="${SCRIPTDIR}"
|
||||
SOFTWAREDIR="$(cd "${SCRIPTDIR}/.." && pwd)"
|
||||
FUSIONXDIR="${SOFTWAREDIR}/FusionX"
|
||||
WEBSRVDIR="${SOFTWAREDIR}/WebServer"
|
||||
Z80EMUDIR="${SOFTWAREDIR}/Z80emu"
|
||||
|
||||
export ARCH=arm
|
||||
|
||||
@@ -69,14 +64,14 @@ echo chose ${flashtype}
|
||||
if [ ! "${project}" = "2D06" -a ! "${project}" = "2D07" ]; then
|
||||
project=2D07
|
||||
#exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Make the output directories if not present.
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/
|
||||
for f in miservice appconfigs customer vendor rootfs images
|
||||
do
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/$f
|
||||
done
|
||||
done
|
||||
|
||||
export PROJECT=${project}
|
||||
|
||||
@@ -127,7 +122,7 @@ if [ "${flashtype}" = "nor" ]; then
|
||||
echo "Make Kernel 2"
|
||||
make infinity2m_ssc011a_s01a_minigui_defconfig
|
||||
fi
|
||||
|
||||
|
||||
else
|
||||
if [ "${fastboot}" = "fastboot" ]; then
|
||||
echo "Make Kernel 3"
|
||||
@@ -137,7 +132,7 @@ else
|
||||
#make infinity2m_spinand_ssc011a_s01a_minigui_defconfig
|
||||
make ${KERNEL_DEFCONFIG}
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
if [ "${clean}" = "1" ]; then
|
||||
make clean
|
||||
@@ -160,9 +155,9 @@ if [ "${flashtype}" = "nor" ]; then
|
||||
fi
|
||||
else
|
||||
if [ "${fastboot}" = "fastboot" ]; then
|
||||
if [ "${chip}" = "ssd201" ]; then
|
||||
if [ "${chip}" = "ssd201" ]; then
|
||||
./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.ram-glibc-squashfs.011a.64
|
||||
elif [ "${chip}" = "ssd202" ]; then
|
||||
elif [ "${chip}" = "ssd202" ]; then
|
||||
./setup_config.sh ./configs/nvr/i2m/8.2.1/spinand.ram-glibc-squashfs.011a.128
|
||||
fi
|
||||
else
|
||||
@@ -191,7 +186,7 @@ else
|
||||
else
|
||||
./release.sh -k ${RELEASEDIR}/kernel -b 011A -p nvr -f spinand -c i2m -l glibc -v 8.2.1
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
|
||||
cd ${RELEASEDIR}/project
|
||||
@@ -284,9 +279,9 @@ if [ -d ${Z80EMUDIR} ]; then
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/sdrootfs/apps/Z80/
|
||||
cp -r Z80/* ${RELEASEDIR}/project/image/output/sdrootfs/apps/Z80/
|
||||
fi
|
||||
if [ -d /srv/dvlp/Projects/tzpu/FusionX/software/linux/project/custom ]; then
|
||||
if [ -d ${RELEASEDIR}/project/custom ]; then
|
||||
echo -n "Custom "
|
||||
cd /srv/dvlp/Projects/tzpu/FusionX/software/linux/project/
|
||||
cd ${RELEASEDIR}/project/
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/sdrootfs/apps/custom/
|
||||
cp -r custom/* ${RELEASEDIR}/project/image/output/sdrootfs/apps/custom/
|
||||
fi
|
||||
@@ -294,13 +289,17 @@ fi
|
||||
# Copy any new files.
|
||||
for f in DSK MZF CPM BAS CAS Basic
|
||||
do
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/disk/
|
||||
cp -r /srv/dvlp/Projects/tzpu/FusionX/software/${f}/ ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/disk/${f}/
|
||||
if [ -d ${SOFTWAREDIR}/${f} ]; then
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/disk/
|
||||
cp -r ${SOFTWAREDIR}/${f}/ ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/disk/${f}/
|
||||
fi
|
||||
done
|
||||
|
||||
# Copy an new rom images.
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/roms/
|
||||
cp -r /srv/dvlp/Projects/tzpu/FusionX/software/roms/* ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/roms/
|
||||
# Copy any new rom images.
|
||||
if [ -d ${SOFTWAREDIR}/roms ]; then
|
||||
mkdir -p ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/roms/
|
||||
cp -r ${SOFTWAREDIR}/roms/* ${RELEASEDIR}/project/image/output/sdrootfs/apps/FusionX/roms/
|
||||
fi
|
||||
|
||||
# Make any manual setup changes.
|
||||
#echo "/dev/zram0 none swap sw 0 -1" >> ${RELEASEDIR}/project/image/output/sdrootfs/etc/fstab
|
||||
@@ -342,14 +341,7 @@ echo " /dev/sdc3 6293504 62333951 56040448 26.7G 83 Linux"
|
||||
echo " mkfs.vfat /dev/<sd partition 1>"
|
||||
echo " mkfs.ext2 /dev/<sd partition 3>"
|
||||
echo " mkdir -p /mnt/upgrade; mount /dev/<sd partition 1> /mnt/upgrade"
|
||||
echo " mkdir -p /mnt/rootfd; mount /dev/<sd partition 3> /mnt/rootfs"
|
||||
echo " mkdir -p /mnt/rootfs; mount /dev/<sd partition 3> /mnt/rootfs"
|
||||
echo " cp ${RELEASEDIR}/project/image/output/images/SigmastarUpgradeSD.bin /mnt/upgrade/FusionX.bin"
|
||||
echo " cd /mnt/rootfs; tar -xvf /dvlp/Projects/tzpu/FusionX/software/linux/project/image/output/images/sdrootfs.tar.gz; sync; sync"
|
||||
echo " cd /mnt/rootfs; tar -xvf ${RELEASEDIR}/project/image/output/images/sdrootfs.tar.gz; sync; sync"
|
||||
echo " cd /; umount /mnt/upgrade; umount /mnt/rootfs"
|
||||
|
||||
#tar -cvzf boot_${DATE}.tar.gz boot
|
||||
#tar -cvzf kernel_${DATE}.tar.gz kernel
|
||||
#tar -cvzf project_${DATE}.tar.gz project
|
||||
#tar -cvzf sdk_${DATE}.tar.gz sdk
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user