commit: 9634b6d05924deecbdfcb5411624231600f48965
parent bd97b1f86c1af1e7485c03fb5d78dd075ce4a30b
Author: fosslinux <fosslinux@aussies.space>
Date: Tue, 29 Nov 2022 16:58:25 +1100
Merge pull request #215 from eduardosm/dl-distfiles-script
Add script to automatically download all sysa and sysc distfiles without Python
Diffstat:
4 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/.cirrus.yml b/.cirrus.yml
@@ -24,7 +24,7 @@ shell_lint_task:
- apt-get -y install shellcheck
- apt-get -y clean
check_script:
- - shellcheck sysa/run.sh sysb/init sysb/run.sh sysc/init sysc/run.sh sysc/run2.sh sysa/helpers.sh
+ - shellcheck sysa/run.sh sysb/init sysb/run.sh sysc/init sysc/run.sh sysc/run2.sh sysa/helpers.sh download-distfiles.sh
reuse_lint_task:
container:
diff --git a/README.rst b/README.rst
@@ -167,6 +167,7 @@ repository is almost completely in a form where it can be used as the
source of a build.
1. Download required tarballs into ``sysa/distfiles`` and ``sysc/distfiles``.
+ You can use the ``download-distfiles.sh`` script.
2. Copy sysa/stage0-posix/src/* to the root of the repository.
3. Copy sysa/stage0-posix/src/bootstrap-seeds/POSIX/x86/kaem-optional-seed
to init in the root of the repository.
diff --git a/download-distfiles.sh b/download-distfiles.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+# SPDX-FileCopyrightText: 2022 fosslinux <fosslinux@aussies.space>
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+download_source() {
+ local distfiles="${1}"
+ local url="${2}"
+ local checksum="${3}"
+ local fname="${4}"
+ # Default to basename of url if not given
+ fname="${fname:-$(basename "${url}")}"
+
+ local dest_path="${distfiles}/${fname}"
+ if ! [ -e "${dest_path}" ]; then
+ echo "Downloading ${fname}"
+ curl -L "${url}" --output "${dest_path}"
+ fi
+ echo "${checksum} ${dest_path}" | sha256sum -c
+}
+
+download_for_sys() {
+ local sysdir="${1}"
+ local distfiles="${sysdir}/distfiles"
+
+ mkdir -p "${distfiles}"
+
+ local entry
+ for entry in "${sysdir}"/*; do
+ [ -e "${entry}/sources" ] || continue
+
+ local line
+ # shellcheck disable=SC2162
+ while read line; do
+ # This is intentional - we want to split out ${line} into separate arguments.
+ # shellcheck disable=SC2086
+ download_source "${distfiles}" ${line}
+ done < "${entry}/sources"
+ done
+}
+
+set -e
+cd "$(dirname "$(readlink -f "$0")")"
+download_for_sys sysa
+download_for_sys sysc
diff --git a/sysa/helpers.sh b/sysa/helpers.sh
@@ -131,7 +131,7 @@ build() {
script_name=${2:-${pkg}.sh}
dirname=${4:-${pkg}}
- # shellcheck ignore=SC2015
+ # shellcheck disable=SC2015
bin_preseed && return || true # Normal build if preseed fails
cd "${SOURCES}/${pkg}" || (echo "Cannot cd into ${pkg}!"; kill $$)