From 10ff54eb9e65ad8b20b3903206a42c6a267696ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz?= Date: Mon, 5 Apr 2021 11:10:57 +0100 Subject: subr/pkg_fetch_{download,extract}.subr: download into & auto-cleanup ${BUILD_DLCACHEDIR}/${PKG_NAME}/ vs. ${BUILD_DLCACHEDIR}/. vars/{gcc,python[23]{,_host}}.vars: updated. --- subr/pkg_fetch_download.subr | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'subr/pkg_fetch_download.subr') diff --git a/subr/pkg_fetch_download.subr b/subr/pkg_fetch_download.subr index 43f4388c..188c7f7b 100644 --- a/subr/pkg_fetch_download.subr +++ b/subr/pkg_fetch_download.subr @@ -2,18 +2,47 @@ # set +o errexit -o noglob -o nounset is assumed. # +pkg_fetch_download_dlcache_subdir() { + if [ -n "${PKG_INHERIT_FROM:-}" ]\ + && ! [ -e "${BUILD_DLCACHEDIR}/${PKG_NAME}" ]\ + && ! rtl_fileop ln_symbolic "${PKG_INHERIT_FROM}" "${BUILD_DLCACHEDIR}/${PKG_NAME}"; then + return 1; + elif [ -z "${PKG_INHERIT_FROM:-}" ]\ + && ! [ -e "${BUILD_DLCACHEDIR}/${PKG_NAME}" ]\ + && ! rtl_fileop mkdir "${BUILD_DLCACHEDIR}/${PKG_NAME}"; then + return 1; + else + return 0; + fi; +}; + pkg_fetch_download() { + local _fname=""; + if [ "${ARG_FETCH_FORCE:-}" != "offline" ]; then if [ -n "${PKG_URL:-}" ]; then - if ! rtl_fetch_url_wget \ - "${PKG_URL}" "${PKG_SHA256SUM}" "${BUILD_DLCACHEDIR}"\ + if ! pkg_fetch_download_dlcache_subdir; then + return 1; + elif ! rtl_fetch_url_wget \ + "${PKG_URL}" "${PKG_SHA256SUM}" "${BUILD_DLCACHEDIR}/${PKG_NAME}"\ "${PKG_FNAME}" "${PKG_NAME}" "${PKG_MIRRORS:-}"; then return 1; + else + for _fname in $(find \ + "${BUILD_DLCACHEDIR}/${PKG_NAME}" \ + -type f \ + -not -name "${PKG_FNAME}" \ + -not -name "${PKG_FNAME}.fetched"); do + rtl_log_msg notice "Deleting redundant file \`%s' for package \`%s'." "${_fname}" "${PKG_NAME}"; + rtl_fileop rm "${_fname}"; + done; fi; fi; if [ -n "${PKG_URLS_GIT:-}" ]; then - if ! rtl_fetch_urls_git \ - "${BUILD_DLCACHEDIR}" "${DEFAULT_GIT_ARGS}" "${PKG_BASE_DIR}"\ + if ! pkg_fetch_download_dlcache_subdir; then + return 1; + elif ! rtl_fetch_urls_git \ + "${BUILD_DLCACHEDIR}/${PKG_NAME}" "${DEFAULT_GIT_ARGS}" "${PKG_BASE_DIR}"\ "${PKG_NAME}" "${PKG_MIRRORS_GIT:-}" ${PKG_URLS_GIT}; then return 1; fi; -- cgit v1.2.3