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