add building packages with clang

pull/3775/head
Miro Stauder 4 years ago
parent 65a862d227
commit e4469d124d

@ -187,7 +187,7 @@ clean:
packages: amd64-packages arm64-packages
.PHONY: packages
amd64-packages: centos6 centos6-dbg centos6.7 centos6.7-dbg centos7 centos7-dbg centos8 centos8-dbg ubuntu14 ubuntu14-dbg ubuntu16 ubuntu16-dbg ubuntu18 ubuntu18-dbg ubuntu20 ubuntu20-dbg debian8 debian8-dbg debian9 debian9-dbg debian10 debian10-dbg debian11 debian11-dbg fedora24 fedora24-dbg fedora27 fedora27-dbg fedora28 fedora28-dbg fedora33 fedora33-dbg fedora34 fedora34-dbg
amd64-packages: centos6 centos6-dbg centos6.7 centos6.7-dbg centos7 centos7-dbg centos8 centos8-clang centos8-dbg ubuntu14 ubuntu14-dbg ubuntu16 ubuntu16-dbg ubuntu18 ubuntu18-dbg ubuntu20 ubuntu20-clang ubuntu20-dbg debian8 debian8-dbg debian9 debian9-dbg debian10 debian10-dbg debian11 debian11-clang debian11-dbg fedora24 fedora24-dbg fedora27 fedora27-dbg fedora28 fedora28-dbg fedora33 fedora33-dbg fedora34 fedora34-clang fedora34-dbg
.PHONY: amd64-packages
arm64-packages: centos7-arm64 centos8-arm64 debian9-arm64 debian10-arm64 debian11-arm64 ubuntu18-arm64 ubuntu20-arm64 fedora32-arm64 fedora33-arm64
@ -228,6 +228,9 @@ centos7-dbg: binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm
centos8: binaries/proxysql-${CURVER}-1-centos8.x86_64.rpm
.PHONY: centos8
centos8-clang: binaries/proxysql-${CURVER}-1-centos8-clang.x86_64.rpm
.PHONY: centos8-clang
centos8-arm64: binaries/proxysql-${CURVER}-1-centos8.aarch64.rpm
.PHONY: centos8-arm64
@ -273,6 +276,9 @@ fedora33-dbg: binaries/proxysql-${CURVER}-1-dbg-fedora33.x86_64.rpm
fedora34: binaries/proxysql-${CURVER}-1-fedora34.x86_64.rpm
.PHONY: fedora34
fedora34-clang: binaries/proxysql-${CURVER}-1-fedora34-clang.x86_64.rpm
.PHONY: fedora34-clang
fedora34-dbg: binaries/proxysql-${CURVER}-1-dbg-fedora34.x86_64.rpm
.PHONY: fedora34-dbg
@ -304,6 +310,9 @@ ubuntu18-dbg: binaries/proxysql_${CURVER}-dbg-ubuntu18_amd64.deb
ubuntu20: binaries/proxysql_${CURVER}-ubuntu20_amd64.deb
.PHONY: ubuntu20
ubuntu20-clang: binaries/proxysql_${CURVER}-ubuntu20-clang_amd64.deb
.PHONY: ubuntu20-clang
ubuntu20-arm64: binaries/proxysql_${CURVER}-ubuntu20_aarch64.deb
.PHONY: ubuntu20-arm64
@ -355,6 +364,9 @@ debian10-dbg: binaries/proxysql_${CURVER}-dbg-debian10_amd64.deb
debian11: binaries/proxysql_${CURVER}-debian11_amd64.deb
.PHONY: debian11
debian11-clang: binaries/proxysql_${CURVER}-debian11-clang_amd64.deb
.PHONY: debian11-clang
debian11-arm64: binaries/proxysql_${CURVER}-debian11_aarch64.deb
.PHONY: debian11-arm64
@ -407,6 +419,10 @@ binaries/proxysql-${CURVER}-1-centos8.x86_64.rpm:
docker-compose up centos8_build
docker-compose rm -f
binaries/proxysql-${CURVER}-1-centos8-clang.x86_64.rpm:
docker-compose up centos8_clang_build
docker-compose rm -f
binaries/proxysql-${CURVER}-1-centos8.aarch64.rpm:
docker-compose up centos8_arm64_build
docker-compose rm -f
@ -466,6 +482,10 @@ binaries/proxysql-${CURVER}-1-fedora34.x86_64.rpm:
docker-compose up fedora34_build
docker-compose rm -f
binaries/proxysql-${CURVER}-1-fedora34-clang.x86_64.rpm:
docker-compose up fedora34_clang_build
docker-compose rm -f
binaries/proxysql-${CURVER}-1-dbg-fedora34.x86_64.rpm:
docker-compose up fedora34_dbg_build
docker-compose rm -f
@ -516,6 +536,10 @@ binaries/proxysql_${CURVER}-ubuntu20_amd64.deb:
docker-compose up ubuntu20_build
docker-compose rm -f
binaries/proxysql_${CURVER}-ubuntu20-clang_amd64.deb:
docker-compose up ubuntu20_clang_build
docker-compose rm -f
binaries/proxysql_${CURVER}-ubuntu20_aarch64.deb:
docker-compose up ubuntu20_arm64_build
docker-compose rm -f
@ -578,6 +602,10 @@ binaries/proxysql_${CURVER}-debian11_amd64.deb:
docker-compose up debian11_build
docker-compose rm -f
binaries/proxysql_${CURVER}-debian11-clang_amd64.deb:
docker-compose up debian11_clang_build
docker-compose rm -f
binaries/proxysql_${CURVER}-debian11_aarch64.deb:
docker-compose up debian11_arm64_build
docker-compose rm -f

