Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
2255d0e
config: introduce top-level `permissions:` block for rootfs/initramfs
mobileoverlord May 26, 2026
c7e165e
stamps: split input hashes per build step to fix over-invalidation
mobileoverlord May 27, 2026
d7d7fc6
runtime build: fall back to default rootfs/initramfs for permissions …
mobileoverlord May 27, 2026
4209e7f
docs: plan for avocado deploy port forwarding on macOS
nicksinas May 31, 2026
2f2d776
deploy: make `avocado deploy` work on macOS via VM port forwarding
nicksinas Jun 1, 2026
534e574
repo TLS: support custom CA + insecure mode across all dnf phases
mobileoverlord May 31, 2026
6dc760f
feat(snapshots): reproducible channel snapshot pinning in the lock file
mobileoverlord May 31, 2026
4ba843a
fix(snapshots): auto-pin against the default feed; single-source the …
mobileoverlord May 31, 2026
a050fb6
feat(ext): nested extension layout for a shared includes installroot
mobileoverlord Jun 2, 2026
b4bdc47
feat(connect): add `connect ext` publish/status/list (super-admin)
mobileoverlord Jun 2, 2026
32d3349
build(ext): package avocado-cli as an extension via `ext package`
mobileoverlord Jun 2, 2026
ffe193e
fix(tui): route unset-env-var warning through the output module
mobileoverlord Jun 2, 2026
25b5eda
fix(deploy): gate avocado-vm QMP port forwarding behind cfg(unix)
mobileoverlord Jun 2, 2026
32d4e93
perf(vm): splice PSCI idle-states into virt-machine DTB
mobileoverlord Jun 3, 2026
f01f2e8
perf(vm): hibernation supervisor with wake-on-connect
mobileoverlord Jun 3, 2026
fd9f7e7
perf(vm): default hibernation idle timeout from 10s to 60s
mobileoverlord Jun 3, 2026
9dc3dc1
chore: satisfy fmt + clippy for the supervisor/DTB work
mobileoverlord Jun 3, 2026
6440864
chore: cfg(unix) gate the supervisor for Windows build
mobileoverlord Jun 3, 2026
3487b50
release: bump to 0.41.0
mobileoverlord Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
/target/
**/*.rs.bk

# Transient cross-compile config written by avocado-cli-compile.sh during `ext package`
/.cargo/

# Cargo lock file (uncomment if this is a library)
# Cargo.lock

Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "avocado-cli"
version = "0.40.2"
version = "0.41.0"
edition = "2021"
description = "Command line interface for Avocado."
authors = ["Avocado"]
Expand Down
14 changes: 14 additions & 0 deletions avocado-cli-clean.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash
set -e

echo "Cleaning avocado-cli build artifacts"

cd "$(dirname "$0")"

# Remove Cargo build artifacts
cargo clean

# Remove any generated config
rm -rf .cargo

echo "Clean complete"
45 changes: 45 additions & 0 deletions avocado-cli-compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash
set -e

# Find the Rust target from RUST_TARGET_PATH
for json_file in "$RUST_TARGET_PATH"/*.json; do
if [ -f "$json_file" ]; then
json_name=$(basename "$json_file" .json)
if [[ "$json_name" == "${OECORE_TARGET_ARCH}-"* ]]; then
RUST_TARGET="$json_name"
break
fi
fi
done

if [ -z "$RUST_TARGET" ]; then
echo "Error: Could not find Rust target for $OECORE_TARGET_ARCH"
exit 1
fi

echo "Building avocado-cli for target: $RUST_TARGET"

cd "$(dirname "$0")"

# Clear any rustflags that might cause conflicts with our .cargo/config.toml.
# The SDK env exports CARGO_TARGET_<triple>_RUSTFLAGS carrying its own --sysroot;
# left set, cargo merges it with the config below and rustc gets --sysroot twice
# ("Option 'sysroot' given more than once"). Unset every target's flavor, not just
# one hardcoded triple, so this works for x86_64 and aarch64 targets alike.
unset RUSTFLAGS
unset CARGO_BUILD_RUSTFLAGS
for var in $(env | grep -o 'CARGO_TARGET_[A-Z0-9_]*_RUSTFLAGS'); do
unset "$var"
done

# Remove any existing config that might conflict
rm -rf .cargo

# Create config.toml with cross-compilation settings
mkdir -p .cargo
cat > .cargo/config.toml << EOF
[target.$RUST_TARGET]
rustflags = ["--sysroot=$SDKTARGETSYSROOT/usr", "-C", "link-arg=--sysroot=$SDKTARGETSYSROOT"]
EOF

cargo build --release --target "$RUST_TARGET"
23 changes: 23 additions & 0 deletions avocado-cli-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash
set -e

# Find the Rust target from RUST_TARGET_PATH
for json_file in "$RUST_TARGET_PATH"/*.json; do
if [ -f "$json_file" ]; then
json_name=$(basename "$json_file" .json)
if [[ "$json_name" == "${OECORE_TARGET_ARCH}-"* ]]; then
RUST_TARGET="$json_name"
break
fi
fi
done

BINARY_PATH="$(dirname "$0")/target/$RUST_TARGET/release/avocado"

if [ ! -f "$BINARY_PATH" ]; then
echo "Error: Binary not found at $BINARY_PATH"
exit 1
fi

install -D -m 755 "$BINARY_PATH" "$AVOCADO_BUILD_EXT_SYSROOT/usr/bin/avocado"
echo "Installed: $(file "$AVOCADO_BUILD_EXT_SYSROOT/usr/bin/avocado")"
52 changes: 52 additions & 0 deletions avocado.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
supported_targets: '*'

extensions:
avocado-ext-cli:
# Version is injected at build time: `AVOCADO_EXT_VERSION=<x> avocado ext package …`
# (CI sets it from the release/tag; unset => empty + a warning).
version: '{{ env.AVOCADO_EXT_VERSION }}'
release: r0
summary: Avocado build system command line interface
description: Avocado build system command line interface for managing the system
license: Apache-2.0
url: https://github.com/avocadolinux/avocado-cli
vendor: Avocado Linux <info@avocadolinux.org>
# Stage the Rust source (the repo root IS the project) plus the packaging
# artifacts, so `ext package` can compile it. configs/ is required:
# src references include_str!("../../configs/default.yaml").
package_files:
- avocado.yaml
- avocado-cli-*.sh
- Cargo.toml
- Cargo.lock
- build.rs
- src
- configs

packages:
bash: '*'
avocado-cli-bin:
compile: avocado-cli-compile
install: avocado-cli-install.sh

sdk:
packages:
nativesdk-binutils: '*'
nativesdk-cargo: '*'
nativesdk-gcc: '*'
nativesdk-glibc-dev: '*'
nativesdk-libgcc-dev: '*'
nativesdk-rust: '*'
nativesdk-git: '*'
packagegroup-rust-cross-canadian-avocado-{{ avocado.target }}: '*'

sdk:
image: docker.io/avocadolinux/sdk:{{ env.AVOCADO_DISTRO_RELEASE }}-{{ env.AVOCADO_DISTRO_CHANNEL }}

compile:
avocado-cli-compile:
compile: avocado-cli-compile.sh
clean: avocado-cli-clean.sh
packages:
libstd-rs: '*'
libstd-rs-dev: '*'
Loading
Loading