You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pegasus.apache.org by la...@apache.org on 2023/02/14 06:43:15 UTC

[incubator-pegasus] 01/01: build: Support Ubuntu 22.04 and clang 14

This is an automated email from the ASF dual-hosted git repository.

laiyingchun pushed a commit to branch support_ubuntu2204_clang14
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git

commit 754185d17ccb45929d2236181159c0c4f41bdc6b
Author: Yingchun Lai <la...@apache.org>
AuthorDate: Tue Feb 14 14:42:34 2023 +0800

    build: Support Ubuntu 22.04 and clang 14
---
 .github/workflows/build-push-env-docker.yml    |  1 +
 .github/workflows/regular-build.yml            |  4 ++
 .github/workflows/thirdparty-regular-push.yml  |  2 +
 cmake_modules/BaseFunctions.cmake              |  2 +-
 docker/README.md                               |  2 +
 docker/pegasus-build-env/ubuntu2204/Dockerfile | 71 ++++++++++++++++++++++++++
 thirdparty/CMakeLists.txt                      |  3 +-
 thirdparty/fix_prometheus-cpp_limits.patch     | 10 ++++
 8 files changed, 93 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/build-push-env-docker.yml b/.github/workflows/build-push-env-docker.yml
index 756ebad07..4693429b3 100644
--- a/.github/workflows/build-push-env-docker.yml
+++ b/.github/workflows/build-push-env-docker.yml
@@ -42,6 +42,7 @@ jobs:
           - ubuntu1604
           - ubuntu1804
           - ubuntu2004
+          - ubuntu2204
           - centos6
           - centos7
     steps:
diff --git a/.github/workflows/regular-build.yml b/.github/workflows/regular-build.yml
index 4eb4849d1..08dc3edd4 100644
--- a/.github/workflows/regular-build.yml
+++ b/.github/workflows/regular-build.yml
@@ -58,11 +58,15 @@ jobs:
           - ubuntu1604
           - ubuntu1804
           - ubuntu2004
+          - ubuntu2204
           - centos6
           - centos7
         compiler-family:
           - gcc
         include:
+          - compiler-family: clang
+            compiler: "clang-14,clang++-14"
+            os: ubuntu2204
           - compiler-family: clang
             compiler: "clang-10,clang++-10"
             os: ubuntu2004
diff --git a/.github/workflows/thirdparty-regular-push.yml b/.github/workflows/thirdparty-regular-push.yml
index 3a591b06a..685a7932e 100644
--- a/.github/workflows/thirdparty-regular-push.yml
+++ b/.github/workflows/thirdparty-regular-push.yml
@@ -74,6 +74,7 @@ jobs:
           - ubuntu1604
           - ubuntu1804
           - ubuntu2004
+          - ubuntu2204
           - centos6
           - centos7
     steps:
@@ -111,6 +112,7 @@ jobs:
           - ubuntu1604
           - ubuntu1804
           - ubuntu2004
+          - ubuntu2204
           - centos6
           - centos7
     steps:
diff --git a/cmake_modules/BaseFunctions.cmake b/cmake_modules/BaseFunctions.cmake
index 359e7a79a..79aba27cb 100644
--- a/cmake_modules/BaseFunctions.cmake
+++ b/cmake_modules/BaseFunctions.cmake
@@ -204,7 +204,7 @@ function(dsn_setup_compiler_flags)
   # We want access to the PRI* print format macros.
   add_definitions(-D__STDC_FORMAT_MACROS)
 
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y" CACHE STRING "" FORCE)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y -gdwarf-4" CACHE STRING "" FORCE)
 
   #  -Wall: Enable all warnings.
   add_compile_options(-Wall)
diff --git a/docker/README.md b/docker/README.md
index 102150439..5ff4fa743 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -39,6 +39,7 @@ Github Actions automatically rebuilds and publishes build-env for every commit.
 - `apache/pegasus:build-env-ubuntu1604`
 - `apache/pegasus:build-env-ubuntu1804`
 - `apache/pegasus:build-env-ubuntu2004`
+- `apache/pegasus:build-env-ubuntu2204`
 
 DockerHub: https://hub.docker.com/r/apache/pegasus
 
