neiam
/markprompter
public · Issues · Pulls · Labels · Forks · Compare · Actions failure · Badges · Packages
⭐
Log in to mark this repository.
ci: don't assume sudo exists when installing system dependencies
78cb0ad · Gabriel Morell · 2026-09-16 16:08
✗
Rust CI and Docker Build / Create Release (push)
✗
Rust CI and Docker Build / Release (7z a, .exe, markprompter-x86_64-windows.zip, windows-latest, windows-latest, 1.86) (push)
✗
Rust CI and Docker Build / Release (tar -czf, , markprompter-aarch64-linux-gnu.tar.gz, self-hostedrunner-aarch64, self-hostedrunner-aarch64, 1.86) (push)
✗
Rust CI and Docker Build / Release (tar -czf, , markprompter-aarch64-macos.tar.gz, macos-latest, macos-latest, 1.86) (push)
✗
Rust CI and Docker Build / Release (tar -czf, , markprompter-x86_64-linux-gnu.tar.gz, ubuntu-latest, arc-runner-set, 1.86) (push)
✗
Rust CI and Docker Build / build (aarch64, self-hostedrunner-aarch64) (push)
⏳
Rust CI and Docker Build
Message
{commit_body(@commit)}
Files changed
modified
.github/workflows/rust-ci.yml
+40
−12
@@ -32,17 +32,31 @@ jobs:
| 32 | 32 | - name: Install system dependencies (Linux) |
| 33 | 33 | if: runner.os == 'Linux' |
| 34 | 34 | run: | |
| 35 | + # A hosted runner is an unprivileged user with sudo. A job | |
| 36 | + # container is already root and usually ships no sudo at all, | |
| 37 | + # so hardcoding it fails with `sudo: command not found` | |
| 38 | + # before the first package is ever fetched. Ask what we are | |
| 39 | + # rather than assuming either one. | |
| 40 | + if [ "$(id -u)" -eq 0 ]; then | |
| 41 | + SUDO= | |
| 42 | + elif command -v sudo &> /dev/null; then | |
| 43 | + SUDO=sudo | |
| 44 | + else | |
| 45 | + echo "Not root and no sudo available; cannot install system dependencies." | |
| 46 | + exit 1 | |
| 47 | + fi | |
| 48 | + | |
| 35 | 49 | if command -v apt-get &> /dev/null; then |
| 36 | − sudo apt-get update | |
| 37 | − sudo apt-get install -y build-essential pkg-config libssl-dev libgtk-3-dev libgdk-pixbuf2.0-dev libpango1.0-dev libglib2.0-dev | |
| 50 | + $SUDO apt-get update | |
| 51 | + $SUDO apt-get install -y build-essential pkg-config libssl-dev libgtk-3-dev libgdk-pixbuf2.0-dev libpango1.0-dev libglib2.0-dev | |
| 38 | 52 | elif command -v yum &> /dev/null; then |
| 39 | − sudo yum install -y pkgconfig openssl-devel gtk3-devel gdk-pixbuf-devel pango-devel | |
| 53 | + $SUDO yum install -y pkgconfig openssl-devel gtk3-devel gdk-pixbuf-devel pango-devel | |
| 40 | 54 | elif command -v dnf &> /dev/null; then |
| 41 | − sudo dnf install -y pkgconfig openssl-devel | |
| 55 | + $SUDO dnf install -y pkgconfig openssl-devel | |
| 42 | 56 | elif command -v pacman &> /dev/null; then |
| 43 | − sudo pacman -Sy --noconfirm pkgconf openssl | |
| 57 | + $SUDO pacman -Sy --noconfirm pkgconf openssl | |
| 44 | 58 | elif command -v apk &> /dev/null; then |
| 45 | − sudo apk add --no-cache pkgconfig openssl-dev | |
| 59 | + $SUDO apk add --no-cache pkgconfig openssl-dev | |
| 46 | 60 | else |
| 47 | 61 | echo "Package manager not found. Please install pkg-config and openssl-dev manually." |
| 48 | 62 | exit 1 |
@@ -270,17 +284,31 @@ jobs:
| 270 | 284 | - name: Install system dependencies (self-hosted Linux) |
| 271 | 285 | if: runner.os == 'Linux' |
| 272 | 286 | run: | |
| 287 | + # A hosted runner is an unprivileged user with sudo. A job | |
| 288 | + # container is already root and usually ships no sudo at all, | |
| 289 | + # so hardcoding it fails with `sudo: command not found` | |
| 290 | + # before the first package is ever fetched. Ask what we are | |
| 291 | + # rather than assuming either one. | |
| 292 | + if [ "$(id -u)" -eq 0 ]; then | |
| 293 | + SUDO= | |
| 294 | + elif command -v sudo &> /dev/null; then | |
| 295 | + SUDO=sudo | |
| 296 | + else | |
| 297 | + echo "Not root and no sudo available; cannot install system dependencies." | |
| 298 | + exit 1 | |
| 299 | + fi | |
| 300 | + | |
| 273 | 301 | if command -v apt-get &> /dev/null; then |
| 274 | − sudo apt-get update | |
| 275 | − sudo apt-get install -y build-essential pkg-config libssl-dev libgtk-3-dev libgdk-pixbuf2.0-dev libpango1.0-dev libglib2.0-dev | |
| 302 | + $SUDO apt-get update | |
| 303 | + $SUDO apt-get install -y build-essential pkg-config libssl-dev libgtk-3-dev libgdk-pixbuf2.0-dev libpango1.0-dev libglib2.0-dev | |
| 276 | 304 | elif command -v yum &> /dev/null; then |
| 277 | − sudo yum install -y pkgconfig openssl-devel gtk3-devel gdk-pixbuf-devel pango-devel | |
| 305 | + $SUDO yum install -y pkgconfig openssl-devel gtk3-devel gdk-pixbuf-devel pango-devel | |
| 278 | 306 | elif command -v dnf &> /dev/null; then |
| 279 | − sudo dnf install -y pkgconfig openssl-devel | |
| 307 | + $SUDO dnf install -y pkgconfig openssl-devel | |
| 280 | 308 | elif command -v pacman &> /dev/null; then |
| 281 | − sudo pacman -Sy --noconfirm pkgconf openssl | |
| 309 | + $SUDO pacman -Sy --noconfirm pkgconf openssl | |
| 282 | 310 | elif command -v apk &> /dev/null; then |
| 283 | − sudo apk add --no-cache pkgconfig openssl-dev | |
| 311 | + $SUDO apk add --no-cache pkgconfig openssl-dev | |
| 284 | 312 | else |
| 285 | 313 | echo "Package manager not found. Please install pkg-config and openssl-dev manually." |
| 286 | 314 | exit 1 |
Parents: 1c38f56