[oe] [PATCH] [meta-oe] syslog-ng: fix syslog-ng startup problem with systemd

Changqing Li changqing.li at windriver.com
Tue Jun 19 09:46:58 UTC 2018


1. Fix syslog-ng service cannot startup after upgrade to 3.15.1

   1) Align path of syslog-ng.conf between syslog-ng at default
      and do_install in syslog-ng.inc
   2) create a default instance for syslog-ng
   3) Install default parameter file to /etc/default according
      to https://github.com/balabit/syslog-ng/commit
      /649d1151e79033cc2b81b3353917507266814436

2. Fix "Failed to acquire /run/systemd/journal/syslog socket,
   disabling systemd-syslog source;" accordint to below content
   from syslog-ng admin guide.

   1) for linux, If the host is running under systemd, syslog-ng
      OSE reads directly from the systemd journal file using the
      systemd-journal() source.
   2) If possible, use the more reliable systemd-journal() driver
      instead.
   3) The socket activation of systemd is buggy, causing some log
      messages to get lost during syst

Signed-off-by: Changqing Li <changqing.li at windriver.com>
---
 .../{syslog-ng.conf => syslog-ng.conf.systemd}     |  2 +-
 .../{syslog-ng.conf => syslog-ng.conf.sysvinit}    |  0
 .../syslog-ng.service-the-syslog-ng-service.patch  |  3 ++-
 meta-oe/recipes-support/syslog-ng/syslog-ng.inc    | 23 ++++++++++++++--------
 4 files changed, 18 insertions(+), 10 deletions(-)
 copy meta-oe/recipes-support/syslog-ng/files/{syslog-ng.conf => syslog-ng.conf.systemd} (99%)
 rename meta-oe/recipes-support/syslog-ng/files/{syslog-ng.conf => syslog-ng.conf.sysvinit} (100%)

diff --git a/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf b/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
similarity index 99%
copy from meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
copy to meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
index fb183ee..9e910ca 100644
--- a/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
+++ b/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.systemd
@@ -16,7 +16,7 @@ options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
 # This is the default behavior of sysklogd package
 # Logs may come from unix stream, but not from another machine.
 #
-source s_src { unix-dgram("/dev/log"); internal();
+source s_src { systemd_journal(); internal();
        	     file("/proc/kmsg" program_override("kernel"));
 };
 
diff --git a/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf b/meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
similarity index 100%
rename from meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf
rename to meta-oe/recipes-support/syslog-ng/files/syslog-ng.conf.sysvinit
diff --git a/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch b/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
index dc2ba16..39c3f59 100644
--- a/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
+++ b/meta-oe/recipes-support/syslog-ng/files/syslog-ng.service-the-syslog-ng-service.patch
@@ -32,10 +32,11 @@ index 02da288..3a8215d 100644
 --- a/contrib/systemd/syslog-ng at default
 +++ b/contrib/systemd/syslog-ng at default
 @@ -1,5 +1,5 @@
- CONFIG_FILE=/etc/syslog-ng.conf
+-CONFIG_FILE=/etc/syslog-ng.conf
 -PERSIST_FILE=/var/lib/syslog-ng/syslog-ng.persist
 -CONTROL_FILE=/var/lib/syslog-ng/syslog-ng.ctl
 -PID_FILE=/var/run/syslog-ng.pid
++CONFIG_FILE=/etc/syslog-ng/syslog-ng.conf
 +PERSIST_FILE=@LOCALSTATEDIR@/lib/syslog-ng/syslog-ng.persist
 +CONTROL_FILE=@LOCALSTATEDIR@/lib/syslog-ng/syslog-ng.ctl
 +PID_FILE=@LOCALSTATEDIR@/run/syslog-ng.pid
diff --git a/meta-oe/recipes-support/syslog-ng/syslog-ng.inc b/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
index cf6a3de..09c2f51 100644
--- a/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
+++ b/meta-oe/recipes-support/syslog-ng/syslog-ng.inc
@@ -16,7 +16,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=24c0c5cb2c83d9f2ab725481e4df5240"
 DEPENDS = "libpcre flex glib-2.0 openssl util-linux"
 
 SRC_URI = "https://github.com/balabit/syslog-ng/releases/download/${BP}/${BP}.tar.gz \
-           file://syslog-ng.conf \
+           file://syslog-ng.conf.systemd \
+           file://syslog-ng.conf.sysvinit \
            file://initscript \
            file://volatiles.03_syslog-ng \
            file://configure.ac-add-option-enable-thread-tls-to-manage-.patch \
@@ -71,7 +72,6 @@ do_configure_prepend() {
 
 do_install_append() {
     install -d ${D}/${sysconfdir}/${BPN}
-    install ${WORKDIR}/syslog-ng.conf ${D}${sysconfdir}/${BPN}/${BPN}.conf
     install -d ${D}/${sysconfdir}/init.d
     install -m 755 ${WORKDIR}/initscript ${D}/${sysconfdir}/init.d/syslog
     install -d ${D}/${sysconfdir}/default/volatiles/
@@ -82,17 +82,24 @@ do_install_append() {
 
     # support for systemd
     if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install ${WORKDIR}/syslog-ng.conf.systemd ${D}${sysconfdir}/${BPN}/${BPN}.conf
+
         install -d ${D}${systemd_unitdir}/system/
         install -m 0644 ${S}/contrib/systemd/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@.service
-        install -m 0644 ${S}/contrib/systemd/${BPN}@default ${D}${systemd_unitdir}/system/${BPN}@default
+        install -m 0644 ${S}/contrib/systemd/${BPN}@default ${D}${sysconfdir}/default/${BPN}@default
+
+        sed -i -e 's, at SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
+        sed -i -e 's, at LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
+        sed -i -e 's, at BASEBINDIR@,${base_bindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${sysconfdir}/default/${BPN}@default
 
-        sed -i -e 's, at SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@default
-        sed -i -e 's, at LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@default
-        sed -i -e 's, at BASEBINDIR@,${base_bindir},g' ${D}${systemd_unitdir}/system/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@default
+        install -d ${D}${systemd_unitdir}/system/multi-user.target.wants
+        ln -sf ../${BPN}@.service ${D}${systemd_unitdir}/system/multi-user.target.wants/${BPN}@default.service
+    else
+        install ${WORKDIR}/syslog-ng.conf.sysvinit ${D}${sysconfdir}/${BPN}/${BPN}.conf
     fi
 }
 
-FILES_${PN} += "${datadir}/include/scl/ ${datadir}/xsd ${datadir}/tools"
+FILES_${PN} += "${datadir}/include/scl/ ${datadir}/xsd ${datadir}/tools ${systemd_unitdir}/system/multi-user.target.wants/*"
 RDEPENDS_${PN} += "gawk ${@bb.utils.contains('PACKAGECONFIG','json','${PN}-jconf','',d)}"
 
 FILES_${PN}-jconf += " \
@@ -124,7 +131,7 @@ RCONFLICTS_${PN} = "busybox-syslog sysklogd rsyslog"
 RPROVIDES_${PN} += "${PN}-systemd"
 RREPLACES_${PN} += "${PN}-systemd"
 RCONFLICTS_${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE_${PN} = "${BPN}@default ${BPN}@.service"
+SYSTEMD_SERVICE_${PN} = "${BPN}@.service"
 
 INITSCRIPT_NAME = "syslog"
 INITSCRIPT_PARAMS = "start 20 2 3 4 5 . stop 90 0 1 6 ."
-- 
2.7.4




More information about the Openembedded-devel mailing list