2
1
Fork 0
mirror of https://git.savannah.gnu.org/git/gnuboot.git synced 2025-01-03 23:07:39 +01:00
gnuboot/build
Denis 'GNUtoo' Carikli 1ccd450fec
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
  89517ed6b9 ("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-30 16:44:18 +02:00

166 lines
3.7 KiB
Bash
Executable file

#!/usr/bin/env bash
# generic build script, for building components (all of them)
#
# Copyright (C) 2014-2016, 2020, 2021 Leah Rowe <info@minifree.org>
# Copyright (C) 2015 Patrick "P. J." McDermott <pj@pehjota.net>
# 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>
# 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 roms withgrub
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