From 8ca46d57f18ae5bb98fe265eb6bda485c42102be Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Fri, 25 Nov 2016 18:22:40 +0100 Subject: [PATCH] Pmodules/libpbuild.bash - find_tarball(): almost rewritten --- Pmodules/libpbuild.bash | 58 +++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/Pmodules/libpbuild.bash b/Pmodules/libpbuild.bash index 0c28c4e..d572e69 100644 --- a/Pmodules/libpbuild.bash +++ b/Pmodules/libpbuild.bash @@ -189,7 +189,6 @@ pbuild::module_exists() { # # Used global variables: # BUILD_BLOCK_DIR [in] -# TARBALL [out] # find_tarball() { local -r name="$1" @@ -197,36 +196,43 @@ find_tarball() { shift 2 local -a dirs=( "${BUILD_BLOCK_DIR}" ) dirs+=( "$@" ) - - local release="${version##*-}" - version=${version%-*} - local ext - for dir in "${dirs[@]}"; do - for ext in tar tar.gz tgz tar.bz2 tar.xz; do - local fname - local -a fnames - fnames+=( "${dir}/${name}-${OS}-${version}-${release}.${ext}" ) - fnames+=( "${dir}/${name}-${OS}-${version}.${ext}" ) - fnames+=( "${dir}/${name}-${version}-${release}.${ext}" ) - fnames+=( "${dir}/${name}-${version}.${ext}" ) - for fname in "${fnames[@]}"; do - if [[ -r "${fname}" ]]; then - echo "${fname}" - return - fi + local -a fnames=() + if [[ -n "${SOURCE_URL}" ]]; then + basename="${SOURCE_URL##*/}" + for dir in "${dirs[@]}"; do + fnames+=( "${dir}/${basename}" ) + done + else + local release="${version##*-}" + version=${version%-*} + local ext + for dir in "${dirs[@]}"; do + for ext in tar tar.gz tgz tar.bz2 tar.xz; do + local fname + local -a fnames + fnames+=( "${dir}/${name}-${OS}-${version}-${release}.${ext}" ) + fnames+=( "${dir}/${name}-${OS}-${version}.${ext}" ) + fnames+=( "${dir}/${name}-${version}-${release}.${ext}" ) + fnames+=( "${dir}/${name}-${version}.${ext}" ) done done + fi + fnames+=( "not found" ) + for fname in "${fnames[@]}"; do + [[ -r "${fname}" ]] && break done - if [[ -z "${SOURCE_URL}" ]]; then - std::error "${name}/${version}: source not found." - exit 43 + if [[ "${fname}" == 'not found' ]] && [[ -n "${SOURCE_URL}" ]]; then + wget --no-check-certificate \ + --directory-prefix="${PMODULES_DISTFILESDIR}" \ + "${SOURCE_URL}" || + std::info "Downloading sources from '${SOURCE_URL}' failed." + fname= "${PMODULES_DISTFILESDIR}/${basename}" fi - wget --no-check-certificate --directory-prefix="${PMODULES_DISTFILESDIR}" "${SOURCE_URL}" - if (( $? != 0 )); then - std::error "${name}/${version}: cannot download source." - exit 43 + if [[ -r "${fname}" ]]; then + echo "${fname}" + else + std::die 4 "Sources for '${name}/${version}' not found." fi - echo "${PMODULES_DISTFILESDIR}/${SOURCE_URL##*/}" } ###############################################################################