Packaging updates: Debian 10 & SystemD for RHEL 7+

pull/2290/head
Nick Vyzas 7 years ago
parent ba5aaefcf6
commit 732586ac00

@ -147,7 +147,7 @@ clean:
cd lib && ${MAKE} clean
cd src && ${MAKE} clean
packages: centos6.7 centos7 centos6.7-dbg centos7-dbg ubuntu14 debian7 debian8 ubuntu14-dbg debian7-dbg debian8-dbg ubuntu16 ubuntu16-dbg fedora24 fedora24-dbg debian9 debian9-dbg ubuntu16-clickhouse debian9-clickhouse centos7-clickhouse fedora24-clickhouse fedora27 fedora27-dbg fedora27-clickhouse ubuntu18 ubuntu18-dbg ubuntu18-clickhouse fedora28 fedora28-dbg fedora28-clickhouse
packages: centos6.7 centos6.7-dbg centos7 centos7-dbg centos7-clickhouse ubuntu14 ubuntu14-dbg ubuntu16 ubuntu16-dbg ubuntu16-clickhouse ubuntu18 ubuntu18-dbg ubuntu18-clickhouse debian7 debian7-dbg debian8 debian8-dbg debian9 debian9-dbg debian9-clickhouse debian10 debian10-dbg debian10-clickhouse fedora24 fedora24-dbg fedora24-clickhouse fedora27 fedora27-dbg fedora27-clickhouse fedora28 fedora28-dbg fedora28-clickhouse
.PHONY: packages
centos5: binaries/proxysql-${CURVER}-1-centos5.x86_64.rpm
@ -204,6 +204,9 @@ debian8: binaries/proxysql_${CURVER}-debian8_amd64.deb
debian9: binaries/proxysql_${CURVER}-debian9_amd64.deb
.PHONY: debian9
debian10: binaries/proxysql_${CURVER}-debian10_amd64.deb
.PHONY: debian10
ubuntu14-dbg: binaries/proxysql_${CURVER}-dbg-ubuntu14_amd64.deb
.PHONY: ubuntu14-dbg
@ -240,6 +243,12 @@ debian9.4-dbg: binaries/proxysql_${CURVER}-dbg-debian9.4_amd64.deb
debian9.4-clickhouse: binaries/proxysql_${CURVER}-clickhouse-debian9.4_amd64.deb
.PHONY: debian9.4-clickhouse
debian10-dbg: binaries/proxysql_${CURVER}-dbg-debian10_amd64.deb
.PHONY: debian10-dbg
debian10-clickhouse: binaries/proxysql_${CURVER}-clickhouse-debian10_amd64.deb
.PHONY: debian10-clickhouse
centos7-clickhouse: binaries/proxysql-${CURVER}-clickhouse-1-centos7.x86_64.rpm
.PHONY: centos7-clickhouse
@ -348,6 +357,10 @@ binaries/proxysql_${CURVER}-debian9.4_amd64.deb:
docker-compose up debian9_build
docker-compose rm -f
binaries/proxysql_${CURVER}-debian10_amd64.deb:
docker-compose up debian10_build
docker-compose rm -f
binaries/proxysql_${CURVER}-clickhouse-debian9_amd64.deb:
docker-compose up debian9_ch_build
docker-compose rm -f
@ -356,6 +369,10 @@ binaries/proxysql_${CURVER}-clickhouse-debian9.4_amd64.deb:
docker-compose up debian9.4_ch_build
docker-compose rm -f
binaries/proxysql_${CURVER}-clickhouse-debian10_amd64.deb:
docker-compose up debian10_ch_build
docker-compose rm -f
binaries/proxysql_${CURVER}-dbg-ubuntu14_amd64.deb:
docker-compose up ubuntu14_dbg_build
docker-compose rm -f
@ -392,6 +409,10 @@ binaries/proxysql_${CURVER}-dbg-debian9.4_amd64.deb:
docker-compose up debian9_dbg_build
docker-compose rm -f
binaries/proxysql_${CURVER}-dbg-debian10_amd64.deb:
docker-compose up debian10_dbg_build
docker-compose rm -f
.PHONY: cleanall
cleanall:
cd deps && ${MAKE} cleanall