4
deps/Makefile vendored

@ -62,7 +62,8 @@ libssl/openssl/libssl.a:
cd libssl/openssl && ln -s . lib # curl wants this path
libssl: libssl/openssl/libssl.a
GCC_VERSION := $(shell gcc -dumpversion)
GCC_VERSION :=
#$(shell gcc -dumpversion)
MIN_VERSION := 4.9.0
REQUIRE_PATCH = false
@ -141,6 +142,7 @@ lz4: lz4/lz4/liblz4.a
clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib.a:
cd clickhouse-cpp && rm -rf clickhouse-cpp || true
cd clickhouse-cpp && tar -zxf clickhouse-cpp.tar.gz
cd clickhouse-cpp/clickhouse-cpp && sed -i 's/"-O2 -pthread -Wall -Wextra -Werror"/"-O2 -pthread -Wall -Wextra -Werror -Wno-deprecated-copy"/' CMakeLists.txt
cd clickhouse-cpp/clickhouse-cpp && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .
cd clickhouse-cpp/clickhouse-cpp && patch clickhouse/columns/column.h < ../column.h.diff
cd clickhouse-cpp/clickhouse-cpp && CC=${CC} CXX=${CXX} ${MAKE}

@ -131,6 +131,24 @@ services:
command:
- /opt/entrypoint/entrypoint.bash
centos8_clang_build:
image: proxysql/packaging:build-clang-centos8
volumes:
- ./docker/images/proxysql/rhel-compliant/rhel7/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/rhel7/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
- MAKEOPT
- CURVER
- CC=clang
- CXX=clang++
- PKG_RELEASE=centos8-clang
- PROXYSQL_BUILD_TYPE=clickhouse
- PROXYSQL_BUILD_ARCH=x86_64
command:
- /opt/entrypoint/entrypoint.bash
centos8_arm64_build:
image: proxysql/packaging-arm64:build-centos8
volumes:
@ -339,6 +357,24 @@ services:
command:
- /opt/entrypoint/entrypoint.bash
fedora34_clang_build:
image: proxysql/packaging:build-clang-fedora34
volumes:
- ./docker/images/proxysql/rhel-compliant/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
- MAKEOPT
- CURVER
- CC=clang
- CXX=clang++
- PKG_RELEASE=fedora34-clang
- PROXYSQL_BUILD_TYPE=clickhouse
- PROXYSQL_BUILD_ARCH=x86_64
command:
- /opt/entrypoint/entrypoint.bash
fedora34_dbg_build:
image: proxysql/packaging:build-fedora34
volumes:
@ -530,6 +566,24 @@ services:
command:
- /opt/entrypoint/entrypoint.bash
debian11_clang_build:
image: proxysql/packaging:build-clang-debian11
volumes:
- ./docker/images/proxysql/deb-compliant/latest-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
- MAKEOPT
- CURVER
- CC=clang
- CXX=clang++
- PKG_RELEASE=debian11-clang
- PROXYSQL_BUILD_TYPE=clickhouse
- PROXYSQL_BUILD_ARCH=amd64
command:
- /opt/entrypoint/entrypoint.bash
debian11_arm64_build:
image: proxysql/packaging-arm64:build-debian11
volumes:
@ -689,6 +743,24 @@ services:
command:
- /opt/entrypoint/entrypoint.bash
ubuntu20_clang_build:
image: proxysql/packaging:build-clang-ubuntu20
volumes:
- ./docker/images/proxysql/deb-compliant/latest-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
- MAKEOPT
- CURVER
- CC=clang
- CXX=clang++
- PKG_RELEASE=ubuntu20-clang
- PROXYSQL_BUILD_TYPE=clickhouse
- PROXYSQL_BUILD_ARCH=amd64
command:
- /opt/entrypoint/entrypoint.bash
ubuntu20_arm64_build:
image: proxysql/packaging-arm64:build-ubuntu20
volumes:

