diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index c4ff056640102..1612b078f3a19 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -9,7 +9,6 @@ on: - 'DEPS' workflow_dispatch: - jobs: build: runs-on: ubuntu-latest diff --git a/ci/docker/tizen/Dockerfile b/ci/docker/tizen/Dockerfile index d5476463a385a..abc2b1593f90f 100644 --- a/ci/docker/tizen/Dockerfile +++ b/ci/docker/tizen/Dockerfile @@ -1,8 +1,12 @@ -FROM ghcr.io/flutter-tizen/tizen-tools:latest +# +# Stage for build-engine-base +# +FROM ghcr.io/flutter-tizen/tizen-tools:latest AS build-engine-base -RUN apt-get update && \ - apt-get install -y git curl ca-certificates python python3 xz-utils pkg-config \ - libncurses5 libfreetype6-dev && \ +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update +RUN apt-get install -y git curl pkg-config ca-certificates xz-utils python python3 libncurses5 && \ apt-get clean # Install depot tools. @@ -13,3 +17,33 @@ RUN git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_t # Add engine building tools. ADD tools/* /engine/tools/ ENV PATH=$PATH:/engine/tools + + +# +# Stage for build-engine-with-efl +# +FROM build-engine-base AS build-engine-with-efl + +# Install dependencies for building EFL. +RUN apt-get install -y build-essential check meson ninja-build && \ + apt-get clean +RUN apt-get install -y libssl-dev libsystemd-dev libglib2.0-dev libudev-dev libmount-dev libdbus-1-dev libunwind-dev && \ + apt-get clean +RUN apt-get install -y libjpeg-dev libopenjp2-7-dev libgif-dev libtiff5-dev librsvg2-dev libheif-dev libwebp-dev libraw-dev \ + libpoppler-dev libpoppler-cpp-dev libspectre-dev libfreetype6-dev libfontconfig1-dev libharfbuzz-dev \ + libpulse-dev libsndfile1-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ + libibus-1.0-dev libscim-dev libfribidi-dev libinput-dev liblua5.2-dev libluajit-5.1-dev \ + libx11-dev libxext-dev libxrender-dev libxcursor-dev libxcomposite-dev libxinerama-dev libxrandr-dev \ + libxtst-dev libxss-dev libxdamage-dev libgl1-mesa-dev xvfb && \ + apt-get clean + +# Build and install EFL for host build. +RUN git clone --depth 1 https://git.enlightenment.org/core/efl.git -b efl-1.25 /tmp/efl && \ + meson -Dbuild-examples=false -Dbuild-tests=false /tmp/efl /tmp/efl/build && \ + ninja -C /tmp/efl/build && \ + ninja -C /tmp/efl/build install && \ + rm -fr /tmp/efl +RUN ldconfig + +# Start dbus service when running this container. +ENTRYPOINT /etc/init.d/dbus start && /bin/bash diff --git a/ci/docker/tizen/build-docker.sh b/ci/docker/tizen/build-docker.sh index 71bb7a5a418ac..57bd591d42d93 100755 --- a/ci/docker/tizen/build-docker.sh +++ b/ci/docker/tizen/build-docker.sh @@ -3,5 +3,4 @@ IMAGE_NAME=ghcr.io/flutter-tizen/build-engine IMAGE_TAG=latest -docker pull $IMAGE_NAME:$IMAGE_TAG docker build --tag $IMAGE_NAME:$IMAGE_TAG . diff --git a/ci/docker/tizen/tools/build-engine.sh b/ci/docker/tizen/tools/build-engine.sh index fa56d4567e708..d87793f9ddfc7 100755 --- a/ci/docker/tizen/tools/build-engine.sh +++ b/ci/docker/tizen/tools/build-engine.sh @@ -5,14 +5,35 @@ set -e -BUILD_MODE=$1 -BUILD_ARCH=$2 -BUILD_TRIPLE=$3 +BUILD_MODE=debug +BUILD_OS=host -if [[ -z "$BUILD_MODE" || -z "$BUILD_ARCH" || -z "$BUILD_TRIPLE" ]]; then - echo "Usage: $(basename "$0") " - exit 1 -fi +while [ $# -ne 0 ]; do + name=$1 + case "$name" in + -a | --target-arch) + shift; BUILD_ARCH=$1 + ;; + -m | --runtime-mode) + shift; BUILD_MODE=$1 + ;; + -t | --target-triple) + shift; BUILD_TRIPLE=$1 + ;; + -o | --target-os) + shift; BUILD_OS=$1 + ;; + --build-target) + shift; BUILD_TARGET=$1 + ;; + *) + echo "Unknown argument \`$name\`" + exit 1 + ;; + esac + + shift +done if [[ -z "$TIZEN_TOOLS_PATH" ]]; then TIZEN_TOOLS_PATH=/tizen_tools @@ -22,23 +43,34 @@ if [ ! -d "$TIZEN_TOOLS_PATH" ]; then exit 1 fi -# FIXME: Remove unsupported options in BUILD.gn. -sed -i 's/"-Wno-non-c-typedef-for-linkage",//g' src/build/config/compiler/BUILD.gn -sed -i 's/"-Wno-psabi",//g' src/build/config/compiler/BUILD.gn - -# Run gn. -src/flutter/tools/gn \ - --target-os linux \ - --linux-cpu $BUILD_ARCH \ - --no-goma \ - --target-toolchain "$TIZEN_TOOLS_PATH"/toolchains \ - --target-sysroot "$TIZEN_TOOLS_PATH"/sysroot/$BUILD_ARCH \ - --target-triple $BUILD_TRIPLE \ - --runtime-mode $BUILD_MODE \ - --enable-fontconfig \ - --embedder-for-target \ - --disable-desktop-embeddings \ - --build-tizen-shell - -# Run ninja. -ninja -C src/out/linux_${BUILD_MODE}_${BUILD_ARCH} +if [[ "$BUILD_OS" == "host" ]]; then + src/flutter/tools/gn \ + --no-goma \ + --runtime-mode $BUILD_MODE \ + --enable-fontconfig \ + --build-tizen-shell + ninja -C src/out/${BUILD_OS}_${BUILD_MODE} ${BUILD_TARGET} +else + if [[ -z "$BUILD_ARCH" || -z "$BUILD_TRIPLE" ]]; then + echo "required arguments are missing." + exit 1 + fi + + # FIXME: Remove unsupported options of tizen toolchains from BUILD.gn. + sed -i 's/"-Wno-non-c-typedef-for-linkage",//g' src/build/config/compiler/BUILD.gn + sed -i 's/"-Wno-psabi",//g' src/build/config/compiler/BUILD.gn + + src/flutter/tools/gn \ + --target-os $BUILD_OS \ + --linux-cpu $BUILD_ARCH \ + --no-goma \ + --target-toolchain "$TIZEN_TOOLS_PATH"/toolchains \ + --target-sysroot "$TIZEN_TOOLS_PATH"/sysroot/$BUILD_ARCH \ + --target-triple $BUILD_TRIPLE \ + --runtime-mode $BUILD_MODE \ + --enable-fontconfig \ + --embedder-for-target \ + --disable-desktop-embeddings \ + --build-tizen-shell + ninja -C src/out/${BUILD_OS}_${BUILD_MODE}_${BUILD_ARCH} ${BUILD_TARGET} +fi