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
*.profraw
bin/*
!bin/README.md
!bin/*.sh
build/*
!build/README.md
!build/*.sh
!build/Dockerfile.*

View file

@ -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" }

View file

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

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

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

View file

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

View file

@ -38,15 +38,15 @@ pub struct Cli {
#[arg(short='R', long)] right_to: Vec<String>,
}
#[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,

2
deps/tengri vendored

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