Dockerfile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # from official ubuntu 20.04
  2. FROM ubuntu:20.04
  3. # update system
  4. RUN apt-get update && apt-get upgrade -y
  5. # install basic tools
  6. RUN apt-get install -y vim wget curl
  7. # install tzdata noninteractive
  8. RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata
  9. # install git and default compilers
  10. RUN apt-get install -y git gcc g++ clang clang-tools
  11. # install basic package
  12. RUN apt-get install -y lsb-release software-properties-common gnupg
  13. # install gflags, tbb
  14. RUN apt-get install -y libgflags-dev libtbb-dev
  15. # install compression libs
  16. RUN apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev
  17. # install cmake
  18. RUN apt-get install -y cmake
  19. RUN apt-get install -y libssl-dev
  20. # install clang-13
  21. WORKDIR /root
  22. RUN wget https://apt.llvm.org/llvm.sh
  23. RUN chmod +x llvm.sh
  24. RUN ./llvm.sh 13 all
  25. # install gcc-7, 8, 10, 11, default is 9
  26. RUN apt-get install -y gcc-7 g++-7
  27. RUN apt-get install -y gcc-8 g++-8
  28. RUN apt-get install -y gcc-10 g++-10
  29. RUN add-apt-repository -y ppa:ubuntu-toolchain-r/test
  30. RUN apt-get install -y gcc-11 g++-11
  31. # install apt-get install -y valgrind
  32. RUN apt-get install -y valgrind
  33. # install folly depencencies
  34. RUN apt-get install -y libgoogle-glog-dev
  35. # install openjdk 8
  36. RUN apt-get install -y openjdk-8-jdk
  37. ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd64
  38. # install mingw
  39. RUN apt-get install -y mingw-w64
  40. # install gtest-parallel package
  41. RUN git clone --single-branch --branch master --depth 1 https://github.com/google/gtest-parallel.git ~/gtest-parallel
  42. ENV PATH $PATH:/root/gtest-parallel
  43. # install libprotobuf for fuzzers test
  44. RUN apt-get install -y ninja-build binutils liblzma-dev libz-dev pkg-config autoconf libtool
  45. RUN git clone --branch v1.0 https://github.com/google/libprotobuf-mutator.git ~/libprotobuf-mutator && cd ~/libprotobuf-mutator && git checkout ffd86a32874e5c08a143019aad1aaf0907294c9f && mkdir build && cd build && cmake .. -GNinja -DCMAKE_C_COMPILER=clang-13 -DCMAKE_CXX_COMPILER=clang++-13 -DCMAKE_BUILD_TYPE=Release -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON && ninja && ninja install
  46. ENV PKG_CONFIG_PATH /usr/local/OFF/:/root/libprotobuf-mutator/build/external.protobuf/lib/pkgconfig/
  47. ENV PROTOC_BIN /root/libprotobuf-mutator/build/external.protobuf/bin/protoc
  48. # install the latest google benchmark
  49. RUN git clone --depth 1 --branch v1.7.0 https://github.com/google/benchmark.git ~/benchmark
  50. RUN cd ~/benchmark && mkdir build && cd build && cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_ENABLE_GTEST_TESTS=0 && ninja && ninja install
  51. # clean up
  52. RUN rm -rf /var/lib/apt/lists/*
  53. RUN rm -rf /root/benchmark