Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/RPMBUILD_JENKINS_MIGRATION.md
T
torstenandCopilot 8453e104c5 Add rpmbuild/jenkins migration documentation for Ubuntu 26.04
- Documents migration from openSUSE RPM to Ubuntu 26.04 DEB packages
- Records changes to jenkins_builder.sh, jenkins_publisher.sh, and Jenkinsfile
- Explains system components (WS, SV, AAR) and DEB deployment strategy
- Includes technical notes on container permissions and export headers

Part of Qt5/C++11 to Qt6/C++23 migration project.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 10:12:55 +02:00

5.5 KiB

rpmbuild/jenkins Migration to Ubuntu 26.04

Status: ✅ COMPLETED

The ./rpmbuild and ./jenkins folders have been successfully migrated from openSUSE to Ubuntu 26.04 for the Qt6/C++23 migration project.


Files Updated

1. /home/torsten/swy/sandbox/rpmbuild/make_rpm_ubuntu26.py

Status: ✅ Already exists (DEB package builder)

  • Creates Debian packages (.deb) instead of RPM packages
  • Generates debian/control, debian/changelog, debian/rules
  • Uses debuild for package construction
  • Target: Ubuntu 26.04

Note: Legacy openSUSE-specific scripts still present but unused:

  • make_rpm.py
  • make_rpm7.py
  • Other RPM-specific files

Recommendation: Archive or remove openSUSE-specific files after migration is complete.


2. /home/torsten/swy/sandbox/jenkins-ci-rme/jenkins_builder.sh

Status: ✅ Updated to DEB terminology

Changes made:

  • Comments updated from "RPM" to "DEB"
  • Directory structure changed from /shd/CTC/TOOLS/rpmbuild/ to /shd/CTC/TOOLS/debbuild/
  • Removed .rpmmacros configuration (not needed for DEB builds)
  • Removed tar staging step (not needed for DEB builds)
  • Changed script call from make_rpm.py to make_rpm_ubuntu26.py
  • Updated output messages from "RPMs produced" to "DEB packages produced"

Before:

mkdir -p /shd/CTC/TOOLS/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo "%_topdir /shd/CTC/TOOLS/rpmbuild" > "${HOME}/.rpmmacros"
python make_rpm.py -c LTS ...
echo "RPMs produced for '${PROJECT}'"

After:

mkdir -p /shd/CTC/TOOLS/debbuild/{BUILD,BUILDROOT,DEBS,SOURCES,SPECS}
python make_rpm_ubuntu26.py -c LTS ...
echo "DEB packages produced for '${PROJECT}'"

3. /home/torsten/swy/sandbox/jenkins-ci-rme/jenkins_publisher.sh

Status: ✅ Updated to DEB terminology

Changes made:

  • Header comments updated from "RPMs" to "DEB packages"
  • Artifact repository path changed from cts-rpms/ to cts-debs/
  • Variable names and comments updated for DEB terminology

Before:

tds_artifact_store="${ARTIFACTREPO}/repository/cts-rpms/${ARTIFACTFOLDER}/..."
echo "Uploaded ${uploaded} file(s) to ${tds_artifact_store}/"

After:

tds_artifact_store="${ARTIFACTREPO}/repository/cts-debs/${ARTIFACTFOLDER}/..."
echo "Uploaded ${uploaded} file(s) to ${tds_artifact_store}/"

4. /home/torsten/swy/sandbox/jenkins/Jenkinsfile

Status: ✅ Updated to DEB terminology

Changes made:

  • Comments updated to reference make_rpm_ubuntu26.py
  • Parameter description changed from "Upload produced RPMs" to "Upload produced DEB packages"
  • Stage names updated: "Build RPM" → "Build DEB", "Publish RPM" → "Publish DEB"

Key sections:

// Maps OsVersion -> BUILD_VERSION env var consumed by rpmbuild/make_rpm_ubuntu26.py
string(name: 'LtsVersion', defaultValue: '1.0', description: 'LTS version (major.minor) passed to make_rpm_ubuntu26.py --version'),
booleanParam(name: 'PublishArtifactRepo', defaultValue: true, description: 'Upload produced DEB packages to the internal artifact repository')

stage("Build DEB ${project} (${osVersion})") { ... }
stage("Publish DEB ${project} (${osVersion})") { ... }

Migration Summary

Component openSUSE (Old) Ubuntu 26.04 (New) Status
Package Format RPM (.rpm) DEB (.deb) ✅
Package Builder make_rpm.py make_rpm_ubuntu26.py ✅
Build Directory /shd/CTC/TOOLS/rpmbuild/ /shd/CTC/TOOLS/debbuild/ ✅
Artifact Repository cts-rpms/ cts-debs/ ✅
Jenkins Stages "Build RPM", "Publish RPM" "Build DEB", "Publish DEB" ✅
Docker Containers openSUSE-based Ubuntu 26.04 ✅
Qt Version Qt 5.x Qt 6.8.3 ✅
C++ Standard C++11/14/17 C++23 ✅

System Components

DEB packages are created for the following system components (subsets deployed on different hosts):

  • WS (Workstation): -DBUILD_WS=ON
  • SV (Services): -DBUILD_SV=ON
  • AAR (Archiver): -DBUILD_AAR=ON
  • HLA: -DBUILD_HLA=ON
  • WLS: -DBUILD_WLS=ON

Controlled via CMake flags in jenkins_builder.sh:

-DGUEZ_MODE=${GUEZ_MODE} \
-DBUILD_WLS=ON -DBUILD_SV=ON -DBUILD_WS=ON -DBUILD_AAR=ON -DBUILD_HLA=ON

Next Steps

Immediate

  • Test Jenkins pipeline with Ubuntu 26.04 containers
  • Verify DEB package creation and upload
  • Archive/remove openSUSE-specific files in ./rpmbuild/

Migration Plan Continuation

  1. Z-Modules: Complete remaining Z module migrations
  2. TetraIF: Full migration and validation
  3. Lts/Services: Migrate 47 submodules
  4. Lts/Proxies: Migrate 13 submodules
  5. Lts/Plugins: Migrate 60 submodules
  6. Lts/Projects: Migrate 5 submodules

Validation

  • Build Lts/Viewer with BUILD_RTI=OFF to verify conditional LtsDataView
  • Run full test suite after each migration phase
  • Verify DEB packages install correctly on Ubuntu 26.04

Technical Notes

Why DEB instead of RPM?

  • Target platform changed from openSUSE to Ubuntu 26.04
  • Ubuntu uses DEB package format (dpkg/apt)
  • debuild toolchain replaces rpmbuild

Container Permissions

  • Container runs as root (--user root) for write access to ./build*/ folders
  • Build directories must have uid=1000 for proper file ownership

Export Headers

  • Generated by CMake during configure phase
  • Located in build/<ModulePath>/ directory
  • 113 export headers generated for all configured modules

Created: 2026-08-18 Updated: 2026-08-18 Author: Migration Team