This commit is contained in:
parent
f69617e40a
commit
27fa6d15eb
6 changed files with 90 additions and 132 deletions
|
|
@ -1,87 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
TRIPLE="x86_64-unknown-linux-musl"
|
|
||||||
TRIPLE_GNU="x86_64-unknown-linux-gnu"
|
|
||||||
|
|
||||||
JUST_VERSION="1.51.0"
|
|
||||||
JUST_SHA256SUM="c8f085ca3e885723c341d06243fc291b5abfdc8bbe3b2c076b117de490387b59"
|
|
||||||
|
|
||||||
CARGO_LLVM_COV_VERSION="0.6.21"
|
|
||||||
CARGO_LLVM_COV_SHA256SUM="57f491aedf7cdb261538ceb49cbb1ee9d27df7ca205a5e1a009caaf5cb911afb"
|
|
||||||
|
|
||||||
CARGO_AUDIT_VERSION="0.22.1"
|
|
||||||
CARGO_AUDIT_TAG="cargo-audit%2Fv$CARGO_AUDIT_VERSION"
|
|
||||||
CARGO_AUDIT_SHA256SUM="1890badd5f15831a9af4b074399fcd21e6f7c0fe42c84e9254cdffc9f813765c"
|
|
||||||
|
|
||||||
TAPLO_VERSION="0.10.0"
|
|
||||||
TAPLO_SHA256SUM="8fe196b894ccf9072f98d4e1013a180306e17d244830b03986ee5e8eabeb6156"
|
|
||||||
|
|
||||||
TYPOS_VERSION="1.47.2"
|
|
||||||
TYPOS_SHA256SUM="7aef58932fc123b4cf4b40d86468e89a3297d80169051d7cfd13a235e05fc426"
|
|
||||||
|
|
||||||
CARGO_DENY_VERSION="0.19.8"
|
|
||||||
CARGO_DENY_SHA256SUM="70e769ae3872e34d45132b17040859175e11401dc12dddb0303e0b8c7d088f3f"
|
|
||||||
|
|
||||||
CARGO_MSRV_VERSION="0.19.3"
|
|
||||||
CARGO_MSRV_SHA256SUM="6f9a0011ca8ad959d304185b9090390fd1ad87e2d764007fbb0abe043afa9ff5"
|
|
||||||
|
|
||||||
fetch() {
|
|
||||||
repo="$1"
|
|
||||||
tag="$2"
|
|
||||||
filename="$3"
|
|
||||||
digest="$4"
|
|
||||||
binary="$5"
|
|
||||||
renamed_binary="${6:-$binary}"
|
|
||||||
|
|
||||||
[ -d /tmp/tools ] || mkdir -p /tmp/tools
|
|
||||||
|
|
||||||
curl -fsSLO --output-dir /tmp \
|
|
||||||
-w '%{stderr}HTTP %{response_code} %{url}\n' \
|
|
||||||
"https://github.com/$repo/releases/download/$tag/$filename"
|
|
||||||
|
|
||||||
printf '%s %s\n' "$digest" "/tmp/$filename" > /tmp/digest
|
|
||||||
sha256sum --check /tmp/digest
|
|
||||||
|
|
||||||
if printf '%s' "$filename" | grep -qE '\.tar\.|\.tgz$'; then
|
|
||||||
tar xf "/tmp/$filename" -C /tmp/tools
|
|
||||||
elif printf '%s' "$filename" | grep -q '\.gz$'; then
|
|
||||||
gunzip -c "/tmp/$filename" > "/tmp/tools/$binary"
|
|
||||||
else
|
|
||||||
echo "Fatal: can't determine how to unpack $filename"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
find /tmp/tools -type f -name "$binary" \
|
|
||||||
-exec mv -v '{}' "/usr/local/bin/$renamed_binary" ';'
|
|
||||||
chmod +x "/usr/local/bin/$renamed_binary"
|
|
||||||
}
|
|
||||||
|
|
||||||
fetch casey/just "$JUST_VERSION" \
|
|
||||||
"just-$JUST_VERSION-$TRIPLE.tar.gz" \
|
|
||||||
"$JUST_SHA256SUM" just
|
|
||||||
|
|
||||||
fetch taiki-e/cargo-llvm-cov "v$CARGO_LLVM_COV_VERSION" \
|
|
||||||
"cargo-llvm-cov-$TRIPLE_GNU.tar.gz" \
|
|
||||||
"$CARGO_LLVM_COV_SHA256SUM" cargo-llvm-cov
|
|
||||||
|
|
||||||
fetch rustsec/rustsec "$CARGO_AUDIT_TAG" \
|
|
||||||
"cargo-audit-$TRIPLE_GNU-v$CARGO_AUDIT_VERSION.tgz" \
|
|
||||||
"$CARGO_AUDIT_SHA256SUM" cargo-audit
|
|
||||||
|
|
||||||
fetch tamasfe/taplo "$TAPLO_VERSION" \
|
|
||||||
"taplo-linux-x86_64.gz" \
|
|
||||||
"$TAPLO_SHA256SUM" taplo-linux-x86_64 taplo
|
|
||||||
|
|
||||||
fetch crate-ci/typos "v$TYPOS_VERSION" \
|
|
||||||
"typos-v$TYPOS_VERSION-$TRIPLE.tar.gz" \
|
|
||||||
"$TYPOS_SHA256SUM" typos
|
|
||||||
|
|
||||||
fetch EmbarkStudios/cargo-deny "$CARGO_DENY_VERSION" \
|
|
||||||
"cargo-deny-$CARGO_DENY_VERSION-$TRIPLE.tar.gz" \
|
|
||||||
"$CARGO_DENY_SHA256SUM" cargo-deny
|
|
||||||
|
|
||||||
fetch foresterre/cargo-msrv "v$CARGO_MSRV_VERSION" \
|
|
||||||
"cargo-msrv-$TRIPLE_GNU-v$CARGO_MSRV_VERSION.tgz" \
|
|
||||||
"$CARGO_MSRV_SHA256SUM" cargo-msrv
|
|
||||||
|
|
@ -17,9 +17,14 @@ jobs:
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
container:
|
container:
|
||||||
image: rust:slim
|
image: rust:slim
|
||||||
|
env:
|
||||||
|
RUSTUP_HOME: /rust/rustup
|
||||||
|
CARGO_HOME: /rust/cargo
|
||||||
steps:
|
steps:
|
||||||
- name: Install action dependencies
|
- name: Install action dependencies
|
||||||
run: apt-get install --no-install-recommends --update -y nodejs curl git
|
run: >
|
||||||
|
apt-get install --no-install-recommends --update -y
|
||||||
|
nodejs git curl xz-utils
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
|
|
@ -28,35 +33,41 @@ jobs:
|
||||||
|
|
||||||
- name: Set up Rust toolchain
|
- name: Set up Rust toolchain
|
||||||
run: |
|
run: |
|
||||||
|
mkdir -p "$RUSTUP_HOME"
|
||||||
|
mkdir -p "$CARGO_HOME"
|
||||||
|
|
||||||
|
rust_version=$(
|
||||||
|
grep '^rust-version = "' Cargo.toml \
|
||||||
|
| cut -d '"' -f 2
|
||||||
|
)
|
||||||
|
|
||||||
|
rustup default "$rust_version"
|
||||||
|
rustup toolchain install nightly
|
||||||
rustup component add llvm-tools
|
rustup component add llvm-tools
|
||||||
rustup component add --toolchain nightly rustfmt clippy
|
rustup component add --toolchain nightly rustfmt clippy
|
||||||
rustup target add x86_64-unknown-linux-gnu
|
rustup target add x86_64-unknown-linux-musl x86_64-unknown-linux-gnu
|
||||||
rustup target add x86_64-unknown-linux-musl
|
|
||||||
|
|
||||||
- name: Set up additional tooling
|
|
||||||
run: .forgejo/workflows/setup-tools.sh
|
|
||||||
|
|
||||||
- name: Set up CI user
|
- name: Set up CI user
|
||||||
run: |
|
run: |
|
||||||
useradd -m ci && chown -R ci:ci .
|
useradd -m ci
|
||||||
git config --global --add safe.directory "$PWD"
|
mkdir /nix
|
||||||
|
chown -R ci:ci "$RUSTUP_HOME" "$CARGO_HOME" "$PWD" /nix
|
||||||
|
printf '[safe]\ndirectory = %s\n' "$PWD" > /etc/gitconfig
|
||||||
|
|
||||||
- name: Text matches
|
- name: Set up Nix
|
||||||
run: just ci todos-assess version-assess spell
|
run: |
|
||||||
- name: Schema lint
|
mkdir /etc/nix
|
||||||
run: just ci schema-lint
|
echo experimental-features = nix-command flakes \
|
||||||
- name: Deny
|
>> /etc/nix/nix.conf
|
||||||
run: just ci deny
|
su ci -c "
|
||||||
- name: Format
|
sh -c 'curl -L https://nixos.org/nix/install |
|
||||||
run: just ci format-assess
|
bash -s -- --no-daemon' \
|
||||||
- name: Lint
|
"
|
||||||
run: just ci lint-assess
|
|
||||||
- name: MSRV
|
|
||||||
run: just ci msrv-assess
|
|
||||||
- name: Cargo check
|
|
||||||
run: just ci check
|
|
||||||
- name: Test
|
|
||||||
run: just ci test
|
|
||||||
- name: Coverage
|
|
||||||
run: just ci cover-assess
|
|
||||||
|
|
||||||
|
- name: Assess
|
||||||
|
run: |
|
||||||
|
su ci -lc "
|
||||||
|
export RUSTUP_HOME=$RUSTUP_HOME CARGO_HOME=$CARGO_HOME
|
||||||
|
nix develop path:$FORGEJO_WORKSPACE -c \
|
||||||
|
just -f $FORGEJO_WORKSPACE/.justfile verify
|
||||||
|
"
|
||||||
|
|
|
||||||
27
.justfile
27
.justfile
|
|
@ -81,7 +81,7 @@ msrv-find:
|
||||||
|
|
||||||
make_msrv(command, target) := f"printf '{{ target }}: '; " + \
|
make_msrv(command, target) := f"printf '{{ target }}: '; " + \
|
||||||
f"cargo msrv {{ command }} --target {{ target }} --output-format minimal " \
|
f"cargo msrv {{ command }} --target {{ target }} --output-format minimal " \
|
||||||
+ f"-- {{ maybe_xwin(target) }} build --ignore-rust-version"
|
+ f"-- {{ xwin_if(target) }} build --ignore-rust-version"
|
||||||
|
|
||||||
[private]
|
[private]
|
||||||
test-cover-quick:
|
test-cover-quick:
|
||||||
|
|
@ -466,15 +466,21 @@ alias bm := build-musl
|
||||||
# Release build
|
# Release build
|
||||||
[group: 'build']
|
[group: 'build']
|
||||||
release-build target=default_target:
|
release-build target=default_target:
|
||||||
{{ maybe_xwin(target) }} build \
|
{{ xwin_if(target) }} build \
|
||||||
--timings --target {{ target }} --locked --release
|
--timings --target {{ target }} --locked --release
|
||||||
du -h target/{{ target }}/release/{{ with_suffix("en", target) }}
|
du -h target/{{ target }}/release/{{ with_suffix("en", target) }}
|
||||||
|
|
||||||
maybe_xwin(target) := if target == msvc_target { "cargo-xwin" } else { "cargo" }
|
xwin_if(target) := if target == msvc_target { "cargo-xwin" } else { "cargo" }
|
||||||
with_suffix(file, target) := if target == msvc_target { f"{{ file }}.exe" } else { file }
|
with_suffix(file, target) := if target == msvc_target { f"{{ file }}.exe" } else { file }
|
||||||
|
|
||||||
alias rb := release-build
|
alias rb := release-build
|
||||||
|
|
||||||
|
# Release build of all targets
|
||||||
|
[group: 'build']
|
||||||
|
release-build-all: release-build-musl release-build-gnu release-build-msvc
|
||||||
|
|
||||||
|
alias rba := release-build-all
|
||||||
|
|
||||||
# glibc release build
|
# glibc release build
|
||||||
[group: 'build']
|
[group: 'build']
|
||||||
release-build-gnu:
|
release-build-gnu:
|
||||||
|
|
@ -521,9 +527,18 @@ choose:
|
||||||
|
|
||||||
alias ch := choose
|
alias ch := choose
|
||||||
|
|
||||||
[script, private, env("CARGO_HOME", "$HOME/.cargo")]
|
[script, private]
|
||||||
ci recipe:
|
ci recipes:
|
||||||
su ci -c "just {{ recipe }}"
|
ENV_PATH="$PATH" su ci -c "{{ just_cmd }} -f '{{ justfile() }}' {{ recipes }}"
|
||||||
|
|
||||||
|
[script, private]
|
||||||
|
ci-nix recipes:
|
||||||
|
ENV_PATH="$PATH" su ci -c "nix develop --command \
|
||||||
|
{{ just_cmd }} -f '{{ justfile() }}' {{ recipes }}"
|
||||||
|
|
||||||
|
[private]
|
||||||
|
smoke:
|
||||||
|
echo OK
|
||||||
|
|
||||||
## VARIABLES
|
## VARIABLES
|
||||||
export CARGO_TERM_COLOR := 'always'
|
export CARGO_TERM_COLOR := 'always'
|
||||||
|
|
|
||||||
4
Cargo.lock
generated
4
Cargo.lock
generated
|
|
@ -530,9 +530,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.32"
|
version = "0.4.33"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
|
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matchit"
|
name = "matchit"
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ homepage = "https://en.jutty.dev"
|
||||||
documentation = "https://en.jutty.dev/node/Documentation"
|
documentation = "https://en.jutty.dev/node/Documentation"
|
||||||
|
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version= "1.91.1"
|
rust-version = "1.91.1"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
serial-tests = []
|
serial-tests = []
|
||||||
|
|
|
||||||
37
flake.nix
37
flake.nix
|
|
@ -41,20 +41,39 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
devShells = forAllSystems (system:
|
devShells = forAllSystems (system:
|
||||||
let pkgs = nixpkgsFor.${system}; in {
|
let
|
||||||
default = pkgs.mkShell {
|
pkgs = nixpkgsFor.${system};
|
||||||
buildInputs = with pkgs; [
|
sets = with pkgs; rec {
|
||||||
rustup
|
base = [
|
||||||
just
|
|
||||||
watchexec
|
|
||||||
cargo-deny
|
cargo-deny
|
||||||
cargo-llvm-cov
|
cargo-llvm-cov
|
||||||
cargo-mutants
|
cargo-msrv
|
||||||
go-tools
|
just
|
||||||
typos
|
rustup
|
||||||
taplo
|
taplo
|
||||||
|
typos
|
||||||
|
];
|
||||||
|
cross = base ++ [
|
||||||
|
cargo-xwin
|
||||||
|
wine
|
||||||
|
];
|
||||||
|
dev = [
|
||||||
|
cargo-mutants
|
||||||
|
watchexec
|
||||||
|
git
|
||||||
|
];
|
||||||
|
edit = dev ++ [
|
||||||
|
neovim
|
||||||
|
tmux
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
in with sets; {
|
||||||
|
default = pkgs.mkShell { buildInputs = base; };
|
||||||
|
cross = pkgs.mkShell { buildInputs = cross; };
|
||||||
|
dev = pkgs.mkShell { buildInputs = base ++ dev; };
|
||||||
|
cross-dev = pkgs.mkShell { buildInputs = cross ++ dev; };
|
||||||
|
edit = pkgs.mkShell { buildInputs = edit; };
|
||||||
|
cross-edit = pkgs.mkShell { buildInputs = cross ++ edit; };
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue