diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0389d3707..edb316be1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: - name: Rust cache uses: swatinem/rust-cache@v2 with: - workspaces: './src-tauri -> target' + workspaces: './ -> target' shared-key: release-x86_64-unknown-linux-gnu - name: Install system dependencies (Linux) @@ -46,9 +46,7 @@ jobs: sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libssl-dev - name: Cargo fmt check - working-directory: src-tauri run: cargo fmt --check - name: Cargo check - working-directory: src-tauri - run: cargo check + run: cargo check --workspace --locked diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6b22da338..d909e2525 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,13 +49,13 @@ jobs: id: deps-hash shell: bash run: | - hash=$(grep -v '^version = ' src-tauri/Cargo.lock | sha256sum | cut -d' ' -f1) + hash=$(grep -v '^version = ' Cargo.lock | sha256sum | cut -d' ' -f1) echo "hash=${hash:0:20}" >> "$GITHUB_OUTPUT" - name: Rust cache uses: swatinem/rust-cache@v2 with: - workspaces: './src-tauri -> target' + workspaces: './ -> target' shared-key: release-${{ matrix.target }}-${{ steps.deps-hash.outputs.hash }} cache-on-failure: true diff --git a/Cargo.lock b/Cargo.lock index 093a568a8..7da15178a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -367,18 +367,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "async-native-tls" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" -dependencies = [ - "futures-util", - "native-tls", - "thiserror 1.0.69", - "url", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -2528,17 +2516,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -2548,7 +2525,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] @@ -3852,12 +3829,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "md5" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e6bcd6433cff03a4bfc3d9834d504467db1f1cf6d0ea765d37d330249ed629d" - [[package]] name = "md5" version = "0.7.0" @@ -3918,7 +3889,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.61.2", ] @@ -5301,19 +5272,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.6" @@ -5346,16 +5304,6 @@ dependencies = [ "rand_core 0.10.1", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.3.1" @@ -5376,15 +5324,6 @@ dependencies = [ "rand_core 0.9.5", ] -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - [[package]] name = "rand_core" version = "0.6.4" @@ -5409,15 +5348,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "raw-window-handle" version = "0.6.2" @@ -5789,7 +5719,7 @@ dependencies = [ "internal-russh-num-bigint", "keccak", "log", - "md5 0.7.0", + "md5", "ml-kem", "module-lattice", "num-bigint", @@ -7674,7 +7604,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1446cb4198848d1562301a3340424b4f425ef79f35ef9ee034769a9dd92c10d" dependencies = [ - "async-native-tls", "async-trait", "asynchronous-codec", "byteorder", @@ -7696,7 +7625,6 @@ dependencies = [ "tokio-util", "tracing", "uuid", - "winauth", ] [[package]] @@ -8396,12 +8324,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -8734,19 +8656,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "winauth" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f820cd208ce9c6b050812dc2d724ba98c6c1e9db5ce9b3f58d925ae5723a5e6" -dependencies = [ - "bitflags 1.3.2", - "byteorder", - "md5 0.6.1", - "rand 0.7.3", - "winapi", -] - [[package]] name = "window-vibrancy" version = "0.6.0" diff --git a/Cargo.toml b/Cargo.toml index d01c6eaba..390ef8ef7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,6 @@ members = ["src-tauri", "crates/dbx-core", "src-web"] [profile.release] panic = "abort" strip = true -lto = true +lto = "thin" codegen-units = 1 opt-level = "s" diff --git a/Dockerfile b/Dockerfile index 4cd23bba8..ce62f36eb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,12 +9,12 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store \ pnpm install --frozen-lockfile COPY src/ src/ COPY index.html vite.config.ts tsconfig.json ./ -COPY tailwind.config.* postcss.config.* ./ COPY public/ public/ RUN pnpm build -# Stage 2: Cross-compile Rust backend for both platforms (native, no emulation) +# Stage 2: Cross-compile Rust backend for the requested platform (native, no emulation) FROM --platform=$BUILDPLATFORM rust:1-bookworm AS backend +ARG TARGETARCH WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ python3-pip gcc-aarch64-linux-gnu gcc-x86-64-linux-gnu \ @@ -33,12 +33,14 @@ COPY src-tauri/tauri.conf.json src-tauri/ RUN --mount=type=cache,target=/usr/local/cargo/registry \ --mount=type=cache,target=/app/target \ - cargo zigbuild --release -p dbx-web \ - --target x86_64-unknown-linux-gnu \ - --target aarch64-unknown-linux-gnu && \ - mkdir -p /out/linux/amd64 /out/linux/arm64 && \ - cp /app/target/x86_64-unknown-linux-gnu/release/dbx-web /out/linux/amd64/ && \ - cp /app/target/aarch64-unknown-linux-gnu/release/dbx-web /out/linux/arm64/ + case "$TARGETARCH" in \ + amd64) rust_target=x86_64-unknown-linux-gnu ;; \ + arm64) rust_target=aarch64-unknown-linux-gnu ;; \ + *) echo "Unsupported TARGETARCH: $TARGETARCH" >&2; exit 1 ;; \ + esac && \ + cargo zigbuild --release -p dbx-web --target "$rust_target" && \ + mkdir -p "/out/linux/$TARGETARCH" && \ + cp "/app/target/$rust_target/release/dbx-web" "/out/linux/$TARGETARCH/" # Stage 3: Final image FROM debian:bookworm-slim diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 081bc72ee..4a761a0ae 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -36,7 +36,7 @@ redis = { version = "0.32.2", features = ["tokio-comp", "tls-rustls", "tokio-rus rustls = { version = "0.23", features = ["aws-lc-rs"] } portpicker = "0.1.1" duckdb = { version = "1.3.2", features = ["bundled"] } -tiberius = { version = "0.12.3", features = ["tds73", "chrono", "rust_decimal"] } +tiberius = { version = "0.12.3", default-features = false, features = ["tds73", "chrono", "rust_decimal", "rustls"] } tokio-util = { version = "0.7", features = ["compat"] } reqwest = { version = "0.12", features = ["json", "stream"] } futures = "0.3"