where the asterisk is used, it can sometimes literally try to patch with a file named "*", which of course does not exist this change fixes an lbmk error when running: ./download seabios this was caused recently, because all patches were seabios were removed (lbmk currently uses stock seabios, without patching it)
96 lines
1.8 KiB
Bash
Executable file
96 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env sh
|
|
|
|
# SPDX-FileCopyrightText: 2022 Caleb La Grange <thonkpeasant@protonmail.com>
|
|
# SPDX-FileCopyrightText: 2022 Ferass El Hafidi <vitali64pmemail@protonmail.com>
|
|
# SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
name=""
|
|
|
|
Print_help(){
|
|
cat <<- EOF
|
|
Usage: ./gitclone [name]
|
|
|
|
Options:
|
|
name: The name of the module as specified in resources/git/revisions file
|
|
EOF
|
|
}
|
|
|
|
Fail(){
|
|
printf "${@}\n"
|
|
Print_help
|
|
exit 1
|
|
}
|
|
|
|
Check_vars(){
|
|
if [ -z "${revision+x}" ]; then
|
|
Fail 'Error: revision not set'
|
|
fi
|
|
if [ -z "${location+x}" ]; then
|
|
Fail 'Error: location not set'
|
|
fi
|
|
if [ -z "${url+x}" ]; then
|
|
Fail 'Error: url not set'
|
|
fi
|
|
}
|
|
|
|
Patch(){
|
|
for patchfile in ${PWD}/${patchdir}/*.patch ; do
|
|
if [ ! -f "${patchfile}" ]; then
|
|
continue
|
|
fi
|
|
( cd ${tmp_dir}
|
|
git am ${patchfile} || return 1
|
|
)
|
|
done
|
|
}
|
|
|
|
Run(){
|
|
git clone ${url} ${tmp_dir} || git clone ${bkup_url} ${tmp_dir} || Fail "ERROR: couldn't download ${name}\n Check Network connection"
|
|
( cd ${tmp_dir} && git reset --hard ${revision} )
|
|
patchdir="resources/${name}/patches"
|
|
|
|
if [ -d "${patchdir}" ]; then
|
|
Patch || Fail "ERROR: Faild to patch ${name}"
|
|
fi
|
|
|
|
mv ${tmp_dir} ${location} || Fail "ERROR: couldn't copy temp to destination\n ${tmp_dir} > ${location} check permissions"
|
|
}
|
|
|
|
if [ -z "${1+x}" ]; then
|
|
Fail 'Error: name not set'
|
|
else
|
|
name=${1}
|
|
fi
|
|
|
|
while read -r line ; do
|
|
set ${line} >/dev/null 2>&1
|
|
case ${line} in
|
|
rev:*)
|
|
revision=${2}
|
|
;;
|
|
loc:*)
|
|
location=${2}
|
|
;;
|
|
url:*)
|
|
url=${2}
|
|
;;
|
|
bkup_url:*)
|
|
bkup_url=${2}
|
|
;;
|
|
esac
|
|
done << EOF
|
|
$(eval "awk ' /\{.*${name}.*}{/ {flag=1;next} /\}/{flag=0} flag { print }' resources/git/revisions")
|
|
EOF
|
|
Check_vars
|
|
tmp_dir=$(mktemp -dt "${name}_XXXXX")
|
|
|
|
# clean out old version just in case
|
|
if [ -d "${location}" ]; then
|
|
rm -rf ${location}
|
|
fi
|
|
|
|
Run
|
|
|
|
# clean in case of failure
|
|
rm -rf ${tmp_dir} >/dev/null 2>&1
|