# 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**: ```bash 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**: ```bash 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**: ```bash tds_artifact_store="${ARTIFACTREPO}/repository/cts-rpms/${ARTIFACTFOLDER}/..." echo "Uploaded ${uploaded} file(s) to ${tds_artifact_store}/" ``` **After**: ```bash 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**: ```groovy // 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`: ```bash -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//` directory - 113 export headers generated for all configured modules --- **Created**: 2026-08-18 **Updated**: 2026-08-18 **Author**: Migration Team