From b165573e55e6594dd7691b6fb46f90a00ef451e7 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Mon, 28 Apr 2025 00:57:02 +0300 Subject: [PATCH] update deps and add build infra --- .dockerignore | 1 + .gitignore | 14 +++++- Cargo.lock | 97 ++++++++++++++++++------------------ Cargo.toml | 4 ++ build/Dockerfile.glibc | 14 ++++++ build/Dockerfile.musl | 13 +++++ build/README.md | 11 ++++ build/release-glibc-shell.sh | 11 ++++ build/release-glibc.sh | 14 ++++++ build/release-musl-shell.sh | 11 ++++ build/release-musl.sh | 14 ++++++ cli/src/main.rs | 9 ++-- core/Cargo.toml | 2 +- target/.gitkeep | 0 14 files changed, 159 insertions(+), 56 deletions(-) create mode 100644 .dockerignore create mode 100644 build/Dockerfile.glibc create mode 100644 build/Dockerfile.musl create mode 100644 build/README.md create mode 100755 build/release-glibc-shell.sh create mode 100755 build/release-glibc.sh create mode 100755 build/release-musl-shell.sh create mode 100755 build/release-musl.sh create mode 100644 target/.gitkeep diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +* diff --git a/.gitignore b/.gitignore index 3203204..3b7518e 100644 --- a/.gitignore +++ b/.gitignore @@ -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.* diff --git a/Cargo.lock b/Cargo.lock index 3a9fa94..530b50b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", ] diff --git a/Cargo.toml b/Cargo.toml index 34526c1..873fbf7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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 = [ diff --git a/build/Dockerfile.glibc b/build/Dockerfile.glibc new file mode 100644 index 0000000..ec33045 --- /dev/null +++ b/build/Dockerfile.glibc @@ -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' diff --git a/build/Dockerfile.musl b/build/Dockerfile.musl new file mode 100644 index 0000000..ed350cd --- /dev/null +++ b/build/Dockerfile.musl @@ -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 diff --git a/build/README.md b/build/README.md new file mode 100644 index 0000000..2f70fea --- /dev/null +++ b/build/README.md @@ -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`. diff --git a/build/release-glibc-shell.sh b/build/release-glibc-shell.sh new file mode 100755 index 0000000..09a858d --- /dev/null +++ b/build/release-glibc-shell.sh @@ -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 $@ diff --git a/build/release-glibc.sh b/build/release-glibc.sh new file mode 100755 index 0000000..e63d464 --- /dev/null +++ b/build/release-glibc.sh @@ -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/'" diff --git a/build/release-musl-shell.sh b/build/release-musl-shell.sh new file mode 100755 index 0000000..129c53f --- /dev/null +++ b/build/release-musl-shell.sh @@ -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 $@ diff --git a/build/release-musl.sh b/build/release-musl.sh new file mode 100755 index 0000000..bcddfd8 --- /dev/null +++ b/build/release-musl.sh @@ -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/'" diff --git a/cli/src/main.rs b/cli/src/main.rs index 4d5dba5..d736ab5 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -23,12 +23,9 @@ fn main () -> Result<(), Box> { .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"); } diff --git a/core/Cargo.toml b/core/Cargo.toml index bc722ad..fb97533 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -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" diff --git a/target/.gitkeep b/target/.gitkeep new file mode 100644 index 0000000..e69de29