From 59372911d237f1f84dad070fa98c9b9d3b2472c0 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 19 Apr 2025 14:30:04 +0300 Subject: [PATCH] glibc static build --- .gitignore | 7 ++++--- Cargo.toml | 2 +- README.md | 4 ++-- build/Dockerfile.glibc | 14 ++++++++++++++ Dockerfile => build/Dockerfile.musl | 4 +--- {bin => build}/README.md | 0 build/release-glibc-shell.sh | 11 +++++++++++ build/release-glibc.sh | 14 ++++++++++++++ .../release-musl-shell.sh | 7 ++++--- bin/release.sh => build/release-musl.sh | 9 +++++---- crates/cli/tek.rs | 10 +++++----- deps/tengri | 2 +- 12 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 build/Dockerfile.glibc rename Dockerfile => build/Dockerfile.musl (66%) rename {bin => build}/README.md (100%) create mode 100755 build/release-glibc-shell.sh create mode 100755 build/release-glibc.sh rename bin/release-shell.sh => build/release-musl-shell.sh (57%) rename bin/release.sh => build/release-musl.sh (54%) 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