Skip to content
Snippets Groups Projects
SuperbuildDownloadList.sh 2.94 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Copyright (C) 2005-2024 Centre National d'Etudes Spatiales (CNES)
    
    #
    # This file is part of Orfeo Toolbox
    #
    #     https://www.orfeo-toolbox.org/
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    
    
    
    if [ $# -lt 2 ]; then
        echo "Usage: $0 <download_directory> <archive_output_directory>"
        exit 1
    
    DOWNLOAD_DIR=$(readlink -f "$1")
    OUTPUT_DIR=$(readlink -f "$2")
    WGET=$(which wget)
    
    CUR_DIR="$( cd "$( dirname "$0" )" && pwd )"
    
    SB_CMAKE_DIR_REL=$CUR_DIR/../SuperBuild/CMake
    
    SB_CMAKE_DIR=$(readlink -f "${SB_CMAKE_DIR_REL}")
    
    cd "$CUR_DIR/../" || echo "cannot cd to CUR_DIR/../"
    
    GIT_BRANCH=$(git name-rev --name-only "${GIT_HASH}")
    
    
    # the version is the branch name for develop and release-X.Y branches and the commit short hash for other branches
    
    if [[ ${CI_COMMIT_REF_NAME} =~ develop|release-+[0-9]+\.[0-9] ]] ; then
      VERSION=${CI_COMMIT_REF_NAME}
    
    CMAKE_FILES=$(find "${SB_CMAKE_DIR}" -maxdepth 1 -type f -name "External_*")
    
    mkdir -p "${DOWNLOAD_DIR}"
    
    cd "${DOWNLOAD_DIR}" || echo "cannot cd to DOWNLOAD_DIR"
    
    echo "Downloading files to ${DOWNLOAD_DIR}/"
    
    Guillaume Pasero's avatar
    Guillaume Pasero committed
      download_links=$(grep -h -E '^[^#]*\"(ftp|http|https)://.*(\.tar\.gz|\.tar\.bz2|\.tgz|\.tar\.xz|\.zip|export=download).*\"' "${cmake}" |
    
    		    grep -o -E '(ftp|http|https)://[^\"]*' | sort | uniq)
      for url in ${download_links}; do
        file_name=$(echo "${url}" | grep -o -E '[^\/]+$')
        if [ -z "$file_name" ]; then
          echo "invalid filename for url=${url}" && exit 1;
        fi
    
    Guillaume Pasero's avatar
    Guillaume Pasero committed
        download_name=$(grep -E -A 3 -B 3 "(ftp|http|https).+$file_name" "${cmake}" | grep -E -o 'DOWNLOAD_NAME .+' | cut -d ' ' -f 2-)
    
        $WGET -N "${url}"
        ret="$?"
        if [ $ret -gt 0 ] && [ $ret -ne 8 ]; then
           echo "Download failed for URL: '${url}'. wget finished with exit status '$ret'."
           exit 1;
        fi
        if [ -n "$download_name" ]; then
    
    Guillaume Pasero's avatar
    Guillaume Pasero committed
          mv "${file_name}" "${download_name}"
    
          file_name=$download_name
        fi
        DOWNLOAD_NAMES="${DOWNLOAD_NAMES} ${file_name}"
      done
    
    ARCHIVE_NAME="SuperBuild-archives-$VERSION"
    echo "Creating archive ${OUTPUT_DIR}/$ARCHIVE_NAME.tar.bz2"
    
    
    mkdir -p "${OUTPUT_DIR}"
    cd "${OUTPUT_DIR}" || echo "cannot cd to ${OUTPUT_DIR}"
    
    touch "${DOWNLOAD_DIR}/OTBSuperBuild.readme"
    
    tar -cjf "$ARCHIVE_NAME.tar.bz2" -C "${DOWNLOAD_DIR}" .
    
    echo "Saving md5sum to ${OUTPUT_DIR}/$ARCHIVE_NAME.md5"
    
    md5sum "$ARCHIVE_NAME.tar.bz2" > "$ARCHIVE_NAME.md5"