diff options
Diffstat (limited to 'fetch')
-rwxr-xr-x | fetch | 124 |
1 files changed, 0 insertions, 124 deletions
@@ -1,124 +0,0 @@ -#!/usr/bin/env sh - -# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com> -# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com> -# SPDX-FileCopyrightText: 2023 Leah Rowe <leah@libreboot.org> -# SPDX-License-Identifier: GPL-3.0-only - -. "include/err.sh" - -name="" -revision="" -location="" -url="" -bkup_url="" -tmp_dir="" -depend="" - -main() -{ - id -u 1>/dev/null 2>/dev/null || \ - fail "cannot ascertain user id" - if [ "$(id -u)" = "0" ]; then - fail "running lbmk as root is not permitted" - fi - ./checkgit || err "Please read: https://libreboot.org/docs/build/" - - [ $# -gt 0 ] || fail "no argument given" - - [ -z "${1+x}" ] && fail 'main(): name not set' - name=${1} - - read_config - verify_config - - clone_project - [ "${depend}" = "" ] || ./fetch ${depend} || \ - fail "Cannot fetch dependency, ${depend}, for project, ${name}" - - rm -Rf "${tmp_dir}" || fail "cannot remove tmpdir, ${tmp_dir}" -} - -read_config() -{ - awkstr=" /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }" - while read -r line ; do - set ${line} || fail "read_config: set line" - case ${line} in - rev:*) - revision=${2} ;; - loc:*) - location=${2} ;; - url:*) - url=${2} ;; - bkup_url:*) - bkup_url=${2} ;; - depend:*) - depend=${2} ;; - esac - done << EOF - $(eval "awk '${awkstr}' resources/git/revisions") -EOF -} - -verify_config() -{ - [ -z "${revision+x}" ] && fail 'verify_config: revision not set' - [ -z "${location+x}" ] && fail 'verify_config: location not set' - [ -z "${url+x}" ] && fail 'verify_config: url not set' -} - -clone_project() -{ - tmp_dir=$(mktemp -dt "${name}_XXXXX") - - git clone ${url} "${tmp_dir}" || git clone ${bkup_url} "${tmp_dir}" || \ - fail "clone_project: could not download ${name}" - ( - cd "${tmp_dir}" || fail "clone_project: tmpdir not created" - git reset --hard ${revision} || \ - fail "clone_project: Cannot reset revision" - ) - patch_project - - [ ! -d "${location}" ] || \ - rm -Rf "${location}" || \ - fail "clone_project: Can't remove directory '${location}'" - mv "${tmp_dir}" "${location}" || \ - fail "clone_project: could not copy temp file to destination" -} - -patch_project() -{ - patchdir="resources/${name}/patches" - - for patchfile in "${PWD}/${patchdir}"/*.patch ; do - [ -f "${patchfile}" ] || continue - ( - cd "${tmp_dir}" || fail "patch_project: tmpdir unavailable" - git am "${patchfile}" || \ - fail "patch_project: Cannot patch project: $name" - ) - done -} - -fail() -{ - for x in "${location}" "${tmp_dir}"; do - [ -z "${x}" ] || [ ! -d "${x}" ] || rm -Rf "${location}" || : - done - usage - err "${1}" -} - -usage() -{ - cat <<- EOF - Usage: ./fetch [name] - - Options: - name: Module name as specified in resources/git/revisions - EOF -} - -main $@ |