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>
This commit is contained in:
1 file changed
+173
@@ -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/<ModulePath>/` directory
|
||||||
|
- 113 export headers generated for all configured modules
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Created**: 2026-08-18
|
||||||
|
**Updated**: 2026-08-18
|
||||||
|
**Author**: Migration Team
|
||||||
Reference in new issue
Block a user