Files
qt6-migration-pipeline/external-dependencies/scripts/download-deb-packages.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

137 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
#
# Download Ubuntu .deb packages for offline use
# Run this script inside Ubuntu 26.04 container
#
# Usage: ./download-deb-packages.sh [output-directory]
#
set -euo pipefail
OUTPUT_DIR="${1:-./offline-cache/deb}"
echo "========================================="
echo "Downloading Ubuntu .deb Packages"
echo "========================================="
echo "Output directory: ${OUTPUT_DIR}"
echo "========================================="
# 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/deb" \
ubuntu:26.04 \
bash -c "
set -euo pipefail
OUTPUT_DIR='/cache/deb'
# List of all required packages
PACKAGES=(
# Build tools
build-essential
cmake
ninja-build
clang
gnupg
curl
jq
openssh-client
pkg-config
unzip
# Qt6 libraries
libqt6svg6-dev
libkf6texttemplate-dev
libqt6core6
libqt6gui6
libqt6widgets6
libqt6sql6
libqt6sql6-psql
libqt6test6
qt6-base-dev
qt6-l10n-tools
qt6-serialport-dev
qt6-svg-dev
qt6-tools-dev-tools
qt6-tools-dev
qt6-websockets-dev
# Other libraries
libgl1-mesa-dev
libxkbcommon-x11-0
libfontconfig1
libdbus-1-3
libpulse0
libxcb-glx0
libxcb-cursor0
libbz2-dev
libpoppler-dev
libpoppler-qt6-dev
libboost-dev
libgeographiclib-dev
libbotan-3-dev
libssl-dev
libxml2-dev
libicu-dev
# Testing
libgtest-dev
libgmock-dev
# Database
libpq-dev
postgresql-server-dev-all
# Multimedia
libvlc-dev
vlc-plugin-base
# Python
python3
python3-venv
python3-pip
# Packaging
rpm
)
mkdir -p \"\${OUTPUT_DIR}\"
echo 'Updating package lists...'
apt-get update -qq
echo \"Downloading \${#PACKAGES[@]} packages...\"
# Download all packages with dependencies
for pkg in \"\${PACKAGES[@]}\"; do
echo \" Downloading \${pkg}...\"
apt-get download \"\${pkg}\" || echo \"Warning: Could not download \${pkg}\"
done
# Move all .deb files to output directory
echo 'Collecting .deb packages...'
find / -name \"*.deb\" -type f 2>/dev/null | head -1000 | xargs -I {} cp {} \"\${OUTPUT_DIR}/\" || true
DEB_COUNT=\$(ls -1 \"\${OUTPUT_DIR}\"/*.deb 2>/dev/null | wc -l || echo 0)
echo ''
echo '========================================='
echo 'Download Complete!'
echo '========================================='
echo \"Downloaded \${DEB_COUNT} .deb packages to \${OUTPUT_DIR}\"
echo '========================================='
# Create package list for reference
cat > /cache/package-list.txt << EOF
# Ubuntu 26.04 Package List
# Generated: \$(date -u +\"%Y-%m-%dT%H:%M:%SZ\")
# Total packages: \${DEB_COUNT}
\$(ls -1 \"\${OUTPUT_DIR}\"/*.deb 2>/dev/null | xargs -n1 basename 2>/dev/null | sort || echo 'No packages downloaded')
EOF
echo 'Package list created: /cache/package-list.txt'
"