- 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>
5.5 KiB
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
debuildfor package construction - Target: Ubuntu 26.04
Note: Legacy openSUSE-specific scripts still present but unused:
make_rpm.pymake_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
.rpmmacrosconfiguration (not needed for DEB builds) - Removed tar staging step (not needed for DEB builds)
- Changed script call from
make_rpm.pytomake_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/tocts-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
- Z-Modules: Complete remaining Z module migrations
- TetraIF: Full migration and validation
- Lts/Services: Migrate 47 submodules
- Lts/Proxies: Migrate 13 submodules
- Lts/Plugins: Migrate 60 submodules
- Lts/Projects: Migrate 5 submodules
Validation
- Build Lts/Viewer with
BUILD_RTI=OFFto 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)
debuildtoolchain replacesrpmbuild
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