Skip to content

Commit 79549aa

Browse files
authored
Mobile build (#363)
1 parent eb939e6 commit 79549aa

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

.github/workflows/package-ffi-engine.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ jobs:
4747
target: x86_64-apple-darwin
4848
use_cross: false
4949

50+
- name: iOS-arm64
51+
os: macos-latest
52+
target: aarch64-apple-ios
53+
use_cross: false
54+
55+
- name: Android-arm64
56+
os: ubuntu-latest
57+
target: aarch64-linux-android
58+
use_cross: true
59+
5060
runs-on: ${{ matrix.platform.os }}
5161

5262
env:
@@ -77,6 +87,10 @@ jobs:
7787
run: |
7888
echo "RUSTFLAGS=-C target-feature=-crt-static" >> $GITHUB_ENV
7989
90+
- name: Install cross from GitHub
91+
run: |
92+
which cross || cargo install cross --git https://github.com/cross-rs/cross
93+
8094
- name: Build ${{ matrix.platform.name }}
8195
uses: actions-rs/cargo@v1
8296
with:

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,6 @@ rpath = true
88

99
[profile.release.package.flipt-engine-wasm]
1010
opt-level = "s"
11+
12+
[profile.release.package.flipt-engine-ffi]
13+
opt-level = "z"

flipt-engine-ffi/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,4 @@ mockito = "1.4.0"
2626

2727
[lib]
2828
name = "fliptengine"
29-
crate-type = ["rlib", "dylib"]
29+
crate-type = ["rlib", "dylib", "staticlib"]

package/ffi/main.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ var (
3030
"dart": dartBuild,
3131
}
3232
sema = make(chan struct{}, 5)
33+
// defaultExclude is the default exclude for all builds to prevent
34+
// unneccessary architecture support files from being copied into the
35+
// build directory
36+
defaultExclude = []string{"**/*.rlib", "**/*.a", "**/*.d", "*musl*", "*iOS*", "*Android*", "*wasm*"}
3337
)
3438

3539
func init() {
@@ -249,16 +253,13 @@ func goBuild(ctx context.Context, client *dagger.Client, hostDirectory *dagger.D
249253
WithWorkdir("/src").
250254
WithFile("/tmp/ext/flipt_engine.h", hostDirectory.File("flipt-engine-ffi/include/flipt_engine.h"))
251255

252-
defaultExclude := []string{"*.rlib"}
253-
254256
if buildOpts.libc == glibc {
255-
exclude := append(defaultExclude, "*_musl")
256257
repository = repository.
257-
WithDirectory("/tmp/ext", hostDirectory.Directory("tmp"), dagger.ContainerWithDirectoryOpts{Exclude: exclude})
258+
WithDirectory("/tmp/ext", hostDirectory.Directory("tmp"), dagger.ContainerWithDirectoryOpts{Exclude: defaultExclude})
258259
} else {
259260
repository = repository.
260-
WithDirectory("/tmp/ext/linux_arm64", hostDirectory.Directory("tmp/linux_arm64_musl"), dagger.ContainerWithDirectoryOpts{Exclude: defaultExclude}).
261-
WithDirectory("/tmp/ext/linux_x86_64", hostDirectory.Directory("tmp/linux_x86_64_musl"), dagger.ContainerWithDirectoryOpts{Exclude: defaultExclude})
261+
WithDirectory("/tmp/ext/linux_arm64", hostDirectory.Directory("tmp/linux_arm64_musl"), dagger.ContainerWithDirectoryOpts{Exclude: []string{"**/*.rlib", "**/*.a", "**/*.d"}}).
262+
WithDirectory("/tmp/ext/linux_x86_64", hostDirectory.Directory("tmp/linux_x86_64_musl"), dagger.ContainerWithDirectoryOpts{Exclude: []string{"**/*.rlib", "**/*.a", "**/*.d"}})
262263
}
263264

264265
filtered := repository.
@@ -314,7 +315,7 @@ func nodeBuild(ctx context.Context, client *dagger.Client, hostDirectory *dagger
314315
Exclude: []string{"./node_modules/"},
315316
}).
316317
WithDirectory("/src/ext", hostDirectory.Directory("tmp"), dagger.ContainerWithDirectoryOpts{
317-
Exclude: []string{"**/*.rlib", "*_musl"},
318+
Exclude: defaultExclude,
318319
}).
319320
WithFile("/src/ext/flipt_engine.h", hostDirectory.File("flipt-engine-ffi/include/flipt_engine.h")).
320321
WithWorkdir("/src").
@@ -348,7 +349,7 @@ func rubyBuild(ctx context.Context, client *dagger.Client, hostDirectory *dagger
348349
WithWorkdir("/src").
349350
WithDirectory("/src", hostDirectory.Directory("flipt-client-ruby")).
350351
WithDirectory("/src/lib/ext", hostDirectory.Directory("tmp"), dagger.ContainerWithDirectoryOpts{
351-
Exclude: []string{"**/*.rlib", "*_musl"},
352+
Exclude: defaultExclude,
352353
}).
353354
WithFile("/src/lib/ext/flipt_engine.h", hostDirectory.File("flipt-engine-ffi/include/flipt_engine.h")).
354355
WithExec([]string{"bundle", "install"}).
@@ -408,7 +409,7 @@ func javaBuild(ctx context.Context, client *dagger.Client, hostDirectory *dagger
408409
container := client.Container().From("gradle:8.5.0-jdk11").
409410
WithDirectory("/src", hostDirectory.Directory("flipt-client-java")).
410411
WithDirectory("/src/src/main/resources", hostDirectory.Directory("tmp"), dagger.ContainerWithDirectoryOpts{
411-
Exclude: []string{"**/*.rlib", "*_musl"},
412+
Exclude: defaultExclude,
412413
}).
413414
WithFile("/src/main/resources/flipt_engine.h", hostDirectory.File("flipt-engine-ffi/include/flipt_engine.h")).
414415
WithWorkdir("/src").
@@ -462,7 +463,7 @@ func dartBuild(ctx context.Context, client *dagger.Client, hostDirectory *dagger
462463
Exclude: []string{".gitignore", ".dart_tool/"},
463464
}).
464465
WithDirectory("/src/lib/src/ffi", hostDirectory.Directory("tmp"), dagger.ContainerWithDirectoryOpts{
465-
Exclude: []string{"**/*.rlib", "*_musl"},
466+
Exclude: defaultExclude,
466467
}).
467468
WithWorkdir("/src").
468469
WithExec([]string{"dart", "pub", "get"})

0 commit comments

Comments
 (0)