Files
qt6-migration-pipeline/external-dependencies/scripts/download-all-dependencies.sh
T
torstenandCopilot 242a21c521 Add offline dependency download scripts for air-gapped environment
- download-all-dependencies.sh: Downloads Qt6 6.10.2, source tarballs, and Ubuntu .deb packages
- download-deb-packages.sh: Downloads Ubuntu .deb packages in Docker container
- verify-offline-cache.sh: Verifies offline cache completeness
- offline-cache/README.md: Documentation for offline cache structure and usage
- .gitignore: Exclude external-dependencies/offline-cache/ from version control (2.3GB)

The offline cache must be transferred to air-gapped environment via secure media.
Excluded from git due to size and security best practices.

Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M6PFZM0GHMBF46BKYPKZC192
2026-11-05 18:36:48 +00:00

118 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
#
# Download all external dependencies for air-gapped environment
# Creates offline package cache for Jenkins/Dockerfile use
#
# Usage: ./download-all-dependencies.sh [output-directory]
#
# Output directory structure:
# offline-cache/
# ├── qt6/ # Qt6 packages from aqtinstall
# ├── src/ # Source tarballs (KDReports, Log4Qt, Grantlee)
# ├── deb/ # Ubuntu .deb packages
# └── scripts/ # Installation scripts for offline use
#
set -euo pipefail
# Configuration
OUTPUT_DIR="${1:-./offline-cache}"
QT_VERSION="6.10.2"
QT_MODULES="qtmultimedia qtserialport qtimageformats qtwebsockets qtwebengine qtpdf qtwebview qt5compat qtwebchannel qtpositioning qtlocation qtsensors"
# Air-gapped environment configuration (from Dockerfiles)
NEXUS_REPO="http://remote-repo.sl.defence-elec.de:8081"
PIP_INDEX_URL="${NEXUS_REPO}/repository/proxypipy/"
APT_SOURCES="${NEXUS_REPO}/repository/ubuntu"
echo "========================================="
echo "Downloading External Dependencies"
echo "========================================="
echo "Output directory: ${OUTPUT_DIR}"
echo "Qt Version: ${QT_VERSION}"
echo "========================================="
# Create directory structure
mkdir -p "${OUTPUT_DIR}"/{qt6,src,deb,scripts}
# Run download in Docker container with proper environment
echo ""
echo "Running download in Ubuntu 26.04 Docker container..."
echo ""
docker run --rm \
-v "$(pwd)/${OUTPUT_DIR}:/cache" \
-e PIP_INDEX_URL="${PIP_INDEX_URL}" \
-e NEXUS_REPO="${NEXUS_REPO}" \
ubuntu:26.04 \
bash -c "
set -euo pipefail
OUTPUT_DIR='/cache'
QT_VERSION='${QT_VERSION}'
QT_MODULES='${QT_MODULES}'
NEXUS_REPO='${NEXUS_REPO}'
PIP_INDEX_URL='${PIP_INDEX_URL}'
echo '=== Installing required packages ==='
apt-get update -qq
apt-get install -y -qq python3 python3-venv python3-pip git wget curl apt-transport-https
echo ''
echo '=== Setting up Python virtual environment for aqtinstall ==='
python3 -m venv /tmp/aqtinstall_venv
source /tmp/aqtinstall_venv/bin/activate
# Install aqtinstall from standard PyPI (not available in internal proxy)
echo 'Installing aqtinstall from standard PyPI...'
pip install --quiet --index-url https://pypi.org/simple aqtinstall
echo ''
echo '=== Downloading Qt6 \${QT_VERSION} ==='
aqt install-qt linux desktop \${QT_VERSION} linux_gcc_64 \\
--modules \${QT_MODULES} \\
--outputdir /cache/qt6 \\
--base \${NEXUS_REPO}/repository/qt-mirror/
echo ''
echo 'Qt6 downloaded to /cache/qt6'
echo ''
echo '=== Downloading Source Tarballs ==='
# KDReports
echo 'Downloading KDReports 2.3.0...'
git clone --depth 1 --branch kdreports-2.3.0 \\
https://github.com/KDAB/KDReports.git \\
/tmp/KDReports
tar -czf /cache/src/KDReports-2.3.0.tar.gz -C /tmp KDReports
rm -rf /tmp/KDReports
# Log4Qt
echo 'Downloading Log4Qt 2.0.0...'
git clone --depth 1 --branch v2.0.0 \\
https://github.com/MEONMedical/Log4Qt.git \\
/tmp/Log4Qt
tar -czf /cache/src/Log4Qt-2.0.0.tar.gz -C /tmp Log4Qt
rm -rf /tmp/Log4Qt
# Grantlee
echo 'Downloading Grantlee (master branch)...'
git clone --depth 1 \\
https://github.com/steveire/grantlee.git \\
/tmp/grantlee
GRANTLEE_COMMIT=\$(cd /tmp/grantlee && git rev-parse HEAD)
echo 'Grantlee commit: \${GRANTLEE_COMMIT}'
tar -czf /cache/src/grantlee-\${GRANTLEE_COMMIT:0:7}.tar.gz -C /tmp grantlee
rm -rf /tmp/grantlee
echo ''
echo 'Source tarballs downloaded to /cache/src'
# Cleanup
deactivate 2>/dev/null || true
rm -rf /tmp/aqtinstall_venv
echo ''
echo '=== Download Complete ==='
"