Skip to content

Commit 3c80444

Browse files
committed
remove basic test
1 parent ab499f3 commit 3c80444

File tree

2 files changed

+196
-33
lines changed

2 files changed

+196
-33
lines changed

.github/workflows/basic-test.yml

Lines changed: 0 additions & 33 deletions
This file was deleted.

scripts/build_debian_packages.sh

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
#!/bin/bash
2+
3+
# Build Debian packages for greenwave_monitor
4+
#
5+
# This script builds .deb packages for greenwave_monitor_interfaces, greenwave_monitor, and r2s_gw
6+
#
7+
# Usage: ./scripts/build_debian_packages.sh [ROS_DISTRO] [UBUNTU_DISTRO]
8+
# Examples:
9+
# ./scripts/build_debian_packages.sh # Uses defaults (humble/jammy)
10+
# ./scripts/build_debian_packages.sh humble jammy # ROS Humble on Ubuntu 22.04
11+
# ./scripts/build_debian_packages.sh jazzy noble # ROS Jazzy on Ubuntu 24.04
12+
#
13+
# Docker Usage (Recommended):
14+
# docker run -it --rm -v $(pwd):/workspace -w /workspace \
15+
# ros:humble-ros-base-jammy ./scripts/build_debian_packages.sh humble jammy
16+
#
17+
# Supported combinations:
18+
# humble/jammy, iron/jammy, jazzy/noble, kilted/noble, rolling/noble
19+
#
20+
# Output: Debian packages will be created in debian_packages/[ROS_DISTRO]/
21+
# Install: sudo apt install ./debian_packages/[ROS_DISTRO]/*.deb
22+
23+
set -eo pipefail
24+
25+
# Default values
26+
DEFAULT_ROS_DISTRO="humble"
27+
DEFAULT_UBUNTU_DISTRO="jammy"
28+
29+
# Parse arguments
30+
ROS_DISTRO="${1:-$DEFAULT_ROS_DISTRO}"
31+
UBUNTU_DISTRO="${2:-$DEFAULT_UBUNTU_DISTRO}"
32+
33+
# Validate ROS distro
34+
case "$ROS_DISTRO" in
35+
humble|iron|jazzy|kilted|rolling)
36+
;;
37+
*)
38+
echo "Error: Unsupported ROS distro: $ROS_DISTRO"
39+
echo "Supported distros: humble, iron, jazzy, kilted, rolling"
40+
exit 1
41+
;;
42+
esac
43+
44+
# Validate Ubuntu distro
45+
case "$UBUNTU_DISTRO" in
46+
jammy|noble)
47+
;;
48+
*)
49+
echo "Error: Unsupported Ubuntu distro: $UBUNTU_DISTRO"
50+
echo "Supported distros: jammy, noble"
51+
exit 1
52+
;;
53+
esac
54+
55+
echo "Building Debian packages for ROS $ROS_DISTRO on Ubuntu $UBUNTU_DISTRO"
56+
57+
# Check if running in ROS container or local system
58+
if [ ! -f "/opt/ros/$ROS_DISTRO/setup.bash" ]; then
59+
echo "Error: ROS $ROS_DISTRO not found at /opt/ros/$ROS_DISTRO/setup.bash"
60+
echo "Please run this script in a ROS $ROS_DISTRO container or install ROS $ROS_DISTRO locally"
61+
echo ""
62+
echo "To run in Docker:"
63+
echo " docker run -it --rm -v \$(pwd):/workspace -w /workspace ros:$ROS_DISTRO-ros-base-$UBUNTU_DISTRO ./scripts/build_debian_packages.sh $ROS_DISTRO $UBUNTU_DISTRO"
64+
exit 1
65+
fi
66+
67+
# Source ROS environment
68+
source /opt/ros/$ROS_DISTRO/setup.bash
69+
70+
# Install dependencies
71+
echo "Installing build dependencies..."
72+
apt-get update -qq
73+
74+
# Check if we need --break-system-packages for pip
75+
USE_BREAK_SYSTEM_PACKAGES=""
76+
if [[ "$ROS_DISTRO" == "jazzy" || "$ROS_DISTRO" == "kilted" || "$ROS_DISTRO" == "rolling" ]]; then
77+
USE_BREAK_SYSTEM_PACKAGES="--break-system-packages"
78+
fi
79+
80+
# Install system dependencies
81+
apt-get install -y build-essential python3-pip python3-bloom python3-rosdep git lsb-release devscripts debhelper fakeroot
82+
83+
# Install Python dependencies
84+
if [ -f "requirements.txt" ]; then
85+
if [ -n "$USE_BREAK_SYSTEM_PACKAGES" ]; then
86+
pip3 install $USE_BREAK_SYSTEM_PACKAGES -I pygments -r requirements.txt
87+
python3 -m pip install -U $USE_BREAK_SYSTEM_PACKAGES bloom
88+
else
89+
pip3 install -r requirements.txt
90+
python3 -m pip install -U bloom
91+
fi
92+
fi
93+
94+
# Build workspace first
95+
echo "Building workspace..."
96+
colcon build --packages-up-to r2s_gw
97+
source install/setup.bash
98+
99+
# Setup rosdep mappings
100+
echo "Setting up rosdep mappings..."
101+
mkdir -p ~/.ros/rosdep
102+
cat >~/.ros/rosdep/local.yaml <<EOF
103+
greenwave_monitor_interfaces:
104+
ubuntu:
105+
jammy: [ros-$ROS_DISTRO-greenwave-monitor-interfaces]
106+
noble: [ros-$ROS_DISTRO-greenwave-monitor-interfaces]
107+
greenwave_monitor:
108+
ubuntu:
109+
jammy: [ros-$ROS_DISTRO-greenwave-monitor]
110+
noble: [ros-$ROS_DISTRO-greenwave-monitor]
111+
EOF
112+
113+
# Setup rosdep
114+
mkdir -p /etc/ros/rosdep/sources.list.d || sudo mkdir -p /etc/ros/rosdep/sources.list.d
115+
echo "yaml file://$HOME/.ros/rosdep/local.yaml" | sudo tee /etc/ros/rosdep/sources.list.d/99-local.list
116+
rosdep init 2>/dev/null || sudo rosdep init 2>/dev/null || true
117+
rosdep update --include-eol-distros
118+
119+
# Create output directory
120+
DEBIAN_DIR="debian_packages/$ROS_DISTRO"
121+
mkdir -p "$DEBIAN_DIR"
122+
123+
# Function to build a Debian package
124+
build_debian_package() {
125+
local package_name=$1
126+
local package_dir=$2
127+
128+
echo "=================================="
129+
echo "Generating Debian package for $package_name..."
130+
echo "=================================="
131+
132+
cd "$package_dir"
133+
134+
# Generate debian files and build package
135+
bloom-generate rosdebian --ros-distro "$ROS_DISTRO"
136+
apt-get build-dep . -y || sudo apt-get build-dep . -y
137+
fakeroot debian/rules binary
138+
139+
# Move package to output directory
140+
cp ../ros-$ROS_DISTRO-${package_name//_/-}_*.deb "../$DEBIAN_DIR/"
141+
142+
cd ..
143+
144+
echo "Successfully built $package_name"
145+
}
146+
147+
# Function to install a package locally
148+
install_package() {
149+
local package_pattern=$1
150+
echo "Installing $package_pattern..."
151+
apt-get update || sudo apt-get update
152+
apt-get install -y ./$DEBIAN_DIR/$package_pattern || sudo apt-get install -y ./$DEBIAN_DIR/$package_pattern
153+
}
154+
155+
# Build packages in dependency order
156+
echo "Starting Debian package generation..."
157+
158+
# 1. Build greenwave_monitor_interfaces
159+
if [ -d "greenwave_monitor_interfaces" ]; then
160+
build_debian_package "greenwave_monitor_interfaces" "greenwave_monitor_interfaces"
161+
install_package "ros-$ROS_DISTRO-greenwave-monitor-interfaces_*.deb"
162+
else
163+
echo "Warning: greenwave_monitor_interfaces directory not found, skipping"
164+
fi
165+
166+
# 2. Build greenwave_monitor
167+
if [ -d "greenwave_monitor" ]; then
168+
build_debian_package "greenwave_monitor" "greenwave_monitor"
169+
install_package "ros-$ROS_DISTRO-greenwave-monitor_*.deb"
170+
else
171+
echo "Warning: greenwave_monitor directory not found, skipping"
172+
fi
173+
174+
# 3. Build r2s_gw
175+
if [ -d "r2s_gw" ]; then
176+
build_debian_package "r2s_gw" "r2s_gw"
177+
else
178+
echo "Warning: r2s_gw directory not found, skipping"
179+
fi
180+
181+
echo "=================================="
182+
echo "Debian package generation complete!"
183+
echo "=================================="
184+
echo "Generated packages in $DEBIAN_DIR:"
185+
ls -la "$DEBIAN_DIR/"
186+
187+
echo ""
188+
echo "To install the packages on another system:"
189+
echo " sudo apt install ./$DEBIAN_DIR/*.deb"
190+
191+
echo ""
192+
echo "To create a local APT repository:"
193+
echo " sudo apt install dpkg-dev"
194+
echo " cd $DEBIAN_DIR"
195+
echo " dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz"
196+
echo " # Then add 'deb [trusted=yes] file:///path/to/$DEBIAN_DIR ./' to /etc/apt/sources.list"

0 commit comments

Comments
 (0)