@ -5,11 +5,11 @@ echo "==> Build environment:"
env
ARCH=$PROXYSQL_BUILD_ARCH
echo "==> $ARCH architecture detected for package"
echo "==> ${ARCH} architecture detected for package"
echo "==> Cleaning"
# Delete package if exists
rm -f /opt/proxysql/binaries/proxysql_${CURVER}-${PKG_RELEASE}_$ARCH.deb || true
rm -f /opt/proxysql/binaries/proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}.deb || true
# Cleanup relic directories from a previously failed build
rm -f /opt/proxysql/proxysql.ctl /opt/proxysql/proxysql || true
@ -34,13 +34,25 @@ fi
touch /opt/proxysql/src/proxysql
# Prepare package files and build DEB
echo "==> Packaging"
cp /root/ctl/proxysql.ctl /opt/proxysql/proxysql.ctl
sed -i "s/PKG_VERSION_CURVER/${CURVER}/g" /opt/proxysql/proxysql.ctl
sed -i "s/PKG_ARCH/${ARCH}/g" /opt/proxysql/proxysql.ctl
cp /opt/proxysql/src/proxysql /opt/proxysql/
equivs-build proxysql.ctl
mv "/opt/proxysql/proxysql_${CURVER}_$ARCH.deb" "./binaries/proxysql_${CURVER}-${PKG_RELEASE}_$ARCH.deb"
cp "/opt/proxysql/src/proxysql.sha1" "/opt/proxysql/binaries/proxysql-${CURVER}-${PKG_RELEASE}.$ARCH.id-hash"
#echo "==> Packaging"
#cp /root/ctl/proxysql.ctl /opt/proxysql/proxysql.ctl
#sed -i "s/PKG_VERSION_CURVER/${CURVER}/g" /opt/proxysql/proxysql.ctl
#sed -i "s/PKG_ARCH/${ARCH}/g" /opt/proxysql/proxysql.ctl
#cp /opt/proxysql/src/proxysql /opt/proxysql/
#equivs-build proxysql.ctl
#mv "/opt/proxysql/proxysql_${CURVER}_$ARCH.deb" "./binaries/proxysql_${CURVER}-${PKG_RELEASE}_$ARCH.deb"
#cp "/opt/proxysql/src/proxysql.sha1" "/opt/proxysql/binaries/proxysql-${CURVER}-${PKG_RELEASE}.$ARCH.id-hash"
# Cleanup current build
rm -f /opt/proxysql/proxysql.ctl /opt/proxysql/proxysql
#rm -f /opt/proxysql/proxysql.ctl /opt/proxysql/proxysql
echo "==> Packaging"
cd /opt/proxysql
mkdir -p ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}/DEBIAN
cp /root/ctl/proxysql.ctl ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}/DEBIAN/control
sed -i "/^$/d; /^#/d" ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}/DEBIAN/control
sed -i "s/PKG_VERSION_CURVER/${CURVER}/g" ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}/DEBIAN/control
sed -i "s/PKG_ARCH/${ARCH}/g" ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}/DEBIAN/control
cp /opt/proxysql/src/proxysql ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}
dpkg-deb --build --root-owner-group ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}
mv ./proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}.deb ./binaries/proxysql_${CURVER}-${PKG_RELEASE}_${ARCH}.deb
cp ./src/proxysql.sha1 ./binaries/proxysql-${CURVER}-${PKG_RELEASE}.${ARCH}.id-hash

@ -109,7 +109,11 @@ else
WASAN=
endif
MYCXXFLAGS=-std=c++11 $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) -DGITVERSION=\"$(GIT_VERSION)\" $(WGCOV) $(WASAN)
ifeq ($(CXX),clang++)
MYCXXFLAGS=-std=c++11 -fuse-ld=lld $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) -DGITVERSION=\"$(GIT_VERSION)\" $(WGCOV) $(WASAN)
else
MYCXXFLAGS=-std=c++11 $(IDIRS) $(OPTZ) $(DEBUG) $(PSQLCH) -DGITVERSION=\"$(GIT_VERSION)\" $(WGCOV) $(WASAN)
endif
ifeq ($(WITHGCOVVAR),1)
LDFLAGS+= -lgcov --coverage

Loading…
Cancel
Save