oinkie 0.8.1

Detects software theft by comparing birthmarks extracted from binaries
Documentation
git_revision := `git rev-parse --short HEAD`
app_version := `awk -F'"' '/^\[package\]/{p=1} p && /^version *=/{print $2; exit}' Cargo.toml`
build_date := `date -u +%Y-%m-%dT%H:%M:%SZ`

image_quay   := 'quay.io/tama5'
image_github := 'ghcr.io/tamada'
container_image := image_quay

# Compile the Ghidra lifting script without running Ghidra (~2s)
compile-check:
    ./assets/lifters/ghidra/compile-check.sh

# Test the Ghidra lifting script's JSON escaping and path reading without running Ghidra
test-ghidra-script:
    ./assets/lifters/ghidra/compile-check.sh --run HighPCodeLifterTest \
        assets/lifters/ghidra/scripts/HighPCodeLifter.java \
        testdata/scripts/HighPCodeLifterTest.java

container-local:
    docker build \
        --target light-image \
        --build-arg GIT_REVISION={{git_revision}} \
        --build-arg BUILD_DATE={{build_date}} \
        --build-arg VERSION={{app_version}} \
        -t {{container_image}}/oinkie:latest \
        -t {{container_image}}/oinkie:light \
        -t {{container_image}}/oinkie:{{ app_version }} \
        -t {{container_image}}/oinkie:{{ app_version }}-light \
        -f Containerfile \
        .
    docker build \
        --target ghidra-image \
        --build-arg GIT_REVISION={{git_revision}} \
        --build-arg BUILD_DATE={{build_date}} \
        --build-arg VERSION={{ app_version }} \
        -t {{container_image}}/oinkie:ghidra \
        -t {{container_image}}/oinkie:{{ app_version }}-ghidra \
        -f Containerfile \
        .
    docker build \
        --target mcp-image \
        --build-arg GIT_REVISION={{git_revision}} \
        --build-arg BUILD_DATE={{build_date}} \
        --build-arg VERSION={{ app_version }} \
        -t {{container_image}}/oinkie:mcp \
        -t {{container_image}}/oinkie:{{ app_version }}-mcp \
        -f Containerfile \
        .

container:
    docker buildx build --push \
        --target light-image \
        --platform linux/amd64,linux/arm64 \
        --build-arg GIT_REVISION={{git_revision}} \
        --build-arg BUILD_DATE={{build_date}} \
        --build-arg VERSION={{app_version}} \
        -t {{container_image}}/oinkie:latest \
        -t {{container_image}}/oinkie:light \
        -t {{container_image}}/oinkie:{{ app_version }} \
        -t {{container_image}}/oinkie:{{ app_version }}-light \
        -f Containerfile \
        .

    docker buildx build --push \
        --target ghidra-image \
        --platform linux/amd64,linux/arm64 \
        --build-arg GIT_REVISION={{git_revision}} \
        --build-arg BUILD_DATE={{build_date}} \
        --build-arg VERSION={{ app_version }} \
        -t {{container_image}}/oinkie:ghidra \
        -t {{container_image}}/oinkie:{{ app_version }}-ghidra \
        -f Containerfile \
        .

    # Only the default command differs from light-image, so the layers are
    # already built and pushed by the time this runs.
    docker buildx build --push \
        --target mcp-image \
        --platform linux/amd64,linux/arm64 \
        --build-arg GIT_REVISION={{git_revision}} \
        --build-arg BUILD_DATE={{build_date}} \
        --build-arg VERSION={{ app_version }} \
        -t {{container_image}}/oinkie:mcp \
        -t {{container_image}}/oinkie:{{ app_version }}-mcp \
        -f Containerfile \
        .