summaryrefslogtreecommitdiffhomepage
path: root/subr/pkg_fetch_git.subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz (arab, vxp) <lucio@lucioillanes.de>2017-11-20 21:45:21 +0000
committerLucio Andrés Illanes Albornoz (arab, vxp) <lucio@lucioillanes.de>2017-11-21 00:51:43 +0000
commitc27beab66023847435fb88cd5cc75916dca37057 (patch)
treec43c23133f5b837925785d5501aa4cff14980415 /subr/pkg_fetch_git.subr
parentd01c0269b8e5e467f82cd28392579c4c43fe63bc (diff)
downloadmidipix_build-c27beab66023847435fb88cd5cc75916dca37057.tar.bz2
midipix_build-c27beab66023847435fb88cd5cc75916dca37057.tar.xz
Refactors build steps along the sequence {setup,fetch,configure,build,install}.
subr/mode_check_updates.subr: seperated into check_updates.sh. subr/post_{copy_etc,sha256sums,tarballs}.subr: absorbed into `dist' target.
Diffstat (limited to 'subr/pkg_fetch_git.subr')
-rw-r--r--subr/pkg_fetch_git.subr49
1 files changed, 49 insertions, 0 deletions
diff --git a/subr/pkg_fetch_git.subr b/subr/pkg_fetch_git.subr
new file mode 100644
index 00000000..0ff61ae2
--- /dev/null
+++ b/subr/pkg_fetch_git.subr
@@ -0,0 +1,49 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+pkgp_fetch_git() {
+ local _tgtdir="${1}" _subdir="${2}" _url="${3}" _branch="${4}";
+ if [ "${ARG_OFFLINE:-0}" -eq 0 ]; then
+ if [ -e "${DLCACHEDIR}/${_subdir}" ]; then
+ (build_fileop cd "${DLCACHEDIR}/${_subdir}" &&\
+ git pull origin "${_branch:-main}");
+ else
+ git clone "${_url}" "${DLCACHEDIR}/${_subdir}";
+ if [ -n "${_branch}" -a \
+ \( -z "${_branch#main}" \) -a \
+ \( -z "${_branch#master}" \) ]; then
+ (build_fileop cd "${DLCACHEDIR}/${_subdir}" &&\
+ git checkout -b "${_branch}");
+ fi;
+ fi;
+ fi;
+ build_fileop rm "${_tgtdir}/${_subdir}";
+ build_fileop cp "${DLCACHEDIR}/${_subdir}" "${_tgtdir}";
+};
+
+pkgp_fetch_urls_git() {
+ local _tgtdir _url_spec _subdir _url _git_branch;
+ _tgtdir="${1}"; shift;
+ for _url_spec in "${@}"; do
+ _subdir="${_url_spec%=*}";
+ _url="${_url_spec#*=}";
+ _url="${_url%@*}";
+ if [ "${_url_spec#*@}" != "${_url_spec}" ]; then
+ _git_branch=${_url_spec#*@};
+ fi;
+ pkgp_fetch_git "${_tgtdir}" "${_subdir}" "${_url}" "${_git_branch}";
+ done;
+};
+
+pkg_fetch_git() {
+ if [ ${#} -gt 0 ]; then
+ pkgp_fetch_urls_git "${PKG_BASE_DIR}" "${@}";
+ else
+ if [ -n "${PKG_URLS_GIT}" ]; then
+ pkgp_fetch_urls_git "${PKG_BASE_DIR}" ${PKG_URLS_GIT};
+ fi;
+ fi;
+};
+
+# vim:filetype=sh