@@ -205,7 +205,9 @@ jobs:
205205 run : |
206206 rm -fr ${{ matrix.ROS_DISTRO }}-${{ github.run_number }}-${{ github.run_attempt }}-${{ github.run_id }} || echo "OK"
207207
208- # ROS-O setup https://github.com/v4hn/ros-o-builder/blob/jammy-one/README.md#install-instructions
208+ # ROS-O setup for v4hn https://github.com/v4hn/ros-o-builder/blob/jammy-one/README.md#install-instructions
209+ # ROS-O setup for techfak https://ros.packages.techfak.net/
210+ # note that v4hn uses ROS_DISTRO=one and techfak uses ROS_DISTRO
209211 ros-o :
210212 runs-on : ubuntu-latest
211213
@@ -214,7 +216,13 @@ jobs:
214216 matrix :
215217 include :
216218 - DISTRO : ubuntu:22.04
217- ROS_REPOSITORY_URL : https://raw.githubusercontent.com/v4hn/ros-o-builder/jammy-one/repository
219+ ROS_ONE_VARIANT : v4hn
220+ ROS_REPOSITORY_URL : " deb [trusted=yes] https://raw.githubusercontent.com/v4hn/ros-o-builder/jammy-one/repository ./"
221+ ROSDEP_PACKAGE_MAPPING : " yaml https://raw.githubusercontent.com/v4hn/ros-o-builder/jammy-one/repository/local.yaml debian"
222+ - DISTRO : ubuntu:24.04
223+ ROS_ONE_VARIANT : techfak
224+ ROS_REPOSITORY_URL : " deb [trusted=yes] https://ros.packages.techfak.net noble-testing main"
225+ ROSDEP_PACKAGE_MAPPING : " yaml https://ros.packages.techfak.net/ros-one.yaml ubuntu"
218226
219227 container : ${{ matrix.DISTRO }}
220228
@@ -228,23 +236,41 @@ jobs:
228236 - name : Setup ROS-O deb repository
229237 run : |
230238 set -x
231- apt update && apt install -qq -y ca-certificates
232- echo "deb [trusted=yes] ${{ matrix.ROS_REPOSITORY_URL }}/ ./" | tee /etc/apt/sources.list.d/ros-o-builder.list
239+ apt update && apt install -qq -y ca-certificates git
240+ echo ${{ matrix.ROS_REPOSITORY_URL }} | tee /etc/apt/sources.list.d/ros-o-builder.list
241+ ##
242+ # https://github.com/v4hn/ros-deb-builder-action/blob/b7c0ed93fde3a86b5b1027bf8f7145cad6067c90/prepare.sh#L27-L28
243+ # Canonical dropped the Debian ROS packages from 24.04 for political reasons. Wow.
244+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "v4hn" && "${{ matrix.DISTRO }}" == "ubuntu:24.04" ]]; then apt install -y software-properties-common retry && retry -d 50,10,30,300 -t 12 add-apt-repository -y ppa:v-launchpad-jochen-sprickerhof-de/ros; fi
245+ ##
233246 apt update
234- apt install -qq -y python3-rosdep2
235- echo "yaml ${{ matrix.ROS_REPOSITORY_URL }}/local.yaml debian" | tee /etc/ros/rosdep/sources.list.d/1-ros-o-builder.list
247+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "v4hn" ]]; then
248+ apt install -qq -y python3-rosdep2
249+ fi
250+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "techfak" ]]; then
251+ # Do not install python3-rosdep2, which is an outdated version of rosdep shipped via the Ubuntu repositories (instead of ROS)!
252+ apt install -qq -y python3-rosdep
253+ rosdep init
254+ fi
255+ echo ${{ matrix.ROSDEP_PACKAGE_MAPPING }} | tee /etc/ros/rosdep/sources.list.d/1-ros-o-builder.list
236256 rosdep update
237- # disable installing recommends as ros-o-builder do
238- echo 'APT::Install-Recommends "false";' | tee /etc/apt/apt.conf.d/99norecommends
257+ shell : bash
239258
240259 - name : Setup catkin-tools
241260 run : |
242261 set -x
243262 # setup catkin tools
244263 apt install -qq -y python3-pip
245- pip3 install catkin-tools==0.9.4
264+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "v4hn" ]]; then
265+ pip3 install catkin-tools==0.9.4
266+ apt install -qq -y catkin
267+ fi
268+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "techfak" ]]; then
269+ apt install -qq -y ros-one-catkin python3-catkin-tools
270+ fi
246271 # setup build tools
247- apt install -qq -y cmake build-essential catkin ros-one-rosbash
272+ apt install -qq -y cmake build-essential ros-one-rosbash
273+ shell : bash
248274
249275 - name : Setup Workspace
250276 run : |
@@ -253,8 +279,17 @@ jobs:
253279 # setup workspace
254280 mkdir -p ~/ws/src
255281 cd ~/ws/src
282+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "techfak" ]]; then
283+ # TODO: remove these lines and uncomment https://github.com/ubi-agni/ros-builder-action/blob/191fab06004ad5784c28cf2ba2b18f6d163a860d/ros-one.repos#L1089
284+ git clone https://github.com/locusrobotics/catkin_virtualenv.git
285+ fi
256286 ln -sf $GITHUB_WORKSPACE .
257287 rosdep install -qq -r -y --from-path . --ignore-src || echo "OK"
288+ # check all system packages are able to install, because ROS-O build deb files that needs all packages
289+ PIP_BREAK_SYSTEM_PACKAGES=1 rosdep install -qq --simulate -y --from-path . --ignore-src -t exec -t buildtool_export -t buildtool -t build -t build_export | tee rosdep-install.sh
290+ # catkin_tools is not available on v4hn/jammy
291+ if [[ "${{ matrix.ROS_ONE_VARIANT }}" == "v4hn" ]]; then sed -i '/python3-catkin-tools/s/^/#/' rosdep-install.sh; fi
292+ sed 's/apt-get install/apt-get -y install/;/install ros-one/s/^/#/;/pip3 install/s/^/#/' rosdep-install.sh | bash -xe
258293 shell : bash
259294
260295 - name : Compile Packages
0 commit comments