glibc static build

This commit is contained in:
🪞👃🪞 2025-04-19 14:30:04 +03:00
parent 393634a1a4
commit 59372911d2
12 changed files with 62 additions and 22 deletions

7
.gitignore vendored
View file

@ -6,6 +6,7 @@ example.mid
cov cov
*/cov */cov
*.profraw *.profraw
bin/* build/*
!bin/README.md !build/README.md
!bin/*.sh !build/*.sh
!build/Dockerfile.*

View file

@ -30,7 +30,7 @@ features = [ "tui", "dsl" ]
#git = "https://codeberg.org/unspeaker/rust-jack" #git = "https://codeberg.org/unspeaker/rust-jack"
#rev = "a13c1c4" #rev = "a13c1c4"
path = "./deps/rust-jack" path = "./deps/rust-jack"
default-features = false #default-features = false
[workspace.dependencies] [workspace.dependencies]
tek = { path = "./crates/app" } tek = { path = "./crates/app" }

View file

@ -56,8 +56,8 @@ requires docker
``` ```
git clone https://codeberg.org/unspeaker/tek # obtain source git clone https://codeberg.org/unspeaker/tek # obtain source
cd tek # enter directory cd tek # enter directory
cat bin/release.sh # preview build script cat bin/release-glibc.sh # preview build script
sudo bin/release.sh # run build script sudo bin/release-glibc.sh # run build script
sudo cp bin/tek /usr/local/bin/tek # install sudo cp bin/tek /usr/local/bin/tek # install
``` ```

14
build/Dockerfile.glibc Normal file
View 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'

View file

@ -1,8 +1,6 @@
FROM docker.io/library/alpine:edge FROM docker.io/library/alpine:edge
RUN apk add --no-cache \ RUN apk add --no-cache build-base bash tree rustup git just cloc clang20-dev pipewire-jack-dev
build-base bash tree rustup git just cloc clang20-dev \
pipewire-jack-dev lilv-dev serd-dev
RUN adduser -Du1000 build RUN adduser -Du1000 build

11
build/release-glibc-shell.sh Executable file
View file

@ -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 $@

14
build/release-glibc.sh Executable file
View file

@ -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/'"

View file

@ -1,10 +1,11 @@
#!/usr/bin/env sh #!/usr/bin/env sh
set -exo pipefail 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 \ time docker run \
-itu0 \ --rm -itu0 \
-v .:/build -w /build \ -v .:/build -w /build \
-vtek-build-cargo:/home/build/.cargo \ -vtek-build-cargo:/home/build/.cargo \
-vtek-build-target:/build/target \ -vtek-build-target:/build/target \
-eRUST_JACK_DLOPEN=true \ -eRUST_JACK_DLOPEN=true \
tek $@ tek:musl $@

View file

@ -1,13 +1,14 @@
#!/usr/bin/env sh #!/usr/bin/env sh
set -exo pipefail 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 \ time docker run \
-itu0 \ --rm -itu0 \
-v .:/build -w /build \ -v .:/build -w /build \
-vtek-build-cargo:/home/build/.cargo \ -vtek-build-cargo:/home/build/.cargo \
-vtek-build-target:/build/target \ -vtek-build-target:/build/target \
-eRUST_JACK_DLOPEN=true \ -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 \ && su build -c 'source ~/.cargo/env \
&& just build-release \ && just build-release \
&& cp target/release/tek bin/'" && cp target/release/tek build/'"

View file

@ -38,15 +38,15 @@ pub struct Cli {
#[arg(short='R', long)] right_to: Vec<String>, #[arg(short='R', long)] right_to: Vec<String>,
} }
#[derive(Debug, Clone, Subcommand)] pub enum Mode { #[derive(Debug, Clone, Subcommand)] pub enum Mode {
/// A standalone transport clock. /// ⏯️ A standalone transport clock.
Clock, Clock,
/// A MIDI sequencer. /// 🎼 A MIDI sequencer.
Sequencer, Sequencer,
/// A MIDI-controlled audio sampler. /// 🎺 A MIDI-controlled audio sampler.
Sampler, Sampler,
/// Sequencer and sampler together.12 /// 📻 Sequencer and sampler together.
Groovebox, Groovebox,
/// Multi-track MIDI sequencer. /// 🎧 Multi-track MIDI sequencer.
Arranger { Arranger {
/// Number of scenes /// Number of scenes
#[arg(short = 'y', long, default_value_t = 4)] scenes: usize, #[arg(short = 'y', long, default_value_t = 4)] scenes: usize,

2
deps/tengri vendored

@ -1 +1 @@
Subproject commit 1daca5ea7b286d95ffb1c9c14b513e0cbe641965 Subproject commit 51d2692704d394044f668bfccfe81a22444e6265