Skip to content

Commit aa6344c

Browse files
committed
Build files for rolling linux-64 2026-11-05-1938
1 parent ddcc921 commit aa6344c

15 files changed

Lines changed: 311394 additions & 13 deletions

File tree

‎.github/workflows/build.yaml‎

Lines changed: 52 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,55 @@
1-
# Placeholder, so that GitHub names this workflow path "build" in the Actions list.
2-
#
3-
# The real build.yaml lives on the buildbranch_<distro>_<platform> branches (pushed by
4-
# main.yaml, generated by `rs <distro> gha`); every branch has its own, with
5-
# `run-name: <distro> <platform>`. GitHub shows one workflow per path and takes its name
6-
# from the default branch's file; without one on main it kept the name of the first
7-
# branch that registered the path. This file is never triggered on its own.
8-
name: build
9-
on:
10-
workflow_dispatch:
111
jobs:
12-
placeholder:
2+
stage_0_job_0:
3+
name: rclcpp-async
134
runs-on: ubuntu-latest
14-
permissions: {}
5+
strategy:
6+
fail-fast: false
157
steps:
16-
- run: echo "Builds run from the buildbranch_<distro>_<platform> branches' own build.yaml."
8+
- name: Checkout code
9+
uses: actions/checkout@v7
10+
- name: Disable git auto-maintenance
11+
run: git config --global maintenance.auto false && git config --global gc.auto
12+
0
13+
- name: Setup pixi
14+
uses: prefix-dev/setup-pixi@v0.11.0
15+
with:
16+
pixi-version: v0.81.0
17+
cache: 'true'
18+
log-level: v
19+
frozen: 'true'
20+
- name: Build
21+
env:
22+
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN_ROLLING }}
23+
CURRENT_RECIPES: ros2-rclcpp-async ros-rolling-rclcpp-async
24+
BUILD_TARGET: ''
25+
run: |
26+
export CI=github
27+
export GIT_BRANCH=${GITHUB_REF_NAME}
28+
export FEEDSTOCK_NAME=${GITHUB_REPOSITORY##*/}
29+
.scripts/build_unix.sh --target $BUILD_TARGET
30+
- name: Keep build_timings.jsonl
31+
if: always()
32+
uses: actions/upload-artifact@v6
33+
with:
34+
name: ${{ github.job }}-${{ github.run_attempt }}
35+
path: distros/rolling/work/build_timings.jsonl
36+
if-no-files-found: ignore
37+
retention-days: 30
38+
permissions:
39+
id-token: write
40+
contents: read
41+
attestations: write
42+
name: build
43+
run-name: rolling linux-64
44+
concurrency:
45+
group: build-rolling-linux-64
46+
cancel-in-progress: true
47+
on:
48+
push:
49+
branches:
50+
- buildbranch_rolling_linux_64
51+
env:
52+
ROBOSTACK_DISTRO: rolling
53+
# optional repository variable: upload to this prefix.dev channel instead
54+
# (e.g. a test channel), or 'none' to only build
55+
ROBOSTACK_UPLOAD_CHANNEL: ${{ vars.ROBOSTACK_UPLOAD_CHANNEL }}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bash
2+
3+
4+
# Default values
5+
target=""
6+
7+
# Parse arguments
8+
while [[ "$#" -gt 0 ]]; do
9+
case $1 in
10+
--target) target="$2"; shift ;; # Capture value for --target
11+
*) echo "Unknown parameter passed: $1"; exit 1 ;; # Handle invalid options
12+
esac
13+
shift
14+
done
15+
16+
set -xeuo pipefail
17+
export PYTHONUNBUFFERED=1
18+
19+
# ROBOSTACK_DISTRO is set by the generated build workflow (tools/robostack.py gha).
20+
: "${ROBOSTACK_DISTRO:?ROBOSTACK_DISTRO is not set}"
21+
cd "distros/${ROBOSTACK_DISTRO}/work"
22+
export FEEDSTOCK_ROOT=`pwd`
23+
export "CONDA_BLD_PATH=$HOME/conda-bld/"
24+
25+
if [[ "$target" == *"osx"* ]]; then
26+
echo "osx"
27+
# Spotlight indexes every file the environments and builds write, using up to a
28+
# core or two of the runner's three or four; the runner is thrown away after the job
29+
sudo mdutil -a -i off || true
30+
export PATH=$(echo $PATH | tr ":" "\n" | grep -v 'homebrew' | xargs | tr ' ' ':')
31+
fi
32+
33+
# All of the job's recipes in one build-ci run (tools/robostack.py), which builds
34+
# independent ones in parallel and adds the variant config and the distro's channels.
35+
recipe_args=()
36+
for recipe in ${CURRENT_RECIPES[@]}; do
37+
recipe_args+=(--recipe "${FEEDSTOCK_ROOT}/recipes/${recipe}")
38+
done
39+
pixi run -v rs "${ROBOSTACK_DISTRO}" build-ci "${recipe_args[@]}" --output-dir $CONDA_BLD_PATH
40+
41+
# Check if it build something, this is a hotfix for the skips inside additional_recipes
42+
shopt -s nullglob
43+
conda_packages=( "${CONDA_BLD_PATH}/${target}"*/*.conda )
44+
if (( ${#conda_packages[@]} > 0 )); then
45+
# Upload packages one-by-one; the upload task (tools/robostack.py) uploads them to
46+
# prefix.dev and anaconda.org and skips packages that are already there.
47+
for conda_package in "${conda_packages[@]}"; do
48+
pixi run rs "${ROBOSTACK_DISTRO}" upload "${conda_package}"
49+
done
50+
else
51+
echo "Warning: No .conda files found in ${CONDA_BLD_PATH}/${target}"
52+
echo "This might be due to all the packages being skipped"
53+
fi
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
2+
setlocal EnableExtensions EnableDelayedExpansion
3+
4+
:: Defender's real-time scan slows down installing and deleting the environments'
5+
:: files several times over; the runner is thrown away after the job
6+
powershell -NoProfile -Command "Set-MpPreference -DisableRealtimeMonitoring $true"
7+
8+
:: The builds, rattler's package cache (on the same drive, for hardlinks) and the
9+
:: temporary files on D:, about three times as fast as C: on GitHub's runners
10+
set CONDA_BLD_PATH=D:\bld
11+
set VINCA_CUSTOM_CMAKE_BUILD_DIR=D:\x\
12+
set RATTLER_CACHE_DIR=D:\rattler
13+
set TMP=D:\tmp
14+
set TEMP=D:\tmp
15+
mkdir D:\tmp
16+
powershell -NoProfile -Command "Get-PSDrive C, D | Format-Table Name, @{n='free GB'; e={[math]::Round($_.Free / 1GB)}}"
17+
echo "PATH is %PATH%"
18+
19+
rmdir /Q/S C:\Strawberry\
20+
rmdir /Q/S "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\"
21+
22+
:: ROBOSTACK_DISTRO is set by the generated build workflow (tools/robostack.py gha).
23+
cd distros\%ROBOSTACK_DISTRO%\work
24+
set "FEEDSTOCK_ROOT=%cd%"
25+
26+
mkdir %CONDA_BLD_PATH%
27+
28+
:: Enable long path names on Windows
29+
reg add HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f
30+
:: ... and in git, for sources that vendor packages clone during the build
31+
git config --global core.longpaths true
32+
33+
:: All of the job's recipes in one build-ci run (tools/robostack.py), which builds
34+
:: independent ones in parallel and adds the variant config and the distro's channels.
35+
set RECIPE_ARGS=
36+
for %%X in (%CURRENT_RECIPES%) do set "RECIPE_ARGS=!RECIPE_ARGS! --recipe %FEEDSTOCK_ROOT%\recipes\%%X\"
37+
pixi run -v rs %ROBOSTACK_DISTRO% build-ci !RECIPE_ARGS! --output-dir %CONDA_BLD_PATH%
38+
if errorlevel 1 exit 1
39+
40+
:: Check if .conda files exist in the win-64 directory
41+
if exist "%CONDA_BLD_PATH%\win-64\*.conda" (
42+
echo Found .conda files, starting upload...
43+
rem Upload packages one-by-one; the upload task (tools/robostack.py) uploads them to
44+
rem prefix.dev and anaconda.org and skips packages that are already there.
45+
for %%F in ("%CONDA_BLD_PATH%\win-64\*.conda") do (
46+
echo Uploading %%~fF
47+
pixi run rs %ROBOSTACK_DISTRO% upload "%%~fF"
48+
if errorlevel 1 exit 1
49+
)
50+
) else (
51+
echo Warning: No .conda files found in %CONDA_BLD_PATH%\win-64
52+
echo This might be due to all the packages being skipped
53+
)

‎distros/rolling/work/build_timings.json‎

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ros2-rclcpp-async
2+
ros-rolling-rclcpp-async

0 commit comments

Comments
 (0)