diff --git a/Makefile b/Makefile index 623315708..15f2b881a 100644 --- a/Makefile +++ b/Makefile @@ -54,9 +54,14 @@ clean: cd lib && ${MAKE} clean cd src && ${MAKE} clean -packages: centos6.7 centos7 centos6.7-dbg centos7-dbg ubuntu12 ubuntu14 debian7 debian8 ubuntu12-dbg ubuntu14-dbg debian7-dbg debian8-dbg ubuntu16 ubuntu16-dbg fedora24 fedora24-dbg +packages: centos6.7 centos7 centos6.7-dbg centos7-dbg centos5 centos5-dbg ubuntu12 ubuntu14 debian7 debian8 ubuntu12-dbg ubuntu14-dbg debian7-dbg debian8-dbg ubuntu16 ubuntu16-dbg fedora24 fedora24-dbg .PHONY: packages +centos5: binaries/proxysql-${CURVER}-1-centos5.x86_64.rpm +.PHONY: centos5 + +centos5-dbg: binaries/proxysql-${CURVER}-1-centos5.x86_64.rpm +.PHONY: centos5-dbg centos6.7: binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm .PHONY: centos6.7 @@ -107,6 +112,48 @@ debian8-dbg: binaries/proxysql_${CURVER}-dbg-debian8_amd64.deb .PHONY: debian8-dbg +binaries/proxysql-${CURVER}-1-centos5.x86_64.rpm: + docker stop centos5_build || true + docker rm centos5_build || true + docker create --name centos5_build renecannao/proxysql:build-centos5 bash -c "while : ; do sleep 10 ; done" + docker start centos5_build + docker exec centos5_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" + docker exec centos5_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT}" + docker exec -it centos5_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; 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}" + docker exec -it centos5_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" + docker cp docker/images/proxysql/centos5-build/rpmmacros centos5_build:/root/.rpmmacros + docker cp docker/images/proxysql/centos5-build/proxysql.spec centos5_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 + docker exec -it centos5_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" + docker exec -it centos5_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" + sleep 2 + docker exec -it centos5_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 + docker cp centos5_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-centos5.x86_64.rpm + docker stop centos5_build + docker rm centos5_build + +binaries/proxysql-${CURVER}-1-dbg-centos5.x86_64.rpm: + docker stop centos5_build || true + docker rm centos5_build || true + docker create --name centos5_build renecannao/proxysql:build-centos5 bash -c "while : ; do sleep 10 ; done" + docker start centos5_build + docker exec centos5_build bash -c "cd /opt; git clone -b v${CURVER} https://github.com/sysown/proxysql.git proxysql" + docker exec centos5_build bash -c "cd /opt/proxysql; ${MAKE} clean && ${MAKE} ${MAKEOPT} build_deps && ${MAKE} ${MAKEOPT} debug" + docker exec -it centos5_build bash -c "cd /opt/proxysql ; mkdir -p proxysql/usr/bin; mkdir -p proxysql/etc; cp src/proxysql proxysql/usr/bin/; cp -a etc proxysql ; 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}" + docker exec -it centos5_build bash -c "mkdir -p /root/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}" + docker cp docker/images/proxysql/centos5-build/rpmmacros centos5_build:/root/.rpmmacros + docker cp docker/images/proxysql/centos5-build/proxysql.spec centos5_build:/root/rpmbuild/SPECS/proxysql.spec + sleep 2 + docker exec -it centos5_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" + docker exec -it centos5_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" + sleep 2 + docker exec -it centos5_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" + sleep 2 + docker cp centos5_build:/root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm ./binaries/proxysql-${CURVER}-1-dbg-centos5.x86_64.rpm + docker stop centos5_build + docker rm centos5_build + binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm: docker stop centos67_build || true docker rm centos67_build || true @@ -120,7 +167,7 @@ binaries/proxysql-${CURVER}-1-centos67.x86_64.rpm: docker cp docker/images/proxysql/centos67-build/proxysql.spec centos67_build:/root/rpmbuild/SPECS/proxysql.spec sleep 2 docker exec -it centos67_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" - docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" sleep 2 docker exec -it centos67_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 @@ -141,7 +188,7 @@ binaries/proxysql-${CURVER}-1-dbg-centos67.x86_64.rpm: docker cp docker/images/proxysql/centos67-build/proxysql.spec centos67_build:/root/rpmbuild/SPECS/proxysql.spec sleep 2 docker exec -it centos67_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" - docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + docker exec -it centos67_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" sleep 2 docker exec -it centos67_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 @@ -162,7 +209,7 @@ binaries/proxysql-${CURVER}-1-centos7.x86_64.rpm: docker cp docker/images/proxysql/centos7-build/proxysql.spec centos7_build:/root/rpmbuild/SPECS/proxysql.spec sleep 2 docker exec -it centos7_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" - docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" sleep 2 docker exec -it centos7_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 @@ -183,7 +230,7 @@ binaries/proxysql-${CURVER}-1-dbg-centos7.x86_64.rpm: docker cp docker/images/proxysql/centos7-build/proxysql.spec centos7_build:/root/rpmbuild/SPECS/proxysql.spec sleep 2 docker exec -it centos7_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" - docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + docker exec -it centos7_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" sleep 2 docker exec -it centos7_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 @@ -205,7 +252,7 @@ binaries/proxysql-${CURVER}-1-fedora24.x86_64.rpm: docker cp docker/images/proxysql/fedora24-build/proxysql.spec fedora24_build:/root/rpmbuild/SPECS/proxysql.spec sleep 2 docker exec -it fedora24_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" - docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" sleep 2 docker exec -it fedora24_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 @@ -226,7 +273,7 @@ binaries/proxysql-${CURVER}-1-dbg-fedora24.x86_64.rpm: docker cp docker/images/proxysql/fedora24-build/proxysql.spec fedora24_build:/root/rpmbuild/SPECS/proxysql.spec sleep 2 docker exec -it fedora24_build bash -c "cp /opt/proxysql/proxysql-${CURVER}.tar.gz /root/rpmbuild/SOURCES" - docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec" + docker exec -it fedora24_build bash -c "cd /root/rpmbuild; rpmbuild -ba SPECS/proxysql.spec --define \"version ${CURVER}\"" sleep 2 docker exec -it fedora24_build bash -c "cp /root/rpmbuild/RPMS/x86_64/proxysql-${CURVER}-1.x86_64.rpm /root/rpm" sleep 2 diff --git a/docker/images/proxysql/centos5-build/proxysql.spec b/docker/images/proxysql/centos5-build/proxysql.spec new file mode 100644 index 000000000..16ff2cff5 --- /dev/null +++ b/docker/images/proxysql/centos5-build/proxysql.spec @@ -0,0 +1,76 @@ +# Don't try fancy stuff like debuginfo, which is useless on binary-only +# packages. Don't strip binary too +# Be sure buildpolicy set to do nothing +%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 + +%build +# Empty section. + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot} + +# in builddir +cp -a * %{buildroot} + +%clean +rm -rf %{buildroot} + +%post +mkdir /var/run/%{name} +chkconfig --add %{name} + +%preun +/etc/init.d/%{name} stop +chkconfig --del %{name} + +%postun +rm -rf /var/run/%{name} + +%files +%defattr(-,root,root,-) +%config(noreplace) %{_sysconfdir}/%{name}.cnf +%{_bindir}/* +%{_sysconfdir}/init.d/%{name} +/usr/share/proxysql/tools/proxysql_galera_checker.sh +/usr/share/proxysql/tools/proxysql_galera_writer.pl + +%changelog +* Wed Oct 19 2016 Rene Cannao 1.3.0 +- experimental support for Prepared Statements +- enhanced scalability +* Thu Sep 29 2016 Rene Cannao 1.2.4 +- Forth stable release of 1.2 +* Tue Sep 20 2016 Rene Cannao 1.2.3 +- Third stable release of 1.2 +* Fri Sep 2 2016 Rene Cannao 1.2.2 +- Second stable release of 1.2 +* Tue Aug 2 2016 Rene Cannao 1.2.1 +- First stable release of 1.2 +* Mon Mar 14 2016 Rene Cannao 1.2.0 +- First testing release of 1.2 +* Sat Mar 11 2016 Rene Cannao 1.1.2 +- Upgraded to release 1.1.2 +* Sat Oct 31 2015 Rene Cannao 1.0.1 +- Compiles 1.0.1 +* Wed Sep 9 2015 Andrei Ismail 0.2 +- Added support for automatic packaging on Ubuntu 14.04 and CentOS 7. diff --git a/docker/images/proxysql/centos5-build/rpmmacros b/docker/images/proxysql/centos5-build/rpmmacros new file mode 100644 index 000000000..a1d0f32f0 --- /dev/null +++ b/docker/images/proxysql/centos5-build/rpmmacros @@ -0,0 +1,2 @@ +%_topdir %(echo $HOME)/rpmbuild +%_tmppath %{_topdir}/tmp \ No newline at end of file diff --git a/docker/images/proxysql/centos67-build/proxysql.spec b/docker/images/proxysql/centos67-build/proxysql.spec index 942623751..16ff2cff5 100644 --- a/docker/images/proxysql/centos67-build/proxysql.spec +++ b/docker/images/proxysql/centos67-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.4.0 +Version: %{version} Release: 1 License: GPL+ Group: Development/Tools @@ -39,9 +39,12 @@ rm -rf %{buildroot} mkdir /var/run/%{name} chkconfig --add %{name} +%preun +/etc/init.d/%{name} stop +chkconfig --del %{name} + %postun rm -rf /var/run/%{name} -chkconfig --del %{name} %files %defattr(-,root,root,-) diff --git a/docker/images/proxysql/centos7-build/proxysql.spec b/docker/images/proxysql/centos7-build/proxysql.spec index 942623751..16ff2cff5 100644 --- a/docker/images/proxysql/centos7-build/proxysql.spec +++ b/docker/images/proxysql/centos7-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.4.0 +Version: %{version} Release: 1 License: GPL+ Group: Development/Tools @@ -39,9 +39,12 @@ rm -rf %{buildroot} mkdir /var/run/%{name} chkconfig --add %{name} +%preun +/etc/init.d/%{name} stop +chkconfig --del %{name} + %postun rm -rf /var/run/%{name} -chkconfig --del %{name} %files %defattr(-,root,root,-) diff --git a/docker/images/proxysql/fedora24-build/proxysql.spec b/docker/images/proxysql/fedora24-build/proxysql.spec index 942623751..16ff2cff5 100644 --- a/docker/images/proxysql/fedora24-build/proxysql.spec +++ b/docker/images/proxysql/fedora24-build/proxysql.spec @@ -7,7 +7,7 @@ Summary: A high-performance MySQL proxy Name: proxysql -Version: 1.4.0 +Version: %{version} Release: 1 License: GPL+ Group: Development/Tools @@ -39,9 +39,12 @@ rm -rf %{buildroot} mkdir /var/run/%{name} chkconfig --add %{name} +%preun +/etc/init.d/%{name} stop +chkconfig --del %{name} + %postun rm -rf /var/run/%{name} -chkconfig --del %{name} %files %defattr(-,root,root,-) diff --git a/etc/init.d/proxysql b/etc/init.d/proxysql index 585488a2d..6d6b90bfc 100755 --- a/etc/init.d/proxysql +++ b/etc/init.d/proxysql @@ -1,5 +1,9 @@ #!/bin/bash # +# chkconfig: 345 99 01 +# description: High Performance and Advanced Proxy for MySQL and forks. \ +# It provides advanced features like connection pool, query routing and rewrite, \ +# firewalling, throttling, real time analysis, error-free failover ### BEGIN INIT INFO # Provides: proxysql # Required-Start: $local_fs diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 63f99e62a..927abfb05 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -8,6 +8,12 @@ MySQL_Session *sess_stopat; #endif +#ifdef epoll_create1 + #define EPOLL_CREATE epoll_create1(0) +#else + #define EPOLL_CREATE epoll_create(1) +#endif + #define PROXYSQL_LISTEN_LEN 1024 #define MIN_THREADS_FOR_MAINTENANCE 8 @@ -1974,7 +1980,7 @@ void MySQL_Thread::run() { if (idle_maintenance_thread) { // we check if it is the first time we are called if (efd==-1) { - efd = epoll_create1(0); + efd = EPOLL_CREATE; int fd=pipefd[0]; struct epoll_event event; memset(&event,0,sizeof(event)); // let's make valgrind happy