diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 3b6963e..cef7fab 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,61 @@ rsyslog-4.6.3.tar.gz /rsyslog-doc-8.29.0.tar.gz /rsyslog-8.30.0.tar.gz /rsyslog-doc-8.30.0.tar.gz +/rsyslog-8.31.0.tar.gz +/rsyslog-doc-8.31.0.tar.gz +/rsyslog-doc-8.32.0.tar.gz +/rsyslog-8.32.0.tar.gz +/rsyslog-doc-8.34.0.tar.gz +/rsyslog-8.34.0.tar.gz +/rsyslog-8.35.0.tar.gz +/rsyslog-doc-8.35.0.tar.gz +/rsyslog-8.36.0.tar.gz +/rsyslog-doc-8.36.0.tar.gz +/rsyslog-8.37.0.tar.gz +/rsyslog-doc-8.37.0.tar.gz +/rsyslog-8.38.0.tar.gz +/rsyslog-doc-8.38.0.tar.gz +/rsyslog-8.39.0.tar.gz +/rsyslog-doc-8.39.0.tar.gz +/rsyslog-8.1904.0.tar.gz +/rsyslog-doc-8.1904.0.tar.gz +/rsyslog-8.1907.0.tar.gz +/rsyslog-doc-8.1907.0.tar.gz +/rsyslog-8.1910.0.tar.gz +/rsyslog-doc-8.1910.0.tar.gz +/rsyslog-8.1911.0.tar.gz +/rsyslog-doc-8.1911.0.tar.gz +/rsyslog-8.2001.0.tar.gz +/rsyslog-doc-8.2001.0.tar.gz +/rsyslog-8.2002.0.tar.gz +/rsyslog-doc-8.2002.0.tar.gz +/rsyslog-8.2008.0.tar.gz +/rsyslog-doc-8.2008.0.tar.gz +/rsyslog-8.2010.0.tar.gz +/rsyslog-doc-8.2010.0.tar.gz +/qpid-proton-0.31.0.tar.gz +/rsyslog-8.2102.0.tar.gz +/rsyslog-doc-8.2102.0.tar.gz +/qpid-proton-0.34.0.tar.gz +/rsyslog-8.2204.0.tar.gz +/rsyslog-doc-8.2204.0.tar.gz +/rsyslog-8.2210.0.tar.gz +/rsyslog-doc-8.2210.0.tar.gz +/rsyslog-8.2306.0.tar.gz +/rsyslog-doc-8.2306.0.tar.gz +/rsyslog-8.2308.0.tar.gz +/rsyslog-doc-8.2308.0.tar.gz +/qpid-proton-0.39.0.tar.gz +/rsyslog-8.2310.0.tar.gz +/rsyslog-doc-8.2310.0.tar.gz +/rsyslog-8.2312.0.tar.gz +/rsyslog-doc-8.2312.0.tar.gz +/rsyslog-8.2408.0.tar.gz +/rsyslog-doc-8.2408.0.tar.gz +/rsyslog-8.2412.0.tar.gz +/rsyslog-doc-8.2412.0.tar.gz +/rsyslog-8.2506.0.tar.gz +/rsyslog-doc-8.2506.0.tar.gz +/rsyslog-8.2508.0.tar.gz +/qpid-proton-0.40.0.tar.gz +/rsyslog-8.2510.0.tar.gz diff --git a/plans/main.fmf b/plans/main.fmf new file mode 100644 index 0000000..ae0c305 --- /dev/null +++ b/plans/main.fmf @@ -0,0 +1,6 @@ +summary: Run all tests +execute: + how: tmt +discover: + how: fmf + diff --git a/rsyslog-8.23.0-msg_c_nonoverwrite_merge.patch b/rsyslog-8.23.0-msg_c_nonoverwrite_merge.patch deleted file mode 100644 index 1ca26ff..0000000 --- a/rsyslog-8.23.0-msg_c_nonoverwrite_merge.patch +++ /dev/null @@ -1,65 +0,0 @@ -From fa7d98b0cb0512d84355e3aafdc5a3e366842f2a Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Mon, 21 Nov 2016 13:38:18 +0100 -Subject: [PATCH 2/4] Rebased from: Patch2: - rsyslog-7.2.1-msg_c_nonoverwrite_merge.patch - -Resolves: - no adressed bugzila ---- - runtime/msg.c | 25 +++++++++++++++++++++++-- - 1 file changed, 23 insertions(+), 2 deletions(-) - -diff --git a/runtime/msg.c b/runtime/msg.c -index f6e017b..5430331 100644 ---- a/runtime/msg.c -+++ b/runtime/msg.c -@@ -4632,6 +4632,27 @@ finalize_it: - RETiRet; - } - -+static rsRetVal jsonMerge(struct json_object *existing, struct json_object *json); -+ -+static rsRetVal -+jsonMergeNonOverwrite(struct json_object *existing, struct json_object *json) -+{ -+ DEFiRet; -+ -+ struct json_object_iterator it = json_object_iter_begin(existing); -+ struct json_object_iterator itEnd = json_object_iter_end(existing); -+ while (!json_object_iter_equal(&it, &itEnd)) { -+ json_object_object_add(json, json_object_iter_peek_name(&it), -+ json_object_get(json_object_iter_peek_value(&it))); -+ json_object_iter_next(&it); -+ } -+ -+ CHKiRet(jsonMerge(existing, json)); -+finalize_it: -+ RETiRet; -+} -+ -+ - static rsRetVal - jsonMerge(struct json_object *existing, struct json_object *json) - { -@@ -4714,7 +4735,7 @@ msgAddJSON(msg_t * const pM, uchar *name, struct json_object *json, int force_re - if(*pjroot == NULL) - *pjroot = json; - else -- CHKiRet(jsonMerge(*pjroot, json)); -+ CHKiRet(jsonMergeNonOverwrite(*pjroot, json)); - } else { - if(*pjroot == NULL) { - /* now we need a root obj */ -@@ -4742,7 +4763,7 @@ msgAddJSON(msg_t * const pM, uchar *name, struct json_object *json, int force_re - json_object_object_add(parent, (char*)leaf, json); - } else { - if(json_object_get_type(json) == json_type_object) { -- CHKiRet(jsonMerge(*pjroot, json)); -+ CHKiRet(jsonMergeNonOverwrite(*pjroot, json)); - } else { - /* TODO: improve the code below, however, the current - * state is not really bad */ --- -2.7.4 - diff --git a/rsyslog-8.30.0-imgssapi-compile-error.patch b/rsyslog-8.30.0-imgssapi-compile-error.patch deleted file mode 100644 index 8427aea..0000000 --- a/rsyslog-8.30.0-imgssapi-compile-error.patch +++ /dev/null @@ -1,128 +0,0 @@ -From 8d793eafdde0b74d0b4424f0d194b5dc6801a5d1 Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Tue, 17 Oct 2017 17:34:49 +0200 -Subject: [PATCH] imgssapi: fix compiler warnings - ---- - plugins/imgssapi/imgssapi.c | 25 ++++++++++++------------- - 1 file changed, 12 insertions(+), 13 deletions(-) - -diff --git a/plugins/imgssapi/imgssapi.c b/plugins/imgssapi/imgssapi.c -index aafce7d2..836931c7 100644 ---- a/plugins/imgssapi/imgssapi.c -+++ b/plugins/imgssapi/imgssapi.c -@@ -9,7 +9,7 @@ - * NOTE: read comments in module-template.h to understand how this file - * works! - * -- * Copyright 2007, 2014 Rainer Gerhards and Adiscon GmbH. -+ * Copyright 2007, 2017 Rainer Gerhards and Adiscon GmbH. - * - * This file is part of rsyslog. - * -@@ -63,7 +63,6 @@ - - MODULE_TYPE_INPUT - MODULE_TYPE_NOKEEP --MODULE_CNFNAME("imgssapi") - - /* defines */ - #define ALLOWEDMETHOD_GSS 2 -@@ -162,7 +161,7 @@ OnSessDestruct(void *ppUsr) - OM_uint32 maj_stat, min_stat; - maj_stat = gss_delete_sec_context(&min_stat, &(*ppGSess)->gss_context, GSS_C_NO_BUFFER); - if (maj_stat != GSS_S_COMPLETE) -- gssutil.display_status("deleting context", maj_stat, min_stat); -+ gssutil.display_status((char*)"deleting context", maj_stat, min_stat); - } - - free(*ppGSess); -@@ -291,7 +290,7 @@ finalize_it: - - - static rsRetVal --doRcvData(tcps_sess_t *pSess, char *buf, size_t lenBuf, ssize_t *piLenRcvd) -+doRcvData(tcps_sess_t *pSess, char *buf, size_t lenBuf, ssize_t *piLenRcvd, int *const oserr) - { - DEFiRet; - int allowedMethods; -@@ -307,7 +306,7 @@ doRcvData(tcps_sess_t *pSess, char *buf, size_t lenBuf, ssize_t *piLenRcvd) - CHKiRet(TCPSessGSSRecv(pSess, buf, lenBuf, piLenRcvd)); - } else { - *piLenRcvd = lenBuf; -- CHKiRet(netstrm.Rcv(pSess->pStrm, (uchar*) buf, piLenRcvd) != RS_RET_OK); -+ CHKiRet(netstrm.Rcv(pSess->pStrm, (uchar*) buf, piLenRcvd, oserr)); - } - - finalize_it: -@@ -380,11 +379,11 @@ static int TCPSessGSSInit(void) - if (gss_server_creds != GSS_C_NO_CREDENTIAL) - return 0; - -- name_buf.value = (gss_listen_service_name == NULL) ? "host" : gss_listen_service_name; -+ name_buf.value = (gss_listen_service_name == NULL) ? (char*)"host" : gss_listen_service_name; - name_buf.length = strlen(name_buf.value) + 1; - maj_stat = gss_import_name(&min_stat, &name_buf, GSS_C_NT_HOSTBASED_SERVICE, &server_name); - if (maj_stat != GSS_S_COMPLETE) { -- gssutil.display_status("importing name", maj_stat, min_stat); -+ gssutil.display_status((char*)"importing name", maj_stat, min_stat); - return -1; - } - -@@ -392,7 +391,7 @@ static int TCPSessGSSInit(void) - GSS_C_NULL_OID_SET, GSS_C_ACCEPT, - &gss_server_creds, NULL, NULL); - if (maj_stat != GSS_S_COMPLETE) { -- gssutil.display_status("acquiring credentials", maj_stat, min_stat); -+ gssutil.display_status((char*)"acquiring credentials", maj_stat, min_stat); - return -1; - } - -@@ -549,7 +548,7 @@ OnSessAcceptGSS(tcpsrv_t *pThis, tcps_sess_t *pSess) - pGSess->allowedMethods = ALLOWEDMETHOD_TCP; - ABORT_FINALIZE(RS_RET_OK); // TODO: define good error codes - } -- gssutil.display_status("accepting context", maj_stat, acc_sec_min_stat); -+ gssutil.display_status((char*)"accepting context", maj_stat, acc_sec_min_stat); - ABORT_FINALIZE(RS_RET_ERR); // TODO: define good error codes - } - if (send_tok.length != 0) { -@@ -566,7 +565,7 @@ OnSessAcceptGSS(tcpsrv_t *pThis, tcps_sess_t *pSess) - - maj_stat = gss_display_name(&min_stat, client, &recv_tok, NULL); - if (maj_stat != GSS_S_COMPLETE) { -- gssutil.display_status("displaying name", maj_stat, min_stat); -+ gssutil.display_status((char*)"displaying name", maj_stat, min_stat); - } else { - dbgprintf("GSS-API Accepted connection from peer %s: %s\n", (char *)pszPeer, (char*) recv_tok.value); - } -@@ -608,7 +607,7 @@ int TCPSessGSSRecv(tcps_sess_t *pSess, void *buf, size_t buf_len, ssize_t *piLen - maj_stat = gss_unwrap(&min_stat, *context, &xmit_buf, &msg_buf, - &conf_state, (gss_qop_t *) NULL); - if(maj_stat != GSS_S_COMPLETE) { -- gssutil.display_status("unsealing message", maj_stat, min_stat); -+ gssutil.display_status((char*)"unsealing message", maj_stat, min_stat); - if(xmit_buf.value) { - free(xmit_buf.value); - xmit_buf.value = 0; -@@ -644,7 +643,7 @@ void TCPSessGSSClose(tcps_sess_t* pSess) - context = &pGSess->gss_context; - maj_stat = gss_delete_sec_context(&min_stat, context, GSS_C_NO_BUFFER); - if (maj_stat != GSS_S_COMPLETE) -- gssutil.display_status("deleting context", maj_stat, min_stat); -+ gssutil.display_status((char*)"deleting context", maj_stat, min_stat); - *context = GSS_C_NO_CONTEXT; - pGSess->gss_flags = 0; - pGSess->allowedMethods = 0; -@@ -665,7 +664,7 @@ TCPSessGSSDeinit(void) - if (gss_server_creds != GSS_C_NO_CREDENTIAL) { - maj_stat = gss_release_cred(&min_stat, &gss_server_creds); - if (maj_stat != GSS_S_COMPLETE) -- gssutil.display_status("releasing credentials", maj_stat, min_stat); -+ gssutil.display_status((char*)"releasing credentials", maj_stat, min_stat); - } - RETiRet; - } --- -2.13.6 - diff --git a/rsyslog-8.30.0-imjournal-fix.patch b/rsyslog-8.30.0-imjournal-fix.patch deleted file mode 100644 index a786b8c..0000000 --- a/rsyslog-8.30.0-imjournal-fix.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 4736e53d471ac45024333588fcdf5bce5f8c61b8 Mon Sep 17 00:00:00 2001 -From: Rainer Gerhards -Date: Wed, 25 Oct 2017 11:09:40 +0200 -Subject: [PATCH] imjournal bugfix: module did not work at all - -The open function was broken by commit 92ac801 (v8.30.0), -resulting in no data being ever read from the journal. - -patch bases on the idea of Radovan Sroka given here: -https://github.com/rsyslog/rsyslog/issues/1895#issuecomment-339017357 -but follows the current imjournal-paradigm of having the journal -handle inside a global variable. - -see also https://github.com/rsyslog/rsyslog/issues/1895 -closes https://github.com/rsyslog/rsyslog/issues/1897 ---- - plugins/imjournal/imjournal.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/plugins/imjournal/imjournal.c b/plugins/imjournal/imjournal.c -index 8f043d5e1..2f1569837 100644 ---- a/plugins/imjournal/imjournal.c -+++ b/plugins/imjournal/imjournal.c -@@ -118,20 +118,20 @@ static sd_journal *j; - static rsRetVal persistJournalState(void); - static rsRetVal loadJournalState(void); - --static rsRetVal openJournal(sd_journal* jj) { -+static rsRetVal openJournal(void) { - DEFiRet; - -- if (sd_journal_open(&jj, SD_JOURNAL_LOCAL_ONLY) < 0) -+ if (sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY) < 0) - iRet = RS_RET_IO_ERROR; - RETiRet; - } - --static void closeJournal(sd_journal* jj) { -+static void closeJournal(void) { - - if (cs.stateFile) { /* can't persist without a state file */ - persistJournalState(); - } -- sd_journal_close(jj); -+ sd_journal_close(j); - } - - -@@ -513,10 +513,10 @@ pollJournal(void) - /* do not persist stateFile sd_journal_get_cursor will fail! */ - char* tmp = cs.stateFile; - cs.stateFile = NULL; -- closeJournal(j); -+ closeJournal(); - cs.stateFile = tmp; - -- iRet = openJournal(j); -+ iRet = openJournal(); - if (iRet != RS_RET_OK) { - char errStr[256]; - rs_strerror_r(errno, errStr, sizeof(errStr)); -@@ -773,13 +773,13 @@ ENDfreeCnf - /* open journal */ - BEGINwillRun - CODESTARTwillRun -- iRet = openJournal(j); -+ iRet = openJournal(); - ENDwillRun - - /* close journal */ - BEGINafterRun - CODESTARTafterRun -- closeJournal(j); -+ closeJournal(); - ratelimitDestruct(ratelimiter); - ENDafterRun - diff --git a/rsyslog-8.8.0-sd-service.patch b/rsyslog-8.8.0-sd-service.patch deleted file mode 100644 index 554d92b..0000000 --- a/rsyslog-8.8.0-sd-service.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up rsyslog-7.4.1/rsyslog.service.in.orig rsyslog-7.4.1/rsyslog.service.in ---- rsyslog-7.4.1/rsyslog.service.in.orig 2013-06-17 15:28:54.430023493 +0200 -+++ rsyslog-7.4.1/rsyslog.service.in 2013-06-17 15:30:05.874378084 +0200 -@@ -6,7 +6,9 @@ Requires=syslog.socket - - [Service] - Type=notify --ExecStart=@sbindir@/rsyslogd -n -+EnvironmentFile=-/etc/sysconfig/rsyslog -+ExecStart=@sbindir@/rsyslogd -n $SYSLOGD_OPTIONS -+UMask=0066 - StandardOutput=null - Restart=on-failure - diff --git a/rsyslog.conf b/rsyslog.conf index 86ade8c..4486f1f 100644 --- a/rsyslog.conf +++ b/rsyslog.conf @@ -4,15 +4,29 @@ # or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html +#### GLOBAL DIRECTIVES #### + +# Where to place auxiliary files +global(workDirectory="/var/lib/rsyslog") + #### MODULES #### -module(load="imuxsock" # provides support for local system logging (e.g. via logger command) +# Use default timestamp format +module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") + +module(load="imuxsock" # provides support for local system logging (e.g. via logger command) SysSock.Use="off") # Turn off message reception via local log socket; - # local messages are retrieved through imjournal now. -module(load="imjournal" # provides access to the systemd journal + # local messages are retrieved through imjournal now. +module(load="imjournal" # provides access to the systemd journal + FileCreateMode="0600" # Quiet warning and ensure privacy + UsePid="system" # PID nummber is retrieved as the ID of the process the journal entry originates from StateFile="imjournal.state") # File to store the position in the journal + +# Include all config files in /etc/rsyslog.d/ +include(file="/etc/rsyslog.d/*.conf" mode="optional") + #module(load="imklog") # reads kernel messages (the same are read from journald) -#module(load"immark") # provides --MARK-- message capability +#module(load="immark") # provides --MARK-- message capability # Provides UDP syslog reception # for parameters see http://www.rsyslog.com/doc/imudp.html @@ -24,17 +38,6 @@ module(load="imjournal" # provides access to the systemd journal #module(load="imtcp") # needs to be done just once #input(type="imtcp" port="514") -#### GLOBAL DIRECTIVES #### - -# Where to place auxiliary files -global(workDirectory="/var/lib/rsyslog") - -# Use default timestamp format -module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") - -# Include all config files in /etc/rsyslog.d/ -$IncludeConfig /etc/rsyslog.d/*.conf - #### RULES #### # Log all kernel messages to the console. @@ -67,13 +70,13 @@ local7.* /var/log/boot.log # ### sample forwarding rule ### #action(type="omfwd" -# An on-disk queue is created for this action. If the remote host is -# down, messages are spooled to disk and sent when it is up again. +# # An on-disk queue is created for this action. If the remote host is +# # down, messages are spooled to disk and sent when it is up again. #queue.filename="fwdRule1" # unique name prefix for spool files #queue.maxdiskspace="1g" # 1gb space limit (use as much as possible) #queue.saveonshutdown="on" # save messages to disk on shutdown #queue.type="LinkedList" # run asynchronously #action.resumeRetryCount="-1" # infinite retries if host is down -# Remote Logging (we use TCP for reliable delivery) -# remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514 +# # Remote Logging (we use TCP for reliable delivery) +# # remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514 #Target="remote_host" Port="XXX" Protocol="tcp") diff --git a/rsyslog.log b/rsyslog.log index b101e32..42b31c8 100644 --- a/rsyslog.log +++ b/rsyslog.log @@ -7,6 +7,6 @@ missingok sharedscripts postrotate - /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true + /usr/bin/systemctl reload rsyslog.service >/dev/null 2>&1 || true endscript } diff --git a/rsyslog.service b/rsyslog.service new file mode 100644 index 0000000..738f087 --- /dev/null +++ b/rsyslog.service @@ -0,0 +1,37 @@ +[Unit] +Description=System Logging Service +;Requires=syslog.socket +Documentation=man:rsyslogd(8) +Documentation=https://www.rsyslog.com/doc/ +Wants=network.target network-online.target +After=network.target network-online.target + +[Service] +Type=notify +EnvironmentFile=-/etc/sysconfig/rsyslog +ExecStart=/usr/sbin/rsyslogd -n $SYSLOGD_OPTIONS +ExecReload=/usr/bin/kill -HUP $MAINPID +UMask=0066 +StandardOutput=null +Restart=on-failure +RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX +RestrictNamespaces=net +NoNewPrivileges=yes +ProtectControlGroups=yes +ProtectHome=read-only +ProtectKernelModules=yes +ProtectKernelTunables=yes +RestrictSUIDSGID=yes +SystemCallArchitectures=native +SystemCallFilter=~@clock @debug @module @raw-io @reboot @swap @cpu-emulation @obsolete +LockPersonality=yes +MemoryDenyWriteExecute=yes + + +# Increase the default a bit in order to allow many simultaneous +# files to be monitored, we might need a lot of fds. +LimitNOFILE=16384 + +[Install] +WantedBy=multi-user.target +;Alias=syslog.service diff --git a/rsyslog.spec b/rsyslog.spec index c245aaa..3b67e3f 100644 --- a/rsyslog.spec +++ b/rsyslog.spec @@ -1,182 +1,237 @@ %define rsyslog_statedir %{_sharedstatedir}/rsyslog %define rsyslog_pkidir %{_sysconfdir}/pki/rsyslog %define rsyslog_docdir %{_docdir}/rsyslog -%if 0%{?rhel} >= 7 -%global want_hiredis 0 -%global want_mongodb 0 +%define qpid_proton_v 0.40.0 +# The following packages are not enabled on rhel: +# hiredis, libdbi, mongodb, rabbitmq +# The omamqp1 plugin is built differently as qpid-proton is not available on rhel +%if 0%{?rhel} +%bcond_with hiredis +%bcond_with libdbi +%bcond_with mongodb +%bcond_with rabbitmq %else -%global want_hiredis 1 -%global want_mongodb 1 +%bcond_without hiredis +%bcond_without libdbi +%bcond_without mongodb +%bcond_without rabbitmq %endif -#due to multiple failures of extensive testbench on various archs -#and module requirements of certain tests need to have it disabled, -#tests execution possible locally on properly set up workstation -%global want_testbench 0 + +# Add options to not build with features listed below, +# the default is to build with them. +%bcond_without clickhouse +%bcond_without imdocker +%bcond_without improg +%bcond_without gnutls +%bcond_without openssl +%bcond_without gssapi +%bcond_without omamqp1 +%bcond_without rdkafka +%bcond_without relp +%bcond_without mysql +%bcond_without pgsql +%bcond_without snmp +%bcond_without udpspoof +%bcond_without mmtaghostname Summary: Enhanced system logging and kernel message trapping daemon Name: rsyslog -Version: 8.30.0 -Release: 3%{?dist} -License: (GPLv3+ and ASL 2.0) -Group: System Environment/Daemons +Version: 8.2510.0 +Release: 1%{?dist} +License: GPL-3.0-or-later AND Apache-2.0 URL: http://www.rsyslog.com/ Source0: http://www.rsyslog.com/files/download/rsyslog/%{name}-%{version}.tar.gz -Source1: http://www.rsyslog.com/files/download/rsyslog/%{name}-doc-%{version}.tar.gz -Source2: rsyslog.conf -Source3: rsyslog.sysconfig -Source4: rsyslog.log +Source1: rsyslog.conf +Source2: rsyslog.sysconfig +Source3: rsyslog.log +Source4: rsyslog.service +# Add qpid-proton as another source, enable omamqp1 module in a +# separatae sub-package with it statically linked(see rhbz#1713427) +Source5: https://archive.apache.org/dist/qpid/proton/%{qpid_proton_v}/qpid-proton-%{qpid_proton_v}.tar.gz +BuildRequires: make +BuildRequires: gcc BuildRequires: autoconf BuildRequires: automake BuildRequires: bison BuildRequires: dos2unix BuildRequires: flex -BuildRequires: libgcrypt-devel -BuildRequires: libfastjson-devel +BuildRequires: libfastjson-devel >= 0.99.8 BuildRequires: libestr-devel >= 0.1.9 -BuildRequires: liblogging-stdlog-devel BuildRequires: libtool BuildRequires: libuuid-devel BuildRequires: pkgconfig -BuildRequires: python-docutils +BuildRequires: python3-docutils # make sure systemd is in a version that isn't affected by rhbz#974132 BuildRequires: systemd-devel >= 204-8 +BuildRequires: systemd-rpm-macros BuildRequires: zlib-devel -BuildRequires: qpid-proton-c-devel +BuildRequires: libcap-ng-devel -Requires: logrotate >= 3.5.2 +Recommends: logrotate +Obsoletes: rsyslog-logrotate < 8.2310.0-2 +Provides: rsyslog-logrotate = %{version}-%{release} Requires: bash >= 2.0 -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd +%{?systemd_ordering} Provides: syslog Obsoletes: sysklogd < 1.5-11 -# tweak the upstream service file to honour configuration from /etc/sysconfig/rsyslog -Patch0: rsyslog-8.8.0-sd-service.patch -Patch1: rsyslog-8.23.0-msg_c_nonoverwrite_merge.patch -Patch2: rsyslog-8.30.0-imgssapi-compile-error.patch -Patch3: rsyslog-8.30.0-imjournal-fix.patch - %package crypto Summary: Encryption support -Group: System Environment/Daemons Requires: %name = %version-%release %package doc Summary: HTML documentation for rsyslog -Group: Documentation BuildArch: noarch %package elasticsearch Summary: ElasticSearch output module for rsyslog -Group: System Environment/Daemons Requires: %name = %version-%release BuildRequires: libcurl-devel -%if %{want_hiredis} -%package hiredis -Summary: Redis support for rsyslog -Group: System Environment/Daemons -Requires: %name = %version-%release -BuildRequires: hiredis-devel -%endif - %package mmjsonparse Summary: JSON enhanced logging support -Group: System Environment/Daemons Requires: %name = %version-%release %package mmnormalize Summary: Log normalization support for rsyslog -Group: System Environment/Daemons Requires: %name = %version-%release -BuildRequires: libestr-devel libee-devel liblognorm-devel >= 1.0.2 +BuildRequires: libestr-devel liblognorm-devel >= 1.0.2 %package mmaudit Summary: Message modification module supporting Linux audit format -Group: System Environment/Daemons Requires: %name = %version-%release -%package mmsnmptrapd -Summary: Message modification module for snmptrapd generated messages -Group: System Environment/Daemons +%package mmfields +Summary: Fields extraction module Requires: %name = %version-%release -%package libdbi -Summary: Libdbi database support for rsyslog -Group: System Environment/Daemons +%if %{with mmtaghostname} +%package mmtaghostname +Summary: Message modification module supporting adding tags Requires: %name = %version-%release -BuildRequires: libdbi-devel - -%package mysql -Summary: MySQL support for rsyslog -Group: System Environment/Daemons -Requires: %name = %version-%release -BuildRequires: mysql-devel >= 4.0 - -%if %{want_mongodb} -%package mongodb -Summary: MongoDB support for rsyslog -Group: System Environment/Daemons -Requires: %name = %version-%release -BuildRequires: libmongo-client-devel %endif +%if %{with snmp} +%package mmsnmptrapd +Summary: Message modification module for snmptrapd generated messages +Requires: %name = %version-%release +%endif + +%if %{with mysql} +%package mysql +Summary: MySQL support for rsyslog +Requires: %name = %version-%release +BuildRequires: mariadb-connector-c-devel +%endif + +%if %{with pgsql} %package pgsql Summary: PostgresSQL support for rsyslog -Group: System Environment/Daemons Requires: %name = %version-%release -BuildRequires: postgresql-devel - -%package rabbitmq -Summary: RabbitMQ support for rsyslog -Group: System Environment/Daemons -Requires: %name = %version-%release -BuildRequires: librabbitmq-devel >= 0.2 +BuildRequires: libpq-devel +%endif +%if %{with gssapi} %package gssapi Summary: GSSAPI authentication and encryption support for rsyslog -Group: System Environment/Daemons Requires: %name = %version-%release BuildRequires: krb5-devel +%endif +%if %{with relp} %package relp Summary: RELP protocol support for rsyslog -Group: System Environment/Daemons Requires: %name = %version-%release -BuildRequires: librelp-devel >= 1.0.3 +BuildRequires: librelp-devel >= 1.2.16 +%endif +%if %{with gnutls} %package gnutls -Summary: TLS protocol support for rsyslog -Group: System Environment/Daemons +Summary: TLS protocol support for rsyslog via GnuTLS library Requires: %name = %version-%release BuildRequires: gnutls-devel +%endif +%if %{with openssl} +%package openssl +Summary: TLS protocol support for rsyslog via OpenSSL library +Group: System Environment/Daemons +Requires: %name = %version-%release +Requires: openssl-libs +BuildRequires: openssl-devel +%endif + +%if %{with snmp} %package snmp Summary: SNMP protocol support for rsyslog -Group: System Environment/Daemons Requires: %name = %version-%release BuildRequires: net-snmp-devel +%endif +%if %{with udpspoof} %package udpspoof Summary: Provides the omudpspoof module -Group: System Environment/Daemons Requires: %name = %version-%release BuildRequires: libnet-devel +%endif +%if %{with omamqp1} %package omamqp1 Summary: Provides the omamqp1 module -Group: System Environment/Daemons Requires: %name = %version-%release -BuildRequires: qpid-proton-c-devel +Requires: cyrus-sasl-lib +Requires: openssl-libs +BuildRequires: cmake +BuildRequires: make +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cyrus-sasl-devel +BuildRequires: openssl-devel +BuildRequires: python3 +%endif +%if %{with rdkafka} %package kafka Summary: Provides the omkafka module -Group: System Environment/Daemons Requires: %name = %version-%release BuildRequires: librdkafka-devel +%endif + +%package mmkubernetes +Summary: Provides the mmkubernetes module +Requires: %name = %version-%release +BuildRequires: libcurl-devel + +%if %{with hiredis} +%package hiredis +Summary: Redis support for rsyslog +Requires: %name = %version-%release +BuildRequires: hiredis-devel +%endif + +%if %{with libdbi} +%package libdbi +Summary: Libdbi database support for rsyslog +Requires: %name = %version-%release +BuildRequires: libdbi-devel +%endif + +%if %{with mongodb} +%package mongodb +Summary: MongoDB support for rsyslog +Requires: %name = %version-%release +BuildRequires: mongo-c-driver-devel snappy-devel cyrus-sasl-devel +%endif + +%if %{with rabbitmq} +%package rabbitmq +Summary: RabbitMQ support for rsyslog +Requires: %name = %version-%release +BuildRequires: librabbitmq-devel >= 0.2 +%endif + %description Rsyslog is an enhanced, multi-threaded syslog daemon. It supports MySQL, @@ -197,11 +252,6 @@ This subpackage contains documentation for rsyslog. This module provides the capability for rsyslog to feed logs directly into Elasticsearch. -%if %{want_hiredis} -%description hiredis -This module provides output to Redis. -%endif - %description mmjsonparse This module provides the capability to recognize and parse JSON enhanced syslog messages. @@ -213,139 +263,259 @@ This module provides the capability to normalize log messages via liblognorm. This module provides message modification supporting Linux audit format in various settings. +%description mmfields +The mmfield module permits to extract fields. Using this module is of special +advantage if a field-based log format is to be processed, like for example CEF +and either a large number of fields is needed or a specific field is used multiple +times inside filters. + +%description mmtaghostname +This module provides message modification for changing or adding the host name. + +%if %{with snmp} %description mmsnmptrapd This message modification module takes messages generated from snmptrapd and modifies them so that they look like they originated from the read originator. +%endif +%if %{with mysql} +%description mysql +The rsyslog-mysql package contains a dynamic shared object that will add +MySQL database support to rsyslog. +%endif + +%if %{with pgsql} +%description pgsql +The rsyslog-pgsql package contains a dynamic shared object that will add +PostgreSQL database support to rsyslog. +%endif + +%if %{with gssapi} +%description gssapi +The rsyslog-gssapi package contains the rsyslog plugins which support GSSAPI +authentication and secure connections. GSSAPI is commonly used for Kerberos +authentication. +%endif + +%if %{with relp} +%description relp +The rsyslog-relp package contains the rsyslog plugins that provide +the ability to receive syslog messages via the reliable RELP +protocol. +%endif + +%if %{with gnutls} +%description gnutls +The rsyslog-gnutls package contains the rsyslog plugins that provide the +ability to send and receive syslog messages via TCP or RELP using TLS +encryption via GnuTLS library. For details refer to rsyslog doc on imtcp +and omfwd modules. +%endif + +%if %{with openssl} +%description openssl +The rsyslog-openssl package contains the rsyslog plugins that provide the +ability to send and receive syslog messages via TCP or RELP using TLS +encryption via OpenSSL library. For details refer to rsyslog doc on imtcp +and omfwd modules. +%endif + +%if %{with snmp} +%description snmp +The rsyslog-snmp package contains the rsyslog plugin that provides the +ability to send syslog messages as SNMPv1 and SNMPv2c traps. +%endif + +%if %{with udpspoof} +%description udpspoof +This module is similar to the regular UDP forwarder, but permits to +spoof the sender address. Also, it enables to circle through a number +of source ports. +%endif + +%if %{with omamqp1} +%description omamqp1 +The omamqp1 output module can be used to send log messages via an AMQP +1.0-compatible messaging bus. +%endif + +%if %{with rdkafka} +%description kafka +The rsyslog-kafka package provides module for Apache Kafka output. +%endif + +%description mmkubernetes +The rsyslog-mmkubernetes package provides module for adding kubernetes +container metadata. + +%if %{with hiredis} +%description hiredis +This module provides output to Redis. +%endif + +%if %{with libdbi} %description libdbi This module supports a large number of database systems via libdbi. Libdbi abstracts the database layer and provides drivers for many systems. Drivers are available via the libdbi-drivers project. +%endif -%description mysql -The rsyslog-mysql package contains a dynamic shared object that will add -MySQL database support to rsyslog. - -%if %{want_mongodb} +%if %{with mongodb} %description mongodb The rsyslog-mongodb package contains a dynamic shared object that will add MongoDB database support to rsyslog. %endif -%description pgsql -The rsyslog-pgsql package contains a dynamic shared object that will add -PostgreSQL database support to rsyslog. - +%if %{with rabbitmq} %description rabbitmq This module allows rsyslog to send messages to a RabbitMQ server. - -%description gssapi -The rsyslog-gssapi package contains the rsyslog plugins which support GSSAPI -authentication and secure connections. GSSAPI is commonly used for Kerberos -authentication. - -%description relp -The rsyslog-relp package contains the rsyslog plugins that provide -the ability to receive syslog messages via the reliable RELP -protocol. - -%description gnutls -The rsyslog-gnutls package contains the rsyslog plugins that provide the -ability to receive syslog messages via upcoming syslog-transport-tls -IETF standard protocol. - -%description snmp -The rsyslog-snmp package contains the rsyslog plugin that provides the -ability to send syslog messages as SNMPv1 and SNMPv2c traps. - -%description udpspoof -This module is similar to the regular UDP forwarder, but permits to -spoof the sender address. Also, it enables to circle through a number -of source ports. - -%description omamqp1 -The omamqp1 output module can be used to send log messages via an AMQP -1.0-compatible messaging bus. - -%description kafka -The rsyslog-kafka package provides module for Apache Kafka output. +%endif %prep -# set up rsyslog-doc sources -%setup -q -a 1 -T -c -rm -r LICENSE README.md build.sh source build/objects.inv -mv build doc # set up rsyslog sources %setup -q -D -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -autoreconf -iv +%if %{with omamqp1} +# Unpack qpid-proton +%setup -q -D -T -b 5 +%endif %build %ifarch sparc64 -#sparc64 need big PIE -export CFLAGS="$RPM_OPT_FLAGS -fPIE -DPATH_PIDFILE=\\\"/var/run/syslogd.pid\\\"" -export LDFLAGS="-pie -Wl,-z,relro -Wl,-z,now" +#sparc64 need big PIC +export CFLAGS="$RPM_OPT_FLAGS -fPIC" %else -export CFLAGS="$RPM_OPT_FLAGS -fpie -DPATH_PIDFILE=\\\"/var/run/syslogd.pid\\\"" -export LDFLAGS="-pie -Wl,-z,relro -Wl,-z,now" +export CFLAGS="$RPM_OPT_FLAGS -fpic" %endif -%if %{want_hiredis} +%if %{with omamqp1} +# build the proton first +( + cd %{_builddir}/qpid-proton-%{qpid_proton_v} + mkdir bld + cd bld + + # Need ENABLE_FUZZ_TESTING=NO to avoid a link failure + # Modern approach for Python discovery in CMake + cmake .. \ + -DBUILD_BINDINGS="" \ + -DBUILD_STATIC_LIBS=YES \ + -DENABLE_FUZZ_TESTING=NO \ + -DPython_FIND_STRATEGY=LOCATION \ + -DPython_ROOT_DIR=/usr \ + -DCMAKE_AR="/usr/bin/gcc-ar" -DCMAKE_NM="/usr/bin/gcc-nm" -DCMAKE_RANLIB="/usr/bin/gcc-ranlib" + make -j8 +) +%endif + +%ifarch sparc64 +#sparc64 need big PIE +export CFLAGS="$RPM_OPT_FLAGS -fPIE" +%else +export CFLAGS="$RPM_OPT_FLAGS -fpie" +%endif +export LDFLAGS="-pie -Wl,-z,relro -Wl,-z,now" + +%if %{with hiredis} # the hiredis-devel package doesn't provide a pkg-config file export HIREDIS_CFLAGS=-I/usr/include/hiredis export HIREDIS_LIBS="-L%{_libdir} -lhiredis" %endif + +sed -i 's/%{version}/%{version}-%{release}/g' configure.ac + +autoreconf -if %configure \ --prefix=/usr \ --disable-static \ -%if %{want_testbench} - --enable-testbench \ + --disable-testbench \ +%if %{with clickhouse} + --enable-clickhouse \ +%endif +%if %{with imdocker} + --enable-imdocker \ +%endif +%if %{with improg} + --enable-improg \ +%endif + --enable-libcap-ng \ +%if %{with libdbi} + --enable-libdbi \ +%endif +%if %{with hiredis} + --enable-omhiredis \ +%endif +%if %{with mongodb} + --enable-ommongodb \ +%endif +%if %{with rabbitmq} + --enable-omrabbitmq \ +%endif +%if %{with omamqp1} + --enable-omamqp1 PROTON_PROACTOR_LIBS="%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_PROACTOR_CFLAGS="-I%{_builddir}/qpid-proton-%{qpid_proton_v}/c/include -I%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/include" PROTON_LIBS="%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-core-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-proactor-static.a %{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/libqpid-proton-static.a -lssl -lsasl2 -lcrypto" PROTON_CFLAGS="-I%{_builddir}/qpid-proton-%{qpid_proton_v}/c/include -I%{_builddir}/qpid-proton-%{qpid_proton_v}/bld/c/include" \ %endif --enable-elasticsearch \ --enable-generate-man-pages \ +%if %{with gnutls} --enable-gnutls \ +%endif +%if %{with openssl} + --enable-openssl \ +%endif +%if %{with gssapi} --enable-gssapi-krb5 \ - --enable-imdiag \ +%endif --enable-imfile \ --enable-imjournal \ +%if %{with rdkafka} + --enable-imkafka \ + --enable-omkafka \ +%endif --enable-impstats \ --enable-imptcp \ - --enable-libdbi \ --enable-mail \ --enable-mmanon \ --enable-mmaudit \ --enable-mmcount \ + --enable-mmfields \ + --enable-mmkubernetes \ --enable-mmjsonparse \ --enable-mmnormalize \ +%if %{with mmtaghostname} + --enable-mmtaghostname \ +%endif +%if %{with snmp} --enable-mmsnmptrapd \ +%endif + --enable-mmutf8fix \ +%if %{with mysql} --enable-mysql \ - --enable-omamqp1 \ -%if %{want_hiredis} - --enable-omhiredis \ %endif + --enable-omhttp \ --enable-omjournal \ -%if %{want_mongodb} - --enable-ommongodb \ -%endif --enable-omprog \ - --enable-omrabbitmq \ --enable-omstdout \ +%if %{with udpspoof} --enable-omudpspoof \ +%endif --enable-omuxsock \ +%if %{with pgsql} --enable-pgsql \ +%endif --enable-pmaixforwardedfrom \ --enable-pmcisconames \ --enable-pmlastmsg \ --enable-pmsnare \ +%if %{with relp} --enable-relp \ +%endif +%if %{with snmp} --enable-snmp \ +%endif --enable-unlimited-select \ --enable-usertools \ - --enable-omkafka \ + --disable-libgcrypt \ + --enable-openssl_crypto_provider make V=1 @@ -357,24 +527,32 @@ make V=1 DESTDIR=%{buildroot} install install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig install -d -m 755 %{buildroot}%{_sysconfdir}/logrotate.d +install -d -m 755 %{buildroot}%{_unitdir} install -d -m 755 %{buildroot}%{_sysconfdir}/rsyslog.d install -d -m 700 %{buildroot}%{rsyslog_statedir} install -d -m 700 %{buildroot}%{rsyslog_pkidir} install -d -m 755 %{buildroot}%{rsyslog_docdir}/html -install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/rsyslog.conf -install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/sysconfig/rsyslog -install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/logrotate.d/rsyslog +install -p -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rsyslog.conf +install -p -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/rsyslog +install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/rsyslog +install -p -m 644 %{SOURCE4} %{buildroot}%{_unitdir}/rsyslog.service + +%if %{with mysql} install -p -m 644 plugins/ommysql/createDB.sql %{buildroot}%{rsyslog_docdir}/mysql-createDB.sql +%endif + +%if %{with pgsql} install -p -m 644 plugins/ompgsql/createDB.sql %{buildroot}%{rsyslog_docdir}/pgsql-createDB.sql +%endif + dos2unix tools/recover_qi.pl install -p -m 644 tools/recover_qi.pl %{buildroot}%{rsyslog_docdir}/recover_qi.pl +install -p -m 644 contrib/mmkubernetes/*.rulebase %{buildroot}%{rsyslog_docdir} # extract documentation cp -r doc/* %{buildroot}%{rsyslog_docdir}/html # get rid of libtool libraries rm -f %{buildroot}%{_libdir}/rsyslog/*.la -# get rid of socket activation by default -sed -i '/^Alias/s/^/;/;/^Requires=syslog.socket/s/^/;/' %{buildroot}%{_unitdir}/rsyslog.service # imdiag and liboverride is only used for testing rm -f %{buildroot}%{_libdir}/rsyslog/imdiag.so rm -f %{buildroot}%{_libdir}/rsyslog/liboverride_gethostname.so @@ -394,14 +572,17 @@ done %systemd_postun_with_restart rsyslog.service %files -%defattr(-,root,root,-) %{!?_licensedir:%global license %%doc} %license COPYING* %doc AUTHORS ChangeLog README.md -%{rsyslog_docdir} %exclude %{rsyslog_docdir}/html +%exclude %{rsyslog_docdir}/recover_qi.pl +%if %{with mysql} %exclude %{rsyslog_docdir}/mysql-createDB.sql +%endif +%if %{with pgsql} %exclude %{rsyslog_docdir}/pgsql-createDB.sql +%endif %dir %{_libdir}/rsyslog %dir %{_sysconfdir}/rsyslog.d %dir %{rsyslog_statedir} @@ -414,6 +595,8 @@ done %config(noreplace) %{_sysconfdir}/sysconfig/rsyslog %config(noreplace) %{_sysconfdir}/logrotate.d/rsyslog # plugins +%{_libdir}/rsyslog/fmhash.so +%{_libdir}/rsyslog/fmhttp.so %{_libdir}/rsyslog/imfile.so %{_libdir}/rsyslog/imjournal.so %{_libdir}/rsyslog/imklog.so @@ -427,13 +610,15 @@ done %{_libdir}/rsyslog/lmnetstrms.so %{_libdir}/rsyslog/lmnsd_ptcp.so %{_libdir}/rsyslog/lmregexp.so -%{_libdir}/rsyslog/lmstrmsrv.so %{_libdir}/rsyslog/lmtcpclt.so %{_libdir}/rsyslog/lmtcpsrv.so %{_libdir}/rsyslog/lmzlibw.so %{_libdir}/rsyslog/mmanon.so %{_libdir}/rsyslog/mmcount.so %{_libdir}/rsyslog/mmexternal.so +%{_libdir}/rsyslog/mmleefparse.so +%{_libdir}/rsyslog/mmutf8fix.so +%{_libdir}/rsyslog/omhttp.so %{_libdir}/rsyslog/omjournal.so %{_libdir}/rsyslog/ommail.so %{_libdir}/rsyslog/omprog.so @@ -444,103 +629,439 @@ done %{_libdir}/rsyslog/pmcisconames.so %{_libdir}/rsyslog/pmlastmsg.so %{_libdir}/rsyslog/pmsnare.so - -%files crypto -%defattr(-,root,root) -%{_bindir}/rscryutil -%{_mandir}/man1/rscryutil.1.gz -%{_libdir}/rsyslog/lmcry_gcry.so - -%files doc -%defattr(-,root,root) -%doc %{rsyslog_docdir}/html - -%files elasticsearch -%defattr(-,root,root) -%{_libdir}/rsyslog/omelasticsearch.so - -%if %{want_hiredis} -%files hiredis -%defattr(-,root,root) -%{_libdir}/rsyslog/omhiredis.so +%if %{with imdocker} +%{_libdir}/rsyslog/imdocker.so +%endif +%if %{with improg} +%{_libdir}/rsyslog/improg.so +%endif +%if %{with clickhouse} +%{_libdir}/rsyslog/omclickhouse.so %endif -%files libdbi -%defattr(-,root,root) -%{_libdir}/rsyslog/omlibdbi.so +%files crypto +%{_bindir}/rscryutil +%{_mandir}/man1/rscryutil.1.gz +%{_libdir}/rsyslog/lmcry_ossl.so + +%files doc +%{rsyslog_docdir}/html +%{rsyslog_docdir}/recover_qi.pl + +%files elasticsearch +%{_libdir}/rsyslog/omelasticsearch.so %files mmaudit -%defattr(-,root,root) %{_libdir}/rsyslog/mmaudit.so +%files mmfields +%{_libdir}/rsyslog/mmfields.so + %files mmjsonparse -%defattr(-,root,root) %{_libdir}/rsyslog/mmjsonparse.so %files mmnormalize -%defattr(-,root,root) %{_libdir}/rsyslog/mmnormalize.so -%files mmsnmptrapd -%defattr(-,root,root) -%{_libdir}/rsyslog/mmsnmptrapd.so +%files mmtaghostname +%{_libdir}/rsyslog/mmtaghostname.so +%if %{with snmp} +%files mmsnmptrapd +%{_libdir}/rsyslog/mmsnmptrapd.so +%endif + +%if %{with mysql} %files mysql -%defattr(-,root,root) %doc %{rsyslog_docdir}/mysql-createDB.sql %{_libdir}/rsyslog/ommysql.so +%endif -%if %{want_mongodb} +%if %{with pgsql} +%files pgsql +%doc %{rsyslog_docdir}/pgsql-createDB.sql +%{_libdir}/rsyslog/ompgsql.so +%endif + +%if %{with gssapi} +%files gssapi +%{_libdir}/rsyslog/lmgssutil.so +%{_libdir}/rsyslog/imgssapi.so +%{_libdir}/rsyslog/omgssapi.so +%endif + +%if %{with relp} +%files relp +%{_libdir}/rsyslog/imrelp.so +%{_libdir}/rsyslog/omrelp.so +%endif + +%if %{with gnutls} +%files gnutls +%{_libdir}/rsyslog/lmnsd_gtls.so +%endif + +%if %{with openssl} +%files openssl +%{_libdir}/rsyslog/lmnsd_ossl.so +%endif + +%if %{with snmp} +%files snmp +%{_libdir}/rsyslog/omsnmp.so +%endif + +%if %{with udpspoof} +%files udpspoof +%{_libdir}/rsyslog/omudpspoof.so +%endif + +%if %{with omamqp1} +%files omamqp1 +%{_libdir}/rsyslog/omamqp1.so +%endif + +%if %{with rdkafka} +%files kafka +%{_libdir}/rsyslog/imkafka.so +%{_libdir}/rsyslog/omkafka.so +%endif + +%files mmkubernetes +%{_libdir}/rsyslog/mmkubernetes.so +%doc %{rsyslog_docdir}/k8s_filename.rulebase +%doc %{rsyslog_docdir}/k8s_container_name.rulebase + +%if %{with hiredis} +%files hiredis +%{_libdir}/rsyslog/omhiredis.so +%endif + +%if %{with libdbi} +%files libdbi +%{_libdir}/rsyslog/omlibdbi.so +%endif + +%if %{with mongodb} %files mongodb -%defattr(-,root,root) %{_bindir}/logctl %{_libdir}/rsyslog/ommongodb.so %endif -%files pgsql -%defattr(-,root,root) -%doc %{rsyslog_docdir}/pgsql-createDB.sql -%{_libdir}/rsyslog/ompgsql.so - +%if %{with rabbitmq} %files rabbitmq -%defattr(-,root,root) %{_libdir}/rsyslog/omrabbitmq.so +%endif -%files gssapi -%defattr(-,root,root) -%{_libdir}/rsyslog/lmgssutil.so -%{_libdir}/rsyslog/imgssapi.so -%{_libdir}/rsyslog/omgssapi.so - -%files relp -%defattr(-,root,root) -%{_libdir}/rsyslog/imrelp.so -%{_libdir}/rsyslog/omrelp.so - -%files gnutls -%defattr(-,root,root) -%{_libdir}/rsyslog/lmnsd_gtls.so - -%files snmp -%defattr(-,root,root) -%{_libdir}/rsyslog/omsnmp.so - -%files udpspoof -%defattr(-,root,root) -%{_libdir}/rsyslog/omudpspoof.so - -%files omamqp1 -%defattr(-,root,root) -%{_libdir}/rsyslog/omamqp1.so - -%files kafka -%defattr(-,root,root) -%{_libdir}/rsyslog/omkafka.so %changelog -* Tue Nov 28 2017 Jiri Vymazal - 8.30.0-3 +* Mon Oct 20 2025 Attila Lakatos - 8.2510.0-1 +- Rebase to 8.2510.0 + Resolves: rhbz#2404131 +- imjournal open error handling fix + Resolves: rhbz#2375742 +- Add mmleefparse module to base package + +* Fri Sep 05 2025 Attila Lakatos - 8.2508.0-1 +- Rebase to 8.2508.0 + Resolves: rhbz#2392918 + +* Fri Jul 25 2025 Fedora Release Engineering - 8.2506.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jun 12 2025 Attila Lakatos - 8.2506.0-1 +- Rebase to 8.2506.0 + Resolves: rhbz#2347628 + +* Tue Jan 21 2025 Attila Lakatos - 8.2412.0-3 +- Fix build problem by resolving -Wincompatible-pointer-types error + +* Sat Jan 18 2025 Fedora Release Engineering - 8.2412.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Dec 05 2024 Attila Lakatos - 8.2412.0-1 +- Rebase to 8.2412.0 +- Harden rsyslog service unit +- Disable openssl engines support + Resolves: rhbz#2320050 + +* Fri Oct 04 2024 Attila Lakatos - 8.2408.0-2 +- Rebuild package + Resolves: rhbz#2316361 + +* Wed Aug 21 2024 Attila Lakatos - 8.2408.0-1 +- Rebase to 8.2408.0 + Resolves: rhbz#2266329 + Resolves: rhbz#2301246 + Resolves: rhbz#2305398 + +* Fri Jul 19 2024 Fedora Release Engineering - 8.2312.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed May 29 2024 Orion Poplawski - 8.2312.0-3 +- Explicitly set imjournal FileCreateMode to quiet warning + +* Sat May 11 2024 Kevin Fenzi - 8.2312.0-2 +- rebuild for hiredis soname bump + +* Mon Feb 12 2024 Attila Lakatos - 8.2312.0-1 +- Rebase to 8.2312.0 + resolves: rhbz#2232275 + +* Fri Jan 26 2024 Fedora Release Engineering - 8.2310.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 8.2310.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 04 2024 Attila Lakatos - 8.2310.0-2 +- Move rsyslog related logrotate config to the base package + resolves: rhbz#2242243 + +* Fri Aug 25 2023 Attila Lakatos - 8.2310.0-1 +- Rebase to 8.2310.0 + resolves: rhbz#2232275 + +* Wed Aug 16 2023 Stewart Smith - 8.2306.0-4 +- Add mmtaghostname module as a subpackage + +* Fri Jul 21 2023 Fedora Release Engineering - 8.2306.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jul 15 2023 Yaroslav Fedevych - 8.2306.0-2 +- Specify qpid-proton's source as full URL to fix isolated builds + +* Wed Jun 21 2023 Attila Lakatos - 8.2306.0-1 +- rebase to 8.2306.0 + resolves: rhbz#2151339 + resolves: rhbz#2151092 + +* Wed May 10 2023 Todd Zullinger - 8.2210.0-5 +- Use 'systemctl reload' in logrotate script + +* Fri Jan 20 2023 Fedora Release Engineering - 8.2210.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Jan 17 2023 Attila Lakatos - 8.2210.0-3 +- Remove CAP_PERFMON from the capability set +- Add CAP_DAC_OVERRIDE to the capability set + +* Fri Dec 16 2022 Attila Lakatos - 8.2210.0-2 +- Move all if rhel feature conditions to bcond +- Move to bcond: rdkafka, relp, mysql, pgsql, gssapi, gnutls, udpspoof, omamqp1 +- Move to bcond: clickhouse, imdocker, improg + +* Wed Nov 09 2022 Attila Lakatos - 8.2210.0-1 +- rebase to 8.2210.0 + resolves: rhbz#2097173 +- Drop capabilities to the necessary set via libcap-ng + resolves: rhbz#2127403 + +* Wed Jul 27 2022 Attila Lakatos - 8.2204.0-3 +- Restore default omfile template + resolves: rhbz#2088618 + +* Sat Jul 23 2022 Fedora Release Engineering - 8.2204.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon May 09 2022 Attila Lakatos - 8.2204.0-1 +- rebase to 8.2204.0 + resolves: rhbz#1951970 +- CVE-2022-24903 rsyslog: Heap-based overflow in TCP syslog server + resolves: rhbz#2082302 + +* Mon Jan 24 2022 Attila Lakatos - 8.2102.0-10 +- Rebuild package with bundled qpid-proton + resolves: rhbz#2042940 + +* Fri Jan 21 2022 Fedora Release Engineering - 8.2102.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Oct 06 2021 Davide Cavalca - 8.2102.0-8 +- Split out logrotate config and dependency into a subpackage + resolves: rhbz#1992153 + +* Wed Sep 15 2021 Attila Lakatos - 8.2102.0-7 +- Enable mmfields plugin + +* Tue Sep 14 2021 Sahana Prasad - 8.2102.0-6 +- Rebuilt with OpenSSL 3.0.0 + +* Wed Aug 25 2021 Attila Lakatos - 8.2102.0-5 +- Enable openssl +- Do not set default template for omfile + resolves: rhbz#1985195 + +* Tue Jul 27 2021 Pavel Raiskup - 8.2102.0-4 +- reorder the rsyslog.conf to simplify the rsyslog.d configuration (#1985202) + +* Fri Jul 23 2021 Fedora Release Engineering - 8.2102.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Mar 17 2021 Attila Lakatos - 8.2102.0-2 +- Remove rsyslog-recover-qi.pl from bindir, so it does not add dep on /usr/bin/perl + resolves: rhbz#1939556 + +* Wed Mar 03 2021 Attila Lakatos - 8.2102.0-1 +- rebase to upstream version 8.2102.0 + resolves: rhbz#1905363 +- enable additional plugins: imkafka, mmutf8fix + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 8.2010.0-4 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Mon Feb 08 2021 Pavel Raiskup - 8.2010.0-3 +- rebuild for libpq ABI fix rhbz#1908268 + +* Wed Jan 27 2021 Fedora Release Engineering - 8.2010.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Nov 25 2020 Attila Lakatos - 8.2010.0-1 +- rebase to upstream version 8.2010.0 + resolves: rhbz#1890330 + +* Fri Sep 18 2020 Attila Lakatos - 8.2008.0-2 +- rebuild package + +* Thu Sep 17 2020 Attila Lakatos - 8.2008.0-1 +- rebase to upstream version 8.2008.0 + resolves: rhbz#1829092 + resolves: rhbz#1823862 + resolves: rhbz#1876773 +- add service file back(upstream does not ship it anymore) + +* Thu Aug 27 2020 Josef Řídký - 8.2002.0-5 +- Rebuilt for new net-snmp release + +* Thu Aug 20 2020 Attila Lakatos - 8.2002.0-4 +- enable configuration reload in the service + resolves: rhbz#1868636 + +* Sat Aug 01 2020 Fedora Release Engineering - 8.2002.0-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 8.2002.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Mar 27 2020 Jiri Vymazal - 8.2002.0-1 +- rebase to upstream version 8.2002.0 + resolves: rhbz#1807097 + +* Mon Feb 03 2020 Jiri Vymazal - 8.2001.0-1 +- rebase to upstream version 8.2001.0 + resolves: rhbz#1790731 + +* Thu Jan 30 2020 Fedora Release Engineering - 8.1911.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Nov 14 2019 Jiri Vymazal - 8.1911.0-1 +- rebase to upstream version 8.1911.0 + resolves: rhbz#1771468 + +* Thu Oct 17 2019 Jiri Vymazal - 8.1910.0-1 +- rebase to upstream version 8.1910.0 + resolves: rhbz#1743537 + +* Fri Jul 26 2019 Fedora Release Engineering - 8.1907.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jul 10 2019 Jiri Vymazal - 8.1907.0-1 +- rebase to upstream version 8.1905.0 + resolves: rhbz#1716391 + +* Mon May 13 2019 Jiri Vymazal - 8.1904.0-1 +- rebase to upstream version 8.1904.0 + resolves: rhbz#1668473 + +* Sat Feb 02 2019 Fedora Release Engineering - 8.39.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 23 2019 Bogdan Dobrelya - 8.39.0-2 +- Use systemd_ordering macro + +* Wed Dec 05 2018 Jiri Vymazal - 8.39.0-1 +- rebase to upstream version 8.39.0 + resolves: rhbz#1649081 + resolves: rhbz#1615014 + +* Wed Oct 10 2018 Jiri Vymazal - 8.38.0-1 +- rebase to upstream version 8.38.0 + resolves: rhbz#1632432 + resolves: rhbz#1627944 + +* Fri Aug 10 2018 Jiri Vymazal - 8.37.0-1 +- added mmkubernetes rulebases as doc files + resolves: rhbz#1614440 + +* Wed Aug 08 2018 Jiri Vymazal - 8.37.0-1 +- rebase to upstream version 8.37.0 + resolves: rhbz#1612079 + resolves: rhbz#1598217 + resolves: rhbz#1544139 +- dropped needless libee dependency +- bumped librelp dependency to actually needed version + +* Wed Jul 25 2018 Jiri Vymazal - 8.36.0-3 +- fixed a typo in commented-out part of default conf + reordered it + resolves: rhbz#1579592 + +* Tue Jul 24 2018 Jason L Tibbitts III - 8.36.0-3 +- Rebuild for unannounced net-snmp soversion bump. +- Use python3-docutils because rst2man has moved there. + +* Mon Jul 23 2018 Jiri Vymazal - 8.36.0-2 +- added gcc to buildrequires following f29 system-wide change + +* Sat Jul 14 2018 Fedora Release Engineering - 8.36.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jul 02 2018 Jiri Vymazal - 8.36.0-1 +- rebase to 8.36.0 + - removed stdlog dependency as upstream is going to drop it +- following upstream naming of pidfile +- removed needless conditionals + +* Fri Jun 8 2018 Remi Collet - 8.35.0-4 +- rebuild with libbson and libmongc 1.10.2 (soname back to 0) + +* Mon May 28 2018 Remi Collet - 8.35.0-3 +- rebuild with libbson and libmongc 1.10.0 + +* Thu May 17 2018 Radovan Sroka - 8.35.0-2 +- rebase to 8.35.0 + +* Thu Apr 05 2018 Jiri Vymazal - 8.34.0-1 +- rebase to 8.34.0 +- added mmkubernetes module +- added fmhttp module +- finished converting rsyslog config to new syntax +- dropped obsolete defattr statements from spec + +* Fri Feb 09 2018 Fedora Release Engineering - 8.32.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jan 11 2018 Jiri Vymazal - 8.32.0-1 +- rebase to 8.32.0 +- now requires higher version of libfastjson + +* Thu Dec 14 2017 Radovan Sroka - 8.31.0-2 +- added also cyrus-sasl-devel dependency + +* Thu Dec 14 2017 Radovan Sroka - 8.31.0-1 +- update to 8.31.0 +- removed upstreamed patches +- added dependecies mongo-c-driver-devel snappy-devel +- removed depricated dependecies libmongo-client +- mongodb plugin now uses new driver with TLS,... + +* Tue Nov 28 2017 Jiri Vymazal - 8.30.0-4 - changed rsyslog-doc to noarch +* Mon Nov 20 2017 Radovan Sroka - 8.30.0-4 +- rebuild due to libqpid-proton.so + * Wed Oct 25 2017 Radovan Sroka - 8.30.0-3 - rebuild @@ -552,12 +1073,23 @@ done - rebase to 8.30.0 - added patch that resolves imgssapi compilation errors -* Wed Aug 16 2017 Radovan Sroka - 8.29.0-2 -- rebuild +* Mon Oct 9 2017 Marek Tamaskovic - 8.29.0-4 +- mysql-devel changed for mariadb-connector-c-devel + resolves: rhbz#1493695 +- repaired changelog + +* Tue Aug 15 2017 Radovan Sroka - 8.29.0-2 +- rebuild, bumped release number * Tue Aug 15 2017 Marek Tamaskovic - 8.29.0-1 - rebase to 8.29.0 +* Thu Aug 03 2017 Fedora Release Engineering - 8.27.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 8.27.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Mon May 22 2017 Radovan Sroka - 8.27.0-1 - dropped patch2 (upstreamed) - rebase to 8.27.0 @@ -565,7 +1097,7 @@ done * Tue Apr 18 2017 Radovan Sroka - 8.26.0-1 - rebase to 8.26.0 - added doc patch rhbz#1436113 -- dropped chdir patch, https://github.com/rsyslog/rsyslog/pull/1420 +- dropped chdir patch, https://github.com/rsyslog/rsyslog/pull/1420 - moved dependency libgcrypt to rsyslog core * Wed Mar 01 2017 Jiri Vymazal - 8.25.0-2 @@ -615,20 +1147,23 @@ done https://github.com/rsyslog/rsyslog/pull/1289 * Tue Dec 20 2016 Radovan Sroka - 8.23.0-2 -- Rebase to 8.23.0 -- release number was bumped to synchronize rawhide +- added forgoten patch rsyslog-8.23.0-msg_c_nonoverwrite_merge.patch +* Tue Dec 20 2016 Radovan Sroka - 8.23.0-1 +- rebase to 8.23.0 +- change build requires from libfastjson to libfastjson-devel + +* Thu Nov 10 2016 Tomas Sykora 8.22.0-1 +- rebase to 8.22.0 + - added omamqp1 subpackage + - changed BuildRequires from json-c to libfastjson + +* Wed Oct 05 2016 Radovan Sroka 8.21.0-1 +- rebase to 8.21.0 - dropped rsyslog-8.12.0-gnutls-detection.patch - - dropped rsyslog-8.8.0-immutable-json-props.patch - - patch was incorrect - - rebased with -> rsyslog-8.23.0-msg_c_nonoverwrite_merge.patch - -- removed unused files from git - -- added omamqp1 subpackage -- changed BuildRequires from json-c-devel to libfastjson-devel - + - remove from specs but nor from git + - could be useful in future * Thu Feb 04 2016 Fedora Release Engineering - 8.12.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild diff --git a/sources b/sources index 22fdd70..1294997 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (rsyslog-8.30.0.tar.gz) = 90e172d08ba7548252fc9744f71259dadf5a40afef405516e7b1601620913ca4b2ffc4859b16f369b9c1974ea10f4e41bc2d987e3d6bf9aabeb979f7de6aefe0 -SHA512 (rsyslog-doc-8.30.0.tar.gz) = 8068bb9bb8408447bff49730e9aac105eab1bd610592dd524e7639b668b2d05a4836d3a9862622445a0bb8d8b140db67c861dad6ec207d11049ac368e363684d +SHA512 (rsyslog-8.2510.0.tar.gz) = d2e693fd8c7112e4ccc36ea6fbb19909df885e7cb2778e95c04b7c5e9db8240224decfee52308a46865b7deffcf1e31ade0104c90d84b768a4dece15e5ea190e +SHA512 (qpid-proton-0.40.0.tar.gz) = 3e7fe56ca1423f45f71d81f5e1d6ec5f21c073cc580628e12a8dbd545a86805b7312834e0d1234dde43797633d575ed639f21a96239b217500cc0a824482aae3 diff --git a/tests/got-audit/got-audit.gdb b/tests/got-audit/got-audit.gdb new file mode 100644 index 0000000..6661297 --- /dev/null +++ b/tests/got-audit/got-audit.gdb @@ -0,0 +1,2 @@ +gef config gef.disable_color True +got-audit --all diff --git a/tests/got-audit/main.fmf b/tests/got-audit/main.fmf new file mode 100644 index 0000000..a90b249 --- /dev/null +++ b/tests/got-audit/main.fmf @@ -0,0 +1,10 @@ +summary: Audit the GOT for signs of tampering +description: | + Pointers in the server process GOT will be checked to ensure that + each function pointer's value is within a shared object file + that exports a symbol of that name, and that no shared object + files export conflicting symbols. +contact: Gordon Messmer +require+: + - gdb-gef # needed to test got-audit + diff --git a/tests/got-audit/runtest.sh b/tests/got-audit/runtest.sh new file mode 100755 index 0000000..03761a1 --- /dev/null +++ b/tests/got-audit/runtest.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/rsyslog/Sanity/got-audit +# Description: Check pointers in the server process GOT for signs of tampering +# Author: Gordon Messmer +# + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlServiceStart rsyslog + rlRun "TestDir=\$(pwd)" + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlRun "auditfile=\$(mktemp --tmpdir=${TmpDir})" + rlPhaseEnd + + rlPhaseStartTest "Run GEF got-audit" + rlRun "SERVICE_PID=\$( systemctl show --property=MainPID rsyslog.service | cut -f2 -d= )" + rlRun "echo SERVICE_PID is '$SERVICE_PID'" + [ -n "$SERVICE_PID" ] || rlFail "No service pid was found" + rlRun "gdb-gef --pid '$SERVICE_PID' --command='$TestDir'/got-audit.gdb --batch > '$auditfile'" + # Basic test: ensure that at least one symbol is found in libc.so, + # to verify that the report looks plausible. + rlAssertGrep " : /.*/libc.so" "$auditfile" + # Ensure the got-audit did not report any errors + rlAssertNotGrep " :: ERROR" "$auditfile" + rlRun "cp '$auditfile' '$TMT_TEST_DATA'/got-audit.txt" + rlPhaseEnd + + rlPhaseStartCleanup + rlServiceRestore rsyslog + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..f225a72 --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,2 @@ +test: ./runtest.sh +framework: beakerlib