Adds CI CD with deb for external deps

This commit is contained in:
torsten committed 2026-11-06 18:15:17 +00:00
1 parent 03d48b76e4
commit 7373cb8d73
82 files changed
+3547 -3

No files matched your search

+132
View File
@@ -0,0 +1,132 @@
/*
* Jenkins Pipeline for building external dependency DEB packages
* for air-gapped environment.
*
* Packages are uploaded to SCM repository:
* http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general
*/
pipeline {
agent any
parameters {
choice(
name: 'PACKAGE',
choices: ['avs', 'arcgis', 'tmsif', 'rti-connext-dds', 'buildingmodels', 'geographiclib', 'schusstafel', 'dtentity'],
description: 'Select package to build'
)
string(
name: 'VERSION',
defaultValue: '1.0.0',
description: 'Package version'
)
booleanParam(
name: 'UPLOAD_TO_SCM',
defaultValue: true,
description: 'Upload built package to SCM repository'
)
}
environment {
SCM_REPO = 'http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general'
DEB_PACKAGE_DIR = "${env.WORKSPACE}/external-dependencies/deb-packages/${params.PACKAGE}"
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Validate Package Structure') {
steps {
script {
def requiredFiles = [
'debian/control',
'debian/rules',
'debian/changelog',
'debian/compat',
'debian/source/format'
]
requiredFiles.each { file ->
if (!fileExists("${DEB_PACKAGE_DIR}/${file}")) {
error "Missing required file: ${file}"
}
}
}
}
}
stage('Build DEB Package') {
steps {
dir("${DEB_PACKAGE_DIR}") {
sh '''
# Install build dependencies
sudo apt-get update
sudo apt-get install -y debhelper devscripts build-essential
# Build the package
debuild -us -uc -b
'''
}
}
}
stage('Upload to SCM') {
when {
expression { return params.UPLOAD_TO_SCM }
}
steps {
script {
// Upload to Nexus SCM repository
withCredentials([usernamePassword(
credentialsId: 'scm-repo-credentials',
usernameVariable: 'SCM_USER',
passwordVariable: 'SCM_PASS'
)]) {
sh '''
# Find the built .deb file
DEB_FILE=$(find ${DEB_PACKAGE_DIR}/.. -name "*.deb" -type f | head -1)
if [ -z "$DEB_FILE" ]; then
echo "No .deb file found!"
exit 1
fi
echo "Uploading $DEB_FILE to SCM repository..."
# Upload to Nexus repository using curl with PUT
curl -u "${SCM_USER}:${SCM_PASS}" \
--request PUT \
--upload-file "$DEB_FILE" \
"${SCM_REPO}/$(basename $DEB_FILE)" \
--fail \
--show-error
echo "Package uploaded successfully to: ${SCM_REPO}/$(basename $DEB_FILE)"
'''
}
}
}
}
stage('Archive Artifacts') {
steps {
archiveArtifacts artifacts: "${DEB_PACKAGE_DIR}/../*.deb", allowEmptyArchive: true
}
}
}
post {
always {
cleanWs()
}
success {
echo "Package ${params.PACKAGE} version ${params.VERSION} built and uploaded successfully!"
}
failure {
echo "Build failed for package ${params.PACKAGE}"
}
}
}
@@ -0,0 +1,253 @@
# DEB Package Build Pipelines
This directory contains DEB package build configurations for all 8 external dependencies used in the Legatus project.
## Overview
All external dependencies are packaged as native DEB packages (format: 3.0 native) and stored in the internal SCM repository. During CI/CD, packages are installed via apt instead of copying files into Docker containers. This approach provides:
- **Reproducible builds**: Standard Ubuntu packaging with debhelper
- **Version management**: Semantic versioning with proper dependencies
- **Air-gapped support**: Packages stored in internal SCM repository at `http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general/`
- **Compliance**: License files included in packages where required
- **Maintainability**: Standard Ubuntu package management tools
- **Clean Dockerfiles**: No COPY commands for proprietary dependencies
## Directory Structure
```
deb-packages/
├── README.md # This file
├── Jenkinsfile # Jenkins pipeline for building and uploading
├── avs/ # AVS DEB package
│ ├── debian/ # Debian control files
│ │ ├── control # Package metadata and dependencies
│ │ ├── rules # Build rules with override_dh_auto_install
│ │ ├── changelog # Version history
│ │ └── source/
│ │ └── format # Package format (3.0 native)
├── arcgis/ # ArcGIS Runtime SDK DEB package
├── buildingmodels/ # BuildingModels DEB package
├── geographiclib/ # GeographicLib DEB package
├── schusstafel/ # Schusstafel DEB package
├── dtentity/ # dtEntity DEB package
├── rti-connext-dds/ # RTI Connext DDS DEB package (includes license)
└── tmsif/ # tmsif DEB package
```
## Package Names
| Directory | DEB Package Name | Version | Description |
|-----------|------------------|---------|-------------|
| avs | `libavs-dev` | 1.0.0 | AVS library development files |
| arcgis | `libarcgis-dev` | 1.0.0 | ArcGIS Runtime SDK for Qt |
| buildingmodels | `libbuildingmodels-dev` | 1.0.0 | Building models library |
| geographiclib | `libgeographiclib-dev` | 1.0.0 | Geographic calculations library |
| schusstafel | `libschusstafel-dev` | 1.0.0 | Schusstafel library |
| dtentity | `libdtentity-dev` | 1.0.0 | dtEntity game engine |
| rti-connext-dds | `librti-connext-dds-7.7.0-dev` | 7.7.0 | RTI Connext DDS middleware (includes license) |
| tmsif | `libtmsif-dev` | 1.0.0 | TMSIF library |
## Building DEB Packages
### Prerequisites
- Ubuntu 26.04 build environment
- `devscripts` package
- `debhelper` (>= 12) package
- Build dependencies for each package (see `debian/control`)
### Manual Build
```bash
cd external-dependencies/deb-packages/geographiclib
debuild -us -uc -b
```
This creates a binary-only DEB package without signing in the parent directory.
### Build Scripts
**Build single package:**
```bash
cd external-dependencies/deb-packages
./build-package.sh geographiclib 1.0.0
```
**Build all packages:**
```bash
cd external-dependencies/deb-packages
./build-all-packages.sh
```
Build output is stored in `external-dependencies/deb-packages/output/`
### Jenkins Pipeline
Use the Jenkinsfile to build and upload packages:
```bash
# In Jenkins, select package name and version
# Pipeline will build and upload to SCM repository automatically
```
## Package Structure
### Control File Example (AVS)
```
Source: avs
Section: libs
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev, ...
Package: libavs-dev
Architecture: amd64
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: AVS library development files
Development files and headers for the AVS library
used in the Legatus project.
Vcs-Browser: https://internal-repo.sl.defence-elec.de
Vcs-Git: https://internal-repo.sl.defence-elec.de/git/avs.git
```
### Installation Path
All packages install to `/opt/{DependencyName}` directory structure:
- Installation root: `/opt/{DependencyName}/`
- Headers: `/opt/{DependencyName}/include/`
- Libraries: `/opt/{DependencyName}/lib/`
- CMake configs: `/opt/{DependencyName}/cmake/`
- Licenses: `/opt/{DependencyName}/` (RTI) or `/usr/share/doc/<package>/copyright`
## Uploading to SCM Repository
### Jenkins Pipeline
The Jenkinsfile automates building and uploading:
```groovy
// Parameters:
// - PACKAGE_NAME: avs, arcgis, buildingmodels, etc.
// - PACKAGE_VERSION: 1.0.0
// - SCM_URL: http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general/
// - CREDENTIALS_ID: Jenkins credentials ID for SCM authentication
pipeline {
agent any
parameters {
choice(name: 'PACKAGE_NAME', choices: ['avs', 'arcgis', 'buildingmodels', 'geographiclib', 'schusstafel', 'dtentity', 'rti-connext-dds', 'tmsif'])
string(name: 'PACKAGE_VERSION', defaultValue: '1.0.0')
}
stages {
stage('Build') {
steps {
sh "cd external-dependencies/deb-packages/\${PACKAGE_NAME} && debuild -us -uc -b"
}
}
stage('Upload') {
steps {
sh "curl -u \${SCM_CREDENTIALS} --upload-file ../lib\${PACKAGE_NAME}-dev_\${PACKAGE_VERSION}_amd64.deb \${SCM_URL}"
}
}
}
}
```
### Manual Upload
```bash
curl -u <username>:<password> \
--upload-file libavs-dev_1.0.0_amd64.deb \
http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general/
```
## License Handling
### RTI Connext DDS
The RTI package includes the commercial license file:
- `rti_license.dat` included in DEB package at `/opt/rti_connext_dds-7.7.0/rti_license.dat`
- DEB package installs to `/opt/rti_connext_dds-7.7.0/`
- FlexLM license validated at runtime
### ArcGIS Runtime SDK
- Map-specific licenses embedded in .ini files
- Licenses included in DEB package
- Located in `/opt/ArcGIS/MapsSDK_Qt_300.0.0/`
### AVS & tmsif
- Customer lifetime license contracts
- No license files required in DEB package
- License contracts maintained separately by customer
### Other Packages
- Open source or internal licenses
- Standard copyright file in `/usr/share/doc/<package>/copyright`
## Verification
After installation, verify packages:
```bash
# Check installed packages
dpkg -l | grep libavs-dev
# List installed files
dpkg -L libavs-dev
# Check package info
apt-cache show libavs-dev
# Verify installation path
ls -la /opt/AVS/
# Verify dependencies
ldd /opt/AVS/lib/libavs.so
```
## Usage in Dockerfiles
Example Dockerfile using DEB packages from SCM:
```dockerfile
FROM ubuntu:26.04
# Configure APT repository for internal SCM
RUN echo "deb [trusted=yes] http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general/ /" > /etc/apt/sources.list.d/scm.list
# Install all external dependencies
RUN apt-get update && apt-get install -y \
libavs-dev \
libarcgis-dev \
libbuildingmodels-dev \
libgeographiclib-dev \
libschusstafel-dev \
libdtentity-dev \
librti-connext-dds-7.7.0-dev \
libtmsif-dev \
&& rm -rf /var/lib/apt/lists/*
# Verify installation
RUN ls -la /opt/AVS /opt/ArcGIS /opt/RTI
```
## Security Considerations
- **Include license files** in DEB packages where required (RTI, ArcGIS)
- **Sign packages** with internal signing key before distribution
- **Verify checksums** after upload to repository
- **Maintain chain of custody** for proprietary packages
- **Use HTTPS** for SCM repository access in production
## References
- [Ubuntu Packaging Guide](https://ubuntu.com/server/docs/packaging)
- [Debian New Maintainers' Guide](https://www.debian.org/doc/manuals/maint-guide/)
- [Internal SCM Repository](https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general)
- [Main README](../README.md)
@@ -0,0 +1,76 @@
#!/bin/bash
# ArcGIS DEB Package Build Script
# Builds libarcgis-maps-sdk-qt-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libarcgis-maps-sdk-qt-dev"
VERSION="300.0.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="ArcGIS Maps SDK for Qt - development files (embedded ini-file licenses)"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/ArcGIS/MapsSDK_Qt_300.0.0"
mkdir -p "$DEB_DIR/opt/offline-cache/arcgis"
# Copy ArcGIS files from external/ArcGIS
if [ -d "../../external/ArcGIS" ]; then
cp -r ../../external/ArcGIS/* "$DEB_DIR/opt/ArcGIS/MapsSDK_Qt_300.0.0/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6, libqt6positioning6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
ArcGIS Maps SDK for Qt (version 300.0.0) for Legatus.
.
License: Embedded ini-file licenses
Map-specific licenses embedded in Lts/Viewer/SituationMap/Map/*.ini files.
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "ArcGIS DEB package installed successfully"
echo "License: Embedded ini-file licenses in Lts/Viewer/SituationMap/Map/*.ini"
# Set permissions
chmod -R 755 /opt/ArcGIS
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "ArcGIS DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libarcgis-maps-sdk-qt-dev (300.0.0) stable; urgency=medium
* Initial release for air-gapped environment
* ArcGIS Maps SDK for Qt with embedded ini-file licenses
* Installs to /opt/ArcGIS
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,22 @@
Source: libarcgis-maps-sdk-qt-dev
Section: contrib/devel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/external-rpms/general/libarcgis-maps-sdk-qt-dev.git
Package: libarcgis-maps-sdk-qt-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, ${shlibs:Depends}, ${misc:Depends}
Description: ArcGIS Maps SDK for Qt - development files (embedded ini-file licenses)
ArcGIS Maps SDK for Qt 300.0.0 for Legatus.
.
License: Embedded ini-file licenses
Map-specific licenses embedded in Lts/Viewer/SituationMap/Map/*.ini files.
Customer has lifetime license contract.
.
This package contains the development files for ArcGIS Maps SDK for Qt.
.
Available from SCM: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libarcgis-dev/opt/ArcGIS
cp -r $(OPT_BASE)/ArcGIS/* debian/libarcgis-dev/opt/ArcGIS/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
@@ -0,0 +1,76 @@
#!/bin/bash
# AVS DEB Package Build Script
# Builds libavs-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libavs-dev"
VERSION="1.0.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="AVS library - development files (contract-based license)"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/AVS"
mkdir -p "$DEB_DIR/opt/offline-cache/avs"
# Copy AVS files from external/AVS
if [ -d "../../external/AVS" ]; then
cp -r ../../external/AVS/* "$DEB_DIR/opt/AVS/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
AVS (Application Visualization System) library for Legatus.
.
License: Contract-based (no file required)
Customer has lifetime license contract.
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "AVS DEB package installed successfully"
echo "License: Contract-based (no file required)"
# Set permissions
chmod -R 755 /opt/AVS
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "AVS DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libavs-dev (1.0.0) stable; urgency=medium
* Initial release for air-gapped environment
* AVS library with contract-based lifetime license
* Installs to /opt/AVS
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,21 @@
Source: libavs-dev
Section: contrib/devel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/external-rpms/general/libavs-dev.git
Package: libavs-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, ${shlibs:Depends}, ${misc:Depends}
Description: AVS library - development files (contract-based license)
AVS (Application Visualization System) library for Legatus.
.
License: Contract-based (no file required)
Customer has lifetime license contract.
.
This package contains the development files for AVS library.
.
Available from SCM: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libavs-dev/opt/AVS
cp -r $(OPT_BASE)/AVS/* debian/libavs-dev/opt/AVS/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
+51
View File
@@ -0,0 +1,51 @@
#!/bin/bash
# Build all DEB packages for external dependencies
# Usage: ./build-all-packages.sh
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PACKAGES=("avs" "arcgis" "buildingmodels" "geographiclib" "schusstafel" "dtentity" "rti-connext-dds" "tmsif")
OUTPUT_DIR="${SCRIPT_DIR}/output"
VERSION="1.0.0"
echo "========================================"
echo "DEB Package Build Script"
echo "========================================"
echo ""
# Create output directory
mkdir -p "${OUTPUT_DIR}"
# Build each package
for pkg in "${PACKAGES[@]}"; do
echo "Building package: ${pkg}"
echo "----------------------------------------"
# Call build-package.sh for each package
"${SCRIPT_DIR}/build-package.sh" "${pkg}" "${VERSION}"
# Move generated .deb files to output directory
# Extract package name from control file
pkg_name=$(grep -m1 "^Package:" "${SCRIPT_DIR}/${pkg}/debian/control" | awk '{print $2}')
if [ -z "${pkg_name}" ]; then
pkg_name="lib${pkg}-dev"
fi
if [ -f "${SCRIPT_DIR}/${pkg_name}_${VERSION}_amd64.deb" ]; then
mv "${SCRIPT_DIR}/${pkg_name}_${VERSION}_amd64.deb" "${OUTPUT_DIR}/"
echo "✓ Built: ${pkg_name}_${VERSION}_amd64.deb"
fi
echo ""
done
echo "========================================"
echo "Build Summary"
echo "========================================"
echo ""
echo "Output directory: ${OUTPUT_DIR}"
echo ""
ls -lh "${OUTPUT_DIR}"/*.deb 2>/dev/null || echo "No .deb files found"
echo ""
echo "Build complete!"
+206
View File
@@ -0,0 +1,206 @@
#!/bin/bash
# Build a single DEB package
# Usage: ./build-package.sh <package-dir-name> [version]
#
# Package directory names and their corresponding DEB package names:
# arcgis -> libarcgis-maps-sdk-qt-dev
# avs -> libavs-dev
# buildingmodels -> libbuildingmodels-dev
# dtentity -> libdtentity-dev
# geographiclib -> libgeographiclib-dev
# rti-connext-dds -> librti-connext-dds-7.7.0-dev
# schusstafel -> libschusstafel-dev
# tmsif -> libtmsif-dev
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PACKAGE_DIR_NAME="$1"
VERSION="${2:-1.0.0}"
if [ -z "${PACKAGE_DIR_NAME}" ]; then
echo "Usage: ./build-package.sh <package-dir-name> [version]"
echo "Example: ./build-package.sh geographiclib 1.0.0"
echo ""
echo "Available package directories:"
echo " arcgis, avs, buildingmodels, dtentity, geographiclib, rti-connext-dds, schusstafel, tmsif"
exit 1
fi
PACKAGE_DIR="${SCRIPT_DIR}/${PACKAGE_DIR_NAME}"
if [ ! -d "${PACKAGE_DIR}/debian" ]; then
echo "ERROR: Package directory not found: ${PACKAGE_DIR}"
exit 1
fi
# Extract actual package name from control file
PACKAGE_NAME=$(grep "^Package:" "${PACKAGE_DIR}/debian/control" | cut -d' ' -f2)
if [ -z "${PACKAGE_NAME}" ]; then
echo "ERROR: Could not extract package name from control file"
exit 1
fi
echo "Package directory: ${PACKAGE_DIR_NAME}"
echo "DEB package name: ${PACKAGE_NAME}"
# Determine expected /opt path and source path based on package directory
case "${PACKAGE_DIR_NAME}" in
arcgis)
OPT_PATH="/opt/ArcGIS/MapsSDK_Qt_300.0.0"
SRC_PATH="${SCRIPT_DIR}/../../external/ArcGIS"
;;
avs)
OPT_PATH="/opt/AVS"
SRC_PATH="${SCRIPT_DIR}/../../external/AVS"
;;
buildingmodels)
OPT_PATH="/opt/BuildingModels"
SRC_PATH="${SCRIPT_DIR}/../../external/BuildingModels"
;;
dtentity)
OPT_PATH="/opt/dtEntity"
SRC_PATH="${SCRIPT_DIR}/../../external/dtEntity"
;;
geographiclib)
OPT_PATH="/opt/GeographicLib"
SRC_PATH="${SCRIPT_DIR}/../../external/GeographicLib"
;;
rti-connext-dds)
OPT_PATH="/opt/rti_connext_dds-7.7.0"
SRC_PATH="${SCRIPT_DIR}/../../external/rti_connext_dds-7.7.0"
;;
schusstafel)
OPT_PATH="/opt/Schusstafel"
SRC_PATH="${SCRIPT_DIR}/../../external/Schusstafel"
;;
tmsif)
OPT_PATH="/opt/tmsif"
SRC_PATH="${SCRIPT_DIR}/../../external/tmsif"
;;
*)
echo "ERROR: Unknown package directory: ${PACKAGE_DIR_NAME}"
exit 1
;;
esac
echo "Source path: ${SRC_PATH}"
echo "Target /opt path: ${OPT_PATH}"
echo "========================================"
echo "Building DEB Package: ${PACKAGE_NAME}"
echo "Version: ${VERSION}"
echo "========================================"
echo ""
# Check if dependency exists in source location
if [ ! -d "${SRC_PATH}" ]; then
echo "ERROR: Dependency not found at ${SRC_PATH}"
echo ""
echo "Ensure the dependency is present in the external directory."
exit 1
fi
# Create temporary /opt structure for build
TEMP_OPT_BASE="/tmp/deb-build-opt"
TEMP_OPT="${TEMP_OPT_BASE}${OPT_PATH}"
mkdir -p "${TEMP_OPT}"
echo "Setting up temporary /opt structure..."
cp -r "${SRC_PATH}"/* "${TEMP_OPT}/"
# For RTI, also copy license file if it exists
if [ "${PACKAGE_DIR_NAME}" = "rti-connext-dds" ]; then
LICENSE_FILE="${SCRIPT_DIR}/../../rti_license.dat"
if [ -f "${LICENSE_FILE}" ]; then
echo "Including RTI license file in build..."
cp "${LICENSE_FILE}" "${TEMP_OPT}/rti_license.dat"
else
echo "WARNING: RTI license file not found at ${LICENSE_FILE}"
echo "The package will be built without the license file."
fi
fi
echo "Temporary /opt structure created at: ${TEMP_OPT}"
echo ""
cd "${PACKAGE_DIR}"
# Clean previous builds
echo "Cleaning previous build artifacts..."
rm -rf debian/.debhelper debian/*.debhelper debian/files debian/substvars 2>/dev/null || true
rm -f ../${PACKAGE_NAME}_*.deb 2>/dev/null || true
# Build package with OPT_BASE environment variable
echo "Building package..."
export DEB_BUILD_OPT_PATH="${TEMP_OPT_BASE}"
echo "Using OPT_BASE: ${DEB_BUILD_OPT_PATH}"
# Create package build directory structure
PKG_BUILD_DIR="debian/${PACKAGE_NAME}"
rm -rf "${PKG_BUILD_DIR}"
mkdir -p "${PKG_BUILD_DIR}/opt"
# Copy files from temporary /opt to package structure
echo "Copying files to package structure..."
cp -r "${TEMP_OPT_BASE}/${DIR_NAME}"/* "${PKG_BUILD_DIR}/"
# Create DEBIAN control directory
mkdir -p "${PKG_BUILD_DIR}/DEBIAN"
# Generate control file
cat > "${PKG_BUILD_DIR}/DEBIAN/control" << EOF
Package: ${PACKAGE_NAME}
Version: ${VERSION}
Section: devel
Priority: optional
Architecture: amd64
Maintainer: Legatus Team <legatus@defence-elec.de>
Description: ${PACKAGE_NAME} for air-gapped environment
Built from source in ./external/ directory
EOF
# Generate changelog
cat > "${PKG_BUILD_DIR}/DEBIAN/changelog" << EOF
${PACKAGE_NAME} (${VERSION}) stable; urgency=medium
* Initial release for air-gapped environment
* Built from ./external/ source directory
-- Legatus Team <legatus@defence-elec.de> $(date -R)
EOF
# Set proper permissions
chmod -R 755 "${PKG_BUILD_DIR}/DEBIAN"
find "${PKG_BUILD_DIR}/opt" -type d -exec chmod 755 {} \;
find "${PKG_BUILD_DIR}/opt" -type f -exec chmod 644 {} \;
# Build the package
echo "Creating DEB package..."
dpkg-deb --root-owner-group --build "${PKG_BUILD_DIR}" ../${PACKAGE_NAME}_${VERSION}_amd64.deb
# Clean up temporary structure
echo "Cleaning up temporary /opt structure..."
rm -rf "${TEMP_OPT_BASE}"
# Clean up build directory
rm -rf "${PKG_BUILD_DIR}"
# Verify output
DEB_FILE="${SCRIPT_DIR}/${PACKAGE_NAME}_${VERSION}_amd64.deb"
if [ -f "${DEB_FILE}" ]; then
echo ""
echo "========================================"
echo "Build Successful!"
echo "========================================"
echo "Package: ${DEB_FILE}"
echo "Size: $(du -h "${DEB_FILE}" | cut -f1)"
echo ""
echo "Package contents:"
dpkg -c "${DEB_FILE}" | head -20
echo ""
echo "To upload to SCM repository:"
echo " curl -u <credentials> --upload-file ${DEB_FILE} http://remote-repo.sl.defence-elec.de:8081/repository/external-rpms/general/"
else
echo "ERROR: Package file not found: ${DEB_FILE}"
exit 1
fi
@@ -0,0 +1,74 @@
#!/bin/bash
# BuildingModels DEB Package Build Script
# Builds libbuildingmodels-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libbuildingmodels-dev"
VERSION="1.0.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="BuildingModels library - development files"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/BuildingModels"
mkdir -p "$DEB_DIR/opt/offline-cache/buildingmodels"
# Copy BuildingModels files from external/BuildingModels
if [ -d "../../external/BuildingModels" ]; then
cp -r ../../external/BuildingModels/* "$DEB_DIR/opt/BuildingModels/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
BuildingModels library for Legatus.
.
License: Standard (no special license file required)
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "BuildingModels DEB package installed successfully"
# Set permissions
chmod -R 755 /opt/BuildingModels
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "BuildingModels DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libbuildingmodels-dev (1.0.0) stable; urgency=medium
* Initial release for air-gapped environment
* BuildingModels library with standard license
* Installs to /opt/BuildingModels
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,18 @@
Source: libbuildingmodels-dev
Section: libdevel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/git/external/buildingmodels.git
Package: libbuildingmodels-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, ${shlibs:Depends}, ${misc:Depends}
Description: BuildingModels library - development files
BuildingModels library for Legatus.
.
License: Standard (no special requirements)
.
This package contains the development files for BuildingModels library.
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libbuildingmodels-dev/opt/BuildingModels
cp -r $(OPT_BASE)/BuildingModels/* debian/libbuildingmodels-dev/opt/BuildingModels/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
@@ -0,0 +1,74 @@
#!/bin/bash
# dtEntity DEB Package Build Script
# Builds libdtentity-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libdtentity-dev"
VERSION="1.0.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="dtEntity game engine - development files"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/dtEntity"
mkdir -p "$DEB_DIR/opt/offline-cache/dtentity"
# Copy dtEntity files from external/dtEntity
if [ -d "../../external/dtEntity" ]; then
cp -r ../../external/dtEntity/* "$DEB_DIR/opt/dtEntity/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6, libstdc++6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
dtEntity game engine for Legatus.
.
License: Open source (no special license file required)
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "dtEntity DEB package installed successfully"
# Set permissions
chmod -R 755 /opt/dtEntity
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "dtEntity DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libdtentity-dev (1.0.0) stable; urgency=medium
* Initial release for air-gapped environment
* dtEntity game engine with open source/contract license
* Installs to /opt/dtEntity
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,18 @@
Source: libdtentity-dev
Section: libdevel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/git/external/dtentity.git
Package: libdtentity-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, ${shlibs:Depends}, ${misc:Depends}
Description: dtEntity game engine - development files
dtEntity game engine for Legatus.
.
License: Open source / contract-based (no file required)
.
This package contains the development files for dtEntity game engine.
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libdtentity-dev/opt/dtEntity
cp -r $(OPT_BASE)/dtEntity/* debian/libdtentity-dev/opt/dtEntity/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
@@ -0,0 +1,74 @@
#!/bin/bash
# GeographicLib DEB Package Build Script
# Builds libgeographiclib-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libgeographiclib-dev"
VERSION="2.3"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="GeographicLib library - development files"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/GeographicLib"
mkdir -p "$DEB_DIR/opt/offline-cache/geographiclib"
# Copy GeographicLib files from external/GeographicLib
if [ -d "../../external/GeographicLib" ]; then
cp -r ../../external/GeographicLib/* "$DEB_DIR/opt/GeographicLib/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libc6, libgcc1, libstdc++6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
GeographicLib library for geodesic calculations.
.
License: MIT/X11 (open source)
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "GeographicLib DEB package installed successfully"
# Set permissions
chmod -R 755 /opt/GeographicLib
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "GeographicLib DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libgeographiclib-dev (2.3) stable; urgency=medium
* Initial release for air-gapped environment
* GeographicLib library with MIT-style license
* Installs to /opt/GeographicLib
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1,18 @@
Source: libgeographiclib-dev
Section: libdevel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12)
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/git/external/geographiclib.git
Package: libgeographiclib-dev
Architecture: amd64
Depends: libgeographiclib23, ${shlibs:Depends}, ${misc:Depends}
Description: GeographicLib library - development files
GeographicLib library for Legatus.
.
License: MIT-style open source
.
This package contains the development files for GeographicLib library.
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libgeographiclib-dev/opt/GeographicLib
cp -r $(OPT_BASE)/GeographicLib/* debian/libgeographiclib-dev/opt/GeographicLib/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1,7 @@
libgeographiclib-dev (2.3) stable; urgency=medium
* Initial release for air-gapped environment
* GeographicLib library with MIT-style license
* Installs to /opt/GeographicLib
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,18 @@
Source: libgeographiclib-dev
Section: libdevel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12)
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/git/external/geographiclib.git
Package: libgeographiclib-dev
Architecture: amd64
Depends: libgeographiclib23, ${shlibs:Depends}, ${misc:Depends}
Description: GeographicLib library - development files
GeographicLib library for Legatus.
.
License: MIT-style open source
.
This package contains the development files for GeographicLib library.
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libgeographiclib-dev/opt/GeographicLib
cp -r $(OPT_BASE)/GeographicLib/* debian/libgeographiclib-dev/opt/GeographicLib/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
@@ -0,0 +1,84 @@
#!/bin/bash
# RTI Connext DDS DEB Package Build Script
# Builds librti-connext-dds-7.7.0-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="librti-connext-dds-7.7.0-dev"
VERSION="7.7.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="RTI Connext DDS 7.7.0 Pro - development files (commercial license)"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/rti_connext_dds-7.7.0"
mkdir -p "$DEB_DIR/opt/offline-cache/rti"
# Copy RTI files from external/rti_connext_dds-7.7.0
if [ -d "../../external/rti_connext_dds-7.7.0" ]; then
cp -r ../../external/rti_connext_dds-7.7.0/* "$DEB_DIR/opt/rti_connext_dds-7.7.0/"
fi
# Copy license file
if [ -f "../../../rti_license.dat" ]; then
cp ../../../rti_license.dat "$DEB_DIR/opt/rti_connext_dds-7.7.0/rti_license.dat"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6, libstdc++6, libc6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
RTI Connext DDS 7.7.0 Pro for Legatus.
.
License: Commercial FlexLM license
License file: /opt/rti_connext_dds-7.7.0/rti_license.dat
Set RTI_LICENSE_FILE environment variable.
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "RTI Connext DDS DEB package installed successfully"
echo "License: Commercial FlexLM license"
echo "License file: /opt/rti_connext_dds-7.7.0/rti_license.dat"
echo "Set RTI_LICENSE_FILE environment variable to use the library."
# Set permissions
chmod -R 755 /opt/rti_connext_dds-7.7.0
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "RTI Connext DDS DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,8 @@
librti-connext-dds-7.7.0-dev (7.7.0) stable; urgency=medium
* Initial release for air-gapped environment
* RTI Connext DDS 7.7.0 Pro with commercial FlexLM license
* Includes rti_license.dat for license validation
* Installs to /opt/rti_connext_dds-7.7.0
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,22 @@
Source: librti-connext-dds-7.7.0-dev
Section: contrib/devel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/external-rpms/general/librti-connext-dds-7.7.0-dev.git
Package: librti-connext-dds-7.7.0-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, libstdc++6, libc6, ${shlibs:Depends}, ${misc:Depends}
Description: RTI Connext DDS 7.7.0 Pro - development files (commercial license)
RTI Connext DDS 7.7.0 Pro for Legatus.
.
License: Commercial FlexLM license
License file: /opt/rti_connext_dds-7.7.0/rti_license.dat
Set RTI_LICENSE_FILE environment variable.
.
This package contains the development files for RTI Connext DDS 7.7.0 Pro.
.
Available from SCM: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
@@ -0,0 +1,27 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/librti-connext-dds-7.7.0-dev/opt/rti_connext_dds-7.7.0
cp -r $(OPT_BASE)/rti_connext_dds-7.7.0/* debian/librti-connext-dds-7.7.0-dev/opt/rti_connext_dds-7.7.0/
install -d debian/librti-connext-dds-7.7.0-dev/opt/rti_connext_dds-7.7.0/etc
# Copy license from build machine or project root
if [ -f $(OPT_BASE)/rti_connext_dds-7.7.0/rti_license.dat ]; then \
cp $(OPT_BASE)/rti_connext_dds-7.7.0/rti_license.dat debian/librti-connext-dds-7.7.0-dev/opt/rti_connext_dds-7.7.0/rti_license.dat; \
elif [ -f ../../../../rti_license.dat ]; then \
cp ../../../../rti_license.dat debian/librti-connext-dds-7.7.0-dev/opt/rti_connext_dds-7.7.0/rti_license.dat; \
else \
echo "ERROR: rti_license.dat not found!"; \
exit 1; \
fi
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
@@ -0,0 +1,74 @@
#!/bin/bash
# Schusstafel DEB Package Build Script
# Builds libschusstafel-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libschusstafel-dev"
VERSION="1.0.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="Schusstafel library - development files"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/Schusstafel"
mkdir -p "$DEB_DIR/opt/offline-cache/schusstafel"
# Copy Schusstafel files from external/Schusstafel
if [ -d "../../external/Schusstafel" ]; then
cp -r ../../external/Schusstafel/* "$DEB_DIR/opt/Schusstafel/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
Schusstafel library for Legatus.
.
License: Standard (no special license file required)
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "Schusstafel DEB package installed successfully"
# Set permissions
chmod -R 755 /opt/Schusstafel
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "Schusstafel DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libschusstafel-dev (1.0.0) stable; urgency=medium
* Initial release for air-gapped environment
* Schusstafel library with standard license
* Installs to /opt/Schusstafel
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,18 @@
Source: libschusstafel-dev
Section: libdevel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/git/external/schusstafel.git
Package: libschusstafel-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, ${shlibs:Depends}, ${misc:Depends}
Description: Schusstafel library - development files
Schusstafel library for Legatus.
.
License: Standard (no special requirements)
.
This package contains the development files for Schusstafel library.
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libschusstafel-dev/opt/Schusstafel
cp -r $(OPT_BASE)/Schusstafel/* debian/libschusstafel-dev/opt/Schusstafel/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)
@@ -0,0 +1,76 @@
#!/bin/bash
# tmsif DEB Package Build Script
# Builds libtmsif-dev DEB package for internal SCM repository
set -e
PACKAGE_NAME="libtmsif-dev"
VERSION="1.0.0"
ARCHITECTURE="amd64"
MAINTAINER="Legatus Team <legatus@defence-elec.de>"
DESCRIPTION="TMSIF library - development files (contract-based license)"
# Create package structure
DEB_DIR="deb-package"
rm -rf "$DEB_DIR"
mkdir -p "$DEB_DIR/DEBIAN"
mkdir -p "$DEB_DIR/opt/tmsif"
mkdir -p "$DEB_DIR/opt/offline-cache/tmsif"
# Copy tmsif files from external/tmsif
if [ -d "../../external/tmsif" ]; then
cp -r ../../external/tmsif/* "$DEB_DIR/opt/tmsif/"
fi
# Create control file
cat > "$DEB_DIR/DEBIAN/control" << EOF
Package: $PACKAGE_NAME
Version: $VERSION
Architecture: $ARCHITECTURE
Maintainer: $MAINTAINER
Depends: libqt6core6, libqt6gui6, libqt6widgets6
Section: libdevel
Priority: optional
Description: $DESCRIPTION
TMSIF library for Legatus.
.
License: Contract-based (no file required)
Customer has lifetime license contract.
EOF
# Create postinst script
cat > "$DEB_DIR/DEBIAN/postinst" << 'EOF'
#!/bin/bash
set -e
echo "TMSIF DEB package installed successfully"
echo "License: Contract-based (no file required)"
# Set permissions
chmod -R 755 /opt/tmsif
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postinst"
# Create postrm script
cat > "$DEB_DIR/DEBIAN/postrm" << 'EOF'
#!/bin/bash
set -e
echo "TMSIF DEB package removed"
exit 0
EOF
chmod 755 "$DEB_DIR/DEBIAN/postrm"
# Build DEB package
echo "Building DEB package: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd "$DEB_DIR"
dpkg-deb --build . "../${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
cd ..
echo "DEB package created: ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo "Size: $(du -h ${PACKAGE_NAME}_${VERSION}_${ARCHITECTURE}.deb | cut -f1)"
@@ -0,0 +1,7 @@
libtmsif-dev (1.0.0) stable; urgency=medium
* Initial release for air-gapped environment
* TMSIF library with contract-based lifetime license
* Installs to /opt/tmsif
-- Legatus Team <legatus@defence-elec.de> Mon, 01 Jan 2024 00:00:00 +0000
@@ -0,0 +1 @@
12
@@ -0,0 +1,21 @@
Source: libtmsif-dev
Section: contrib/devel
Priority: optional
Maintainer: Legatus Team <legatus@defence-elec.de>
Build-Depends: debhelper (>= 12), qt6-base-dev
Standards-Version: 4.6.0
Vcs-Browser: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
Vcs-Git: https://internal-repo.sl.defence-elec.de/external-rpms/general/libtmsif-dev.git
Package: libtmsif-dev
Architecture: amd64
Depends: libqt6core6, libqt6gui6, libqt6widgets6, ${shlibs:Depends}, ${misc:Depends}
Description: TMSIF library - development files (contract-based license)
TMSIF library for Legatus.
.
License: Contract-based (no file required)
Customer has lifetime license contract.
.
This package contains the development files for TMSIF library.
.
Available from SCM: https://internal-repo.sl.defence-elec.de/#browse/browse:external-rpms:general
@@ -0,0 +1,17 @@
#!/usr/bin/make -f
# Allow override of source path for building in CI/CD or local environments
# Default: /opt (production build machine)
# Can be overridden via DEB_BUILD_OPT_PATH environment variable
OPT_BASE ?= /opt
%:
dh $@
override_dh_auto_install:
dh_auto_install
install -d debian/libtmsif-dev/opt/tmsif
cp -r $(OPT_BASE)/tmsif/* debian/libtmsif-dev/opt/tmsif/
override_dh_strip:
dh_strip --no-automatic-dbgsym
@@ -0,0 +1 @@
3.0 (native)