@@ -62,3 +63,4 @@ so jobs based on this image can skip building third-parties.
 - `apache/pegasus:thirdparties-bin-ubuntu1604-master`
 - `apache/pegasus:thirdparties-bin-ubuntu1804-master`
 - `apache/pegasus:thirdparties-bin-ubuntu2004-master`
+- `apache/pegasus:thirdparties-bin-ubuntu2204-master`
diff --git a/docker/pegasus-build-env/ubuntu2204/Dockerfile b/docker/pegasus-build-env/ubuntu2204/Dockerfile
new file mode 100644
index 000000000..2a0f1445e
--- /dev/null
+++ b/docker/pegasus-build-env/ubuntu2204/Dockerfile
@@ -0,0 +1,71 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM ubuntu:22.04
+
+ENV TZ=Asia/Shanghai
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update -y; \
+    apt-get install -y --no-install-recommends \
+                       build-essential \
+                       software-properties-common \
+                       clang-14 \
+                       libclang-14-dev \
+                       llvm-14-dev \
+                       openjdk-8-jdk \
+                       pkg-config \
+                       python3-pip \
+                       libaio-dev \
+                       libsnappy-dev \
+                       libbz2-dev \
+                       libzstd-dev \
+                       liblz4-dev \
+                       zlib1g \
+                       zlib1g.dev \
+                       patch \
+                       netcat \
+                       wget \
+                       ccache \
+                       git \
+                       curl \
+                       zip \
+                       unzip \
+                       gdb \
+                       vim \
+                       automake \
+                       libtool \
+                       libssl-dev \
+                       bison \
+                       maven \
+                       flex; \
+    rm -rf /var/lib/apt/lists/*
+
+RUN pip3 install --no-cache-dir cmake
+
+RUN wget --progress=dot:giga https://github.com/apache/thrift/archive/refs/tags/0.11.0.tar.gz -P /opt/thrift && \
+    cd /opt/thrift && tar xzf 0.11.0.tar.gz && cd thrift-0.11.0 && ./bootstrap.sh && \
+    ./configure --enable-libs=no && \
+    make -j$(($(nproc)/2+1)) && make install && cd - && \
+    rm -rf thrift-0.11.0 0.11.0.tar.gz
+
+ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
+ENV CLASSPATH=$JAVA_HOME/lib/
+ENV PATH=$JAVA_HOME/bin:$PATH
+ENV LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:$LD_LIBRARY_PATH
+
+WORKDIR /root/apache
diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt
index 33bac0dbc..3a98df212 100644
--- a/thirdparty/CMakeLists.txt
+++ b/thirdparty/CMakeLists.txt
@@ -340,7 +340,8 @@ ExternalProject_Add(prometheus-cpp
         https://codeload.github.com/jupp0r/prometheus-cpp/tar.gz/v0.7.0
         URL_MD5 dc75c31ceaefd160e978365bdca8eb01
         DEPENDS civetweb curl
-        PATCH_COMMAND rm -rf 3rdparty/civetweb && cp -R ${civetweb_SRC} 3rdparty/civetweb # replace the submodule
+        # TODO(yingchun): replace the submodule
+        PATCH_COMMAND rm -rf 3rdparty/civetweb && cp -R ${civetweb_SRC} 3rdparty/civetweb && patch -p0 < ${TP_DIR}/fix_prometheus-cpp_limits.patch
         CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT}
         -DENABLE_TESTING=OFF
         -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
diff --git a/thirdparty/fix_prometheus-cpp_limits.patch b/thirdparty/fix_prometheus-cpp_limits.patch
new file mode 100644
index 000000000..065b04f67
--- /dev/null
+++ b/thirdparty/fix_prometheus-cpp_limits.patch
@@ -0,0 +1,10 @@
+--- core/src/histogram.cc	2023-02-13 13:56:03.678985601 +0800
++++ core/src/histogram_fix_limits.cc	2023-02-13 13:55:55.303966447 +0800
+@@ -4,6 +4,7 @@
+ #include <cassert>
+ #include <iterator>
+ #include <numeric>
++#include <limits>
+ 
+ namespace prometheus {
+ 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pegasus.apache.org
For additional commands, e-mail: commits-help@pegasus.apache.org