mirror of
https://github.com/riptidewave93/UNVR-NAS.git
synced 2025-02-12 10:31:55 +00:00
This should fix https://github.com/riptidewave93/UNVR-NAS/issues/13 and make building easier across different systems.
84 lines
3.7 KiB
Bash
Executable file
84 lines
3.7 KiB
Bash
Executable file
#!/bin/bash
|
|
set -e
|
|
|
|
# Source our common vars
|
|
scripts_path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
. ${scripts_path}/vars.sh
|
|
|
|
debug_msg "Starting 03_docker.sh"
|
|
|
|
# Start with things we can do now
|
|
if [ ! -d ${build_path}/toolchain ]; then
|
|
debug_msg "Setting up the toolchain for docker..."
|
|
mkdir -p ${build_path}/toolchain
|
|
tar -xf ${root_path}/downloads/${toolchain_filename} -C ${build_path}/toolchain
|
|
fi
|
|
|
|
# Do our firmware extraction
|
|
debug_msg "Docker: Extracting Firmware..."
|
|
docker run --ulimit nofile=1024 --rm -v "${root_path}:/repo:Z" -e BOARD="${BOARD}" -it ${docker_tag} /repo/scripts/docker/extract_firmware.sh
|
|
|
|
if [ ! -d ${build_path}/kernel ]; then
|
|
debug_msg "Docker: Building Kernel..."
|
|
docker run --ulimit nofile=1024 --rm -v "${root_path}:/repo:Z" -it ${docker_tag} /repo/scripts/docker/build_kernel.sh
|
|
fi
|
|
if [ ! -d ${build_path}/packages ]; then
|
|
debug_msg "Docker: Building Packages..."
|
|
docker run --ulimit nofile=1024 --rm -v "${root_path}:/repo:Z" -it ${docker_tag} /repo/scripts/docker/build_packages.sh
|
|
fi
|
|
|
|
debug_msg "Doing safety checks... please enter your password for sudo if prompted..."
|
|
# Before we do anything, make our dirs, and validate they are not mounted atm. If they are, exit!
|
|
if mountpoint -q ${build_path}/rootfs/boot; then
|
|
error_msg "ERROR: ${build_path}/rootfs/boot is mounted before it should be! Cleaning up..."
|
|
sudo umount ${build_path}/rootfs/boot
|
|
fi
|
|
if mountpoint -q ${build_path}/rootfs; then
|
|
error_msg "ERROR: ${build_path}/rootfs is mounted before it should be! Cleaning up..."
|
|
sudo umount ${build_path}/rootfs
|
|
fi
|
|
|
|
# Validate we don't have image files yet, because if we do, they may be mounted, and
|
|
# that would be REAL BAD if we overwrite em
|
|
if [ -f ${build_path}/boot.ext4 ]; then
|
|
error_msg "ERROR: ${build_path}/boot.ext4 exists already! Cleaning up..."
|
|
rm -f ${build_path}/boot.ext4
|
|
fi
|
|
if [ -f ${build_path}/rootfs.ext4 ]; then
|
|
error_msg "ERROR: ${build_path}/rootfs.ext4 exists already! Cleaning up..."
|
|
rm -f ${build_path}/rootfs.ext4
|
|
fi
|
|
|
|
debug_msg "Docker: Generating rootfs and boot partitions..."
|
|
docker run --ulimit nofile=1024 --rm -v "${root_path}:/repo:Z" -it ${docker_tag} /repo/scripts/docker/run_mkimage_initial.sh
|
|
|
|
debug_msg "Note: You might be asked for your password for losetup and mounting of said loopback devices since sudo is used..."
|
|
|
|
debug_msg "Mounting generated block files for use with docker..."
|
|
# Mount our loopbacks
|
|
boot_loop_dev=$(sudo losetup -f --show ${build_path}/boot.ext4)
|
|
rootfs_loop_dev=$(sudo losetup -f --show ${build_path}/rootfs.ext4)
|
|
|
|
# And now mount them to the dirs :)
|
|
mkdir -p ${build_path}/rootfs
|
|
sudo mount -t ext4 ${rootfs_loop_dev} ${build_path}/rootfs
|
|
sudo mkdir -p ${build_path}/rootfs/boot
|
|
sudo mount -t ext4 ${boot_loop_dev} ${build_path}/rootfs/boot
|
|
|
|
# Remove stupid placeholder files -_-
|
|
sudo rm -f ${build_path}/rootfs/placeholder ${build_path}/rootfs/boot/placeholder
|
|
|
|
# SAFETY NET - trap it, even tho we have makefile with set -e
|
|
debug_msg "Docker: debootstraping..."
|
|
trap "sudo umount ${build_path}/rootfs/boot; sudo umount ${build_path}/rootfs; sudo losetup -d ${boot_loop_dev}; sudo losetup -d ${rootfs_loop_dev}" SIGINT SIGTERM
|
|
docker run --ulimit nofile=1024 --rm --privileged --cap-add=ALL -h unvr-nas -v /dev:/dev -v "${root_path}:/repo:Z" -e BOARD="${BOARD}" -it ${docker_tag} /repo/scripts/docker/run_debootstrap.sh
|
|
|
|
debug_msg "Note: You might be asked for your password for losetup and umount since we are cleaning up mounts..."
|
|
debug_msg "Cleaning up..."
|
|
sudo umount ${build_path}/rootfs/boot
|
|
sudo umount ${build_path}/rootfs
|
|
sudo losetup -d ${boot_loop_dev}
|
|
sudo losetup -d ${rootfs_loop_dev}
|
|
rm -rf ${build_path}/rootfs
|
|
|
|
debug_msg "Finished 03_docker.sh"
|