diff --git a/Makefile b/Makefile index 5b0ea850f..c10511629 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/deps/Makefile b/deps/Makefile index cf0c6f528..350c11ffc 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -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} diff --git a/docker-compose.yml b/docker-compose.yml index 82cd95c4f..3c53e1a20 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: diff --git a/docker/images/proxysql/deb-compliant/entrypoint/entrypoint.bash b/docker/images/proxysql/deb-compliant/entrypoint/entrypoint.bash index caf0074ea..9155f450a 100755 --- a/docker/images/proxysql/deb-compliant/entrypoint/entrypoint.bash +++ b/docker/images/proxysql/deb-compliant/entrypoint/entrypoint.bash @@ -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 diff --git a/src/Makefile b/src/Makefile index e0939a10f..3c3d9a595 100644 --- a/src/Makefile +++ b/src/Makefile @@ -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