@ -57,8 +57,8 @@ services:
centos7_build:
image: proxysql/packaging:build-centos7
volumes:
- ./docker/images/proxysql/rhel-compliant/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/entrypoint/:/opt/entrypoint/
- ./docker/images/proxysql/rhel-compliant/rhel7/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/rhel7/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
@ -70,8 +70,8 @@ services:
centos7_dbg_build:
image: proxysql/packaging:build-centos7
volumes:
- ./docker/images/proxysql/rhel-compliant/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/entrypoint/:/opt/entrypoint/
- ./docker/images/proxysql/rhel-compliant/rhel7/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/rhel7/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
@ -84,8 +84,8 @@ services:
centos7_ch_build:
image: proxysql/packaging:build-centos7
volumes:
- ./docker/images/proxysql/rhel-compliant/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/entrypoint/:/opt/entrypoint/
- ./docker/images/proxysql/rhel-compliant/rhel7/rpmmacros/:/root/
- ./docker/images/proxysql/rhel-compliant/rhel7/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
- MAKE
@ -354,6 +354,47 @@ services:
- PROXYSQL_BUILD_TYPE=clickhouse
command:
- /opt/entrypoint/entrypoint.bash
debian10_build:
image: proxysql/packaging:build-debian10
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
- PKG_RELEASE=debian10
command:
- /opt/entrypoint/entrypoint.bash
debian10_dbg_build:
image: proxysql/packaging:build-debian10
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
- PKG_RELEASE=dbg-debian10
- PROXYSQL_BUILD_TYPE=debug
command:
- /opt/entrypoint/entrypoint.bash
debian10_ch_build:
image: proxysql/packaging:build-debian10
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
- PKG_RELEASE=clickhouse-debian10
- PROXYSQL_BUILD_TYPE=clickhouse
command:
- /opt/entrypoint/entrypoint.bash
ubuntu12_build:
image: proxysql/packaging:build-ubuntu12
volumes:
@ -452,7 +493,7 @@ services:
ubuntu18_build:
image: proxysql/packaging:build-ubuntu18
volumes:
- ./docker/images/proxysql/deb-compliant/bionic-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/latest-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
@ -465,7 +506,7 @@ services:
ubuntu18_dbg_build:
image: proxysql/packaging:build-ubuntu18
volumes:
- ./docker/images/proxysql/deb-compliant/bionic-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/latest-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:
@ -479,7 +520,7 @@ services:
ubuntu18_ch_build:
image: proxysql/packaging:build-ubuntu18
volumes:
- ./docker/images/proxysql/deb-compliant/bionic-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/latest-package/ctl/:/root/ctl/
- ./docker/images/proxysql/deb-compliant/entrypoint/:/opt/entrypoint/
- ./:/opt/proxysql/
environment:

@ -0,0 +1,48 @@
#!/bin/bash
set -eu
echo "==> Build environment:"
env
echo "==> Cleaning"
# Delete package if exists
rm -f /opt/proxysql/binaries/proxysql-${CURVER}-1-${PKG_RELEASE}.x86_64.rpm || true
# Cleanup relic directories from a previously failed build
rm -fr /root/.pki /root/rpmbuild/{BUILDROOT,RPMS,SRPMS,BUILD,SOURCES,tmp} /opt/proxysql/proxysql /opt/proxysql/proxysql-${CURVER} || true
# Clean and build dependancies and source
echo "==> Building"
cd /opt/proxysql
if [[ -z ${PROXYSQL_BUILD_TYPE:-} ]] ; then
deps_target="build_deps"
build_target=""
else
deps_target="build_deps_$PROXYSQL_BUILD_TYPE"
build_target="$PROXYSQL_BUILD_TYPE"
fi
${MAKE} cleanbuild
${MAKE} ${MAKEOPT} "${deps_target}"
if [[ -z ${build_target} ]] ; then
${MAKE} ${MAKEOPT}
else
${MAKE} ${MAKEOPT} "${build_target}"
fi
# Prepare package files and build RPM
echo "==> Packaging"
mkdir -p proxysql/usr/bin proxysql/etc
cp src/proxysql proxysql/usr/bin/
cp -a systemd proxysql/etc/
cp -a etc/proxysql.cnf proxysql/etc/
cp -a etc/logrotate.d proxysql/etc/
mkdir -p proxysql/usr/share/proxysql/tools
cp -a tools/proxysql_galera_checker.sh tools/proxysql_galera_writer.pl proxysql/usr/share/proxysql/tools
mv proxysql "proxysql-${CURVER}"
tar czvf "proxysql-${CURVER}.tar.gz" proxysql-${CURVER}
mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}
mv "/opt/proxysql/proxysql-${CURVER}.tar.gz" /root/rpmbuild/SOURCES
cd /root/rpmbuild && rpmbuild -ba SPECS/proxysql.spec --define "version ${CURVER}"
mv "/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm" "/opt/proxysql/binaries/proxysql-${CURVER}-1-${PKG_RELEASE}.x86_64.rpm"
# Cleanup current build
rm -fr /root/.pki /root/rpmbuild/{BUILDROOT,RPMS,SRPMS,BUILD,SOURCES,tmp} /opt/proxysql/proxysql "/opt/proxysql/proxysql-${CURVER}"

