wxyz/profiles/base/build.sh
2022-11-30 18:59:05 +02:00

84 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# wxyz main profile build script
#
# This file is part of wxyz GNU/Linux.
#
# wxyz GNU/Linux is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# wxyz GNU/Linux is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# wxyz GNU/Linux. If not, see <https://www.gnu.org/licenses/>.
version="0.1"
#success_message="OK! ;-)"
success_message="\e[34m[ \e[32mOK\e[34m ]\e[0m"
error_message="\e[34m[ \e[31m!!\e[34m ]\e[0m"
die() {
printf "\n\e[31m-------------------------------------------------------------------------------\e[0m\n\n"
printf "die(): %b\n" "$1"
printf "Please contact the profile/build script maintainer.\n"
printf "\n\e[31m-------------------------------------------------------------------------------\e[0m\n\n"
exit 1;
}
#TODO: Add required packages, such as Linux
package_names=( "binutils" "busybox" "e2fsprogs" "eudev")
package_versions=( "2.39" "1.33.2" "1.46.5" "3.2.11")
package_sources=(\
"https://ftp.gnu.org/gnu/binutils/binutils-2.39.tar.xz" \
"https://www.busybox.net/downloads/busybox-1.33.2.tar.bz2" \
"https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.46.5/e2fsprogs-1.46.5.tar.xz" \
"https://github.com/eudev-project/eudev/releases/download/v3.2.11/eudev-3.2.11.tar.gz" \
)
printf "wxyz main profile build script v%s\n\n" "$version"
printf "Checking if package_names, package_versions, and package_sources are the same length... "
if [ ${#package_names[@]} == ${#package_versions[@]} ] && [ ${#package_versions[@]} == ${#package_sources[@]} ]; then
printf "%b\n" "$success_message"
else
printf "%b\n" "$error_message"
die "package_* does not match"
fi
printf "\nThese packages will be installed to the profile by this script:\n"
for (( i=0; i<${#package_names[@]}; i++ )); do
printf "%s " "${package_names[$i]}"
printf "v%s -" "${package_versions[$i]}"
printf " Source: %s \n" "${package_sources[$i]}"
done
printf "\n"
printf "Creating tmp directory... "
if [[ -d tmp ]]; then
printf "Already exists. %b\n" "$success_message"
else
if eval mkdir tmp; then
printf "%b\n" "$success_message"
else
printf "%b\n" "$error_message"
die "cannot create tmp directory; is the disk read only?"
fi
fi
for (( i=0; i<${#package_names[@]}; i++ )); do
printf "Downloading %s " "${package_names[$i]}"
printf "v%s... " "${package_versions[$i]}"
if eval curl -s --output-dir "tmp" -LO "${package_sources[$i]}"; then
printf "%b\n" "$success_message"
else
printf "%b\n" "$error_message"
die "downloading package failed"
fi
done
printf "\n"
# TODO: Build packages and install them onto the filesystem