From 1096ec7003531d803fc88fe60abc4f6e6368dffa Mon Sep 17 00:00:00 2001 From: Tomas Mozes Date: Fri, 20 Sep 2019 13:10:20 +0000 Subject: app-admin/syslog-ng: fix daemon crashes on x86 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomáš Mózes Closes: https://bugs.gentoo.org/695176 Signed-off-by: Joonas Niilola --- .../patches/syslog-ng-3.23.1-fix-sigabrt.patch | 72 +++++++++ app-admin/syslog-ng/syslog-ng-3.23.1-r1.ebuild | 174 +++++++++++++++++++++ app-admin/syslog-ng/syslog-ng-3.23.1.ebuild | 171 -------------------- 3 files changed, 246 insertions(+), 171 deletions(-) create mode 100644 app-admin/syslog-ng/files/patches/syslog-ng-3.23.1-fix-sigabrt.patch create mode 100644 app-admin/syslog-ng/syslog-ng-3.23.1-r1.ebuild delete mode 100644 app-admin/syslog-ng/syslog-ng-3.23.1.ebuild (limited to 'app-admin/syslog-ng') diff --git a/app-admin/syslog-ng/files/patches/syslog-ng-3.23.1-fix-sigabrt.patch b/app-admin/syslog-ng/files/patches/syslog-ng-3.23.1-fix-sigabrt.patch new file mode 100644 index 000000000000..6d27e88abf71 --- /dev/null +++ b/app-admin/syslog-ng/files/patches/syslog-ng-3.23.1-fix-sigabrt.patch @@ -0,0 +1,72 @@ +diff --git a/lib/logsource.c b/lib/logsource.c +index 3f38b66e8b..83c61a8e93 100644 +--- a/lib/logsource.c ++++ b/lib/logsource.c +@@ -633,7 +633,20 @@ log_source_queue(LogPipe *s, LogMessage *msg, const LogPathOptions *path_options + evt_tag_printf("msg", "%p", msg)); + + msg_set_context(NULL); ++} ++ ++static void ++_initialize_window(LogSource *self, gint init_window_size) ++{ ++ self->window_initialized = TRUE; ++ window_size_counter_set(&self->window_size, init_window_size); ++ self->full_window_size = init_window_size; ++} + ++static gboolean ++_is_window_initialized(LogSource *self) ++{ ++ return self->window_initialized; + } + + void +@@ -645,11 +658,9 @@ log_source_set_options(LogSource *self, LogSourceOptions *options, + * configuration and we received a SIGHUP. This means that opened + * connections will not have their window_size changed. */ + +- if ((gint)window_size_counter_get(&self->window_size, NULL) == -1) +- { +- window_size_counter_set(&self->window_size, options->init_window_size); +- self->full_window_size = options->init_window_size; +- } ++ if (!_is_window_initialized(self)) ++ _initialize_window(self, options->init_window_size); ++ + self->options = options; + if (self->stats_id) + g_free(self->stats_id); +@@ -679,7 +690,7 @@ log_source_init_instance(LogSource *self, GlobalConfig *cfg) + self->super.free_fn = log_source_free; + self->super.init = log_source_init; + self->super.deinit = log_source_deinit; +- window_size_counter_set(&self->window_size, (gsize)-1); ++ self->window_initialized = FALSE; + self->ack_tracker = NULL; + } + +@@ -696,7 +707,9 @@ log_source_free(LogPipe *s) + + ack_tracker_free(self->ack_tracker); + self->ack_tracker = NULL; +- _release_dynamic_window(self); ++ ++ if (G_UNLIKELY(dynamic_window_is_enabled(&self->dynamic_window))) ++ _release_dynamic_window(self); + } + + void +diff --git a/lib/logsource.h b/lib/logsource.h +index 370842efc2..75d4926046 100644 +--- a/lib/logsource.h ++++ b/lib/logsource.h +@@ -71,6 +71,7 @@ struct _LogSource + gchar *stats_instance; + WindowSizeCounter window_size; + DynamicWindow dynamic_window; ++ gboolean window_initialized; + /* full_window_size = static + dynamic */ + gsize full_window_size; + atomic_gssize window_size_to_be_reclaimed; diff --git a/app-admin/syslog-ng/syslog-ng-3.23.1-r1.ebuild b/app-admin/syslog-ng/syslog-ng-3.23.1-r1.ebuild new file mode 100644 index 000000000000..bc13ee0fdc78 --- /dev/null +++ b/app-admin/syslog-ng/syslog-ng-3.23.1-r1.ebuild @@ -0,0 +1,174 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python2_7 python3_{5,6,7} ) +inherit autotools python-single-r1 systemd + +MY_PV_MM=$(ver_cut 1-2) +DESCRIPTION="syslog replacement with advanced filtering features" +HOMEPAGE="https://syslog-ng.com/open-source-log-management" +SRC_URI="https://github.com/balabit/syslog-ng/releases/download/${P}/${P}.tar.gz" + +LICENSE="GPL-2+ LGPL-2.1+" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86" +IUSE="amqp caps dbi geoip geoip2 http ipv6 json kafka libressl mongodb pacct python redis smtp snmp spoof-source systemd tcpd" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" +# unit tests require https://github.com/Snaipe/Criterion with additional deps +RESTRICT="test" + +RDEPEND=" + >=dev-libs/glib-2.10.1:2 + >=dev-libs/ivykis-0.42.4 + >=dev-libs/libpcre-6.1:= + !dev-libs/eventlog + amqp? ( >=net-libs/rabbitmq-c-0.8.0:=[ssl] ) + caps? ( sys-libs/libcap ) + dbi? ( >=dev-db/libdbi-0.9.0 ) + geoip? ( >=dev-libs/geoip-1.5.0 ) + geoip2? ( dev-libs/libmaxminddb:= ) + http? ( net-misc/curl ) + json? ( >=dev-libs/json-c-0.9:= ) + kafka? ( >=dev-libs/librdkafka-1.0.0:= ) + mongodb? ( >=dev-libs/mongo-c-driver-1.2.0 ) + python? ( ${PYTHON_DEPS} ) + redis? ( >=dev-libs/hiredis-0.11.0:= ) + smtp? ( net-libs/libesmtp ) + snmp? ( net-analyzer/net-snmp ) + spoof-source? ( net-libs/libnet:1.1= ) + systemd? ( sys-apps/systemd:= ) + tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= )" +DEPEND="${RDEPEND}" +BDEPEND=" + sys-devel/flex + virtual/pkgconfig" + +DOCS=( AUTHORS NEWS.md CONTRIBUTING.md contrib/syslog-ng.conf.{HP-UX,RedHat,SunOS,doc} + contrib/syslog2ng "${T}/syslog-ng.conf.gentoo.hardened" + "${T}/syslog-ng.logrotate.hardened" "${FILESDIR}/README.hardened" ) + +# bug #695176 +PATCHES=( "${FILESDIR}/patches/${PN}-3.23.1-fix-sigabrt.patch" ) + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + local f + + use python && python_fix_shebang . + + # remove bundled libs + rm -r lib/ivykis || die + + # drop scl modules requiring json + if use !json; then + sed -i -r '/cim|elasticsearch|ewmm|graylog2|loggly|logmatic|netskope|nodejs|osquery|slack/d' scl/Makefile.am || die + fi + + # drop scl modules requiring http + if use !http; then + sed -i -r '/slack|telegram/d' scl/Makefile.am || die + fi + + # use gentoo default path + if use systemd; then + sed -e 's@/etc/syslog-ng.conf@/etc/syslog-ng/syslog-ng.conf@g;s@/var/run@/run@g' \ + -i contrib/systemd/syslog-ng@default || die + fi + + for f in syslog-ng.logrotate.hardened.in syslog-ng.logrotate.in; do + sed \ + -e "s#@GENTOO_RESTART@#$(usex systemd "systemctl kill -s HUP syslog-ng@default" \ + "/etc/init.d/syslog-ng reload")#g" \ + "${FILESDIR}/${f}" > "${T}/${f/.in/}" || die + done + + for f in syslog-ng.conf.gentoo.hardened.in \ + syslog-ng.conf.gentoo.in; do + sed -e "s/@SYSLOGNG_VERSION@/${MY_PV_MM}/g" "${FILESDIR}/${f}" > "${T}/${f/.in/}" || die + done + + default + eautoreconf +} + +src_configure() { + local myconf=( + --disable-docs + --disable-java + --disable-java-modules + --disable-riemann + --enable-manpages + --localstatedir=/var/lib/syslog-ng + --sysconfdir=/etc/syslog-ng + --with-embedded-crypto + --with-ivykis=system + --with-module-dir=/usr/$(get_libdir)/syslog-ng + --with-pidfile-dir=/var/run + --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" + $(use_enable amqp) + $(usex amqp --with-librabbitmq-client=system --without-librabbitmq-client) + $(use_enable caps linux-caps) + $(use_enable dbi sql) + $(use_enable geoip) + $(use_enable geoip2) + $(use_enable http) + $(use_enable ipv6) + $(use_enable json) + $(use_enable kafka) + $(use_enable mongodb) + $(usex mongodb --with-mongoc=system "--without-mongoc --disable-legacy-mongodb-options") + $(use_enable pacct) + $(use_enable python) + $(use_enable redis) + $(use_enable smtp) + $(use_enable snmp snmp-dest) + $(use_enable spoof-source) + $(use_enable systemd) + $(use_enable tcpd tcp-wrapper) + ) + + econf "${myconf[@]}" +} + +src_install() { + default + + # Install default configuration + insinto /etc/default + doins contrib/systemd/syslog-ng@default + + insinto /etc/syslog-ng + newins "${T}/syslog-ng.conf.gentoo" syslog-ng.conf + + insinto /etc/logrotate.d + newins "${T}/syslog-ng.logrotate" syslog-ng + + newinitd "${FILESDIR}/syslog-ng.rc" syslog-ng + newconfd "${FILESDIR}/syslog-ng.confd" syslog-ng + keepdir /etc/syslog-ng/patterndb.d /var/lib/syslog-ng + find "${D}" -name '*.la' -delete || die + + use python && python_optimize +} + +pkg_postinst() { + # bug #355257 + if ! has_version app-admin/logrotate ; then + elog "It is highly recommended that app-admin/logrotate be emerged to" + elog "manage the log files. ${PN} installs a file in /etc/logrotate.d" + elog "for logrotate to use." + fi + + if use systemd; then + ewarn "The service file for systemd has changed to support multiple instances." + ewarn "To start the default instance issue:" + ewarn "# systemctl start syslog-ng@default" + fi +} diff --git a/app-admin/syslog-ng/syslog-ng-3.23.1.ebuild b/app-admin/syslog-ng/syslog-ng-3.23.1.ebuild deleted file mode 100644 index 3cb8ad6b096a..000000000000 --- a/app-admin/syslog-ng/syslog-ng-3.23.1.ebuild +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -PYTHON_COMPAT=( python2_7 python3_{5,6,7} ) -inherit autotools python-single-r1 systemd - -MY_PV_MM=$(ver_cut 1-2) -DESCRIPTION="syslog replacement with advanced filtering features" -HOMEPAGE="https://syslog-ng.com/open-source-log-management" -SRC_URI="https://github.com/balabit/syslog-ng/releases/download/${P}/${P}.tar.gz" - -LICENSE="GPL-2+ LGPL-2.1+" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86" -IUSE="amqp caps dbi geoip geoip2 http ipv6 json kafka libressl mongodb pacct python redis smtp snmp spoof-source systemd tcpd" -REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" -# unit tests require https://github.com/Snaipe/Criterion with additional deps -RESTRICT="test" - -RDEPEND=" - >=dev-libs/glib-2.10.1:2 - >=dev-libs/ivykis-0.42.4 - >=dev-libs/libpcre-6.1:= - !dev-libs/eventlog - amqp? ( >=net-libs/rabbitmq-c-0.8.0:=[ssl] ) - caps? ( sys-libs/libcap ) - dbi? ( >=dev-db/libdbi-0.9.0 ) - geoip? ( >=dev-libs/geoip-1.5.0 ) - geoip2? ( dev-libs/libmaxminddb:= ) - http? ( net-misc/curl ) - json? ( >=dev-libs/json-c-0.9:= ) - kafka? ( >=dev-libs/librdkafka-1.0.0:= ) - mongodb? ( >=dev-libs/mongo-c-driver-1.2.0 ) - python? ( ${PYTHON_DEPS} ) - redis? ( >=dev-libs/hiredis-0.11.0:= ) - smtp? ( net-libs/libesmtp ) - snmp? ( net-analyzer/net-snmp ) - spoof-source? ( net-libs/libnet:1.1= ) - systemd? ( sys-apps/systemd:= ) - tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) - !libressl? ( dev-libs/openssl:0= ) - libressl? ( dev-libs/libressl:0= )" -DEPEND="${RDEPEND}" -BDEPEND=" - sys-devel/flex - virtual/pkgconfig" - -DOCS=( AUTHORS NEWS.md CONTRIBUTING.md contrib/syslog-ng.conf.{HP-UX,RedHat,SunOS,doc} - contrib/syslog2ng "${T}/syslog-ng.conf.gentoo.hardened" - "${T}/syslog-ng.logrotate.hardened" "${FILESDIR}/README.hardened" ) - -pkg_setup() { - use python && python-single-r1_pkg_setup -} - -src_prepare() { - local f - - use python && python_fix_shebang . - - # remove bundled libs - rm -r lib/ivykis || die - - # drop scl modules requiring json - if use !json; then - sed -i -r '/cim|elasticsearch|ewmm|graylog2|loggly|logmatic|netskope|nodejs|osquery|slack/d' scl/Makefile.am || die - fi - - # drop scl modules requiring http - if use !http; then - sed -i -r '/slack|telegram/d' scl/Makefile.am || die - fi - - # use gentoo default path - if use systemd; then - sed -e 's@/etc/syslog-ng.conf@/etc/syslog-ng/syslog-ng.conf@g;s@/var/run@/run@g' \ - -i contrib/systemd/syslog-ng@default || die - fi - - for f in syslog-ng.logrotate.hardened.in syslog-ng.logrotate.in; do - sed \ - -e "s#@GENTOO_RESTART@#$(usex systemd "systemctl kill -s HUP syslog-ng@default" \ - "/etc/init.d/syslog-ng reload")#g" \ - "${FILESDIR}/${f}" > "${T}/${f/.in/}" || die - done - - for f in syslog-ng.conf.gentoo.hardened.in \ - syslog-ng.conf.gentoo.in; do - sed -e "s/@SYSLOGNG_VERSION@/${MY_PV_MM}/g" "${FILESDIR}/${f}" > "${T}/${f/.in/}" || die - done - - default - eautoreconf -} - -src_configure() { - local myconf=( - --disable-docs - --disable-java - --disable-java-modules - --disable-riemann - --enable-manpages - --localstatedir=/var/lib/syslog-ng - --sysconfdir=/etc/syslog-ng - --with-embedded-crypto - --with-ivykis=system - --with-module-dir=/usr/$(get_libdir)/syslog-ng - --with-pidfile-dir=/var/run - --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" - $(use_enable amqp) - $(usex amqp --with-librabbitmq-client=system --without-librabbitmq-client) - $(use_enable caps linux-caps) - $(use_enable dbi sql) - $(use_enable geoip) - $(use_enable geoip2) - $(use_enable http) - $(use_enable ipv6) - $(use_enable json) - $(use_enable kafka) - $(use_enable mongodb) - $(usex mongodb --with-mongoc=system "--without-mongoc --disable-legacy-mongodb-options") - $(use_enable pacct) - $(use_enable python) - $(use_enable redis) - $(use_enable smtp) - $(use_enable snmp snmp-dest) - $(use_enable spoof-source) - $(use_enable systemd) - $(use_enable tcpd tcp-wrapper) - ) - - econf "${myconf[@]}" -} - -src_install() { - default - - # Install default configuration - insinto /etc/default - doins contrib/systemd/syslog-ng@default - - insinto /etc/syslog-ng - newins "${T}/syslog-ng.conf.gentoo" syslog-ng.conf - - insinto /etc/logrotate.d - newins "${T}/syslog-ng.logrotate" syslog-ng - - newinitd "${FILESDIR}/syslog-ng.rc" syslog-ng - newconfd "${FILESDIR}/syslog-ng.confd" syslog-ng - keepdir /etc/syslog-ng/patterndb.d /var/lib/syslog-ng - find "${D}" -name '*.la' -delete || die - - use python && python_optimize -} - -pkg_postinst() { - # bug #355257 - if ! has_version app-admin/logrotate ; then - elog "It is highly recommended that app-admin/logrotate be emerged to" - elog "manage the log files. ${PN} installs a file in /etc/logrotate.d" - elog "for logrotate to use." - fi - - if use systemd; then - ewarn "The service file for systemd has changed to support multiple instances." - ewarn "To start the default instance issue:" - ewarn "# systemctl start syslog-ng@default" - fi -} -- cgit v1.2.3