Skip to content

fix(rust-debian): default both jobs to bash shell#72

Merged
Jaro-c merged 1 commit into
mainfrom
fix/rust-debian-default-bash-shell
Jun 29, 2026
Merged

fix(rust-debian): default both jobs to bash shell#72
Jaro-c merged 1 commit into
mainfrom
fix/rust-debian-default-bash-shell

Conversation

@Jaro-c

@Jaro-c Jaro-c commented Jun 29, 2026

Copy link
Copy Markdown
Member

Follow-up to v1.6.1. The dpkg-buildpackage job's "Confirm the .deb was produced" step uses bash arrays (debs=( ... )) and shopt -s nullglob, which fail under the container's default dash shell (shopt: not found, exit 127). Rather than POSIX-ify each step, this sets defaults.run.shell: bash on both jobs so every run step uses bash — fixing this and any future bashism in one place.

The dpkg-buildpackage job's 'Confirm the .deb was produced' step uses bash
arrays and 'shopt -s nullglob'; with the container's default dash shell it
failed with 'shopt: not found' (exit 127). Setting defaults.run.shell: bash
on both jobs makes every run step use bash, covering this and any future
bashism (the offline build step's POSIX fix from v1.6.1 still works).

Signed-off-by: Jaro-c <75870284+Jaro-c@users.noreply.github.com>
@Jaro-c
Jaro-c merged commit 1f162c7 into main Jun 29, 2026
1 of 2 checks passed
@Jaro-c
Jaro-c deleted the fix/rust-debian-default-bash-shell branch June 29, 2026 14:26
Jaro-c added a commit that referenced this pull request Jun 29, 2026
## What

The `rust-debian` reusable workflow's offline build step split the extra
cargo args with `set -- $OFFLINE_ARGS` — an unquoted expansion.
shellcheck flags that as **SC2086**, and since the Actionlint job runs
shellcheck over every `run:` block, the whole CI went red on each push
to main and on unrelated PRs.

## Fix

Both jobs already default to `shell: bash` (from #72), so I read the
args into a bash array and expand it quoted:

```sh
read -ra offline_args <<< "$OFFLINE_ARGS"
cargo build --release --locked --offline "${offline_args[@]}"
```

Same intentional word-splitting, no accidental globbing, and
shellcheck/Actionlint pass.

## Compatibility

No input contract change — `offline-cargo-args`/`OFFLINE_ARGS` are
untouched, so callers need no changes. The only consumer (Glyndor/podup)
pins an older commit and passes plain feature flags, which split
identically. The default image `debian:trixie` ships bash, so the
herestring is safe.

Signed-off-by: Jaro-c <75870284+Jaro-c@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant