Skip to content
This repository has been archived by the owner on Dec 12, 2024. It is now read-only.

Draft: multi architecture build #66

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ Cargo.lock

.hermit/
build/
.gradle/
.gradle/
tmp/
11 changes: 5 additions & 6 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,11 @@ bind: setup
just bind-kotlin

bind-kotlin: setup
cargo build --release --package tbdex_uniffi
cargo run --package tbdex_uniffi \
cargo build --release --target aarch64-apple-darwin --package tbdex_uniffi
cargo run --release --package tbdex_uniffi \
--bin uniffi-bindgen \
generate --library target/release/libtbdex_uniffi.dylib \
generate --library target/aarch64-apple-darwin/release/libtbdex_uniffi.dylib \
--language kotlin \
--out-dir target/bindgen-kotlin
cp target/release/libtbdex_uniffi.dylib bound/kt/src/main/resources/natives
cp target/bindgen-kotlin/tbdex/sdk/rust/tbdex.kt bound/kt/src/main/kotlin/tbdex/sdk/rust
cd bound/kt && ./fix-load.sh
cp target/aarch64-apple-darwin/release/libtbdex_uniffi.dylib bound/kt/src/main/resources
cp target/bindgen-kotlin/tbdex/sdk/rust/tbdex.kt bound/kt/src/main/kotlin/tbdex/sdk/rust
File renamed without changes.
1 change: 0 additions & 1 deletion bin/jaotc

This file was deleted.

2 changes: 1 addition & 1 deletion bin/jar
2 changes: 1 addition & 1 deletion bin/jarsigner
2 changes: 1 addition & 1 deletion bin/java
2 changes: 1 addition & 1 deletion bin/javac
2 changes: 1 addition & 1 deletion bin/javadoc
2 changes: 1 addition & 1 deletion bin/javap
2 changes: 1 addition & 1 deletion bin/jcmd
2 changes: 1 addition & 1 deletion bin/jconsole
2 changes: 1 addition & 1 deletion bin/jdb
2 changes: 1 addition & 1 deletion bin/jdeprscan
2 changes: 1 addition & 1 deletion bin/jdeps
2 changes: 1 addition & 1 deletion bin/jfr
2 changes: 1 addition & 1 deletion bin/jhsdb
2 changes: 1 addition & 1 deletion bin/jimage
2 changes: 1 addition & 1 deletion bin/jinfo
1 change: 0 additions & 1 deletion bin/jjs

This file was deleted.

2 changes: 1 addition & 1 deletion bin/jlink
2 changes: 1 addition & 1 deletion bin/jmap
2 changes: 1 addition & 1 deletion bin/jmod
1 change: 1 addition & 0 deletions bin/jpackage
2 changes: 1 addition & 1 deletion bin/jps
2 changes: 1 addition & 1 deletion bin/jrunscript
2 changes: 1 addition & 1 deletion bin/jshell
2 changes: 1 addition & 1 deletion bin/jstack
2 changes: 1 addition & 1 deletion bin/jstat
2 changes: 1 addition & 1 deletion bin/jstatd
2 changes: 1 addition & 1 deletion bin/keytool
1 change: 0 additions & 1 deletion bin/pack200

This file was deleted.

1 change: 0 additions & 1 deletion bin/rmic

This file was deleted.

1 change: 0 additions & 1 deletion bin/rmid

This file was deleted.

2 changes: 1 addition & 1 deletion bin/rmiregistry
2 changes: 1 addition & 1 deletion bin/serialver
1 change: 0 additions & 1 deletion bin/unpack200

This file was deleted.

18 changes: 18 additions & 0 deletions bindings/tbdex_uniffi/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM rust:latest

RUN apt-get update && \
apt-get install -y musl-tools llvm && \
rustup target add x86_64-unknown-linux-musl

WORKDIR /app

COPY .cargo/ Cargo.toml Cargo.lock ./
COPY crates/tbdex crates/tbdex
COPY crates/pfi_exemplar_integration_test crates/pfi_exemplar_integration_test
COPY bindings/tbdex_uniffi bindings/tbdex_uniffi

WORKDIR /app/bindings/tbdex_uniffi

RUN cargo build --release --target x86_64-unknown-linux-musl

CMD tail -f /dev/null
30 changes: 30 additions & 0 deletions bindings/tbdex_uniffi/DockerfileBindLinuxAmd64
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM --platform=linux/amd64 ubuntu:22.04

RUN apt-get update && apt-get install -y \
build-essential \
cmake \
pkg-config \
libssl-dev \
curl \
wget \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

RUN rustup default 1.78.0

WORKDIR /app

COPY Cargo.toml Cargo.lock ./
COPY crates/tbdex crates/tbdex
COPY crates/pfi_exemplar_integration_test crates/pfi_exemplar_integration_test
COPY bindings/tbdex_uniffi bindings/tbdex_uniffi

WORKDIR /app/bindings/tbdex_uniffi

RUN cargo build --release

CMD tail -f /dev/null
29 changes: 29 additions & 0 deletions bindings/tbdex_uniffi/DockerfileBuildAlpine
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
FROM --platform=linux/amd64 alpine:latest

RUN apk add --no-cache \
build-base \
cmake \
pkgconfig \
openssl-dev \
curl \
wget \
git \
ca-certificates

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

RUN rustup default 1.78.0

WORKDIR /app

COPY Cargo.toml Cargo.lock ./
COPY crates/tbdex crates/tbdex
COPY crates/pfi_exemplar_integration_test crates/pfi_exemplar_integration_test
COPY bindings/tbdex_uniffi bindings/tbdex_uniffi

WORKDIR /app/bindings/tbdex_uniffi

RUN cargo build --release --target x86_64-unknown-linux-musl

CMD tail -f /dev/null
41 changes: 41 additions & 0 deletions bindings/tbdex_uniffi/DockerfileBuildAlpine_old
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
FROM --platform=linux/amd64 alpine:latest

# Install build dependencies
RUN apk add --no-cache \
build-base \
cmake \
pkgconfig \
openssl-dev \
curl \
wget \
git \
ca-certificates \
linux-headers

# Install rustup and set default toolchain
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

RUN rustup default 1.78.0

# Set working directory
WORKDIR /app

# Copy project files
COPY Cargo.toml Cargo.lock ./
COPY crates/tbdex crates/tbdex
COPY crates/pfi_exemplar_integration_test crates/pfi_exemplar_integration_test
COPY bindings/tbdex_uniffi bindings/tbdex_uniffi

WORKDIR /app/bindings/tbdex_uniffi

# Set environment variables to help linker find OpenSSL libraries
ENV OPENSSL_DIR=/usr
ENV OPENSSL_LIB_DIR=/usr/lib
ENV OPENSSL_INCLUDE_DIR=/usr/include
ENV PKG_CONFIG_PATH=/usr/lib/pkgconfig

# Build the project
RUN RUSTFLAGS="-C target-feature=-crt-static" cargo build --release --target x86_64-unknown-linux-musl

CMD tail -f /dev/null
7 changes: 7 additions & 0 deletions bindings/tbdex_uniffi/docker-build-linux-amd64
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

docker build -f DockerfileBindLinuxAmd64 -t tbdex-uniffi-linux-amd64-image ../../
docker run -d --name tbdex-uniffi-linux-amd64-container tbdex-uniffi-linux-amd64-image
docker cp tbdex-uniffi-linux-amd64-container:/app/target/release/libtbdex_uniffi.so ../../bound/kt/src/main/resources
docker stop tbdex-uniffi-linux-amd64-container
docker rm tbdex-uniffi-linux-amd64-container
18 changes: 0 additions & 18 deletions bound/kt/fix-load.sh

This file was deleted.

12 changes: 3 additions & 9 deletions bound/kt/src/main/kotlin/tbdex/sdk/rust/tbdex.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import java.nio.charset.CodingErrorAction
import java.util.concurrent.atomic.AtomicLong
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.AtomicBoolean
import java.nio.file.Files

// This is a helper for safely working with byte buffers returned from the Rust code.
// A rust-owned buffer is represented by its capacity, its current length, and a
Expand Down Expand Up @@ -876,14 +875,9 @@ internal open class UniffiVTableCallbackInterfaceSigner(
internal interface UniffiLib : Library {
companion object {
internal val INSTANCE: UniffiLib by lazy {
val tempDir = Files.createTempDirectory("library")
val libraryPath = tempDir.resolve("libtbdex_uniffi.dylib")
Thread.currentThread().contextClassLoader.getResourceAsStream("natives/libtbdex_uniffi.dylib").use { input ->
Files.copy(input, libraryPath)
}
libraryPath.toFile().deleteOnExit()
val lib = Native.load(libraryPath.toString(), UniffiLib::class.java)
lib.also { uniffiCheckContractApiVersion(lib)
loadIndirect<UniffiLib>(componentName = "tbdex")
.also { lib: UniffiLib ->
uniffiCheckContractApiVersion(lib)
uniffiCheckApiChecksums(lib)
uniffiCallbackInterfaceKeyManager.register(lib)
uniffiCallbackInterfaceSigner.register(lib)
Expand Down
Binary file not shown.
Binary file added bound/kt/src/main/resources/libtbdex_uniffi.so
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ class E2ePfiExemplarIntegrationTest {
@Disabled
@Test
fun `can make the happy path`() {
val pfiDidUri = "did:dht:swit41ctrddy1s38c5j46yfgbxmwo1emau71zo5hn1tws1g63hiy"
// val pfiDidUri = "did:dht:swit41ctrddy1s38c5j46yfgbxmwo1emau71zo5hn1tws1g63hiy"
val pfiDidUri = "did:web:localhost%3A8891"

val didUri = "did:dht:1fs5hnxsgtxgdr4wzqi38cnj46b1whhn94ojwo66g8hsc5bt3fgy"
val keyManager = InMemoryKeyManager(listOf())
Expand Down
21 changes: 21 additions & 0 deletions examples/hosted-wallet-kt/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM --platform=linux/amd64 ubuntu:22.04

RUN apt-get update && apt-get install -y \
openjdk-17-jdk \
gradle \
maven \
git

COPY bound/kt /app/bound/kt
COPY examples/hosted-wallet-kt /app/examples/hosted-wallet-kt

WORKDIR /app/bound/kt
RUN mvn install

WORKDIR /app/examples/hosted-wallet-kt
RUN ./gradlew build

EXPOSE 8081
EXPOSE 8082

CMD ["bash"]
Loading
Loading