From 67139199558a61860ed52ecd25f30e4ce239591f Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Tue, 28 Jan 2025 12:56:55 +0100 Subject: [PATCH 01/19] Add Android images --- .github/workflows/build_docker_image.yml | 34 +++++++++ android/Dockerfile | 96 ++++++++++++++++++++++++ android/android-toolchain.cmake | 6 ++ 3 files changed, 136 insertions(+) create mode 100644 android/Dockerfile create mode 100644 android/android-toolchain.cmake diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 03667d6..8a93516 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -52,6 +52,40 @@ jobs: OCCT_VERSION=V7_8_1 VTK_VERSION=6a898fd91da30d3ff903416bf856f0d1cea82cdf + build_f3d-android: + strategy: + fail-fast: false + matrix: + arch: [arm, arm64, x86, x64] + + runs-on: ubuntu-latest + steps: + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: ${{ github.ref == 'refs/heads/main' }} + tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:latest + file: android/Dockerfile + build-args: | + ANDROID_API=34 + ANDROID_ARCH=${{ }} + ANDROID_NDK=r26b + CMAKE_BUILD_PARALLEL_LEVEL=4 + ASSIMP_VERSION=v5.4.2 + VTK_VERSION=547c6d2d962f466ea1aa3f22b899576926a124f5 + ${{ matrix.arch == 'arm' && 'ANDROID_ARCH=armeabi-v7a' || null }} + ${{ matrix.arch == 'arm64' && 'ANDROID_ARCH=arm64-v8a' || null }} + ${{ matrix.arch == 'x86' && 'ANDROID_ARCH=x86' || null }} + ${{ matrix.arch == 'x64' && 'ANDROID_ARCH=x86_64' || null }} + build_f3d-superbuild-ci: runs-on: ubuntu-latest steps: diff --git a/android/Dockerfile b/android/Dockerfile new file mode 100644 index 0000000..6451b4f --- /dev/null +++ b/android/Dockerfile @@ -0,0 +1,96 @@ +FROM ubuntu:24.04 AS base + +ARG CMAKE_BUILD_PARALLEL_LEVEL=8 +ENV CMAKE_BUILD_PARALLEL_LEVEL=$CMAKE_BUILD_PARALLEL_LEVEL + +ARG ANDROID_NDK +RUN [ -n "$ANDROID_NDK" ] + +ARG ANDROID_API +RUN [ -n "$ANDROID_API" ] +ENV ANDROID_API=$ANDROID_API + +ARG ANDROID_ARCH +RUN [ -n "$ANDROID_ARCH" ] +ENV ANDROID_ARCH=$ANDROID_ARCH + +# Install generic compilation tools +RUN apt update && apt install -y \ + build-essential \ + cmake \ + default-jdk \ + git \ + unzip \ + wget + +# Install NDK +RUN wget https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK-linux.zip +RUN unzip -qq android-ndk-$ANDROID_NDK-linux.zip +RUN mv android-ndk-$ANDROID_NDK /ndk + +# Copy toolchain +COPY android-toolchain.cmake / + +###################################### +# Assimp +###################################### +FROM base AS assimp + +ARG ASSIMP_VERSION +RUN [ -n "$ASSIMP_VERSION" ] + +ADD https://github.com/assimp/assimp/archive/refs/tags/$ASSIMP_VERSION.tar.gz /assimp-src.tar.gz + +RUN mkdir -p /assimp-src && tar -xzf /assimp-src.tar.gz -C /assimp-src --strip-components 1 && rm -rf /assimp-src.tar.gz + +RUN cmake -S /assimp-src -B /assimp-build \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends/$ANDROID_ARCH \ + -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF \ + -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \ + -DASSIMP_BUILD_3MF_IMPORTER=ON \ + -DASSIMP_BUILD_COLLADA_IMPORTER=ON \ + -DASSIMP_BUILD_DXF_IMPORTER=ON \ + -DASSIMP_BUILD_FBX_IMPORTER=ON \ + -DASSIMP_BUILD_OFF_IMPORTER=ON \ + -DASSIMP_BUILD_X_IMPORTER=ON \ + -DASSIMP_BUILD_SAMPLES=OFF \ + -DASSIMP_BUILD_TESTS=OFF \ + -DASSIMP_BUILD_ZLIB=ON \ + -DASSIMP_NO_EXPORT=ON \ + -DASSIMP_WARNINGS_AS_ERRORS=OFF + +RUN cmake --build /assimp-build --target install && rm -rf /assimp-src /assimp-build + +###################################### +# VTK +###################################### +FROM base AS vtk + +ARG VTK_VERSION +RUN [ -n "$VTK_VERSION" ] + +ADD https://gitlab.kitware.com/vtk/vtk/-/archive/$VTK_VERSION/vtk-$VTK_VERSION.tar.gz /vtk-src.tar.gz + +RUN mkdir -p /vtk-src && tar -xzf /vtk-src.tar.gz -C /vtk-src --strip-components 1 && rm -rf /vtk-src.tar.gz + +RUN cmake -S /vtk-src -B /vtk-build \ + -DANDROID_ARCH=$ANDROID_ARCH \ + -DANDROID_NATIVE_API_LEVEL=$ANDROID_API \ + -DANDROID_NDK=/ndk \ + -DCMAKE_BUILD_TYPE=Release \ + -DVTK_ANDROID_BUILD=ON + +RUN cmake --build /vtk-build && rm -rf /vtk-src + +###################################### +# Copy artifacts from previous builds +###################################### +FROM base + +ENV CMAKE_TOOLCHAIN_FILE /android-toolchain.cmake + +COPY --from=assimp /depends/$ANDROID_ARCH /depends/$ANDROID_ARCH +COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends/$ANDROID_ARCH diff --git a/android/android-toolchain.cmake b/android/android-toolchain.cmake new file mode 100644 index 0000000..1c33cd7 --- /dev/null +++ b/android/android-toolchain.cmake @@ -0,0 +1,6 @@ +set(CMAKE_SYSTEM_NAME Android) +set(CMAKE_SYSTEM_VERSION $ENV{ANDROID_API_VERSION}) +set(CMAKE_ANDROID_ARCH_ABI $ENV{ANDROID_ARCH}) +set(CMAKE_ANDROID_NDK /ndk) + +set(CMAKE_FIND_ROOT_PATH /depends/$ENV{ANDROID_ARCH}) From 378b58c07f13868a536befa5bb2395a1cc876599 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Tue, 28 Jan 2025 13:18:08 +0100 Subject: [PATCH 02/19] fix --- .github/workflows/build_docker_image.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 8a93516..f82ed6f 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -56,7 +56,7 @@ jobs: strategy: fail-fast: false matrix: - arch: [arm, arm64, x86, x64] + arch: [armeabi-v7a, arm64-v8a, x86, x86_64] runs-on: ubuntu-latest steps: @@ -74,17 +74,13 @@ jobs: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:latest file: android/Dockerfile - build-args: | + build-args: ANDROID_API=34 - ANDROID_ARCH=${{ }} + ANDROID_ARCH=${{ matrix.arch }} ANDROID_NDK=r26b CMAKE_BUILD_PARALLEL_LEVEL=4 ASSIMP_VERSION=v5.4.2 VTK_VERSION=547c6d2d962f466ea1aa3f22b899576926a124f5 - ${{ matrix.arch == 'arm' && 'ANDROID_ARCH=armeabi-v7a' || null }} - ${{ matrix.arch == 'arm64' && 'ANDROID_ARCH=arm64-v8a' || null }} - ${{ matrix.arch == 'x86' && 'ANDROID_ARCH=x86' || null }} - ${{ matrix.arch == 'x64' && 'ANDROID_ARCH=x86_64' || null }} build_f3d-superbuild-ci: runs-on: ubuntu-latest From 4ce2f9734f664644fc052a60b1f0bff9fdd2d3c7 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Tue, 28 Jan 2025 13:23:17 +0100 Subject: [PATCH 03/19] fix --- .github/workflows/build_docker_image.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index f82ed6f..aea9c31 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -26,7 +26,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-ci:latest - file: ci/Dockerfile + context: ci build_f3d-wasm: runs-on: ubuntu-latest @@ -44,7 +44,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-wasm:latest - file: webassembly/Dockerfile + context: webassembly build-args: | CMAKE_BUILD_PARALLEL_LEVEL=4 ASSIMP_VERSION=v5.4.2 @@ -73,8 +73,8 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:latest - file: android/Dockerfile - build-args: + context: android + build-args: | ANDROID_API=34 ANDROID_ARCH=${{ matrix.arch }} ANDROID_NDK=r26b @@ -98,7 +98,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-superbuild-ci:latest - file: superbuild/Dockerfile + context: superbuild build_f3d-wheels-manylinux-ci: runs-on: ubuntu-latest @@ -117,4 +117,4 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-wheels-manylinux-ci:latest - file: wheels-manylinux/Dockerfile + context: wheels-manylinux From 353685b48f4c5d26eaaffbfdb9cf305f73ec4e73 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Tue, 28 Jan 2025 13:27:02 +0100 Subject: [PATCH 04/19] context --- .github/workflows/build_docker_image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index aea9c31..9011632 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -73,7 +73,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:latest - context: android + context: "{{defaultContext}}:android" build-args: | ANDROID_API=34 ANDROID_ARCH=${{ matrix.arch }} From ae9d31e5e602fe9c2be17483e0a4949dd2cbd812 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Tue, 28 Jan 2025 13:29:38 +0100 Subject: [PATCH 05/19] fix --- .github/workflows/build_docker_image.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 9011632..ef40c9b 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -26,7 +26,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-ci:latest - context: ci + context: "{{defaultContext}}:ci" build_f3d-wasm: runs-on: ubuntu-latest @@ -44,7 +44,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-wasm:latest - context: webassembly + context: "{{defaultContext}}:webassembly" build-args: | CMAKE_BUILD_PARALLEL_LEVEL=4 ASSIMP_VERSION=v5.4.2 @@ -98,7 +98,7 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-superbuild-ci:latest - context: superbuild + context: "{{defaultContext}}:superbuild" build_f3d-wheels-manylinux-ci: runs-on: ubuntu-latest @@ -117,4 +117,4 @@ jobs: with: push: ${{ github.ref == 'refs/heads/main' }} tags: ghcr.io/f3d-app/f3d-wheels-manylinux-ci:latest - context: wheels-manylinux + context: "{{defaultContext}}:wheels-manylinux" From 97f4b8dcabf8dc03adbfc870e7d8f9e6c4d92c43 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 09:01:37 +0100 Subject: [PATCH 06/19] fix --- android/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/Dockerfile b/android/Dockerfile index 6451b4f..fe82730 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -77,7 +77,7 @@ ADD https://gitlab.kitware.com/vtk/vtk/-/archive/$VTK_VERSION/vtk-$VTK_VERSION.t RUN mkdir -p /vtk-src && tar -xzf /vtk-src.tar.gz -C /vtk-src --strip-components 1 && rm -rf /vtk-src.tar.gz RUN cmake -S /vtk-src -B /vtk-build \ - -DANDROID_ARCH=$ANDROID_ARCH \ + -DANDROID_ARCH_ABI=$ANDROID_ARCH \ -DANDROID_NATIVE_API_LEVEL=$ANDROID_API \ -DANDROID_NDK=/ndk \ -DCMAKE_BUILD_TYPE=Release \ From ace6745c4d54b8eb0c08a9c8b6a4901101de0edc Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 10:33:30 +0100 Subject: [PATCH 07/19] try --- android/Dockerfile | 8 ++++---- android/android-toolchain.cmake | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/android/Dockerfile b/android/Dockerfile index fe82730..84d57ef 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -47,7 +47,7 @@ RUN cmake -S /assimp-src -B /assimp-build \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends/$ANDROID_ARCH \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF \ -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \ -DASSIMP_BUILD_3MF_IMPORTER=ON \ @@ -58,7 +58,7 @@ RUN cmake -S /assimp-src -B /assimp-build \ -DASSIMP_BUILD_X_IMPORTER=ON \ -DASSIMP_BUILD_SAMPLES=OFF \ -DASSIMP_BUILD_TESTS=OFF \ - -DASSIMP_BUILD_ZLIB=ON \ + -DASSIMP_BUILD_ZLIB=OFF \ -DASSIMP_NO_EXPORT=ON \ -DASSIMP_WARNINGS_AS_ERRORS=OFF @@ -92,5 +92,5 @@ FROM base ENV CMAKE_TOOLCHAIN_FILE /android-toolchain.cmake -COPY --from=assimp /depends/$ANDROID_ARCH /depends/$ANDROID_ARCH -COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends/$ANDROID_ARCH +COPY --from=assimp /depends /depends +COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends diff --git a/android/android-toolchain.cmake b/android/android-toolchain.cmake index 1c33cd7..feaf461 100644 --- a/android/android-toolchain.cmake +++ b/android/android-toolchain.cmake @@ -1,6 +1,8 @@ +# See https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-android-with-the-ndk set(CMAKE_SYSTEM_NAME Android) -set(CMAKE_SYSTEM_VERSION $ENV{ANDROID_API_VERSION}) +set(CMAKE_SYSTEM_VERSION $ENV{ANDROID_API}) + set(CMAKE_ANDROID_ARCH_ABI $ENV{ANDROID_ARCH}) set(CMAKE_ANDROID_NDK /ndk) -set(CMAKE_FIND_ROOT_PATH /depends/$ENV{ANDROID_ARCH}) +set(CMAKE_FIND_ROOT_PATH /depends) From bbf01efc4de5deb356489139679335fd1989cbc6 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 21:44:26 +0100 Subject: [PATCH 08/19] rm --- android/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/Dockerfile b/android/Dockerfile index 84d57ef..ebbcf21 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -25,7 +25,7 @@ RUN apt update && apt install -y \ # Install NDK RUN wget https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK-linux.zip -RUN unzip -qq android-ndk-$ANDROID_NDK-linux.zip +RUN unzip -qq android-ndk-$ANDROID_NDK-linux.zip && rm -rf android-ndk-$ANDROID_NDK-linux.zip RUN mv android-ndk-$ANDROID_NDK /ndk # Copy toolchain From 8bc2ffb053394c64d43c639023e9507eedfe5365 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 23:04:09 +0100 Subject: [PATCH 09/19] more deps! --- .github/workflows/build_docker_image.yml | 15 +++- android/Dockerfile | 104 +++++++++++++++++++++++ 2 files changed, 115 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index ef40c9b..8a76796 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -8,6 +8,9 @@ on: - main workflow_dispatch: +env: + VTK_SHA: 6a898fd91da30d3ff903416bf856f0d1cea82cdf + jobs: build_f3d-ci: @@ -43,14 +46,16 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-wasm:latest + tags: ghcr.io/f3d-app/f3d-wasm:${{ env.VTK_SHA }} context: "{{defaultContext}}:webassembly" build-args: | CMAKE_BUILD_PARALLEL_LEVEL=4 + ALEMBIC_VERSION=1.8.8 ASSIMP_VERSION=v5.4.2 DRACO_VERSION=1.5.7 + IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 - VTK_VERSION=6a898fd91da30d3ff903416bf856f0d1cea82cdf + VTK_VERSION=${{ env.VTK_SHA }} build_f3d-android: strategy: @@ -72,7 +77,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:latest + tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:${{ env.VTK_SHA }} context: "{{defaultContext}}:android" build-args: | ANDROID_API=34 @@ -80,7 +85,9 @@ jobs: ANDROID_NDK=r26b CMAKE_BUILD_PARALLEL_LEVEL=4 ASSIMP_VERSION=v5.4.2 - VTK_VERSION=547c6d2d962f466ea1aa3f22b899576926a124f5 + DRACO_VERSION=1.5.7 + OCCT_VERSION=V7_8_1 + VTK_VERSION=${{ env.VTK_SHA }} build_f3d-superbuild-ci: runs-on: ubuntu-latest diff --git a/android/Dockerfile b/android/Dockerfile index ebbcf21..12f9c21 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -31,6 +31,51 @@ RUN mv android-ndk-$ANDROID_NDK /ndk # Copy toolchain COPY android-toolchain.cmake / +###################################### +# IMath +###################################### +FROM base AS imath + +ARG IMATH_VERSION +RUN [ -n "$IMATH_VERSION" ] + +ADD https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/$IMATH_VERSION.tar.gz /imath-src.tar.gz + +RUN mkdir -p /imath-src && tar -xzf /imath-src.tar.gz -C /imath-src --strip-components 1 && rm -rf /imath-src.tar.gz + +RUN cmake -S /imath-src -B /imath-build \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS==OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends + +RUN cmake --build /imath-build --target install && rm -rf /imath-src /imath-build + +###################################### +# Alembic +###################################### +FROM imath AS alembic + +ARG ALEMBIC_VERSION +RUN [ -n "$ALEMBIC_VERSION" ] + +ADD https://github.com/alembic/alembic/archive/refs/tags/$ALEMBIC_VERSION.tar.gz /alembic-src.tar.gz + +RUN mkdir -p /alembic-src && tar -xzf /alembic-src.tar.gz -C /alembic-src --strip-components 1 && rm -rf /alembic-src.tar.gz + +RUN cmake -S /alembic-src -B /alembic-build \ + -DALEMBIC_LIB_INSTALL_DIR=lib \ + -DALEMBIC_SHARED_LIBS=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DCMAKE_PREFIX_PATH:PATH=/depends \ + -DUSE_BINARIES=OFF \ + -DUSE_TESTS=OFF + +RUN cmake --build /alembic-build --target install && rm -rf /alembic-src /alembic-build + ###################################### # Assimp ###################################### @@ -64,6 +109,62 @@ RUN cmake -S /assimp-src -B /assimp-build \ RUN cmake --build /assimp-build --target install && rm -rf /assimp-src /assimp-build +###################################### +# OCCT +###################################### +FROM base AS occt + +ARG OCCT_VERSION +RUN [ -n "$OCCT_VERSION" ] + +ADD https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/$OCCT_VERSION.tar.gz /occt-src.tar.gz + +RUN mkdir -p /occt-src && tar -xzf /occt-src.tar.gz -C /occt-src --strip-components 1 && rm -rf /occt-src.tar.gz + +RUN cmake -S /occt-src -B /occt-build \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DBUILD_ADDITIONAL_TOOLKITS="TKDESTEP;TKDEIGES;TKMesh;TKBinXCAF" \ + -DBUILD_DOC_Overview=OFF \ + -DBUILD_LIBRARY_TYPE=Static \ + -DBUILD_MODULE_ApplicationFramework=OFF \ + -DBUILD_MODULE_DETools=OFF \ + -DBUILD_MODULE_DataExchange=OFF \ + -DBUILD_MODULE_Draw=OFF \ + -DBUILD_MODULE_FoundationClasses=OFF \ + -DBUILD_MODULE_ModelingAlgorithms=OFF \ + -DBUILD_MODULE_ModelingData=OFF \ + -DBUILD_MODULE_Visualization=OFF \ + -DUSE_FREETYPE=OFF + +RUN cmake --build /occt-build --target install && rm -rf /occt-src /occt-build + +###################################### +# Draco +###################################### +FROM base AS draco + +ARG CMAKE_BUILD_PARALLEL_LEVEL=8 +ARG DRACO_VERSION +RUN [ -n "$DRACO_VERSION" ] + +ADD https://github.com/google/draco/archive/refs/tags/$DRACO_VERSION.tar.gz /draco-src.tar.gz + +RUN mkdir -p /draco-src && tar -xzf /draco-src.tar.gz -C /draco-src --strip-components 1 && rm -rf /draco-src.tar.gz + +RUN cmake -S /draco-src -B /draco-build \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DDRACO_BACKWARDS_COMPATIBILITY=OFF \ + -DDRACO_JS_GLUE=OFF + +RUN cmake --build /draco-build --target install && rm -rf /draco-src /draco-build + ###################################### # VTK ###################################### @@ -92,5 +193,8 @@ FROM base ENV CMAKE_TOOLCHAIN_FILE /android-toolchain.cmake +COPY --from=alembic /depends /depends COPY --from=assimp /depends /depends +COPY --from=draco /depends /depends +COPY --from=occt /depends /depends COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends From 8f3d84cdebcb665d5f7a86c4e437f082004f150c Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 23:11:50 +0100 Subject: [PATCH 10/19] fix --- .github/workflows/build_docker_image.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 8a76796..2610ae9 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -50,10 +50,8 @@ jobs: context: "{{defaultContext}}:webassembly" build-args: | CMAKE_BUILD_PARALLEL_LEVEL=4 - ALEMBIC_VERSION=1.8.8 ASSIMP_VERSION=v5.4.2 DRACO_VERSION=1.5.7 - IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} @@ -84,8 +82,10 @@ jobs: ANDROID_ARCH=${{ matrix.arch }} ANDROID_NDK=r26b CMAKE_BUILD_PARALLEL_LEVEL=4 + ALEMBIC_VERSION=1.8.8 ASSIMP_VERSION=v5.4.2 DRACO_VERSION=1.5.7 + IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} From 99dbdec48702359ae3d4ad62a120a58d1d62d31f Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 23:28:26 +0100 Subject: [PATCH 11/19] try cache --- .github/workflows/build_docker_image.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 2610ae9..21996a4 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -54,6 +54,8 @@ jobs: DRACO_VERSION=1.5.7 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} + cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache + cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache,mode=max build_f3d-android: strategy: @@ -88,6 +90,8 @@ jobs: IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} + cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache + cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache,mode=max build_f3d-superbuild-ci: runs-on: ubuntu-latest From 40db6b01091f8ff8603d591ce5c6181535f85539 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Wed, 29 Jan 2025 23:34:50 +0100 Subject: [PATCH 12/19] clean --- .github/workflows/build_docker_image.yml | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 21996a4..675d640 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -28,7 +28,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-ci:latest + tags: f3d-app/f3d-ci:latest context: "{{defaultContext}}:ci" build_f3d-wasm: @@ -42,11 +42,14 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-wasm:${{ env.VTK_SHA }} + tags: f3d-app/f3d-wasm:${{ env.VTK_SHA }} context: "{{defaultContext}}:webassembly" build-args: | CMAKE_BUILD_PARALLEL_LEVEL=4 @@ -54,8 +57,8 @@ jobs: DRACO_VERSION=1.5.7 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache - cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache,mode=max + cache-from: type=registry,ref=f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache + cache-to: type=registry,ref=f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd build_f3d-android: strategy: @@ -73,11 +76,14 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:${{ env.VTK_SHA }} + tags: f3d-app/f3d-android-${{ matrix.arch }}:${{ env.VTK_SHA }} context: "{{defaultContext}}:android" build-args: | ANDROID_API=34 @@ -90,8 +96,8 @@ jobs: IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache - cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache,mode=max + cache-from: type=registry,ref=f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache + cache-to: type=registry,ref=f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd build_f3d-superbuild-ci: runs-on: ubuntu-latest @@ -108,7 +114,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-superbuild-ci:latest + tags: f3d-app/f3d-superbuild-ci:latest context: "{{defaultContext}}:superbuild" build_f3d-wheels-manylinux-ci: @@ -127,5 +133,5 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: ghcr.io/f3d-app/f3d-wheels-manylinux-ci:latest + tags: f3d-app/f3d-wheels-manylinux-ci:latest context: "{{defaultContext}}:wheels-manylinux" From 4d71f3f350eb555f21025c9591039ff42410cc6f Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 08:56:41 +0100 Subject: [PATCH 13/19] gh --- .github/workflows/build_docker_image.yml | 18 +++++++++--------- android/Dockerfile | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 675d640..6757c84 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -28,7 +28,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: f3d-app/f3d-ci:latest + tags: ghcr.io/f3d-app/f3d-ci:latest context: "{{defaultContext}}:ci" build_f3d-wasm: @@ -49,7 +49,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: f3d-app/f3d-wasm:${{ env.VTK_SHA }} + tags: ghcr.io/f3d-app/f3d-wasm:${{ env.VTK_SHA }} context: "{{defaultContext}}:webassembly" build-args: | CMAKE_BUILD_PARALLEL_LEVEL=4 @@ -57,8 +57,8 @@ jobs: DRACO_VERSION=1.5.7 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache - cache-to: type=registry,ref=f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd + cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache + cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd build_f3d-android: strategy: @@ -83,7 +83,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: f3d-app/f3d-android-${{ matrix.arch }}:${{ env.VTK_SHA }} + tags: ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:${{ env.VTK_SHA }} context: "{{defaultContext}}:android" build-args: | ANDROID_API=34 @@ -96,8 +96,8 @@ jobs: IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache - cache-to: type=registry,ref=f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd + cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache + cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd build_f3d-superbuild-ci: runs-on: ubuntu-latest @@ -114,7 +114,7 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: f3d-app/f3d-superbuild-ci:latest + tags: ghcr.io/f3d-app/f3d-superbuild-ci:latest context: "{{defaultContext}}:superbuild" build_f3d-wheels-manylinux-ci: @@ -133,5 +133,5 @@ jobs: uses: docker/build-push-action@v6 with: push: ${{ github.ref == 'refs/heads/main' }} - tags: f3d-app/f3d-wheels-manylinux-ci:latest + tags: ghcr.io/f3d-app/f3d-wheels-manylinux-ci:latest context: "{{defaultContext}}:wheels-manylinux" diff --git a/android/Dockerfile b/android/Dockerfile index 12f9c21..3146b2b 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -191,7 +191,7 @@ RUN cmake --build /vtk-build && rm -rf /vtk-src ###################################### FROM base -ENV CMAKE_TOOLCHAIN_FILE /android-toolchain.cmake +ENV CMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake COPY --from=alembic /depends /depends COPY --from=assimp /depends /depends From 81ea912f0c314c2ec56832d8d3a0f9ef37af7b0e Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 10:00:30 +0100 Subject: [PATCH 14/19] try --- .github/workflows/build_docker_image.yml | 9 +++++---- android/Dockerfile | 25 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 6757c84..ad293f8 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -57,8 +57,8 @@ jobs: DRACO_VERSION=1.5.7 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache - cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-wasm-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd + cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-wasm:buildcache + cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-wasm:buildcache,mode=max,compression=zstd build_f3d-android: strategy: @@ -95,9 +95,10 @@ jobs: DRACO_VERSION=1.5.7 IMATH_VERSION=v3.1.12 OCCT_VERSION=V7_8_1 + OPENEXR_VERSION=v3.3.2 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache - cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}-${{ env.VTK_SHA }}:buildcache,mode=max,compression=zstd + cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:buildcache + cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:buildcache,mode=max,compression=zstd build_f3d-superbuild-ci: runs-on: ubuntu-latest diff --git a/android/Dockerfile b/android/Dockerfile index 3146b2b..c4818b8 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -165,6 +165,30 @@ RUN cmake -S /draco-src -B /draco-build \ RUN cmake --build /draco-build --target install && rm -rf /draco-src /draco-build +###################################### +# OpenEXR +###################################### +FROM imath AS openexr + +ARG CMAKE_BUILD_PARALLEL_LEVEL=8 +ARG OPENEXR_VERSION +RUN [ -n "$OPENEXR_VERSION" ] + +ADD https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/$OPENEXR_VERSION.tar.gz /openexr-src.tar.gz + +RUN mkdir -p /openexr-src && tar -xzf /openexr-src.tar.gz -C /openexr-src --strip-components 1 && rm -rf /openexr-src.tar.gz + +RUN cmake -S /openexr-src -B /openexr-build \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DOPENEXR_BUILD_TOOLS=OFF \ + -DOPENEXR_BUILD_EXAMPLES=OFF + +RUN cmake --build /openexr-build --target install && rm -rf /openexr-src /openexr-build + ###################################### # VTK ###################################### @@ -197,4 +221,5 @@ COPY --from=alembic /depends /depends COPY --from=assimp /depends /depends COPY --from=draco /depends /depends COPY --from=occt /depends /depends +COPY --from=openexr /depends /depends COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends From 41ee2b36ff8313d6e211113500b2c05e47e9549f Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 10:01:28 +0100 Subject: [PATCH 15/19] to revert --- android/Dockerfile | 221 --------------------------------------------- 1 file changed, 221 deletions(-) diff --git a/android/Dockerfile b/android/Dockerfile index c4818b8..1fcf385 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -2,224 +2,3 @@ FROM ubuntu:24.04 AS base ARG CMAKE_BUILD_PARALLEL_LEVEL=8 ENV CMAKE_BUILD_PARALLEL_LEVEL=$CMAKE_BUILD_PARALLEL_LEVEL - -ARG ANDROID_NDK -RUN [ -n "$ANDROID_NDK" ] - -ARG ANDROID_API -RUN [ -n "$ANDROID_API" ] -ENV ANDROID_API=$ANDROID_API - -ARG ANDROID_ARCH -RUN [ -n "$ANDROID_ARCH" ] -ENV ANDROID_ARCH=$ANDROID_ARCH - -# Install generic compilation tools -RUN apt update && apt install -y \ - build-essential \ - cmake \ - default-jdk \ - git \ - unzip \ - wget - -# Install NDK -RUN wget https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK-linux.zip -RUN unzip -qq android-ndk-$ANDROID_NDK-linux.zip && rm -rf android-ndk-$ANDROID_NDK-linux.zip -RUN mv android-ndk-$ANDROID_NDK /ndk - -# Copy toolchain -COPY android-toolchain.cmake / - -###################################### -# IMath -###################################### -FROM base AS imath - -ARG IMATH_VERSION -RUN [ -n "$IMATH_VERSION" ] - -ADD https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/$IMATH_VERSION.tar.gz /imath-src.tar.gz - -RUN mkdir -p /imath-src && tar -xzf /imath-src.tar.gz -C /imath-src --strip-components 1 && rm -rf /imath-src.tar.gz - -RUN cmake -S /imath-src -B /imath-build \ - -DBUILD_TESTING=OFF \ - -DBUILD_SHARED_LIBS==OFF \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends - -RUN cmake --build /imath-build --target install && rm -rf /imath-src /imath-build - -###################################### -# Alembic -###################################### -FROM imath AS alembic - -ARG ALEMBIC_VERSION -RUN [ -n "$ALEMBIC_VERSION" ] - -ADD https://github.com/alembic/alembic/archive/refs/tags/$ALEMBIC_VERSION.tar.gz /alembic-src.tar.gz - -RUN mkdir -p /alembic-src && tar -xzf /alembic-src.tar.gz -C /alembic-src --strip-components 1 && rm -rf /alembic-src.tar.gz - -RUN cmake -S /alembic-src -B /alembic-build \ - -DALEMBIC_LIB_INSTALL_DIR=lib \ - -DALEMBIC_SHARED_LIBS=OFF \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends \ - -DCMAKE_PREFIX_PATH:PATH=/depends \ - -DUSE_BINARIES=OFF \ - -DUSE_TESTS=OFF - -RUN cmake --build /alembic-build --target install && rm -rf /alembic-src /alembic-build - -###################################### -# Assimp -###################################### -FROM base AS assimp - -ARG ASSIMP_VERSION -RUN [ -n "$ASSIMP_VERSION" ] - -ADD https://github.com/assimp/assimp/archive/refs/tags/$ASSIMP_VERSION.tar.gz /assimp-src.tar.gz - -RUN mkdir -p /assimp-src && tar -xzf /assimp-src.tar.gz -C /assimp-src --strip-components 1 && rm -rf /assimp-src.tar.gz - -RUN cmake -S /assimp-src -B /assimp-build \ - -DBUILD_SHARED_LIBS=OFF \ - -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends \ - -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF \ - -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \ - -DASSIMP_BUILD_3MF_IMPORTER=ON \ - -DASSIMP_BUILD_COLLADA_IMPORTER=ON \ - -DASSIMP_BUILD_DXF_IMPORTER=ON \ - -DASSIMP_BUILD_FBX_IMPORTER=ON \ - -DASSIMP_BUILD_OFF_IMPORTER=ON \ - -DASSIMP_BUILD_X_IMPORTER=ON \ - -DASSIMP_BUILD_SAMPLES=OFF \ - -DASSIMP_BUILD_TESTS=OFF \ - -DASSIMP_BUILD_ZLIB=OFF \ - -DASSIMP_NO_EXPORT=ON \ - -DASSIMP_WARNINGS_AS_ERRORS=OFF - -RUN cmake --build /assimp-build --target install && rm -rf /assimp-src /assimp-build - -###################################### -# OCCT -###################################### -FROM base AS occt - -ARG OCCT_VERSION -RUN [ -n "$OCCT_VERSION" ] - -ADD https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/$OCCT_VERSION.tar.gz /occt-src.tar.gz - -RUN mkdir -p /occt-src && tar -xzf /occt-src.tar.gz -C /occt-src --strip-components 1 && rm -rf /occt-src.tar.gz - -RUN cmake -S /occt-src -B /occt-build \ - -DBUILD_SHARED_LIBS=OFF \ - -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends \ - -DBUILD_ADDITIONAL_TOOLKITS="TKDESTEP;TKDEIGES;TKMesh;TKBinXCAF" \ - -DBUILD_DOC_Overview=OFF \ - -DBUILD_LIBRARY_TYPE=Static \ - -DBUILD_MODULE_ApplicationFramework=OFF \ - -DBUILD_MODULE_DETools=OFF \ - -DBUILD_MODULE_DataExchange=OFF \ - -DBUILD_MODULE_Draw=OFF \ - -DBUILD_MODULE_FoundationClasses=OFF \ - -DBUILD_MODULE_ModelingAlgorithms=OFF \ - -DBUILD_MODULE_ModelingData=OFF \ - -DBUILD_MODULE_Visualization=OFF \ - -DUSE_FREETYPE=OFF - -RUN cmake --build /occt-build --target install && rm -rf /occt-src /occt-build - -###################################### -# Draco -###################################### -FROM base AS draco - -ARG CMAKE_BUILD_PARALLEL_LEVEL=8 -ARG DRACO_VERSION -RUN [ -n "$DRACO_VERSION" ] - -ADD https://github.com/google/draco/archive/refs/tags/$DRACO_VERSION.tar.gz /draco-src.tar.gz - -RUN mkdir -p /draco-src && tar -xzf /draco-src.tar.gz -C /draco-src --strip-components 1 && rm -rf /draco-src.tar.gz - -RUN cmake -S /draco-src -B /draco-build \ - -DBUILD_SHARED_LIBS=OFF \ - -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ - -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends \ - -DDRACO_BACKWARDS_COMPATIBILITY=OFF \ - -DDRACO_JS_GLUE=OFF - -RUN cmake --build /draco-build --target install && rm -rf /draco-src /draco-build - -###################################### -# OpenEXR -###################################### -FROM imath AS openexr - -ARG CMAKE_BUILD_PARALLEL_LEVEL=8 -ARG OPENEXR_VERSION -RUN [ -n "$OPENEXR_VERSION" ] - -ADD https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/$OPENEXR_VERSION.tar.gz /openexr-src.tar.gz - -RUN mkdir -p /openexr-src && tar -xzf /openexr-src.tar.gz -C /openexr-src --strip-components 1 && rm -rf /openexr-src.tar.gz - -RUN cmake -S /openexr-src -B /openexr-build \ - -DBUILD_TESTING=OFF \ - -DBUILD_SHARED_LIBS=OFF \ - -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX:PATH=/depends \ - -DOPENEXR_BUILD_TOOLS=OFF \ - -DOPENEXR_BUILD_EXAMPLES=OFF - -RUN cmake --build /openexr-build --target install && rm -rf /openexr-src /openexr-build - -###################################### -# VTK -###################################### -FROM base AS vtk - -ARG VTK_VERSION -RUN [ -n "$VTK_VERSION" ] - -ADD https://gitlab.kitware.com/vtk/vtk/-/archive/$VTK_VERSION/vtk-$VTK_VERSION.tar.gz /vtk-src.tar.gz - -RUN mkdir -p /vtk-src && tar -xzf /vtk-src.tar.gz -C /vtk-src --strip-components 1 && rm -rf /vtk-src.tar.gz - -RUN cmake -S /vtk-src -B /vtk-build \ - -DANDROID_ARCH_ABI=$ANDROID_ARCH \ - -DANDROID_NATIVE_API_LEVEL=$ANDROID_API \ - -DANDROID_NDK=/ndk \ - -DCMAKE_BUILD_TYPE=Release \ - -DVTK_ANDROID_BUILD=ON - -RUN cmake --build /vtk-build && rm -rf /vtk-src - -###################################### -# Copy artifacts from previous builds -###################################### -FROM base - -ENV CMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake - -COPY --from=alembic /depends /depends -COPY --from=assimp /depends /depends -COPY --from=draco /depends /depends -COPY --from=occt /depends /depends -COPY --from=openexr /depends /depends -COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends From bfa2f4d06c8b376cf46eefae3ea9e848eb62de2c Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 10:03:07 +0100 Subject: [PATCH 16/19] more --- android/Dockerfile | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/android/Dockerfile b/android/Dockerfile index 1fcf385..adcde03 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -2,3 +2,52 @@ FROM ubuntu:24.04 AS base ARG CMAKE_BUILD_PARALLEL_LEVEL=8 ENV CMAKE_BUILD_PARALLEL_LEVEL=$CMAKE_BUILD_PARALLEL_LEVEL + +ARG ANDROID_NDK +RUN [ -n "$ANDROID_NDK" ] + +ARG ANDROID_API +RUN [ -n "$ANDROID_API" ] +ENV ANDROID_API=$ANDROID_API + +ARG ANDROID_ARCH +RUN [ -n "$ANDROID_ARCH" ] +ENV ANDROID_ARCH=$ANDROID_ARCH + +# Install generic compilation tools +RUN apt update && apt install -y \ + build-essential \ + cmake \ + default-jdk \ + git \ + unzip \ + wget + +# Install NDK +RUN wget https://dl.google.com/android/repository/android-ndk-$ANDROID_NDK-linux.zip +RUN unzip -qq android-ndk-$ANDROID_NDK-linux.zip && rm -rf android-ndk-$ANDROID_NDK-linux.zip +RUN mv android-ndk-$ANDROID_NDK /ndk + +# Copy toolchain +COPY android-toolchain.cmake / + +###################################### +# IMath +###################################### +FROM base AS imath + +ARG IMATH_VERSION +RUN [ -n "$IMATH_VERSION" ] + +ADD https://github.com/AcademySoftwareFoundation/Imath/archive/refs/tags/$IMATH_VERSION.tar.gz /imath-src.tar.gz + +RUN mkdir -p /imath-src && tar -xzf /imath-src.tar.gz -C /imath-src --strip-components 1 && rm -rf /imath-src.tar.gz + +RUN cmake -S /imath-src -B /imath-build \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS==OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends + +RUN cmake --build /imath-build --target install && rm -rf /imath-src /imath-build From 9803fb8ac156e1e5834ba57f8423471895214d7e Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 10:29:41 +0100 Subject: [PATCH 17/19] remove caches --- .github/workflows/build_docker_image.yml | 4 - android/Dockerfile | 172 +++++++++++++++++++++++ 2 files changed, 172 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index ad293f8..2d41a49 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -57,8 +57,6 @@ jobs: DRACO_VERSION=1.5.7 OCCT_VERSION=V7_8_1 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-wasm:buildcache - cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-wasm:buildcache,mode=max,compression=zstd build_f3d-android: strategy: @@ -97,8 +95,6 @@ jobs: OCCT_VERSION=V7_8_1 OPENEXR_VERSION=v3.3.2 VTK_VERSION=${{ env.VTK_SHA }} - cache-from: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:buildcache - cache-to: type=registry,ref=ghcr.io/f3d-app/f3d-android-${{ matrix.arch }}:buildcache,mode=max,compression=zstd build_f3d-superbuild-ci: runs-on: ubuntu-latest diff --git a/android/Dockerfile b/android/Dockerfile index adcde03..c4818b8 100644 --- a/android/Dockerfile +++ b/android/Dockerfile @@ -51,3 +51,175 @@ RUN cmake -S /imath-src -B /imath-build \ -DCMAKE_INSTALL_PREFIX:PATH=/depends RUN cmake --build /imath-build --target install && rm -rf /imath-src /imath-build + +###################################### +# Alembic +###################################### +FROM imath AS alembic + +ARG ALEMBIC_VERSION +RUN [ -n "$ALEMBIC_VERSION" ] + +ADD https://github.com/alembic/alembic/archive/refs/tags/$ALEMBIC_VERSION.tar.gz /alembic-src.tar.gz + +RUN mkdir -p /alembic-src && tar -xzf /alembic-src.tar.gz -C /alembic-src --strip-components 1 && rm -rf /alembic-src.tar.gz + +RUN cmake -S /alembic-src -B /alembic-build \ + -DALEMBIC_LIB_INSTALL_DIR=lib \ + -DALEMBIC_SHARED_LIBS=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DCMAKE_PREFIX_PATH:PATH=/depends \ + -DUSE_BINARIES=OFF \ + -DUSE_TESTS=OFF + +RUN cmake --build /alembic-build --target install && rm -rf /alembic-src /alembic-build + +###################################### +# Assimp +###################################### +FROM base AS assimp + +ARG ASSIMP_VERSION +RUN [ -n "$ASSIMP_VERSION" ] + +ADD https://github.com/assimp/assimp/archive/refs/tags/$ASSIMP_VERSION.tar.gz /assimp-src.tar.gz + +RUN mkdir -p /assimp-src && tar -xzf /assimp-src.tar.gz -C /assimp-src --strip-components 1 && rm -rf /assimp-src.tar.gz + +RUN cmake -S /assimp-src -B /assimp-build \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT=OFF \ + -DASSIMP_BUILD_ASSIMP_TOOLS=OFF \ + -DASSIMP_BUILD_3MF_IMPORTER=ON \ + -DASSIMP_BUILD_COLLADA_IMPORTER=ON \ + -DASSIMP_BUILD_DXF_IMPORTER=ON \ + -DASSIMP_BUILD_FBX_IMPORTER=ON \ + -DASSIMP_BUILD_OFF_IMPORTER=ON \ + -DASSIMP_BUILD_X_IMPORTER=ON \ + -DASSIMP_BUILD_SAMPLES=OFF \ + -DASSIMP_BUILD_TESTS=OFF \ + -DASSIMP_BUILD_ZLIB=OFF \ + -DASSIMP_NO_EXPORT=ON \ + -DASSIMP_WARNINGS_AS_ERRORS=OFF + +RUN cmake --build /assimp-build --target install && rm -rf /assimp-src /assimp-build + +###################################### +# OCCT +###################################### +FROM base AS occt + +ARG OCCT_VERSION +RUN [ -n "$OCCT_VERSION" ] + +ADD https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/$OCCT_VERSION.tar.gz /occt-src.tar.gz + +RUN mkdir -p /occt-src && tar -xzf /occt-src.tar.gz -C /occt-src --strip-components 1 && rm -rf /occt-src.tar.gz + +RUN cmake -S /occt-src -B /occt-build \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DBUILD_ADDITIONAL_TOOLKITS="TKDESTEP;TKDEIGES;TKMesh;TKBinXCAF" \ + -DBUILD_DOC_Overview=OFF \ + -DBUILD_LIBRARY_TYPE=Static \ + -DBUILD_MODULE_ApplicationFramework=OFF \ + -DBUILD_MODULE_DETools=OFF \ + -DBUILD_MODULE_DataExchange=OFF \ + -DBUILD_MODULE_Draw=OFF \ + -DBUILD_MODULE_FoundationClasses=OFF \ + -DBUILD_MODULE_ModelingAlgorithms=OFF \ + -DBUILD_MODULE_ModelingData=OFF \ + -DBUILD_MODULE_Visualization=OFF \ + -DUSE_FREETYPE=OFF + +RUN cmake --build /occt-build --target install && rm -rf /occt-src /occt-build + +###################################### +# Draco +###################################### +FROM base AS draco + +ARG CMAKE_BUILD_PARALLEL_LEVEL=8 +ARG DRACO_VERSION +RUN [ -n "$DRACO_VERSION" ] + +ADD https://github.com/google/draco/archive/refs/tags/$DRACO_VERSION.tar.gz /draco-src.tar.gz + +RUN mkdir -p /draco-src && tar -xzf /draco-src.tar.gz -C /draco-src --strip-components 1 && rm -rf /draco-src.tar.gz + +RUN cmake -S /draco-src -B /draco-build \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DDRACO_BACKWARDS_COMPATIBILITY=OFF \ + -DDRACO_JS_GLUE=OFF + +RUN cmake --build /draco-build --target install && rm -rf /draco-src /draco-build + +###################################### +# OpenEXR +###################################### +FROM imath AS openexr + +ARG CMAKE_BUILD_PARALLEL_LEVEL=8 +ARG OPENEXR_VERSION +RUN [ -n "$OPENEXR_VERSION" ] + +ADD https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/$OPENEXR_VERSION.tar.gz /openexr-src.tar.gz + +RUN mkdir -p /openexr-src && tar -xzf /openexr-src.tar.gz -C /openexr-src --strip-components 1 && rm -rf /openexr-src.tar.gz + +RUN cmake -S /openexr-src -B /openexr-build \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=OFF \ + -DCMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX:PATH=/depends \ + -DOPENEXR_BUILD_TOOLS=OFF \ + -DOPENEXR_BUILD_EXAMPLES=OFF + +RUN cmake --build /openexr-build --target install && rm -rf /openexr-src /openexr-build + +###################################### +# VTK +###################################### +FROM base AS vtk + +ARG VTK_VERSION +RUN [ -n "$VTK_VERSION" ] + +ADD https://gitlab.kitware.com/vtk/vtk/-/archive/$VTK_VERSION/vtk-$VTK_VERSION.tar.gz /vtk-src.tar.gz + +RUN mkdir -p /vtk-src && tar -xzf /vtk-src.tar.gz -C /vtk-src --strip-components 1 && rm -rf /vtk-src.tar.gz + +RUN cmake -S /vtk-src -B /vtk-build \ + -DANDROID_ARCH_ABI=$ANDROID_ARCH \ + -DANDROID_NATIVE_API_LEVEL=$ANDROID_API \ + -DANDROID_NDK=/ndk \ + -DCMAKE_BUILD_TYPE=Release \ + -DVTK_ANDROID_BUILD=ON + +RUN cmake --build /vtk-build && rm -rf /vtk-src + +###################################### +# Copy artifacts from previous builds +###################################### +FROM base + +ENV CMAKE_TOOLCHAIN_FILE=/android-toolchain.cmake + +COPY --from=alembic /depends /depends +COPY --from=assimp /depends /depends +COPY --from=draco /depends /depends +COPY --from=occt /depends /depends +COPY --from=openexr /depends /depends +COPY --from=vtk /vtk-build/CMakeExternals/Install/vtk-android /depends From 19537e6d40fd277561ac1562aeed6f844e54a379 Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 13:37:16 +0100 Subject: [PATCH 18/19] review --- .github/workflows/build_docker_image.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index 2d41a49..f99be4b 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -42,9 +42,6 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and push uses: docker/build-push-action@v6 with: @@ -74,9 +71,6 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and push uses: docker/build-push-action@v6 with: From b69b7fbf4e7cab5f29c5545ce91720cc7e85b09c Mon Sep 17 00:00:00 2001 From: Michael Migliore Date: Thu, 30 Jan 2025 13:59:12 +0100 Subject: [PATCH 19/19] review --- .github/workflows/build_docker_image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index f99be4b..d8d00ce 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -9,7 +9,7 @@ on: workflow_dispatch: env: - VTK_SHA: 6a898fd91da30d3ff903416bf856f0d1cea82cdf + VTK_SHA: 1ab19927725cb4b86af8afaf255ed0ffc9fc913a jobs: