Skip to content

Commit ea0b95d

Browse files
authored
ci: add ros backend to build-upload workflow (#391)
* ci: add ros backend to build-upload workflow * fix: remove duplicate metadata * reset ros build nr to 0 * fix: add pyrattler * fix: package_name input fix/debug * fix: add pydantic to ros backend recipe * fix: ros backend lock
1 parent 4606256 commit ea0b95d

File tree

5 files changed

+33
-10
lines changed

5 files changed

+33
-10
lines changed

.github/workflows/build-upload.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77
- "pixi-build-rattler-build-v[0-9]+.[0-9]+.[0-9]+"
88
- "pixi-build-rust-v[0-9]+.[0-9]+.[0-9]+"
99
- "pixi-build-mojo-v[0-9]+.[0-9]+.[0-9]+"
10+
- "pixi-build-ros-v[0-9]+.[0-9]+.[0-9]+"
11+
- "py-pixi-build-backend-v[0-9]+.[0-9]+.[0-9]+"
1012
pull_request:
1113
paths:
1214
- .github/workflows/build-upload.yml
@@ -46,9 +48,12 @@ jobs:
4648
run: |
4749
# extract names and versions from cargo metadata
4850
# and generate a matrix entries for the build job
51+
echo "Package name input: '${{ github.event.inputs.package_name }}'"
4952
if [ -n "${{ github.event.inputs.package_name }}" ]; then
53+
echo "Building specific package: ${{ github.event.inputs.package_name }}"
5054
MATRIX_JSON=$(pixi run generate-matrix --package "${{ github.event.inputs.package_name }}")
5155
else
56+
echo "Building all packages"
5257
MATRIX_JSON=$(pixi run generate-matrix)
5358
fi
5459

backends/pixi-build-ros/pixi.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backends/pixi-build-ros/pixi.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ fmt-ruff = "ruff format src tests"
4141
fmt = { depends-on = ["fmt-pyupgrade", "fmt-ruff"] }
4242

4343
## Package section
44-
[package]
45-
name = "pixi-build-ros"
46-
version = "0.2.0"
47-
4844
[package.build.backend]
4945
name = "pixi-build-python"
5046
version = "*"

recipe/pixi-build-ros/recipe.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ requirements:
1919
- python >=3.9
2020
- rosdistro
2121
- catkin_pkg
22+
- pydantic
2223
- pyyaml
24+
- py-rattler
2325
- typing-extensions
2426
- py-pixi-build-backend
2527
- pixi-build-api-version >=2,<3
2628

2729
build:
28-
number: 1
30+
number: 0
2931
script:
3032
- pip install . -vv --no-build-isolation
3133
noarch: python

scripts/generate-matrix.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ def generate_matrix(filter_package_name=None):
8585
"type": "python"
8686
})
8787

88+
# Add pixi-build-ros manually since it's a Python package in backends/
89+
with open("backends/pixi-build-ros/pyproject.toml", "rb") as f:
90+
pyproject_toml = tomllib.load(f)
91+
all_packages.append({
92+
"name": "pixi-build-ros",
93+
"version": pyproject_toml["project"]["version"],
94+
"type": "python"
95+
})
96+
8897
# Filter packages by name if specified
8998
if filter_package_name:
9099
available_packages = [pkg["name"] for pkg in all_packages]
@@ -105,6 +114,13 @@ def generate_matrix(filter_package_name=None):
105114
{"target": "osx-arm64", "os": "macos-14"},
106115
]
107116

117+
def get_targets_for_package(package_name, all_targets):
118+
"""Get the appropriate targets for a package. Noarch packages only build on linux-64."""
119+
if package_name == "pixi-build-ros":
120+
return [t for t in all_targets if t["target"] == "linux-64"]
121+
else:
122+
return all_targets
123+
108124
git_tags = get_git_tags()
109125
is_untagged_build = len(git_tags) == 0
110126

@@ -128,12 +144,14 @@ def generate_matrix(filter_package_name=None):
128144
auto_version = f"{package['version']}.{date_suffix}.{git_hash}"
129145

130146
# Generate environment variable name
131-
if package["type"] == "python":
147+
if package["name"] == "py-pixi-build-backend":
132148
env_name = "PY_PIXI_BUILD_BACKEND_VERSION"
149+
elif package["name"] == "pixi-build-ros":
150+
env_name = "PIXI_BUILD_ROS_VERSION"
133151
else:
134152
env_name = f"{package['name'].replace('-', '_').upper()}_VERSION"
135153

136-
for target in targets:
154+
for target in get_targets_for_package(package["name"], targets):
137155
matrix.append(
138156
{
139157
"bin": package["name"],
@@ -175,12 +193,14 @@ def generate_matrix(filter_package_name=None):
175193
continue
176194

177195
# Generate environment variable name
178-
if package["type"] == "python":
196+
if package["name"] == "py-pixi-build-backend":
179197
env_name = "PY_PIXI_BUILD_BACKEND_VERSION"
198+
elif package["name"] == "pixi-build-ros":
199+
env_name = "PIXI_BUILD_ROS_VERSION"
180200
else:
181201
env_name = f"{package['name'].replace('-', '_').upper()}_VERSION"
182202

183-
for target in targets:
203+
for target in get_targets_for_package(package["name"], targets):
184204
matrix.append(
185205
{
186206
"bin": package["name"],

0 commit comments

Comments
 (0)