@ -0,0 +1,2 @@
%_topdir %(echo $HOME)/rpmbuild
%_tmppath %{_topdir}/tmp

@ -0,0 +1,90 @@
%define __spec_install_post %{nil}
%define debug_package %{nil}
%define __os_install_post %{_dbpath}/brp-compress
Summary: A high-performance MySQL proxy
Name: proxysql
Version: %{version}
Release: 1
License: GPL+
Group: Development/Tools
SOURCE0 : %{name}-%{version}.tar.gz
URL: http://www.proxysql.com/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%description
%{summary}
%prep
%setup -q
%pre
# Cleanup artifacts
if [ -f /var/lib/%{name}/PROXYSQL_UPGRADE ]; then
rm -fr /var/lib/%{name}/PROXYSQL_UPGRADE
fi
%build
# Packages are pre-built, nothing to do
%install
# Clean buildroot and install files
/bin/rm -rf %{buildroot}
/bin/mkdir -p %{buildroot}
/bin/cp -a * %{buildroot}
%clean
/bin/rm -rf %{buildroot}
%post
# Create relevant user, directories and configuration files
if [ ! -d /var/run/%{name} ]; then /bin/mkdir /var/run/%{name} ; fi
if [ ! -d /var/lib/%{name} ]; then /bin/mkdir /var/lib/%{name} ; fi
if ! id -u %{name} > /dev/null 2>&1; then useradd -r -U -s /bin/false -d /var/lib/%{name} -c "ProxySQL Server" %{name}; fi
/bin/chown -R %{name}: /var/lib/%{name} /var/run/%{name}
/bin/chown root:%{name} /etc/%{name}.cnf
/bin/chmod 640 /etc/%{name}.cnf
# Configure systemd appropriately.
/bin/systemctl daemon-reload
/bin/systemctl enable %{name}.service
# Notify that a package update is in progress in order to start service.
if [ $1 -eq 2 ]; then /bin/touch /var/lib/%{name}/PROXYSQL_UPGRADE ; fi
%preun
# When uninstalling always try stop the service, ignore failures
/bin/systemctl stop %{name} || true
%postun
if [ $1 -eq 0 ]; then
# This is a pure uninstall, systemd unit file removed
# only daemon-reload is needed.
/bin/systemctl daemon-reload
else
# This is an upgrade, ProxySQL should be started. This
# logic works for packages newer than 2.0.7 and ensures
# a faster restart time.
/bin/systemctl start %{name}.service
/bin/rm -fr /var/lib/%{name}/PROXYSQL_UPGRADE
fi
%posttrans
if [ -f /var/lib/%{name}/PROXYSQL_UPGRADE ]; then
# This is a safeguard to start the service after an update
# which supports legacy "preun" / "postun" logic and will
# only execute for packages before 2.0.7.
/bin/systemctl start %{name}.service
/bin/rm -fr /var/lib/%{name}/PROXYSQL_UPGRADE
fi
%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}.cnf
%attr(640,root,%{name}) %{_sysconfdir}/%{name}.cnf
%config(noreplace) %attr(640,root,%{name}) %{_sysconfdir}/logrotate.d/%{name}
%{_bindir}/*
%{_sysconfdir}/systemd/system/%{name}.service
/usr/share/proxysql/tools/proxysql_galera_checker.sh
/usr/share/proxysql/tools/proxysql_galera_writer.pl
%changelog

@ -43,7 +43,6 @@ chown -R %{name}: /var/lib/%{name} /var/run/%{name}
chown root:%{name} /etc/%{name}.cnf
chmod 640 /etc/%{name}.cnf
chkconfig --add %{name}
#systemctl enable proxysql.service
%preun
/etc/init.d/%{name} stop

@ -20,15 +20,11 @@ UMask=0007
LimitNOFILE=102400
LimitCORE=1073741824
ProtectHome=yes
ReadOnlyPaths=/
ReadWritePaths=/var/lib/proxysql /var/run/proxysql
NoNewPrivileges=true
CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_ALG
ProtectSystem=full
PrivateDevices=yes
ProtectKernelTunables=true
ProtectControlGroups=true
[Install]
WantedBy=multi-user.target

Loading…
Cancel
Save