Skip to content

Commit 5fd1d0b

Browse files
committed
update
1 parent ee7019f commit 5fd1d0b

File tree

3 files changed

+91
-9
lines changed

3 files changed

+91
-9
lines changed

.github/workflows/build-on-change.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ jobs:
115115
rebuild: true
116116
logs: true
117117
metadata-release: false
118-
build-deps: "nix,go,rust,build-essential"
119118
secrets: inherit
120119

121120
update-cache:

.github/workflows/manual-build.yaml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,31 @@ jobs:
4141
4242
# Find all available recipes
4343
RECIPES=$(find binaries packages -name '*.yaml' -type f 2>/dev/null | sort)
44+
RECIPE_COUNT=$(echo "$RECIPES" | wc -l)
45+
46+
# Generate job summary with available recipes
47+
{
48+
echo "## Available Recipes ($RECIPE_COUNT)"
49+
echo ""
50+
echo "### Binaries"
51+
echo '```'
52+
echo "$RECIPES" | grep "^binaries/" || echo "(none)"
53+
echo '```'
54+
echo ""
55+
echo "### Packages"
56+
echo '```'
57+
echo "$RECIPES" | grep "^packages/" || echo "(none)"
58+
echo '```'
59+
} >> $GITHUB_STEP_SUMMARY
4460
4561
if [ -z "$RECIPE" ]; then
46-
echo "::notice::No recipe specified. Available recipes:"
47-
echo "$RECIPES" | while read r; do echo " - $r"; done
62+
echo "::notice::No recipe specified. Check job summary for available recipes."
4863
echo "valid=false" >> $GITHUB_OUTPUT
4964
exit 0
5065
fi
5166
5267
if [ ! -f "$RECIPE" ]; then
5368
echo "::error::Recipe not found: $RECIPE"
54-
echo ""
55-
echo "Available recipes:"
56-
echo "$RECIPES" | while read r; do echo " - $r"; done
5769
echo "valid=false" >> $GITHUB_OUTPUT
5870
exit 1
5971
fi
@@ -74,5 +86,4 @@ jobs:
7486
logs: true
7587
debug: true
7688
metadata-release: false
77-
build-deps: "nix,go,rust,build-essential"
7889
secrets: inherit

.github/workflows/matrix_builds.yaml

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,70 @@ jobs:
168168
-o /tmp/soar-riscv64 && sudo mv /tmp/soar-riscv64 /usr/local/bin/soar-riscv64 && sudo chmod +x /usr/local/bin/soar-riscv64
169169
fi
170170
171+
- name: Detect build dependencies
172+
id: detect-deps
173+
run: |
174+
# Fetch recipe content
175+
RECIPE_CONTENT=$(curl -fsSL "${{ inputs.sbuild-url }}" 2>/dev/null || echo "")
176+
177+
if [[ -z "$RECIPE_CONTENT" ]]; then
178+
echo "::warning::Could not fetch recipe, using provided build-deps"
179+
echo "deps=${{ inputs.build-deps }}" >> $GITHUB_OUTPUT
180+
exit 0
181+
fi
182+
183+
DETECTED_DEPS=""
184+
185+
# Check for nix (shell: nix-shell, nix-build, or nix commands in script)
186+
if echo "$RECIPE_CONTENT" | grep -qiE '(shell:\s*nix|nix-build|nix-shell|nix\s+build|nix\s+develop)'; then
187+
DETECTED_DEPS="${DETECTED_DEPS},nix"
188+
fi
189+
190+
# Check for docker
191+
if echo "$RECIPE_CONTENT" | grep -qiE '(docker\s+build|docker\s+run|dockerfile)'; then
192+
DETECTED_DEPS="${DETECTED_DEPS},docker"
193+
fi
194+
195+
# Check for go
196+
if echo "$RECIPE_CONTENT" | grep -qiE '(go\s+build|go\s+install|CGO_|go\s+mod)'; then
197+
DETECTED_DEPS="${DETECTED_DEPS},go"
198+
fi
199+
200+
# Check for rust/cargo
201+
if echo "$RECIPE_CONTENT" | grep -qiE '(cargo\s+build|cargo\s+install|rustc|Cargo\.toml)'; then
202+
DETECTED_DEPS="${DETECTED_DEPS},rust"
203+
fi
204+
205+
# Check for zig
206+
if echo "$RECIPE_CONTENT" | grep -qiE '(zig\s+build|zig\s+cc)'; then
207+
DETECTED_DEPS="${DETECTED_DEPS},zig"
208+
fi
209+
210+
# Check for python/pip
211+
if echo "$RECIPE_CONTENT" | grep -qiE '(pip\s+install|python\s+setup\.py|pyproject\.toml)'; then
212+
DETECTED_DEPS="${DETECTED_DEPS},python"
213+
fi
214+
215+
# Always include build-essential for C/C++ builds
216+
if echo "$RECIPE_CONTENT" | grep -qiE '(make\s|cmake|configure|gcc|g\+\+|clang)'; then
217+
DETECTED_DEPS="${DETECTED_DEPS},build-essential"
218+
fi
219+
220+
# Remove leading comma
221+
DETECTED_DEPS="${DETECTED_DEPS#,}"
222+
223+
# Merge with explicitly provided deps (explicit deps take priority)
224+
if [[ -n "${{ inputs.build-deps }}" ]]; then
225+
# If explicit deps provided, use those instead
226+
FINAL_DEPS="${{ inputs.build-deps }}"
227+
else
228+
FINAL_DEPS="$DETECTED_DEPS"
229+
fi
230+
231+
echo "Detected dependencies: $DETECTED_DEPS"
232+
echo "Final dependencies: $FINAL_DEPS"
233+
echo "deps=$FINAL_DEPS" >> $GITHUB_OUTPUT
234+
171235
- name: Create metadata release (soar-nest)
172236
if: inputs.metadata-release == true
173237
env:
@@ -191,12 +255,12 @@ jobs:
191255
continue-on-error: true
192256

193257
- name: Install build dependencies
194-
if: inputs.build-deps != ''
258+
if: steps.detect-deps.outputs.deps != ''
195259
env:
196260
GITHUB_TOKEN: "${{ github.token }}"
197261
run: |
198262
set -euo pipefail
199-
BUILD_DEPS="${{ inputs.build-deps }}"
263+
BUILD_DEPS="${{ steps.detect-deps.outputs.deps }}"
200264
201265
# Parse comma-separated deps
202266
IFS=',' read -ra DEPS <<< "$BUILD_DEPS"
@@ -331,6 +395,14 @@ jobs:
331395
run: |
332396
set +e # Don't exit on error, we want to capture the result
333397
398+
# Source nix if installed
399+
if [[ "${NIX_INSTALLED:-}" == "true" ]]; then
400+
if [[ -f /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh ]]; then
401+
source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
402+
fi
403+
export PATH="/nix/var/nix/profiles/default/bin:${HOME}/.nix-profile/bin:$PATH"
404+
fi
405+
334406
SBUILD="${SYSTMP}/sbuild"
335407
if [[ "${QEMU_MODE:-}" == "true" ]]; then
336408
SBUILD="${SYSTMP}/sbuild-riscv64"

0 commit comments

Comments
 (0)