This is an automated email from the ASF dual-hosted git repository.
philo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 66bb774f33 [GLUTEN-7514][VL] Reorganize Dockerfiles and document how
to build gluten in docker (#7515)
66bb774f33 is described below
commit 66bb774f33e7419996bd052ae2ba9cbafcf9a489
Author: PHILO-HE <[email protected]>
AuthorDate: Wed Oct 16 10:21:44 2024 +0800
[GLUTEN-7514][VL] Reorganize Dockerfiles and document how to build gluten
in docker (#7515)
---
.github/workflows/docker_image.yml | 6 +-
.gitignore | 1 -
dev/.dockerignore | 3 +
dev/{vcpkg => }/docker/Dockerfile | 4 +-
.../Dockerfile.centos7-static-build} | 0
.../docker/Dockerfile.centos8-dynamic-build | 0
dev/{vcpkg => docker}/Makefile | 20 ++++---
dev/{vcpkg => }/docker/entrypoint.sh | 0
dev/vcpkg/.dockerignore | 5 --
docs/developers/ProfileMemoryOfGlutenWithVelox.md | 2 +-
docs/developers/docker_centos7.md | 53 ------------------
docs/developers/docker_centos8.md | 49 ----------------
docs/developers/docker_ubuntu22.04.md | 65 ----------------------
docs/developers/velox-backend-CI.md | 4 +-
docs/developers/velox-backend-build-in-docker.md | 21 +++++++
15 files changed, 46 insertions(+), 187 deletions(-)
diff --git a/.github/workflows/docker_image.yml
b/.github/workflows/docker_image.yml
index 47ebfac5cd..0a6742099b 100644
--- a/.github/workflows/docker_image.yml
+++ b/.github/workflows/docker_image.yml
@@ -21,6 +21,8 @@ on:
- main
paths:
- '.github/workflows/docker_image.yml'
+ - 'dev/docker/Dockerfile.centos7-static-build'
+ - 'dev/docker/Dockerfile.centos8-dynamic-build'
schedule:
- cron: '0 20 * * 0'
@@ -45,7 +47,7 @@ jobs:
uses: docker/build-push-action@v2
with:
context: .
- file: dev/vcpkg/docker/Dockerfile.gha
+ file: dev/docker/Dockerfile.centos7-static-build
push: true
tags: apache/gluten:vcpkg-centos-7
@@ -69,6 +71,6 @@ jobs:
uses: docker/build-push-action@v2
with:
context: .
- file: .github/workflows/docker/Dockerfile.gha
+ file: dev/docker/Dockerfile.centos8-dynamic-build
push: true
tags: apache/gluten:centos-8
diff --git a/.gitignore b/.gitignore
index 7e82d0e53e..d30ea813ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,7 +52,6 @@ thirdparty/*.tar*
CMakeFiles/
CMakeCache.txt
CTestTestfile.cmake
-Makefile
cmake_install.cmake
build/
*-build/
diff --git a/dev/.dockerignore b/dev/.dockerignore
new file mode 100644
index 0000000000..43ca88b253
--- /dev/null
+++ b/dev/.dockerignore
@@ -0,0 +1,3 @@
+*
+!/vcpkg/setup-build-depends.sh
+!/docker/entrypoint.sh
diff --git a/dev/vcpkg/docker/Dockerfile b/dev/docker/Dockerfile
similarity index 87%
rename from dev/vcpkg/docker/Dockerfile
rename to dev/docker/Dockerfile
index 7332bbf45f..5fb5a976f5 100644
--- a/dev/vcpkg/docker/Dockerfile
+++ b/dev/docker/Dockerfile
@@ -3,7 +3,7 @@ FROM centos:7
RUN sed -i "s/enabled=1/enabled=0/" /etc/yum/pluginconf.d/fastestmirror.conf
WORKDIR /tmp/vcpkg
-COPY setup-build-depends.sh setup-build-depends.sh
+COPY vcpkg/setup-build-depends.sh setup-build-depends.sh
RUN ./setup-build-depends.sh
WORKDIR /
@@ -22,4 +22,4 @@ USER ${BUILDER_UID}:${BUILDER_GID}
ENV VCPKG_BINARY_SOURCES=default
COPY docker/entrypoint.sh /entrypoint
ENTRYPOINT ["/entrypoint"]
-CMD ["sleep", "inf"]
\ No newline at end of file
+CMD ["sleep", "inf"]
diff --git a/dev/vcpkg/docker/Dockerfile.gha
b/dev/docker/Dockerfile.centos7-static-build
similarity index 100%
rename from dev/vcpkg/docker/Dockerfile.gha
rename to dev/docker/Dockerfile.centos7-static-build
diff --git a/.github/workflows/docker/Dockerfile.gha
b/dev/docker/Dockerfile.centos8-dynamic-build
similarity index 100%
rename from .github/workflows/docker/Dockerfile.gha
rename to dev/docker/Dockerfile.centos8-dynamic-build
diff --git a/dev/vcpkg/Makefile b/dev/docker/Makefile
similarity index 68%
rename from dev/vcpkg/Makefile
rename to dev/docker/Makefile
index d37f75b546..ffe25955e3 100644
--- a/dev/vcpkg/Makefile
+++ b/dev/docker/Makefile
@@ -1,4 +1,4 @@
-DOCKER_IMAGE=apache/gluten:vcpkg-centos-7
+DOCKER_IMAGE=apache/gluten:centos-7-vcpkg-build-depends
GLUTEN_REPO=$(shell realpath -L ../..)
CCACHE_DIR=$(HOME)/.ccache
@@ -17,26 +17,32 @@ build: $(CCACHE_DIR) $(VCPKG_BINARY_CACHE_DIR)
$(MAVEN_M2_DIR)
-e http_proxy \
-e https_proxy \
--workdir $(GLUTEN_REPO) \
- -ti \
$(DOCKER_IMAGE) \
./dev/package-vcpkg.sh
docker-image:
docker build \
- --file docker/Dockerfile \
+ --file Dockerfile \
--build-arg BUILDER_UID=`id -u` \
--build-arg BUILDER_GID=`id -g` \
--tag "$(DOCKER_IMAGE)" \
- .
+ ..
-docker-image-gha:
+docker-image-static-build:
docker build \
- --file docker/Dockerfile.gha \
- --tag "$(DOCKER_IMAGE)" \
+ --file Dockerfile.centos7-static-build \
+ --tag "apache/gluten:vcpkg-centos-7" \
--build-arg HTTPS_PROXY="" \
--build-arg HTTP_PROXY="" \
.
+docker-image-dynamic-build:
+ docker build \
+ --file Dockerfile.centos8-dynamic-build \
+ --tag "apache/gluten:centos-8" \
+ --build-arg HTTPS_PROXY="" \
+ --build-arg HTTP_PROXY="" \
+ .
$(CCACHE_DIR) $(VCPKG_BINARY_CACHE_DIR) $(MAVEN_M2_DIR): %:
mkdir -p $@
diff --git a/dev/vcpkg/docker/entrypoint.sh b/dev/docker/entrypoint.sh
similarity index 100%
rename from dev/vcpkg/docker/entrypoint.sh
rename to dev/docker/entrypoint.sh
diff --git a/dev/vcpkg/.dockerignore b/dev/vcpkg/.dockerignore
deleted file mode 100644
index 7874389a76..0000000000
--- a/dev/vcpkg/.dockerignore
+++ /dev/null
@@ -1,5 +0,0 @@
-/.dockerignore
-/.vcpkg
-/vcpkg_installed
-/README.md
-/Dockerfile
\ No newline at end of file
diff --git a/docs/developers/ProfileMemoryOfGlutenWithVelox.md
b/docs/developers/ProfileMemoryOfGlutenWithVelox.md
index 270a06b5a8..480755cb99 100644
--- a/docs/developers/ProfileMemoryOfGlutenWithVelox.md
+++ b/docs/developers/ProfileMemoryOfGlutenWithVelox.md
@@ -1,7 +1,7 @@
---
layout: page
title: Profile memory consumption of Gluten
-nav_order: 15
+nav_order: 8
has_children: true
parent: /developer-overview/
---
diff --git a/docs/developers/docker_centos7.md
b/docs/developers/docker_centos7.md
deleted file mode 100644
index 6678cc7ab9..0000000000
--- a/docs/developers/docker_centos7.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-layout: page
-title: Docker script for CentOS 7
-nav_order: 8
-parent: Developer Overview
----
-Here is a docker script we verified to build Gluten+Velox backend on CentOS 7:
-
-Run on host as root user:
-```
-docker pull centos:7
-docker run -itd --name gluten centos:7 /bin/bash
-docker attach gluten
-```
-
-Run in docker:
-```
-yum -y install epel-release centos-release-scl
-yum -y install \
- git \
- dnf \
- cmake3 \
- devtoolset-9 \
- java-1.8.0-openjdk \
- java-1.8.0-openjdk-devel \
- ninja-build \
- wget \
- ca-certificates \
- sudo
-
-# gluten need maven version >=3.6.3
-wget
https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
-tar -xvf apache-maven-3.8.8-bin.tar.gz
-mv apache-maven-3.8.8 /usr/lib/maven
-export MAVEN_HOME=/usr/lib/maven
-export PATH=${PATH}:${MAVEN_HOME}/bin
-
-# cmake 3.x is required
-ln -s /usr/bin/cmake3 /usr/local/bin/cmake
-
-# enable gcc 9
-. /opt/rh/devtoolset-9/enable || exit 1
-
-export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
-export PATH=$JAVA_HOME/bin:$PATH
-
-git clone https://github.com/apache/incubator-gluten.git
-cd incubator-gluten
-
-# To access HDFS or S3, you need to add the parameters `--enable_hdfs=ON` and
`--enable_s3=ON`
-# If you have the same error with issue-3283, you need to add the parameter
`--compile_arrow_java=ON`
-./dev/buildbundle-veloxbe.sh
-```
diff --git a/docs/developers/docker_centos8.md
b/docs/developers/docker_centos8.md
deleted file mode 100755
index 1b604bf209..0000000000
--- a/docs/developers/docker_centos8.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-layout: page
-title: Docker script for CentOS 8
-nav_order: 7
-parent: Developer Overview
----
-Here is a docker script we verified to build Gluten+Velox backend on Centos8:
-
-Run on host as root user:
-```
-docker pull centos:8
-docker run -itd --name gluten centos:8 /bin/bash
-docker attach gluten
-```
-
-Run in docker:
-```
-#update mirror
-sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
-sed -i -e
"s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g"
/etc/yum.repos.d/CentOS-*
-
-dnf install -y epel-release sudo
-yum install -y dnf-plugins-core
-yum config-manager --set-enabled powertools
-dnf --enablerepo=powertools install -y ninja-build
-dnf --enablerepo=powertools install -y libdwarf-devel
-dnf install -y --setopt=install_weak_deps=False ccache gcc-toolset-9 git wget
which libevent-devel \
- openssl-devel re2-devel libzstd-devel lz4-devel double-conversion-devel \
- curl-devel cmake libicu-devel
-
-source /opt/rh/gcc-toolset-9/enable || exit 1
-
-yum install -y java-1.8.0-openjdk-devel patch
-export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
-export PATH=$JAVA_HOME/bin:$PATH
-
-#gluten need maven version >=3.6.3
-wget
https://downloads.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
-tar -xvf apache-maven-3.8.8-bin.tar.gz
-mv apache-maven-3.8.8 /usr/lib/maven
-export MAVEN_HOME=/usr/lib/maven
-export PATH=${PATH}:${MAVEN_HOME}/bin
-
-git clone https://github.com/apache/incubator-gluten.git
-cd incubator-gluten
-
-# To access HDFS or S3, you need to add the parameters `--enable_hdfs=ON` and
`--enable_s3=ON`
-./dev/buildbundle-veloxbe.sh
-```
\ No newline at end of file
diff --git a/docs/developers/docker_ubuntu22.04.md
b/docs/developers/docker_ubuntu22.04.md
deleted file mode 100644
index b139fecdcf..0000000000
--- a/docs/developers/docker_ubuntu22.04.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-layout: page
-title: Docker script for Ubuntu 22.04/20.04
-nav_order: 6
-parent: Developer Overview
----
-
-To the first build, it's suggested to build Gluten in a clean docker image.
Otherwise it's easy to run into library version conflict issues.
-Here is a docker script we verified to build Gluten+Velox backend on
Ubuntu22.04/20.04:
-
-Run on host as root user:
-```
-docker pull ubuntu:22.04
-docker run -itd --network host --name gluten ubuntu:22.04 /bin/bash
-docker attach gluten
-```
-
-Run in docker:
-```
-apt-get update
-
-#install gcc and libraries to build arrow
-apt install software-properties-common
-apt install maven build-essential libssl-dev libre2-dev libcurl4-openssl-dev
clang lldb lld libz-dev git ninja-build uuid-dev autoconf-archive curl zip
unzip tar pkg-config bison libtool flex vim python3-pip
-pip3 install cmake==3.28.3
-
-#velox script needs sudo to install dependency libraries
-apt install sudo
-
-# make sure jemalloc is uninstalled, jemalloc will be build in vcpkg, which
conflicts with the default jemalloc in system
-apt purge libjemalloc-dev libjemalloc2 librust-jemalloc-sys-dev
-
-#make sure jdk8 is used. New version of jdk is not supported
-apt install -y openjdk-8-jdk
-apt install -y default-jdk
-export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
-export PATH=$JAVA_HOME/bin:$PATH
-
-#manually install tzdata to avoid the interactive timezone config
-ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
-DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
-dpkg --configure -a
-
-#setup proxy on necessary
-#export http_proxy=xxxx
-#export https_proxy=xxxx
-
-#clone gluten
-git clone https://github.com/apache/incubator-gluten.git
-cd incubator-gluten/
-
-#config maven proxy
-#mkdir ~/.m2/
-#vim ~/.m2/settings.xml
-
-# the script download velox & arrow and compile all dependency library
automatically
-# To access HDFS or S3, you need to add the parameters `--enable_hdfs=ON` and
`--enable_s3=ON`
-# It's suggested to build using static link, enabled by `--enable_vcpkg=ON`
-# For developer, it's suggested to enable Debug info, by
--build_type=RelWithDebInfo. Note RelWithDebInfo uses -o2, release uses -o3
-./dev/buildbundle-veloxbe.sh --enable_vcpkg=ON --build_type=RelWithDebInfo
-
-# If you meet the error like `epoll_wait: Function not implemented` when
running tests,
-# Please enable epoll_pwait by,
-export EVENT_NOEPOLL=1
-```
diff --git a/docs/developers/velox-backend-CI.md
b/docs/developers/velox-backend-CI.md
index e4dceffdf7..b70887ad56 100644
--- a/docs/developers/velox-backend-CI.md
+++ b/docs/developers/velox-backend-CI.md
@@ -1,7 +1,7 @@
---
layout: page
title: Velox Backend CI
-nav_order: 14
+nav_order: 6
parent: Developer Overview
---
# Velox Backend CI
@@ -9,7 +9,7 @@ parent: Developer Overview
GHA workflows are defined under `.github/workflows/`.
## Docker Build
-We have a weekly job to build a docker based on `Dockerfile.gha` for CI
verification, defined in `docker_image.yml`.
+We have a weekly job defined in `docker_image.yml` to build docker images
based on `Dockerfile.centos7-static-build` and
`Dockerfile.centos8-dynamic-build` for CI verification.
## Vcpkg Caching
Gluten main branch is pulled down during docker build. And vcpkg will cache
binary data of all dependencies defined under dev/vcpkg.
diff --git a/docs/developers/velox-backend-build-in-docker.md
b/docs/developers/velox-backend-build-in-docker.md
new file mode 100755
index 0000000000..4820c7cdc7
--- /dev/null
+++ b/docs/developers/velox-backend-build-in-docker.md
@@ -0,0 +1,21 @@
+---
+layout: page
+title: Build Gluten Velox backend in docker
+nav_order: 7
+parent: Developer Overview
+---
+
+Currently, Centos-7/8/9 and Ubuntu 20.04/22.04 are supported to build Gluten
Velox backend. Please refer to
+`.github/workflows/velox_weekly.yml` to install required tools before the
build.
+
+There are two docker images with almost all dependencies installed, respective
for static build and dynamic build.
+The according Dockerfiles are respectively `Dockerfile.centos7-static-build`
and `Dockerfile.centos8-dynamic-build`
+under `dev/docker/`.
+
+```shell
+# For static build on centos-7.
+docker pull apache/gluten:vcpkg-centos-7
+
+# For dynamic build on centos-8.
+docker pull apache/gluten:centos-8 (dynamic build)
+```
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]