diff --git a/.gitignore b/.gitignore index bd7648bf..f90a10ca 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ example.mid cov */cov *.profraw -bin/* -!bin/README.md -!bin/*.sh +build/* +!build/README.md +!build/*.sh +!build/Dockerfile.* diff --git a/Cargo.toml b/Cargo.toml index b41ec6a0..3f91d78d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ features = [ "tui", "dsl" ] #git = "https://codeberg.org/unspeaker/rust-jack" #rev = "a13c1c4" path = "./deps/rust-jack" -default-features = false +#default-features = false [workspace.dependencies] tek = { path = "./crates/app" } diff --git a/README.md b/README.md index 7a29918a..208b93ca 100644 --- a/README.md +++ b/README.md @@ -56,8 +56,8 @@ requires docker ``` git clone https://codeberg.org/unspeaker/tek # obtain source cd tek # enter directory -cat bin/release.sh # preview build script -sudo bin/release.sh # run build script +cat bin/release-glibc.sh # preview build script +sudo bin/release-glibc.sh # run build script sudo cp bin/tek /usr/local/bin/tek # install ``` diff --git a/build/Dockerfile.glibc b/build/Dockerfile.glibc new file mode 100644 index 00000000..ec33045e --- /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/Dockerfile b/build/Dockerfile.musl similarity index 66% rename from Dockerfile rename to build/Dockerfile.musl index 421701da..ed350cdc 100644 --- a/Dockerfile +++ b/build/Dockerfile.musl @@ -1,8 +1,6 @@ FROM docker.io/library/alpine:edge -RUN apk add --no-cache \ - build-base bash tree rustup git just cloc clang20-dev \ - pipewire-jack-dev lilv-dev serd-dev +RUN apk add --no-cache build-base bash tree rustup git just cloc clang20-dev pipewire-jack-dev RUN adduser -Du1000 build diff --git a/bin/README.md b/build/README.md similarity index 100% rename from bin/README.md rename to build/README.md diff --git a/build/release-glibc-shell.sh b/build/release-glibc-shell.sh new file mode 100755 index 00000000..3a22285a --- /dev/null +++ b/build/release-glibc-shell.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh +set -exo pipefail +docker inspect tek:glibc || time docker build --cache-from=internal \ + -f build/Dockerfile.glibc -t tek:glibc . +time docker run \ + --rm -itu0 \ + -v .:/build -w /build \ + -vtek-build-cargo:/home/build/.cargo \ + -vtek-build-target:/build/target \ + -eRUST_JACK_DLOPEN=true \ + tek:glibc $@ diff --git a/build/release-glibc.sh b/build/release-glibc.sh new file mode 100755 index 00000000..b7c01fc1 --- /dev/null +++ b/build/release-glibc.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env sh +set -exo pipefail +docker inspect tek:glibc || time docker build --cache-from=internal \ + -f build/Dockerfile.glibc -t tek:glibc . +time docker run \ + --rm -itu0 \ + -v .:/build -w /build \ + -vtek-build-cargo:/home/build/.cargo \ + -vtek-build-target:/build/target \ + -eRUST_JACK_DLOPEN=true \ + tek:glibc sh -c "chown -R 1000:1000 /build/target \ + && su build -c '. ~/.cargo/env \ + && time cargo build -j4 --release \ + && cp target/release/tek build/'" diff --git a/bin/release-shell.sh b/build/release-musl-shell.sh similarity index 57% rename from bin/release-shell.sh rename to build/release-musl-shell.sh index 88323a3a..8e5c047c 100755 --- a/bin/release-shell.sh +++ b/build/release-musl-shell.sh @@ -1,10 +1,11 @@ #!/usr/bin/env sh set -exo pipefail -docker inspect tek || time docker build --cache-from=internal -t tek . +docker inspect tek:musl || time docker build --cache-from=internal \ + -f build/Dockerfile.musl -t tek:musl . time docker run \ - -itu0 \ + --rm -itu0 \ -v .:/build -w /build \ -vtek-build-cargo:/home/build/.cargo \ -vtek-build-target:/build/target \ -eRUST_JACK_DLOPEN=true \ - tek $@ + tek:musl $@ diff --git a/bin/release.sh b/build/release-musl.sh similarity index 54% rename from bin/release.sh rename to build/release-musl.sh index 34f0a8e9..b8526fb5 100755 --- a/bin/release.sh +++ b/build/release-musl.sh @@ -1,13 +1,14 @@ #!/usr/bin/env sh set -exo pipefail -docker inspect tek || time docker build --cache-from=internal -t tek . +docker inspect tek:musl || time docker build --cache-from=internal \ + -f build/Dockerfile.musl -t tek:musl . time docker run \ - -itu0 \ + --rm -itu0 \ -v .:/build -w /build \ -vtek-build-cargo:/home/build/.cargo \ -vtek-build-target:/build/target \ -eRUST_JACK_DLOPEN=true \ - tek sh -c "chown -R 1000:1000 /build/target \ + tek:musl sh -c "chown -R 1000:1000 /build/target \ && su build -c 'source ~/.cargo/env \ && just build-release \ - && cp target/release/tek bin/'" + && cp target/release/tek build/'" diff --git a/crates/cli/tek.rs b/crates/cli/tek.rs index 14d0a427..1e7c13d6 100644 --- a/crates/cli/tek.rs +++ b/crates/cli/tek.rs @@ -38,15 +38,15 @@ pub struct Cli { #[arg(short='R', long)] right_to: Vec, } #[derive(Debug, Clone, Subcommand)] pub enum Mode { - /// A standalone transport clock. + /// ⏯️ A standalone transport clock. Clock, - /// A MIDI sequencer. + /// 🎼 A MIDI sequencer. Sequencer, - /// A MIDI-controlled audio sampler. + /// 🎺 A MIDI-controlled audio sampler. Sampler, - /// Sequencer and sampler together.12 + /// 📻 Sequencer and sampler together. Groovebox, - /// Multi-track MIDI sequencer. + /// 🎧 Multi-track MIDI sequencer. Arranger { /// Number of scenes #[arg(short = 'y', long, default_value_t = 4)] scenes: usize, diff --git a/deps/tengri b/deps/tengri index 1daca5ea..51d26927 160000 --- a/deps/tengri +++ b/deps/tengri @@ -1 +1 @@ -Subproject commit 1daca5ea7b286d95ffb1c9c14b513e0cbe641965 +Subproject commit 51d2692704d394044f668bfccfe81a22444e6265