未验证 提交 7d920e9c 编写于 作者: Q quicksilver 提交者: GitHub

Fix compile error on CentOS (#6359)

Signed-off-by: Nquicksilver <zhifeng.zhang@zilliz.com>
上级 2e927905
IMAGE_REPO=milvusdb
IMAGE_ARCH=amd64
UBUNTU=18.04
OS_NAME=ubuntu18.04
DATE_VERSION=20210624-063026
LATEST_DATE_VERSION=20210624-063026
LATEST_DATE_VERSION=ubuntu18.04-latest
MINIO_ADDRESS=minio:9000
PULSAR_ADDRESS=pulsar://pulsar:6650
ETCD_ENDPOINTS=etcd:2379
......@@ -16,15 +16,15 @@ on:
jobs:
publish-builder:
name: AMD64 Ubuntu ${{ matrix.ubuntu }}
name: AMD64 ${{ matrix.os }}
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
ubuntu: [18.04]
os: [ubuntu18.04]
env:
UBUNTU: ${{ matrix.ubuntu }}
OS_NAME: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v2
......@@ -34,12 +34,12 @@ jobs:
- name: Docker Pull
shell: bash
run: |
docker-compose pull --ignore-pull-failures ubuntu
DATE_VERSION=${{matrix.os}}-latest docker-compose pull --ignore-pull-failures builder
- name: Docker Build
shell: bash
run: |
DATE_VERSION=${{ steps.extracter.outputs.version }} docker-compose build ubuntu
DATE_VERSION=latest docker-compose build ubuntu
DATE_VERSION=${{matrix.os}}-latest docker-compose build builder
DATE_VERSION=${{matrix.os}}-${{ steps.extracter.outputs.version }} docker-compose build builder
- name: Docker Push
if: success() && github.event_name == 'push' && github.repository == 'milvus-io/milvus'
continue-on-error: true
......@@ -47,5 +47,5 @@ jobs:
run: |
docker login -u ${{ secrets.DOCKERHUB_USER }} \
-p ${{ secrets.DOCKERHUB_TOKEN }}
DATE_VERSION=${{ steps.extracter.outputs.version }} docker-compose push ubuntu
DATE_VERSION=latest docker-compose push ubuntu
DATE_VERSION=${{matrix.os}}-latest docker-compose push builder
DATE_VERSION=${{matrix.os}}-${{ steps.extracter.outputs.version }} docker-compose push builder
......@@ -100,10 +100,7 @@ build-cpp:
@(env bash $(PWD)/scripts/core_build.sh -f "$(CUSTOM_THIRDPARTY_PATH)")
@(env bash $(PWD)/scripts/cwrapper_build.sh -t Release -f "$(CUSTOM_THIRDPARTY_PATH)")
@(env bash $(PWD)/scripts/cwrapper_dablooms_build.sh -t Release -f "$(CUSTOM_THIRDPARTY_PATH)")
@go env -w CGO_CFLAGS="-I$(PWD)/internal/kv/rocksdb/cwrapper/output/include"
@go env -w CGO_LDFLAGS="-L$(PWD)/internal/kv/rocksdb/cwrapper/output/lib -l:librocksdb.a -lstdc++ -lm -lz"
@(env bash $(PWD)/scripts/cwrapper_rocksdb_build.sh -t Release -f "$(CUSTOM_THIRDPARTY_PATH)")
@go get github.com/tecbot/gorocksdb
build-cpp-with-unittest:
@(env bash $(PWD)/scripts/core_build.sh -u -f "$(CUSTOM_THIRDPARTY_PATH)")
......
......@@ -5,11 +5,12 @@ set -euo pipefail
# Absolute path to the toplevel milvus directory.
toplevel=$(dirname "$(cd "$(dirname "${0}")"; pwd)")
export OS_NAME="${OS_NAME:-ubuntu18.04}"
pushd "${toplevel}"
if [[ "${1-}" == "pull" ]]; then
docker-compose pull --ignore-pull-failures ubuntu
# docker-compose pull --ignore-pull-failures gdbserver
docker-compose pull --ignore-pull-failures builder
exit 0
fi
......@@ -31,20 +32,21 @@ gid=$(id -g)
[ "$uid" -lt 500 ] && uid=501
[ "$gid" -lt 500 ] && gid=$uid
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-ccache"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-go-mod"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-thirdparty"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-ccache"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-go-mod"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-thirdparty"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-vscode-extensions"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}"
docker-compose pull --ignore-pull-failures ubuntu
docker-compose pull --ignore-pull-failures builder
if [[ "${CHECK_BUILDER:-}" == "1" ]]; then
docker-compose build ubuntu
docker-compose build builder
fi
if [[ "$(id -u)" != "0" ]]; then
docker-compose run --rm -u "$uid:$gid" ubuntu "$@"
docker-compose run --rm -u "$uid:$gid" builder "$@"
else
docker-compose run --rm --entrypoint "/tini --" ubuntu "$@"
docker-compose run --rm --entrypoint "/tini -- /entrypoint.sh" builder "$@"
fi
popd
# Copyright (C) 2019-2020 Zilliz. All rights reserved.
#
# Licensed 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 milvusdb/openblas:centos7-20210706
RUN yum install -y epel-release centos-release-scl-rh && yum install -y wget curl which && \
wget -qO- "https://cmake.org/files/v3.14/cmake-3.14.3-Linux-x86_64.tar.gz" | tar --strip-components=1 -xz -C /usr/local && \
yum install -y git make automake openssl-devel zlib-devel \
libcurl-devel python3-devel \
devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-gcc-gfortran \
llvm-toolset-7.0-clang llvm-toolset-7.0-clang-tools-extra \
ccache lcov && \
rm -rf /var/cache/yum/* && \
echo "source scl_source enable devtoolset-7" >> /etc/profile.d/devtoolset-7.sh && \
echo "source scl_source enable llvm-toolset-7.0" >> /etc/profile.d/llvm-toolset-7.sh
ENV CLANG_TOOLS_PATH="/opt/rh/llvm-toolset-7.0/root/usr/bin"
# Install tbb
RUN source /etc/profile.d/devtoolset-7.sh && \
git clone https://github.com/wjakob/tbb.git && \
cd tbb/build && \
cmake .. && make -j && make install && \
cd ../../ && rm -rf tbb/
# Install boost
RUN source /etc/profile.d/devtoolset-7.sh && \
wget -q https://boostorg.jfrog.io/artifactory/main/release/1.65.1/source/boost_1_65_1.tar.gz && \
tar zxf boost_1_65_1.tar.gz && cd boost_1_65_1 && \
./bootstrap.sh --prefix=/usr/local --with-toolset=gcc --without-libraries=python && \
./b2 -j2 --prefix=/usr/local --without-python toolset=gcc install && \
cd ../ && rm -rf ./boost_1_65_1*
# Install Go
ENV GOPATH /go
ENV GOROOT /usr/local/go
ENV GO111MODULE on
ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH
RUN mkdir -p /usr/local/go && wget -qO- "https://golang.org/dl/go1.15.2.linux-amd64.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \
mkdir -p "$GOPATH/src" "$GOPATH/bin" && \
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ${GOPATH}/bin v1.27.0 && \
export GO111MODULE=on && go get github.com/quasilyte/go-ruleguard/cmd/ruleguard@v0.2.1 && \
go get -v github.com/ramya-rao-a/go-outline && \
go get -v golang.org/x/tools/gopls && \
go get -v github.com/uudashr/gopkgs/v2/cmd/gopkgs && \
go get -v github.com/go-delve/delve/cmd/dlv && \
go get -v honnef.co/go/tools/cmd/staticcheck && \
go clean --modcache && \
chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR)
RUN echo 'root:root' | chpasswd
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
/home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
COPY --chown=0:0 build/docker/builder/entrypoint.sh /
RUN wget -qO- "https://github.com/jeffoverflow/autouseradd/releases/download/1.2.0/autouseradd-1.2.0-amd64.tar.gz" | tar xz -C / --strip-components 1
RUN wget -O /tini https://github.com/krallin/tini/releases/download/v0.19.0/tini && \
chmod +x /tini
ENTRYPOINT [ "/tini", "--", "autouseradd", "--user", "milvus", "--", "/entrypoint.sh" ]
CMD ["tail", "-f", "/dev/null"]
......@@ -42,6 +42,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
RUN echo 'root:root' | chpasswd
# refer: https://code.visualstudio.com/docs/remote/containers-advanced#_avoiding-extension-reinstalls-on-container-rebuild
RUN mkdir -p /home/milvus/.vscode-server/extensions \
/home/milvus/.vscode-server-insiders/extensions \
&& chmod -R 777 /home/milvus
......
......@@ -20,4 +20,14 @@ if ! whoami &> /dev/null; then
fi
fi
set +e
if [ -f "/etc/profile.d/devtoolset-7.sh" ]; then
source "/etc/profile.d/devtoolset-7.sh"
fi
if [ -f "/etc/profile.d/llvm-toolset-7.sh" ]; then
source "/etc/profile.d/llvm-toolset-7.sh"
fi
set -e
exec "$@"
FROM centos:centos7
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN yum install -y epel-release centos-release-scl-rh && yum install -y wget make automake \
devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-gcc-gfortran && \
rm -rf /var/cache/yum/* && \
echo "source scl_source enable devtoolset-7" >> /etc/profile.d/devtoolset-7.sh
RUN source /etc/profile.d/devtoolset-7.sh && \
wget https://github.com/xianyi/OpenBLAS/archive/v0.3.9.tar.gz && \
tar zxvf v0.3.9.tar.gz && cd OpenBLAS-0.3.9 && \
make TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1 USE_THREAD=0 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="-O3 -g -fPIC" FCOMMON_OPT="-O3 -g -fPIC -frecursive" NMAX="NUM_THREADS=128" LIBPREFIX="libopenblas" LAPACKE="NO_LAPACKE=1" INTERFACE64=0 NO_STATIC=1 && \
make PREFIX=/usr NO_STATIC=1 install && \
cd .. && rm -rf OpenBLAS-0.3.9 && rm v0.3.9.tar.gz
ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib"
......@@ -8,14 +8,14 @@ x-ccache: &ccache
CCACHE_DIR: /ccache
services:
ubuntu:
image: ${IMAGE_REPO}/milvus-env:${IMAGE_ARCH}-ubuntu${UBUNTU}-${DATE_VERSION}
builder:
image: ${IMAGE_REPO}/milvus-env:${IMAGE_ARCH}-${OS_NAME}-${DATE_VERSION}
# Build devcontainer
build:
context: .
dockerfile: build/docker/builder/cpu/ubuntu${UBUNTU}/Dockerfile
dockerfile: build/docker/builder/cpu/${OS_NAME}/Dockerfile
cache_from:
- ${IMAGE_REPO}/milvus-env:${IMAGE_ARCH}-ubuntu${UBUNTU}-${LATEST_DATE_VERSION}
- ${IMAGE_REPO}/milvus-env:${IMAGE_ARCH}-${OS_NAME}-${LATEST_DATE_VERSION}
# user: {{ CURRENT_ID }}
shm_size: 2G
environment:
......@@ -24,15 +24,15 @@ services:
ETCD_ENDPOINTS: ${ETCD_ENDPOINTS}
MINIO_ADDRESS: ${MINIO_ADDRESS}
CUSTOM_THIRDPARTY_PATH: /tmp/thirdparty
volumes: &ubuntu-volumes
volumes: &builder-volumes
- .:/go/src/github.com/milvus-io/milvus:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-ubuntu${UBUNTU}-ccache:/ccache:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-ubuntu${UBUNTU}-go-mod:/go/pkg/mod:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-ubuntu${UBUNTU}-thirdparty:/tmp/thirdparty:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-ubuntu${UBUNTU}-vscode-extensions:/home/milvus/.vscode-server/extensions:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-ccache:/ccache:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-go-mod:/go/pkg/mod:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-thirdparty:/tmp/thirdparty:delegated
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-vscode-extensions:/home/milvus/.vscode-server/extensions:delegated
working_dir: "/go/src/github.com/milvus-io/milvus"
# Command
command: &ubuntu-command >
command: &builder-command >
/bin/bash -c "
make check-proto-product && make verifiers && make unittest"
......
......@@ -19,7 +19,7 @@ add_library(milvus_indexbuilder SHARED
target_link_libraries(milvus_indexbuilder
tbb milvus_utils pthread knowhere log milvus_proto
dl backtrace
dl
milvus_common
milvus_query
)
......
......@@ -36,7 +36,7 @@ add_library(milvus_segcore SHARED
target_link_libraries(milvus_segcore
tbb milvus_utils pthread knowhere log milvus_proto ${OpenMP_CXX_FLAGS}
dl backtrace
dl
milvus_common
milvus_query
milvus_utils
......
......@@ -10,7 +10,14 @@ DIR=$( cd -P $( dirname $SOURCE ) && pwd )
# echo $DIR
CGO_CFLAGS="-I$(pwd)/output/include"
CGO_LDFLAGS="-L$(pwd)/output/lib -l:librocksdb.a -lstdc++ -lm -lz"
if [ -f "$(pwd)/output/lib/librocksdb.a" ];then
CGO_LDFLAGS="-L$(pwd)/output/lib -l:librocksdb.a -lstdc++ -lm -lz"
elif [ -f "$(pwd)/output/lib64/librocksdb.a" ];then
CGO_LDFLAGS="-L$(pwd)/output/lib64 -l:librocksdb.a -lstdc++ -lm -lz"
else
echo "No found 'librocksdb.a'."
exit 1
fi
OUTPUT_LIB=${DIR}/output
......
......@@ -83,6 +83,7 @@ macro( build_arrow )
file( MAKE_DIRECTORY "${UTF8PROC_LOCATION}/include" )
endif()
include(GNUInstallDirs)
add_library( thrift STATIC IMPORTED )
set_target_properties( thrift
......@@ -104,7 +105,7 @@ macro( build_arrow )
set_target_properties( arrow
PROPERTIES
IMPORTED_GLOBAL TRUE
IMPORTED_LOCATION ${INSTALL_DIR}/lib/libarrow.a
IMPORTED_LOCATION ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libarrow.a
INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include )
add_dependencies(arrow arrow-ep )
......@@ -112,7 +113,7 @@ macro( build_arrow )
set_target_properties( parquet
PROPERTIES
IMPORTED_GLOBAL TRUE
IMPORTED_LOCATION ${INSTALL_DIR}/lib/libparquet.a
IMPORTED_LOCATION ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libparquet.a
INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include )
add_dependencies(parquet arrow-ep)
target_link_libraries(parquet INTERFACE arrow thrift utf8proc)
......
......@@ -62,3 +62,12 @@ if [[ ! ${jobs+1} ]]; then
jobs=$(nproc)
fi
make -j ${jobs}
go env -w CGO_CFLAGS="-I${OUTPUT_LIB}/include"
if [ -f "${OUTPUT_LIB}/lib/librocksdb.a" ]; then
go env -w CGO_LDFLAGS="-L${OUTPUT_LIB}/lib -l:librocksdb.a -lstdc++ -lm -lz"
else
go env -w CGO_LDFLAGS="-L${OUTPUT_LIB}/lib64 -l:librocksdb.a -lstdc++ -lm -lz"
fi
go get github.com/tecbot/gorocksdb
......@@ -8,6 +8,8 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli
done
ROOT_DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
export OS_NAME="${OS_NAME:-ubuntu18.04}"
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=Linux;;
......@@ -50,15 +52,15 @@ fi
pushd "$ROOT_DIR"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-ccache"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-go-mod"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-thirdparty"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-ubuntu18.04-vscode-extensions"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-ccache"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-go-mod"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-thirdparty"
mkdir -p "${DOCKER_VOLUME_DIRECTORY:-.docker}/amd64-${OS_NAME}-vscode-extensions"
chmod -R 777 "${DOCKER_VOLUME_DIRECTORY:-.docker}"
if [ "${1-}" = "build" ];then
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml pull --ignore-pull-failures ubuntu
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml build ubuntu
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml pull --ignore-pull-failures builder
docker-compose -f $ROOT_DIR/docker-compose-devcontainer.yml build builder
fi
if [ "${1-}" = "up" ]; then
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册