diff options
Diffstat (limited to 'scripts/install-qt.sh')
-rwxr-xr-x | scripts/install-qt.sh | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/scripts/install-qt.sh b/scripts/install-qt.sh index f85ea157a..a66ac28b1 100755 --- a/scripts/install-qt.sh +++ b/scripts/install-qt.sh @@ -222,6 +222,22 @@ if ${INSTALLATION_IS_VALID}; then exit 0 fi +MIRRORS="\ + http://download.qt.io \ + http://ftp.acc.umu.se/mirror/qt.io/qtproject \ + http://qt.mirrors.tds.net/qt \ + http://ftp.fau.de/qtproject \ +" + +for MIRROR in ${MIRRORS}; do + if curl "${MIRROR}/online" -s -f -o /dev/null; then + break; + else + echo "Server ${MIRROR} not availabe. Trying next alternative..." >&2 + MIRROR="" + fi +done + DOWNLOAD_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'install-qt'` # @@ -230,13 +246,13 @@ DOWNLOAD_DIR=`mktemp -d 2>/dev/null || mktemp -d -t 'install-qt'` function compute_url(){ local COMPONENT=$1 local CURL="curl -s -L" - local BASE_URL="http://download.qt.io/online/qtsdkrepository/${HOST_OS}/${TARGET_PLATFORM}" + local BASE_URL="${MIRROR}/online/qtsdkrepository/${HOST_OS}/${TARGET_PLATFORM}" local ANDROID_ARCH=$(echo ${TOOLCHAIN##android_}) if [[ "${COMPONENT}" =~ "qtcreator" ]]; then SHORT_VERSION=${VERSION%??} - BASE_URL="http://download.qt.io/official_releases/qtcreator" + BASE_URL="${MIRROR}/official_releases/qtcreator" REMOTE_PATH="${SHORT_VERSION}/${VERSION}/installer_source/${HOST_OS}/qtcreator.7z" echo "${BASE_URL}/${REMOTE_PATH}" return 0 @@ -245,6 +261,7 @@ function compute_url(){ REMOTE_BASES=( # New repository format (>=6.0.0) "qt6_${VERSION//./}/qt.qt6.${VERSION//./}.${TOOLCHAIN}" + "qt6_${VERSION//./}/qt.qt6.${VERSION//./}.${COMPONENT}.${TOOLCHAIN}" "qt6_${VERSION//./}_${ANDROID_ARCH}/qt.qt6.${VERSION//./}.${TOOLCHAIN}" "qt6_${VERSION//./}_${ANDROID_ARCH}/qt.qt6.${VERSION//./}.${COMPONENT}.${TOOLCHAIN}" # New repository format (>=5.9.6) @@ -276,11 +293,18 @@ rm -f "${HASH_FILEPATH}" for COMPONENT in ${COMPONENTS}; do + if [[ "${COMPONENT}" =~ "qtcreator" ]] && [[ "${HOST_OS}" != "mac_x64" ]]; then + UNPACK_DIR="${INSTALL_DIR}/Tools/QtCreator" + mkdir -p ${UNPACK_DIR} + else + UNPACK_DIR="${INSTALL_DIR}" + fi + URL="$(compute_url ${COMPONENT})" echo "Downloading ${COMPONENT} ${URL}..." >&2 curl --progress-bar -L -o ${DOWNLOAD_DIR}/package.7z ${URL} >&2 - 7z x -y -o${INSTALL_DIR} ${DOWNLOAD_DIR}/package.7z >/dev/null 2>&1 - 7z l -ba -slt -y ${DOWNLOAD_DIR}/package.7z | tr '\\' '/' | sed -n -e "s|^Path\ =\ |${INSTALL_DIR}/|p" >> "${HASH_FILEPATH}" 2>/dev/null + 7z x -y -o${UNPACK_DIR} ${DOWNLOAD_DIR}/package.7z >/dev/null 2>&1 + 7z l -ba -slt -y ${DOWNLOAD_DIR}/package.7z | tr '\\' '/' | sed -n -e "s|^Path\ =\ |${UNPACK_DIR}/|p" >> "${HASH_FILEPATH}" 2>/dev/null rm -f ${DOWNLOAD_DIR}/package.7z # @@ -302,21 +326,21 @@ for COMPONENT in ${COMPONENTS}; do fi if [ "${TARGET_PLATFORM}" == "android" ] && [ ! "${QT_VERSION}" \< "6.0.0" ]; then - CONF_FILE="${INSTALL_DIR}/${VERSION}/${SUBDIR}/bin/target_qt.conf" + CONF_FILE="${UNPACK_DIR}/${VERSION}/${SUBDIR}/bin/target_qt.conf" sed -i "s|target|../$TOOLCHAIN|g" "${CONF_FILE}" sed -i "/HostPrefix/ s|$|gcc_64|g" "${CONF_FILE}" - ANDROID_QMAKE_FILE="${INSTALL_DIR}/${VERSION}/${SUBDIR}/bin/qmake" - QMAKE_FILE="${INSTALL_DIR}/${VERSION}/gcc_64/bin/qmake" + ANDROID_QMAKE_FILE="${UNPACK_DIR}/${VERSION}/${SUBDIR}/bin/qmake" + QMAKE_FILE="${UNPACK_DIR}/${VERSION}/gcc_64/bin/qmake" sed -i "s|\/home\/qt\/work\/install\/bin\/qmake|$QMAKE_FILE|g" "${ANDROID_QMAKE_FILE}" else - CONF_FILE="${INSTALL_DIR}/${VERSION}/${SUBDIR}/bin/qt.conf" + CONF_FILE="${UNPACK_DIR}/${VERSION}/${SUBDIR}/bin/qt.conf" echo "[Paths]" > ${CONF_FILE} echo "Prefix = .." >> ${CONF_FILE} fi # Adjust the license to be able to run qmake # sed with -i requires intermediate file on Mac OS - PRI_FILE="${INSTALL_DIR}/${VERSION}/${SUBDIR}/mkspecs/qconfig.pri" + PRI_FILE="${UNPACK_DIR}/${VERSION}/${SUBDIR}/mkspecs/qconfig.pri" sed -i.bak 's/Enterprise/OpenSource/g' "${PRI_FILE}" sed -i.bak 's/licheck.*//g' "${PRI_FILE}" rm "${PRI_FILE}.bak" @@ -326,9 +350,9 @@ for COMPONENT in ${COMPONENTS}; do echo $(dirname "${CONF_FILE}") elif [[ "${COMPONENT}" =~ "qtcreator" ]]; then if [ "${HOST_OS}" == "mac_x64" ]; then - echo "${INSTALL_DIR}/Qt Creator.app/Contents/MacOS" + echo "${UNPACK_DIR}/Qt Creator.app/Contents/MacOS" else - echo "${INSTALL_DIR}/bin" + echo "${UNPACK_DIR}/bin" fi fi |