# Common podman run args for perf container
_perf_run_args := "--rm \
    --security-opt=label=disable \
    -v chunkah-perf-cargo:/root/.cargo \
    -v chunkah-perf-target:/tmp/target \
    -e CARGO_TARGET_DIR=/tmp/target \
    -e CARGO_PROFILE_RELEASE_DEBUG=true \
    chunkah-perf"

# Build performance analysis container image
_buildperfimg:
    ${BUILDAH:-buildah} build --layers=true -t chunkah-perf -f Containerfile ../..

# Profile chunkah with flamegraph (outputs flamegraph.svg)
profile image="quay.io/fedora/fedora-minimal:latest": _buildperfimg
    #!/bin/bash
    set -euo pipefail
    podman pull --policy=missing {{ image }}
    podman run --privileged -v "${PWD}/../..:/build:z" \
        --mount=type=image,src={{ image }},target=/chunkah \
        {{ _perf_run_args }} \
        sh -c 'cargo flamegraph -o /build/flamegraph.svg -- build --prune /sysroot/ > /dev/null'

    echo "Flamegraph written to flamegraph.svg"

# Benchmark chunkah with hyperfine
benchmark image="quay.io/fedora/fedora-minimal:latest": _buildperfimg
    #!/bin/bash
    set -euo pipefail
    podman pull --policy=missing {{ image }}
    podman run -v "${PWD}/../..:/build:z" \
        --mount=type=image,src={{ image }},target=/chunkah \
        {{ _perf_run_args }} \
        sh -c 'cargo build --release && hyperfine --warmup 1 "/tmp/target/release/chunkah build --prune /sysroot/ > /dev/null"'
