gnuboot/build

167 lines
3.8 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env bash
# generic build script, for building components (all of them)
#
build: Update copyright header. At the very beginning, we had tarball releases of Libreboot which were made by Leah Rowe. The first 3 tarball releases are in 2013 and the fourth is in 2014. The 2013 tarballs didn't have this build script: In 2013, to build Libreboot, Leah used a combination of commands typed by hand and scripts I provided her (they are in the build-makefiles directory in these tarball releases). So she wrote the build script in 2014. I also looked if I could find traces of my "build-makefiles" scripts inside Leahs's build script but I didn't find any. This means that she wrote it from scratch and that the copyright really starts with her in 2014. Then in 2014, more tarball releases follow and then we finally have the very first commit of Libreboot: commit cee90ae0fce6d6aee8d78969b60c952c8890abd6 ("Libreboot release 6 beta 1."). Since all these tarball releases and the very first commit of Libreboot were made by Leah Rowe and that all that happened in 2014, it means that the build script in it was made in 2014 by Leah Rowe. After that following the history is easier. To do that we need several repositories: - First we need to follow it in obsolete-repository-preserved-for-historical-purposes from the very first commit until the r20160907 tag. - Then we follow it in osbmk from the very first commit: commit df76c3eb63dd8f4979d78ca262218eedb93512ed ("Fork Libreboot 20160907 build system. Large parts have been re-written.") up to the last commit of the libre branch: commit a02723897cab744c7ed31d7cca48308528cafe76 ("fix seabios downloading"). - Then we follow it in GNU Boot directly as we included the history of lbmk as well, starting from the commit 89517ed6b9e89321e1387ed8f534d7f080ffdf57 ("libreboot!"). Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> neox: minor fix in commit message (typo) Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-08-26 14:25:33 +02:00
# Copyright (C) 2014-2016, 2020, 2021 Leah Rowe <info@minifree.org>
# Copyright (C) 2015 Patrick "P. J." McDermott <pj@pehjota.net>
build: Update copyright header. At the very beginning, we had tarball releases of Libreboot which were made by Leah Rowe. The first 3 tarball releases are in 2013 and the fourth is in 2014. The 2013 tarballs didn't have this build script: In 2013, to build Libreboot, Leah used a combination of commands typed by hand and scripts I provided her (they are in the build-makefiles directory in these tarball releases). So she wrote the build script in 2014. I also looked if I could find traces of my "build-makefiles" scripts inside Leahs's build script but I didn't find any. This means that she wrote it from scratch and that the copyright really starts with her in 2014. Then in 2014, more tarball releases follow and then we finally have the very first commit of Libreboot: commit cee90ae0fce6d6aee8d78969b60c952c8890abd6 ("Libreboot release 6 beta 1."). Since all these tarball releases and the very first commit of Libreboot were made by Leah Rowe and that all that happened in 2014, it means that the build script in it was made in 2014 by Leah Rowe. After that following the history is easier. To do that we need several repositories: - First we need to follow it in obsolete-repository-preserved-for-historical-purposes from the very first commit until the r20160907 tag. - Then we follow it in osbmk from the very first commit: commit df76c3eb63dd8f4979d78ca262218eedb93512ed ("Fork Libreboot 20160907 build system. Large parts have been re-written.") up to the last commit of the libre branch: commit a02723897cab744c7ed31d7cca48308528cafe76 ("fix seabios downloading"). - Then we follow it in GNU Boot directly as we included the history of lbmk as well, starting from the commit 89517ed6b9e89321e1387ed8f534d7f080ffdf57 ("libreboot!"). Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> neox: minor fix in commit message (typo) Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-08-26 14:25:33 +02:00
# Copyright (C) 2015 Paul Kocialkowski <contact@paulk.fr>
# Copyright (C) 2016 Klemens Nanni <contact@autoboot.org>
# Copyright (C) 2015, 2016 Klemens Nanni <contact@autoboot.org>
# Copyright (C) 2022, Caleb La Grange <thonkpeasant@protonmail.com>
build: Update copyright header. At the very beginning, we had tarball releases of Libreboot which were made by Leah Rowe. The first 3 tarball releases are in 2013 and the fourth is in 2014. The 2013 tarballs didn't have this build script: In 2013, to build Libreboot, Leah used a combination of commands typed by hand and scripts I provided her (they are in the build-makefiles directory in these tarball releases). So she wrote the build script in 2014. I also looked if I could find traces of my "build-makefiles" scripts inside Leahs's build script but I didn't find any. This means that she wrote it from scratch and that the copyright really starts with her in 2014. Then in 2014, more tarball releases follow and then we finally have the very first commit of Libreboot: commit cee90ae0fce6d6aee8d78969b60c952c8890abd6 ("Libreboot release 6 beta 1."). Since all these tarball releases and the very first commit of Libreboot were made by Leah Rowe and that all that happened in 2014, it means that the build script in it was made in 2014 by Leah Rowe. After that following the history is easier. To do that we need several repositories: - First we need to follow it in obsolete-repository-preserved-for-historical-purposes from the very first commit until the r20160907 tag. - Then we follow it in osbmk from the very first commit: commit df76c3eb63dd8f4979d78ca262218eedb93512ed ("Fork Libreboot 20160907 build system. Large parts have been re-written.") up to the last commit of the libre branch: commit a02723897cab744c7ed31d7cca48308528cafe76 ("fix seabios downloading"). - Then we follow it in GNU Boot directly as we included the history of lbmk as well, starting from the commit 89517ed6b9e89321e1387ed8f534d7f080ffdf57 ("libreboot!"). Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> neox: minor fix in commit message (typo) Acked-by: Adrien 'neox' Bourmault <neox@gnu.org>
2024-08-26 14:25:33 +02:00
# Copyright (C) 2023, 2024 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
#
# This program 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.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
#
./.gitcheck
[ "${DEBUG+set}" = 'set' ] && set -v
set -u -e
projectname="$(cat projectname)"
. resources/scripts/misc/sysexits.sh
# Some scripts like the ones in resources/packages/i945-thinkpads-install-utilities need
# Makefiles to be generated
. resources/scripts/misc/generate-configure-makefiles.sh
# This is for backward compatibility: before the list of "modes" was
# auto-detected, but there isn't a 1:1 matching between modes and
# packages tasks (build, clean, etc).
tasks="\
boot \
clean \
dependencies \
distclean \
install \
module \
payload \
release \
test \
"
list_tasks() {
for task in ${tasks} ; do
echo "${task}"
done
}
list_tasks_paths() {
task="${1}"
find resources/packages \
-mindepth 2 -maxdepth 2 \
-type f \
-executable \
-name "${task}" \
-printf "%P\n"
}
# Takes exactly one task as parameter
list_packages() {
task="${1}"
list_tasks_paths "${task}" | \
sed 's#/.*##'
}
help() {
cat <<- EOF
Usage:
./build <TASK> <PACKAGE>
./build --help
possible values for 'task':
$(list_tasks)
Example: ./build module all
Example: ./build module i945-thinkpads-install-utilities
Example: ./build boot roms qemu-pc_2mb
Example: ./build clean all
Refer to the ${projectname} documentation for more information.
EOF
}
die() {
ret="$1"
shift 1
printf 'Error: %s\n' "${@}" 1>&2
exit "${ret}"
}
if [ $# -lt 1 ]; then
die "${EX_USAGE}" \
"Wrong number of arguments specified. See './build --help'."
fi
task="${1}"
if [ "${task}" != "dependencies" ]; then
./resources/scripts/misc/versioncheck
fi
[ "${task}" = "--help" ] && help && exit 0
if [ $# -gt 1 ]; then
package="${2}"
shift 2
case "${package}" in
list)
tasks_paths=$(list_tasks_paths "${task}")
if [ -z "${tasks_paths}" ] ; then
die "${EX_USAGE}" \
"Invalid task '${task}'." \
" See './build --help'."
else
printf "Available packages for task '%s':\n\n" \
"${task}"
list_packages "${task}"
fi
;;
all)
for package in $(list_packages "${task}"); do
# shellcheck disable=SC2068
resources/packages/"${package}"/"${task}" $@
done
;;
*)
if [ -d resources/packages/"${package}" ] ; then
pkg_dir=resources/packages/"${package}"
if [ -f "${pkg_dir}"/"${task}" ]; then
# shellcheck disable=SC2068
"${pkg_dir}"/"${task}" $@
else
help
die "${EX_USAGE}" \
"Invalid package for '${task}'." \
" See './build ${task} list'."
fi
else
help
die "${EX_USAGE}" \
"Invalid task '${task}'." \
" See './build --help'."
fi
esac
else
help
exit 0
fi
./.gitcheck clean