# Maintainee: Coelacanthus <coelacanthus@archlinuxcn.org>
# Contributor: Dominic Meiser [git at msrd0 dot de]

pkgname="probe-rs-git"
pkgver=0.31.0.r123.g9126d4f
pkgrel=1
pkgdesc='A collection of on chip debugging tools to communicate with microchips.'
url='https://probe.rs'
arch=('aarch64' 'i686' 'x86_64')
license=('Apache-2.0' 'MIT')
depends=(
    'gcc-libs'
    'systemd-libs'
)
makedepends=(
    'cargo'
    'cargo-auditable'
    'cmake'
    'git'
)
provides=(
    'cargo-embed'
    'cargo-flash'
    'probe-rs'
    'rtthost'
)
conflicts=(
    'cargo-embed'
    'cargo-flash'
    'probe-rs'
)
source=(
    "$pkgname::git+https://github.com/probe-rs/probe-rs.git"
    "$pkgname-$pkgver-69-probe-rs.rules::https://github.com/CoelacanthusHex/webpage/raw/refs/heads/fix-udev/public/files/69-probe-rs.rules"
)
b2sums=('SKIP'
        'be4982332df421a75ec6888bebf6bec90df6e197044046e4ce7575cdc2ba853ab8debe0630d56aea8c358f09e9cd26e2d52c84cdbe130ec4d262d8b54e84b67c')

pkgver() {
    cd "$pkgname"
    (
        set -o pipefail
        git describe --long --tag --abbrev=7 2>/dev/null | sed 's/^v//g;s/\([^-]*-g\)/r\1/;s/-/./g' ||
            printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
    )
}

prepare() {
    cd "$pkgname"

    # https://github.com/probe-rs/probe-rs/pull/3583
    git cherry-pick -n 75545a41e9a8859bfd72e8d6493e096f6d8448fd^..6688ca4b6c114e1559bc3e743868a5402c7812c2

    export RUSTUP_TOOLCHAIN=stable
    cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

build() {
    cd "$pkgname"
    
    export RUSTUP_TOOLCHAIN=stable
    export CARGO_TARGET_DIR=target
    CFLAGS+=" -ffat-lto-objects"

    cargo auditable build \
        --frozen \
        --release \
        --no-default-features \
        --features remote

    SHELL=zsh  target/release/probe-rs complete --shell zsh install --manual > _probe-rs
    SHELL=bash target/release/probe-rs complete --shell bash install --manual > probe-rs.bash
    SHELL=fish target/release/probe-rs complete --shell fish install --manual > probe-rs.fish
}

# FIXME: disable because of util::cargo::test::get_binary_artifact_with_cargo_config{,_toml} need thumbv7m-none-eabi std.
_check() {
    export RUSTUP_TOOLCHAIN=stable
    cargo test \
        --workspace \
        --frozen \
        --no-default-features \
        --features remote
}

_pick() {
    install -Dm0755 target/release/"$1" -t "$pkgdir/usr/bin/"
    rm target/release/"$1"
}

package() {
    cd "$pkgname"
    # Remove all other files.
    find target/release \
        -mindepth 1 \
        -type d \
        -exec rm -rf {} +
    # Remove all non-executable files.
    find target/release \
        -maxdepth 1 \
        -type f \
        -not -perm /u+x,g+x,o+x \
        -delete
    # Remove all executable files not for end users.
    rm target/release/{target-gen,xtask,libsmoke_tester_macros.so}
    _pick probe-rs
    _pick cargo-flash
    _pick cargo-embed
    # Ensure no files to install.
    rmdir target/release

    install -Dm644 _probe-rs -t "$pkgdir/usr/share/zsh/site-functions"
    install -Dm644 probe-rs.bash -t "$pkgdir/usr/share/bash-completion/completions/"
    install -Dm644 probe-rs.fish -t "$pkgdir/usr/share/fish/vendor_completions.d"
    install -Dm644 "$srcdir/$pkgname-$pkgver-69-probe-rs.rules" "$pkgdir/usr/lib/udev/rules.d/69-probe-rs.rules"
}

# vim: set sts=4 ts=4 sw=4 et:
