mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-16 14:29:05 -07:00
app-admin/syslog-ng: fix python byte compile, stop spurious kmsg logs
Patch taken from: https://github.com/syslog-ng/syslog-ng/pull/5168 https://github.com/syslog-ng/syslog-ng/issues/5159 Closes: https://bugs.gentoo.org/945490 Closes: https://bugs.gentoo.org/914968 Signed-off-by: Tomáš Mózes <hydrapolic@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/39576 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
From 2cd1f3abaf077aa0f14de967db55993c06bdad06 Mon Sep 17 00:00:00 2001
|
||||
From: Hofi <hofione@gmail.com>
|
||||
Date: Fri, 8 Nov 2024 15:46:00 +0100
|
||||
Subject: [PATCH] file-reader: added a more detailed, direct check if seek can
|
||||
be called on the file descriptor
|
||||
|
||||
Signed-off-by: Hofi <hofione@gmail.com>
|
||||
---
|
||||
modules/affile/file-reader.c | 22 +++++++++++++++++++---
|
||||
1 file changed, 19 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/modules/affile/file-reader.c b/modules/affile/file-reader.c
|
||||
index 712bac5c91..203c2086d3 100644
|
||||
--- a/modules/affile/file-reader.c
|
||||
+++ b/modules/affile/file-reader.c
|
||||
@@ -163,10 +163,26 @@ _recover_state(LogPipe *s, GlobalConfig *cfg, LogProtoServer *proto)
|
||||
}
|
||||
|
||||
static gboolean
|
||||
-_can_check_eof(gint fd)
|
||||
+_can_check_eof(FileReader *self, gint fd)
|
||||
{
|
||||
struct stat st;
|
||||
- return fstat(fd, &st) == 0 && S_ISFIFO(st.st_mode) == 0;
|
||||
+
|
||||
+ if (fstat(fd, &st) == -1 || S_ISFIFO(st.st_mode) || S_ISSOCK(st.st_mode) || S_ISCHR(st.st_mode))
|
||||
+ return FALSE;
|
||||
+
|
||||
+ off_t pos = lseek(fd, 0, SEEK_CUR);
|
||||
+ if (pos == -1)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ off_t reset = lseek(fd, pos, SEEK_SET);
|
||||
+ if (reset != pos)
|
||||
+ {
|
||||
+ msg_trace("File seek pos is different after testing if seekable",
|
||||
+ evt_tag_str("follow_filename", self->filename->str),
|
||||
+ evt_tag_int("fn", fd));
|
||||
+ }
|
||||
+
|
||||
+ return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -263,7 +279,7 @@ _construct_poll_events(FileReader *self, gint fd)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- if (_can_check_eof(fd))
|
||||
+ if (_can_check_eof(self, fd))
|
||||
poll_events_set_checker(poll_events, _reader_check_watches, self);
|
||||
|
||||
return poll_events;
|
||||
195
app-admin/syslog-ng/syslog-ng-4.8.1-r1.ebuild
Normal file
195
app-admin/syslog-ng/syslog-ng-4.8.1-r1.ebuild
Normal file
@@ -0,0 +1,195 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
PYTHON_COMPAT=( python3_{10..13} )
|
||||
inherit autotools python-single-r1 systemd
|
||||
|
||||
DESCRIPTION="syslog replacement with advanced filtering features"
|
||||
HOMEPAGE="https://www.syslog-ng.com/products/open-source-log-management/"
|
||||
SRC_URI="https://github.com/syslog-ng/syslog-ng/releases/download/${P}/${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-2+ LGPL-2.1+"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
IUSE="amqp caps dbi geoip2 grpc http json kafka mongodb mqtt pacct python redis smtp snmp test spoof-source systemd tcpd"
|
||||
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
|
||||
test? ( python )"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
RDEPEND="
|
||||
>=dev-libs/glib-2.10.1:2
|
||||
>=dev-libs/ivykis-0.42.4
|
||||
>=dev-libs/libpcre2-10.0:=
|
||||
dev-libs/openssl:0=
|
||||
!dev-libs/eventlog
|
||||
>=dev-libs/json-c-0.9:=
|
||||
amqp? ( >=net-libs/rabbitmq-c-0.8.0:=[ssl] )
|
||||
caps? ( sys-libs/libcap )
|
||||
dbi? ( >=dev-db/libdbi-0.9.0 )
|
||||
geoip2? ( dev-libs/libmaxminddb:= )
|
||||
grpc? (
|
||||
dev-libs/protobuf:=
|
||||
net-libs/grpc:=
|
||||
)
|
||||
http? ( net-misc/curl )
|
||||
kafka? ( >=dev-libs/librdkafka-1.0.0:= )
|
||||
mongodb? ( >=dev-libs/mongo-c-driver-1.2.0 )
|
||||
mqtt? ( net-libs/paho-mqtt-c:1.3 )
|
||||
python? (
|
||||
${PYTHON_DEPS}
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
')
|
||||
)
|
||||
redis? ( >=dev-libs/hiredis-0.11.0:= )
|
||||
smtp? ( net-libs/libesmtp:= )
|
||||
snmp? ( net-analyzer/net-snmp:0= )
|
||||
spoof-source? ( net-libs/libnet:1.1 )
|
||||
systemd? ( sys-apps/systemd:= )
|
||||
tcpd? ( >=sys-apps/tcp-wrappers-7.6 )"
|
||||
DEPEND="${RDEPEND}
|
||||
test? ( dev-libs/criterion )"
|
||||
BDEPEND="
|
||||
>=sys-devel/bison-3.7.6
|
||||
sys-devel/flex
|
||||
virtual/pkgconfig
|
||||
grpc? ( dev-libs/protobuf:= )"
|
||||
|
||||
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" )
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-3.28.1-net-snmp.patch
|
||||
"${FILESDIR}"/${PN}-4.8.1-kmsg-invalid-argument.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
use python && python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
local f
|
||||
|
||||
# disable python-modules test as it requires additional python modules not
|
||||
# packaged in Gentoo
|
||||
sed -i '/MAKE/s/.*/exit 0/g' modules/python-modules/test_pymodules.sh || die
|
||||
|
||||
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-r1 \
|
||||
syslog-ng.conf.gentoo.in-r1; do
|
||||
sed -e "s/@SYSLOGNG_VERSION@/$(ver_cut 1-2)/g" "${FILESDIR}/${f}" > "${T}/${f/.in-r1/}" || die
|
||||
done
|
||||
|
||||
default
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Needs bison/flex.
|
||||
unset YACC LEX
|
||||
|
||||
local myconf=(
|
||||
--disable-docs
|
||||
--disable-java
|
||||
--disable-java-modules
|
||||
--disable-riemann
|
||||
--enable-ipv6
|
||||
--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-python-packages=none
|
||||
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
|
||||
$(use_enable amqp)
|
||||
$(use_with amqp librabbitmq-client system)
|
||||
$(use_enable caps linux-caps)
|
||||
$(use_enable dbi sql)
|
||||
$(use_enable geoip2)
|
||||
$(use_enable grpc)
|
||||
$(use_enable grpc cpp)
|
||||
$(use_enable http)
|
||||
$(use_enable json)
|
||||
$(use_enable kafka)
|
||||
$(use_enable mongodb)
|
||||
$(use_enable mqtt)
|
||||
$(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 afsnmp)
|
||||
$(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 "${ED}/usr/$(get_libdir)/syslog-ng/python"
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user