# Common podman run args for perf container_perf_run_args := "--rm -ti \--security-opt=label=disable \-v chunkah-perf-cargo:/root/.cargo \-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/bashset -euo pipefailpodman pull --policy=missing {{ image }}cache_id=$(realpath "$PWD" | sha256sum | cut -f1 -d' ')podman run --privileged -v "${PWD}/../..:/build:z" \--mount=type=image,src={{ image }},target=/chunkah \-v chunkah-perf-target-${cache_id}:/build/target {{ _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 hyperfinebenchmark image="quay.io/fedora/fedora-coreos:stable": _buildperfimg#!/bin/bashset -euo pipefailpodman pull --policy=missing {{ image }}cache_id=$(realpath "$PWD" | sha256sum | cut -f1 -d' ')podman run -v "${PWD}/../..:/build:z" \--mount=type=image,src={{ image }},target=/chunkah \-v chunkah-perf-target-${cache_id}:/build/target {{ _perf_run_args }} \sh -c 'cargo build --release && hyperfine --warmup 3 "target/release/chunkah build --prune /sysroot/ > target/out.ociarchive"'