mirror of
https://codeberg.org/unspeaker/vestal.git
synced 2025-12-06 06:26:43 +01:00
This commit is contained in:
parent
07f6f82268
commit
b165573e55
14 changed files with 159 additions and 56 deletions
1
.dockerignore
Normal file
1
.dockerignore
Normal file
|
|
@ -0,0 +1 @@
|
|||
*
|
||||
14
.gitignore
vendored
14
.gitignore
vendored
|
|
@ -1,4 +1,16 @@
|
|||
target
|
||||
target/*
|
||||
!target/.gitkeep
|
||||
*.dll
|
||||
*.exe
|
||||
bin/
|
||||
perf.data*
|
||||
flamegraph*.svg
|
||||
vgcore*
|
||||
example.mid
|
||||
cov
|
||||
*/cov
|
||||
*.profraw
|
||||
build/*
|
||||
!build/README.md
|
||||
!build/*.sh
|
||||
!build/Dockerfile.*
|
||||
|
|
|
|||
97
Cargo.lock
generated
97
Cargo.lock
generated
|
|
@ -228,9 +228,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.18"
|
||||
version = "1.2.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "525046617d8376e3db1deffb079e91cef90a89fc3ca5c185bbf8c9ecdd15cd5c"
|
||||
checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a"
|
||||
dependencies = [
|
||||
"shlex",
|
||||
]
|
||||
|
|
@ -257,18 +257,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.35"
|
||||
version = "4.5.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944"
|
||||
checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.35"
|
||||
version = "4.5.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9"
|
||||
checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
|
|
@ -396,7 +396,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -407,7 +407,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
|||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -511,9 +511,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.15"
|
||||
version = "0.2.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
|
||||
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
|
|
@ -623,7 +623,7 @@ dependencies = [
|
|||
"indoc",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -659,7 +659,7 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
|
|||
[[package]]
|
||||
name = "jack"
|
||||
version = "0.13.0"
|
||||
source = "git+https://codeberg.org/unspeaker/rust-jack?rev=a13c1c4#a13c1c4d20343e574787a703eaeea7aeda63b084"
|
||||
source = "git+https://codeberg.org/unspeaker/tek#35618676404302e5976e7e860be4491c07ebb001"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"jack-sys",
|
||||
|
|
@ -671,7 +671,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "jack-sys"
|
||||
version = "0.5.1"
|
||||
source = "git+https://codeberg.org/unspeaker/rust-jack?rev=a13c1c4#a13c1c4d20343e574787a703eaeea7aeda63b084"
|
||||
source = "git+https://codeberg.org/unspeaker/tek#35618676404302e5976e7e860be4491c07ebb001"
|
||||
dependencies = [
|
||||
"bitflags 2.9.0",
|
||||
"lazy_static",
|
||||
|
|
@ -726,9 +726,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.171"
|
||||
version = "0.2.172"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
|
||||
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
|
|
@ -803,9 +803,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
|||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.8.7"
|
||||
version = "0.8.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff70ce3e48ae43fa075863cef62e8b43b71a4f2382229920e0df362592919430"
|
||||
checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
|
||||
dependencies = [
|
||||
"adler2",
|
||||
]
|
||||
|
|
@ -888,7 +888,7 @@ dependencies = [
|
|||
"by_address",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -950,7 +950,7 @@ dependencies = [
|
|||
"phf_shared",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1006,9 +1006,9 @@ checksum = "bbc83ee4a840062f368f9096d80077a9841ec117e17e7f700df81958f1451254"
|
|||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.94"
|
||||
version = "1.0.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
|
||||
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
|
@ -1213,7 +1213,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1224,7 +1224,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1282,9 +1282,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.2"
|
||||
version = "1.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
|
||||
checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
|
@ -1332,7 +1332,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"rustversion",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1348,9 +1348,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.100"
|
||||
version = "2.0.101"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
|
||||
checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -1369,16 +1369,16 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tek_jack"
|
||||
version = "0.2.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tek#98d56e70092f1eccfb70bfd057258f02f8d00fe1"
|
||||
version = "0.2.1"
|
||||
source = "git+https://codeberg.org/unspeaker/tek#35618676404302e5976e7e860be4491c07ebb001"
|
||||
dependencies = [
|
||||
"jack",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tengri"
|
||||
version = "0.1.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=877b344765#877b3447653f69f951f3bc0dad57de82350d866b"
|
||||
version = "0.12.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=47b7f7e#47b7f7e7f9f7436b95ba8f7278bc776f28634cfc"
|
||||
dependencies = [
|
||||
"tengri_input",
|
||||
"tengri_output",
|
||||
|
|
@ -1387,18 +1387,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tengri_input"
|
||||
version = "0.1.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=877b344765#877b3447653f69f951f3bc0dad57de82350d866b"
|
||||
version = "0.12.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=47b7f7e#47b7f7e7f9f7436b95ba8f7278bc776f28634cfc"
|
||||
|
||||
[[package]]
|
||||
name = "tengri_output"
|
||||
version = "0.1.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=877b344765#877b3447653f69f951f3bc0dad57de82350d866b"
|
||||
version = "0.12.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=47b7f7e#47b7f7e7f9f7436b95ba8f7278bc776f28634cfc"
|
||||
|
||||
[[package]]
|
||||
name = "tengri_tui"
|
||||
version = "0.1.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=877b344765#877b3447653f69f951f3bc0dad57de82350d866b"
|
||||
version = "0.12.0"
|
||||
source = "git+https://codeberg.org/unspeaker/tengri?rev=47b7f7e#47b7f7e7f9f7436b95ba8f7278bc776f28634cfc"
|
||||
dependencies = [
|
||||
"atomic_float",
|
||||
"better-panic",
|
||||
|
|
@ -1410,6 +1410,7 @@ dependencies = [
|
|||
"ratatui",
|
||||
"tengri_input",
|
||||
"tengri_output",
|
||||
"unicode-width 0.2.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1429,7 +1430,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1586,7 +1587,7 @@ dependencies = [
|
|||
"log",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
|
@ -1608,7 +1609,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
|
@ -1681,7 +1682,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1692,7 +1693,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1803,20 +1804,20 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
|||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.24"
|
||||
version = "0.8.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
|
||||
checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.24"
|
||||
version = "0.8.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
|
||||
checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.100",
|
||||
"syn 2.0.101",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[workspace.dependencies.tengri]
|
||||
git = "https://codeberg.org/unspeaker/tengri"
|
||||
rev = "47b7f7e"
|
||||
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = [
|
||||
|
|
|
|||
14
build/Dockerfile.glibc
Normal file
14
build/Dockerfile.glibc
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
FROM docker.io/library/debian:bookworm
|
||||
RUN apt update \
|
||||
&& apt install -y build-essential bash tree git wget \
|
||||
pkg-config libjack-dev liblilv-dev libserd-dev libsord-dev
|
||||
RUN adduser --quiet --uid 1000 --disabled-password build
|
||||
RUN wget https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init \
|
||||
&& chmod +x ./rustup-init \
|
||||
&& mv rustup-init /usr/bin/rustup-init
|
||||
USER build
|
||||
WORKDIR /home/build
|
||||
RUN rustup-init -yv --profile minimal --default-toolchain nightly \
|
||||
&& rm -rvf "$HOME/.rustup/roolchains/*/share"
|
||||
RUN ls -alh "$HOME" && bash -c '. "$HOME/.cargo/env" \
|
||||
&& cargo version -vv'
|
||||
13
build/Dockerfile.musl
Normal file
13
build/Dockerfile.musl
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
FROM docker.io/library/alpine:edge
|
||||
|
||||
RUN apk add --no-cache build-base bash tree rustup git just cloc clang20-dev pipewire-jack-dev
|
||||
|
||||
RUN adduser -Du1000 build
|
||||
|
||||
USER 1000
|
||||
|
||||
RUN rustup-init -y --profile minimal --default-toolchain nightly \
|
||||
&& rm -rvf "$HOME/.rustup/roolchains/*/share"
|
||||
|
||||
RUN source "$HOME/.cargo/env" \
|
||||
&& cargo version -vv
|
||||
11
build/README.md
Normal file
11
build/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
This directory contains Dockerfiles and shell scripts
|
||||
for building Tek in a container. For now, only the
|
||||
GLIBC build works, as the Musl static build is unable
|
||||
to `dlopen` the system's `libjack.so`.
|
||||
|
||||
Invoke from repo root, like this: `build/release-glibc.sh`.
|
||||
This will first build a Docker image, `tek:glibc`, which
|
||||
will contain all build-time dependencies; then, it
|
||||
will invoke a `cargo build --release` in a container
|
||||
spawned from that image, ultimately placing the
|
||||
release build in this directory, as `build/tek`.
|
||||
11
build/release-glibc-shell.sh
Executable file
11
build/release-glibc-shell.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env sh
|
||||
set -exo pipefail
|
||||
docker inspect vestal:glibc || time docker build --cache-from=internal \
|
||||
-f build/Dockerfile.glibc -t vestal:glibc .
|
||||
time docker run \
|
||||
--rm -itu0 \
|
||||
-v .:/build -w /build \
|
||||
-vvestal-build-cargo:/home/build/.cargo \
|
||||
-vvestal-build-target:/build/target \
|
||||
-eRUST_JACK_DLOPEN=true \
|
||||
vestal:glibc $@
|
||||
14
build/release-glibc.sh
Executable file
14
build/release-glibc.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env sh
|
||||
set -exo pipefail
|
||||
docker inspect vestal:glibc || time docker build --cache-from=internal \
|
||||
-f build/Dockerfile.glibc -t vestal:glibc .
|
||||
time docker run \
|
||||
--rm -itu0 \
|
||||
-v .:/build -w /build \
|
||||
-vvestal-build-cargo:/home/build/.cargo \
|
||||
-vvestal-build-target:/build/target \
|
||||
-eRUST_JACK_DLOPEN=true \
|
||||
vestal:glibc sh -c "chown -R 1000:1000 /build/target \
|
||||
&& su build -c '. ~/.cargo/env \
|
||||
&& time cargo build -j4 --release \
|
||||
&& cp target/release/vestal build/'"
|
||||
11
build/release-musl-shell.sh
Executable file
11
build/release-musl-shell.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env sh
|
||||
set -exo pipefail
|
||||
docker inspect vestal:musl || time docker build --cache-from=internal \
|
||||
-f build/Dockerfile.musl -t vestal:musl .
|
||||
time docker run \
|
||||
--rm -itu0 \
|
||||
-v .:/build -w /build \
|
||||
-vvestal-build-cargo:/home/build/.cargo \
|
||||
-vvestal-build-target:/build/target \
|
||||
-eRUST_JACK_DLOPEN=true \
|
||||
vestal:musl $@
|
||||
14
build/release-musl.sh
Executable file
14
build/release-musl.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env sh
|
||||
set -exo pipefail
|
||||
docker inspect vestal:musl || time docker build --cache-from=internal \
|
||||
-f build/Dockerfile.musl -t vestal:musl .
|
||||
time docker run \
|
||||
--rm -itu0 \
|
||||
-v .:/build -w /build \
|
||||
-vvestal-build-cargo:/home/build/.cargo \
|
||||
-vvestal-build-target:/build/target \
|
||||
-eRUST_JACK_DLOPEN=true \
|
||||
vestal:musl sh -c "chown -R 1000:1000 /build/target \
|
||||
&& su build -c 'source ~/.cargo/env \
|
||||
&& just build-release \
|
||||
&& cp target/release/vestal build/'"
|
||||
|
|
@ -23,12 +23,9 @@ fn main () -> Result<(), Box<dyn std::error::Error>> {
|
|||
.search(std::env::current_dir()?)
|
||||
.search(canonicalize(path.clone().parent().expect("invalid parent path"))?)
|
||||
.search("/home/user/Lab/Cosmo/wineprefix/drive_c/windows/system32")
|
||||
.load(true)
|
||||
.unwrap_or_else(|e|panic!("failed to load: {e:?}"))
|
||||
.resolve(true)
|
||||
.unwrap_or_else(|e|panic!("failed to resolve: {e:?}"))
|
||||
.relink()
|
||||
.unwrap_or_else(|e|panic!("failed to relink: {e:?}"));
|
||||
.load(true).unwrap_or_else(|e|panic!("failed to load: {e:?}"))
|
||||
.resolve(true).unwrap_or_else(|e|panic!("failed to resolve: {e:?}"))
|
||||
.relink().unwrap_or_else(|e|panic!("failed to relink: {e:?}"));
|
||||
} else {
|
||||
println!("Pass a path to a VST DLL");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ version = { workspace = true }
|
|||
edition = { workspace = true }
|
||||
|
||||
[dependencies]
|
||||
tengri = { git = "https://codeberg.org/unspeaker/tengri", rev = "877b344765" }
|
||||
tengri = { workspace = true }
|
||||
|
||||
binary-layout = "4.0.2"
|
||||
exe = "0.5.6"
|
||||
|
|
|
|||
0
target/.gitkeep
Normal file
0
target/.gitkeep
Normal file
Loading…
Add table
Add a link
Reference in a new issue