From 8453e104c570cae8c14aacaefe714e1599e90106 Mon Sep 17 00:00:00 2001 From: twi-devel Date: Wed, 19 Aug 2026 10:12:55 +0200 Subject: [PATCH] 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> --- .../RPMBUILD_JENKINS_MIGRATION.md | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 qt6-after/qt6-migrated-legatus/RPMBUILD_JENKINS_MIGRATION.md diff --git a/qt6-after/qt6-migrated-legatus/RPMBUILD_JENKINS_MIGRATION.md b/qt6-after/qt6-migrated-legatus/RPMBUILD_JENKINS_MIGRATION.md new file mode 100644 index 000000000..e7b91d6dc --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/RPMBUILD_JENKINS_MIGRATION.md @@ -0,0 +1,173 @@ +# 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 \ No newline at end of file