diff --git a/.github/workflows/platform_natives.yaml b/.github/workflows/platform_natives.yaml index e2824dd..408246d 100644 --- a/.github/workflows/platform_natives.yaml +++ b/.github/workflows/platform_natives.yaml @@ -12,22 +12,22 @@ jobs: strategy: matrix: include: - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/386", implementation: "tdlight"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/386", implementation: "tdlib"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/amd64", implementation: "tdlight"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/amd64", implementation: "tdlib"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/armhf", implementation: "tdlight"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/armhf", implementation: "tdlib"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/arm64", implementation: "tdlight"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/arm64", implementation: "tdlib"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/s390x", implementation: "tdlight"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/s390x", implementation: "tdlib"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/ppc64le", implementation: "tdlight"} - - {os: ubuntu-20.04, usedocker: "false", arch: "linux/ppc64le", implementation: "tdlib"} - - {os: windows-2019, usedocker: "false", arch: "amd64", implementation: "tdlight", vcpkgCommitId: "30124253eecff36bc90f73341edbfb4f845e2a1e", triplet: "x64-windows-static"} - - {os: windows-2019, usedocker: "false", arch: "amd64", implementation: "tdlib", vcpkgCommitId: "30124253eecff36bc90f73341edbfb4f845e2a1e", triplet: "x64-windows-static"} - - {os: macos-10.15, usedocker: "false", arch: "amd64", implementation: "tdlight"} - - {os: macos-10.15, usedocker: "false", arch: "amd64", implementation: "tdlib"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/386", implementation: "tdlight"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/386", implementation: "tdlib"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/amd64", implementation: "tdlight"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/amd64", implementation: "tdlib"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/armhf", implementation: "tdlight"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/armhf", implementation: "tdlib"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/arm64", implementation: "tdlight"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/arm64", implementation: "tdlib"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/s390x", implementation: "tdlight"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/s390x", implementation: "tdlib"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/ppc64le", implementation: "tdlight"} + - {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/ppc64le", implementation: "tdlib"} + - {os: windows-2019, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlight", vcpkgCommitId: "30124253eecff36bc90f73341edbfb4f845e2a1e", triplet: "x64-windows-static"} + - {os: windows-2019, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlib", vcpkgCommitId: "30124253eecff36bc90f73341edbfb4f845e2a1e", triplet: "x64-windows-static"} + - {os: macos-10.15, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlight"} + - {os: macos-10.15, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlib"} steps: - name: Checkout current repo uses: actions/checkout@v2 @@ -69,7 +69,7 @@ jobs: cat $GITHUB_ENV > github.env - name: Set up QEMU - if: matrix.usedocker == 'true' + if: matrix.usedocker == 'true' && matrix.useqemu == 'true' uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx @@ -93,7 +93,7 @@ jobs: file: ./Dockerfile cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,mode=max,dest=/tmp/.buildx-cache - platforms: ${{ matrix.arch }} + platforms: linux/amd64 push: false load: true tags: | diff --git a/Dockerfile b/Dockerfile index 6b124c2..fd71c46 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,15 +12,14 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt update && apt upgrade -y -RUN apt install -y sudo openjdk-11-jdk locales -#RUN apt install -y make git zlib1g-dev libssl-dev gperf cmake clang-10 libc++-10-dev libc++abi-10-dev ccache maven python3 python3-pip php7.4-cli openjdk-15-jdk +RUN apt install -y sudo build-essential openjdk-11-jdk locales wget cmake gperf ccache maven RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ dpkg-reconfigure --frontend=noninteractive locales && \ update-locale LANG=en_US.UTF-8 -ENV LANG en_US.UTF-8 -ENV JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 +ENV LANG "en_US.UTF-8" +ENV JAVA_TOOL_OPTIONS "-Dfile.encoding=UTF8" ADD implementations /usr/src/tdlight-java-natives/implementations ADD scripts /usr/src/tdlight-java-natives/scripts @@ -28,7 +27,7 @@ ADD src /usr/src/tdlight-java-natives/src WORKDIR /usr/src/tdlight-java-natives/ -RUN /bin/bash -c "export JAVA_HOME=\"/usr/lib/jvm/$(ls /usr/lib/jvm/ | grep openjdk | head -n 1)/\"; export JAVA_INCLUDE_PATH=\"$JAVA_HOME/include\"; source ./scripts/continuous-integration/github-workflows/setup-variables.sh; source ./scripts/continuous-integration/github-workflows/install-dependencies.sh; source ./scripts/continuous-integration/github-workflows/build-natives.sh" +RUN /bin/bash /usr/src/tdlight-java-natives/scripts/continuous-integration/docker/build-natives.sh #WORKDIR /usr/src/tdlight-java-natives/generated/ #RUN echo "aaaa" > test.txt diff --git a/scripts/continuous-integration/docker/build-natives.sh b/scripts/continuous-integration/docker/build-natives.sh new file mode 100644 index 0000000..7bcb5e3 --- /dev/null +++ b/scripts/continuous-integration/docker/build-natives.sh @@ -0,0 +1,13 @@ +#!/bin/bash -e +export JAVA_HOME +JAVA_HOME="$(find "/usr/lib/jvm/" -maxdepth 1 -type d -iname "java*jdk*" | head -n 1)/" +export JAVA_INCLUDE_PATH="$JAVA_HOME/include" +source ./scripts/continuous-integration/github-workflows/setup-variables.sh +# Check variables correctness +if [ -z "${CPU_ARCH_DPKG}" ]; then + echo "Missing parameter: CPU_ARCH_DPKG" + exit 1 +fi +source ./scripts/continuous-integration/github-workflows/install-dependencies.sh +sudo apt install -y "crossbuild-essential-${CPU_ARCH_DPKG}" +source ./scripts/continuous-integration/github-workflows/build-natives.sh diff --git a/scripts/core/install-dependencies.sh b/scripts/core/install-dependencies.sh index 841456d..5552a15 100755 --- a/scripts/core/install-dependencies.sh +++ b/scripts/core/install-dependencies.sh @@ -63,66 +63,50 @@ if [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then if [[ ! -f "$CROSS_BUILD_DEPS_DIR/ok-012" ]]; then rm -rf "$CROSS_BUILD_DEPS_DIR" || true mkdir -p "$CROSS_BUILD_DEPS_DIR" - echo " -deb [arch=amd64,i386] http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse -deb [arch=amd64,i386] http://us.archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse -deb [arch=amd64,i386] http://us.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse -deb [arch=amd64,i386] http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse - -deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe multiverse -deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe multiverse -deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted universe multiverse -deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse -" | sudo tee /etc/apt/sources.list - sudo dpkg --add-architecture "${CPU_ARCH_DPKG}" - sudo apt-get update || true - sudo apt-get install -y openjdk-8-jdk - sudo apt-get install -y "libstdc++-8-dev-${CPU_ARCH_DPKG}-cross" "libstdc++-8-pic-${CPU_ARCH_DPKG}-cross" - sudo apt-get install -y "crossbuild-essential-${CPU_ARCH_DPKG}" cd "$CROSS_BUILD_DEPS_DIR" # LibZ-Dev - apt-get download "zlib1g-dev:${CPU_ARCH_DPKG}" - ZLIB1G_DEV_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "zlib1g-dev*.deb" | head -n 1)" + wget "http://ftp.debian.org/debian/pool/main/z/zlib/zlib1g-dev_1.2.11.dfsg-1_${CPU_ARCH_DPKG}.deb" -O zlib1g-dev.deb + ZLIB1G_DEV_DEB=zlib1g-dev.deb dpkg -x "$ZLIB1G_DEV_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$ZLIB1G_DEV_DEB" # LibZ - apt-get download "zlib1g:${CPU_ARCH_DPKG}" - ZLIB1G_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "zlib1g*.deb" | head -n 1)" + wget "http://ftp.debian.org/debian/pool/main/z/zlib/zlib1g_1.2.11.dfsg-1_${CPU_ARCH_DPKG}.deb" -O zlib1g.deb + ZLIB1G_DEB=zlib1g.deb dpkg -x "$ZLIB1G_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$ZLIB1G_DEB" # LibSSL-Dev - apt-get download "libssl-dev:${CPU_ARCH_DPKG}" - LIBSSL_DEV_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "libssl-dev*.deb" | head -n 1)" + wget "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl-dev_1.1.1d-0+deb10u7_${CPU_ARCH_DPKG}.deb" -O libssl-dev.deb + LIBSSL_DEV_DEB=libssl-dev.deb dpkg -x "$LIBSSL_DEV_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$LIBSSL_DEV_DEB" # LibSSL - apt-get download "libssl1.1:${CPU_ARCH_DPKG}" - LIBSSL_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "libssl1.1*.deb" | head -n 1)" + wget "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1d-0+deb10u7_${CPU_ARCH_DPKG}.deb" -O libssl.deb + LIBSSL_DEB=libssl.deb dpkg -x "$LIBSSL_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$LIBSSL_DEB" # Java Common - apt-get download "java-common" - JC_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "java-common*.deb" | head -n 1)" + wget "http://ftp.debian.org/debian/pool/main/j/java-common/java-common_0.71_all.deb" -O java-common.deb + JC_DEB=java-common.deb dpkg -x "$JC_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$JC_DEB" # OpenJDK-JRE-Headless - apt-get download "openjdk-8-jre-headless:${CPU_ARCH_DPKG}" - OJDKRH_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "openjdk-8-jre-headless*.deb" | head -n 1)" + wget "http://security.debian.org/debian-security/pool/updates/main/o/openjdk-11/openjdk-11-jre-headless_11.0.12+7-2~deb10u1_${CPU_ARCH_DPKG}.deb" -O jdk-11-jre-headless.deb + OJDKRH_DEB=jdk-11-jre-headless.deb dpkg -x "$OJDKRH_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$OJDKRH_DEB" # OpenJDK-JRE - apt-get download "openjdk-8-jre:${CPU_ARCH_DPKG}" - OJDKR_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "openjdk-8-jre*.deb" | head -n 1)" + wget "http://security.debian.org/debian-security/pool/updates/main/o/openjdk-11/openjdk-11-jre_11.0.12+7-2~deb10u1_${CPU_ARCH_DPKG}.deb" -O jdk-11-jre.deb + OJDKR_DEB=jdk-11-jre.deb dpkg -x "$OJDKR_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$OJDKR_DEB" # OpenJDK-JDK - apt-get download "openjdk-8-jdk-headless:${CPU_ARCH_DPKG}" - OJDKJ_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "openjdk-8-jdk-headless*.deb" | head -n 1)" + wget "http://security.debian.org/debian-security/pool/updates/main/o/openjdk-11/openjdk-11-jdk-headless_11.0.12+7-2~deb10u1_${CPU_ARCH_DPKG}.deb" -O jdk-11-jdk-headless.deb + OJDKJ_DEB=jdk-11-jdk-headless.deb dpkg -x "$OJDKJ_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$OJDKJ_DEB" # OpenJDK-GUI - apt-get download "openjdk-8-jdk:${CPU_ARCH_DPKG}" - OJDKG_DEB="$(find "$CROSS_BUILD_DEPS_DIR" -maxdepth 1 -type f -iname "openjdk-8-jdk*.deb" | head -n 1)" + wget "http://security.debian.org/debian-security/pool/updates/main/o/openjdk-11/openjdk-11-jdk_11.0.12+7-2~deb10u1_${CPU_ARCH_DPKG}.deb" -O jdk-11-jdk.deb + OJDKG_DEB=jdk-11-jdk.deb dpkg -x "$OJDKG_DEB" "$CROSS_BUILD_DEPS_DIR" rm "$OJDKG_DEB" @@ -152,22 +136,22 @@ deb [arch=arm64,armhf,ppc64el,s390x] http://ports.ubuntu.com/ubuntu-ports/ focal echo "set(CMAKE_ASM_COMPILER_TARGET ${CLANG_TRIPLE})"; echo "set(CMAKE_LIBRARY_PATH \"$CROSS_BUILD_DEPS_DIR/\")"; echo "include_directories(\"${CROSS_BUILD_DEPS_DIR}/usr/include/${CPU_ARCH_LINUX}-linux-${CPU_COMPILATION_TOOL}/\")"; - echo "SET(CMAKE_FIND_ROOT_PATH \"$CROSS_BUILD_DEPS_DIR\" \"$JAVA_HOME\" \"/\" \"/usr/lib/jvm/java-8-openjdk-amd64/include\")"; + echo "SET(CMAKE_FIND_ROOT_PATH \"$CROSS_BUILD_DEPS_DIR\" \"$JAVA_HOME\" \"/\" \"/usr/lib/jvm/java-11-openjdk-amd64/include\")"; echo "include_directories(\"${CROSS_OPENJDK_PATH}/include\")"; echo "include_directories(\"${CROSS_OPENJDK_PATH}/include/linux\")"; - echo "SET(JAVA_HOME \"/usr/lib/jvm/java-8-openjdk-amd64/\")"; - echo "SET(JAVA_INCLUDE_PATH \"/usr/lib/jvm/java-8-openjdk-amd64/include\")"; - echo "SET(JAVA_AWT_INCLUDE_PATH \"/usr/lib/jvm/java-8-openjdk-amd64/include\")"; - echo "SET(JAVA_INCLUDE_PATH2 \"/usr/lib/jvm/java-8-openjdk-amd64/include/linux\")"; - #echo "SET(JAVA_JVM_LIBRARY \"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/${JAVA_INSTALLATION_TYPE}/libjvm.so\")"; - #echo "SET(JAVA_AWT_LIBRARY \"/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libawt.so\")"; + echo "SET(JAVA_HOME \"/usr/lib/jvm/java-11-openjdk-amd64/\")"; + echo "SET(JAVA_INCLUDE_PATH \"/usr/lib/jvm/java-11-openjdk-amd64/include\")"; + echo "SET(JAVA_AWT_INCLUDE_PATH \"/usr/lib/jvm/java-11-openjdk-amd64/include\")"; + echo "SET(JAVA_INCLUDE_PATH2 \"/usr/lib/jvm/java-11-openjdk-amd64/include/linux\")"; + #echo "SET(JAVA_JVM_LIBRARY \"/usr/lib/jvm/java-11-openjdk-amd64/jre/lib/amd64/${JAVA_INSTALLATION_TYPE}/libjvm.so\")"; + #echo "SET(JAVA_AWT_LIBRARY \"/usr/lib/jvm/java-11-openjdk-amd64/jre/lib/amd64/libawt.so\")"; #echo "SET(JAVA_HOME \"$CROSS_OPENJDK_PATH\")"; #echo "SET(JAVA_INCLUDE_PATH \"$CROSS_OPENJDK_PATH/include\")"; #echo "SET(JAVA_INCLUDE_PATH2 \"$CROSS_OPENJDK_PATH/include/linux\")"; - echo "SET(JAVA_JVM_LIBRARY \"$CROSS_OPENJDK_PATH/jre/lib/${CPU_ARCH_JAVA_INTERNAL}/${JAVA_INSTALLATION_TYPE}/libjvm.so\")"; - echo "SET(JAVA_AWT_LIBRARY \"$CROSS_OPENJDK_PATH/jre/lib/${CPU_ARCH_JAVA_INTERNAL}/libawt.so\")"; + echo "SET(JAVA_JVM_LIBRARY \"$CROSS_OPENJDK_PATH/lib/${JAVA_INSTALLATION_TYPE}/libjvm.so\")"; + echo "SET(JAVA_AWT_LIBRARY \"$CROSS_OPENJDK_PATH/lib/libawt.so\")"; #echo "SET(JNI_INCLUDE_DIRS \"$CROSS_OPENJDK_PATH/include\" \"$CROSS_OPENJDK_PATH/include/linux\")"; #echo "SET(Java_JAR_EXECUTABLE \"$CROSS_OPENJDK_PATH/bin/java\")"; #echo "SET(Java_JAVAC_EXECUTABLE \"$CROSS_OPENJDK_PATH/bin/javac\")"; diff --git a/scripts/core/setup-variables.sh b/scripts/core/setup-variables.sh index 6ab9280..0b57997 100755 --- a/scripts/core/setup-variables.sh +++ b/scripts/core/setup-variables.sh @@ -21,7 +21,7 @@ if [[ "$CORE_VARIABLES_SET" != "YES" ]]; then elif [[ "$CPU_ARCHITECTURE_NAME" == "armhf" ]]; then export CPU_ARCH_JAVA="armhf" export CPU_ARCH_JAVA_INTERNAL="arm" - export JAVA_INSTALLATION_TYPE="client" + export JAVA_INSTALLATION_TYPE="server" export CPU_ARCH_DPKG="armhf" export CPU_ARCH_CMAKE="arm" export CPU_ARCH_LINUX="arm"