--- /dev/null
+From b81d6dd36545f79c46e0a3488a9b26d0db75646a Mon Sep 17 00:00:00 2001
+From: Thomas D.
+Date: Tue, 19 Apr 2016 02:09:18 +0200
+Subject: [PATCH 2/2] testbench: Use LD_PRELOAD=libfaketime.so instead of
+ faketime binary
+
+Fixes: https://github.com/rsyslog/rsyslog/issues/963
+---
+ tests/faketime_common.sh | 20 +++++++-------------
+ tests/now-utc-casecmp.sh | 2 +-
+ tests/now-utc-ymd.sh | 2 +-
+ tests/now-utc.sh | 2 +-
+ tests/now_family_utc.sh | 2 +-
+ tests/timegenerated-dateordinal-invld.sh | 8 ++++----
+ tests/timegenerated-dateordinal.sh | 28 ++++++++++++++--------------
+ tests/timegenerated-utc-legacy.sh | 2 +-
+ tests/timegenerated-utc.sh | 2 +-
+ tests/timegenerated-uxtimestamp-invld.sh | 8 ++++----
+ tests/timegenerated-uxtimestamp.sh | 26 ++++++++++++--------------
+ tests/timegenerated-ymd.sh | 2 +-
+ 12 files changed, 48 insertions(+), 56 deletions(-)
+
+diff --git a/tests/faketime_common.sh b/tests/faketime_common.sh
+index 10e0128..432ade6 100644
+--- a/tests/faketime_common.sh
++++ b/tests/faketime_common.sh
+@@ -4,26 +4,20 @@
+ # faketime is missing or the system isn't year-2038 complaint.
+ # This script can be sourced to prevent duplicated code.
+
+-if ! hash faketime 2>/dev/null ; then
+- echo "faketime command missing, skipping test"
++faketime_testtime=$(LD_PRELOAD=libfaketime.so FAKETIME="1991-08-25 20:57:08" TZ=GMT date +%s 2>/dev/null)
++if [ ${faketime_testtime} -ne 683153828 ] ; then
++ echo "libfaketime.so missing, skipping test"
+ exit 77
+ fi
+
+-export TZ=UTC+01:00
+-
+-faketime -f '2016-03-11 16:00:00' date 1>/dev/null 2>&1
+-if [ $? -ne 0 ]; then
+- # Safe-guard -- should never happen!
+- echo "faketime command not working as expected. Check faketime binary in path!"
+- exit 1
+-fi
+-
+-faketime '2040-01-01 16:00:00' date 1>/dev/null 2>&1
+-if [ $? -ne 0 ]; then
++# GMT-1 (POSIX TIME) is GMT+1 in "Human Time"
++faketime_testtime=$(LD_PRELOAD=libfaketime.so FAKETIME="2040-01-01 16:00:00" TZ=GMT-1 date +%s 2>/dev/null)
++if [ ${faketime_testtime} -eq -1 ]; then
+ # System isn't year-2038 compatible
+ RSYSLOG_TESTBENCH_Y2K38_INCOMPATIBLE="yes"
+ fi
+
++export LD_PRELOAD=libfaketime.so
+
+ rsyslog_testbench_require_y2k38_support() {
+ if [ -n "${RSYSLOG_TESTBENCH_Y2K38_INCOMPATIBLE}" ]; then
+diff --git a/tests/now-utc-casecmp.sh b/tests/now-utc-casecmp.sh
+index 8f8d6a0..26bb7ee 100755
+--- a/tests/now-utc-casecmp.sh
++++ b/tests/now-utc-casecmp.sh
+@@ -19,7 +19,7 @@ template(name="outfmt" type="string"
+ :msg, contains, "msgnum:" action(type="omfile" template="outfmt"
+ file="rsyslog.out.log")
+ '
+-faketime '2016-01-01 01:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-01-01 01:00:00' $srcdir/diag.sh startup
+ # what we send actually is irrelevant, as we just use system properties.
+ # but we need to send one message in order to gain output!
+ . $srcdir/diag.sh tcpflood -m1
+diff --git a/tests/now-utc-ymd.sh b/tests/now-utc-ymd.sh
+index c327983..6e2d183 100755
+--- a/tests/now-utc-ymd.sh
++++ b/tests/now-utc-ymd.sh
+@@ -19,7 +19,7 @@ template(name="outfmt" type="string"
+ :msg, contains, "msgnum:" action(type="omfile" template="outfmt"
+ file="rsyslog.out.log")
+ '
+-faketime '2016-01-01 01:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-01-01 01:00:00' $srcdir/diag.sh startup
+ # what we send actually is irrelevant, as we just use system properties.
+ # but we need to send one message in order to gain output!
+ . $srcdir/diag.sh tcpflood -m1
+diff --git a/tests/now-utc.sh b/tests/now-utc.sh
+index ed83948..69fd4fd 100755
+--- a/tests/now-utc.sh
++++ b/tests/now-utc.sh
+@@ -9,7 +9,7 @@ echo \[now-utc\]: test \$NOW-UTC
+ export TZ=TEST-02:00
+
+ . $srcdir/diag.sh init
+-faketime '2016-01-01 01:00:00' $srcdir/diag.sh startup now-utc.conf
++FAKETIME='2016-01-01 01:00:00' $srcdir/diag.sh startup now-utc.conf
+ # what we send actually is irrelevant, as we just use system properties.
+ # but we need to send one message in order to gain output!
+ . $srcdir/diag.sh tcpflood -m1
+diff --git a/tests/now_family_utc.sh b/tests/now_family_utc.sh
+index caba0f9..e791cbf 100755
+--- a/tests/now_family_utc.sh
++++ b/tests/now_family_utc.sh
+@@ -9,7 +9,7 @@ echo \[now_family_utc\]: test \$NOW family of system properties
+ export TZ=TEST+06:30
+
+ . $srcdir/diag.sh init
+-faketime '2016-01-01 01:00:00' $srcdir/diag.sh startup now_family_utc.conf
++FAKETIME='2016-01-01 01:00:00' $srcdir/diag.sh startup now_family_utc.conf
+ # what we send actually is irrelevant, as we just use system properties.
+ # but we need to send one message in order to gain output!
+ . $srcdir/diag.sh tcpflood -m1
+diff --git a/tests/timegenerated-dateordinal-invld.sh b/tests/timegenerated-dateordinal-invld.sh
+index bac5d4e..dc5e14c 100755
+--- a/tests/timegenerated-dateordinal-invld.sh
++++ b/tests/timegenerated-dateordinal-invld.sh
+@@ -25,7 +25,7 @@ template(name="outfmt" type="string"
+
+ echo "***SUBTEST: check 1800-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '1800-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='1800-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -40,7 +40,7 @@ fi;
+
+ echo "***SUBTEST: check 1960-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '1960-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='1960-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -55,7 +55,7 @@ fi;
+
+ echo "***SUBTEST: check 2101-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2101-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='2101-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -70,7 +70,7 @@ fi;
+
+ echo "***SUBTEST: check 2500-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2500-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='2500-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+diff --git a/tests/timegenerated-dateordinal.sh b/tests/timegenerated-dateordinal.sh
+index ace1c16..1164e53 100755
+--- a/tests/timegenerated-dateordinal.sh
++++ b/tests/timegenerated-dateordinal.sh
+@@ -25,7 +25,7 @@ template(name="outfmt" type="string"
+
+ echo "***SUBTEST: check 1970-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '1970-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='1970-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -39,7 +39,7 @@ fi;
+
+ echo "***SUBTEST: check 2000-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2000-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2000-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -53,7 +53,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -67,7 +67,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-02-29"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-02-29 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-02-29 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -81,7 +81,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -95,7 +95,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-03-03"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-03-03 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-03-03 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -109,7 +109,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-12-31"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-12-31 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-12-31 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -123,7 +123,7 @@ fi;
+
+ echo "***SUBTEST: check 2017-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2017-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2017-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -137,7 +137,7 @@ fi;
+
+ echo "***SUBTEST: check 2020-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2020-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2020-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -151,7 +151,7 @@ fi;
+
+ echo "***SUBTEST: check 2038-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2038-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2038-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -168,7 +168,7 @@ rsyslog_testbench_require_y2k38_support
+
+ echo "***SUBTEST: check 2038-12-31"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2038-12-31 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2038-12-31 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -182,7 +182,7 @@ fi;
+
+ echo "***SUBTEST: check 2040-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2040-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2040-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -196,7 +196,7 @@ fi;
+
+ echo "***SUBTEST: check 2040-12-31"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2040-12-31 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2040-12-31 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -210,7 +210,7 @@ fi;
+
+ echo "***SUBTEST: check 2100-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2100-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2100-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+diff --git a/tests/timegenerated-utc-legacy.sh b/tests/timegenerated-utc-legacy.sh
+index f893377..60296d3 100755
+--- a/tests/timegenerated-utc-legacy.sh
++++ b/tests/timegenerated-utc-legacy.sh
+@@ -26,7 +26,7 @@ template(name="outfmt" type="string"
+
+ echo "***SUBTEST: check 2016-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+diff --git a/tests/timegenerated-utc.sh b/tests/timegenerated-utc.sh
+index 651408c..5d32e36 100755
+--- a/tests/timegenerated-utc.sh
++++ b/tests/timegenerated-utc.sh
+@@ -28,7 +28,7 @@ template(name="outfmt" type="list") {
+
+ echo "***SUBTEST: check 2016-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+diff --git a/tests/timegenerated-uxtimestamp-invld.sh b/tests/timegenerated-uxtimestamp-invld.sh
+index 90bcf74..76a353c 100755
+--- a/tests/timegenerated-uxtimestamp-invld.sh
++++ b/tests/timegenerated-uxtimestamp-invld.sh
+@@ -25,7 +25,7 @@ template(name="outfmt" type="string"
+
+ echo "***SUBTEST: check 1800-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '1800-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='1800-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -40,7 +40,7 @@ fi;
+
+ echo "***SUBTEST: check 1960-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '1960-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='1960-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -55,7 +55,7 @@ fi;
+
+ echo "***SUBTEST: check 2101-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2101-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='2101-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -70,7 +70,7 @@ fi;
+
+ echo "***SUBTEST: check 2500-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2500-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='2500-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+diff --git a/tests/timegenerated-uxtimestamp.sh b/tests/timegenerated-uxtimestamp.sh
+index b24f9c7..0eb2812 100755
+--- a/tests/timegenerated-uxtimestamp.sh
++++ b/tests/timegenerated-uxtimestamp.sh
+@@ -25,7 +25,7 @@ template(name="outfmt" type="string"
+
+ echo "***SUBTEST: check 1970-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '1970-01-01 00:00:00' $srcdir/diag.sh startup
++FAKETIME='1970-01-01 00:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -40,7 +40,7 @@ fi;
+
+ echo "***SUBTEST: check 2000-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2000-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2000-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -55,7 +55,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -70,7 +70,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-02-29"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-02-29 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-02-29 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -85,7 +85,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -100,7 +100,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-03-03"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-03-03 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-03-03 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -115,7 +115,7 @@ fi;
+
+ echo "***SUBTEST: check 2016-12-31"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2016-12-31 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-12-31 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -130,7 +130,7 @@ fi;
+
+ echo "***SUBTEST: check 2017-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2017-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2017-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -145,7 +145,7 @@ fi;
+
+ echo "***SUBTEST: check 2020-03-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2020-03-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2020-03-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -160,7 +160,7 @@ fi;
+
+ echo "***SUBTEST: check 2038-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2038-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2038-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -172,13 +172,11 @@ if [ ! $? -eq 0 ]; then
+ exit 1
+ fi;
+
+-
+ rsyslog_testbench_require_y2k38_support
+
+-
+ echo "***SUBTEST: check 2040-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2040-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2040-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+@@ -193,7 +191,7 @@ fi;
+
+ echo "***SUBTEST: check 2100-01-01"
+ rm -f rsyslog.out.log # do cleanup of previous subtest
+-faketime -f '2100-01-01 12:00:00' $srcdir/diag.sh startup
++FAKETIME='2100-01-01 12:00:00' $srcdir/diag.sh startup
+ . $srcdir/diag.sh tcpflood -m1
+ . $srcdir/diag.sh shutdown-when-empty
+ . $srcdir/diag.sh wait-shutdown
+diff --git a/tests/timegenerated-ymd.sh b/tests/timegenerated-ymd.sh
+index 66b364b..f5f9213 100755
+--- a/tests/timegenerated-ymd.sh
++++ b/tests/timegenerated-ymd.sh
+@@ -19,7 +19,7 @@ template(name="outfmt" type="string"
+ :msg, contains, "msgnum:" action(type="omfile" template="outfmt"
+ file="rsyslog.out.log")
+ '
+-faketime '2016-01-01 01:00:00' $srcdir/diag.sh startup
++FAKETIME='2016-01-01 01:00:00' $srcdir/diag.sh startup
+ # what we send actually is irrelevant, as we just use system properties.
+ # but we need to send one message in order to gain output!
+ . $srcdir/diag.sh tcpflood -m1
+--
+2.8.1
+
--- /dev/null
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit autotools linux-info systemd
+
+DESCRIPTION="An enhanced multi-threaded syslogd with database support and more"
+HOMEPAGE="http://www.rsyslog.com/"
+
+BRANCH="8-stable"
+
+if [[ ${PV} == "9999" ]]; then
+ EGIT_REPO_URI="
+ git://github.com/rsyslog/${PN}.git
+ https://github.com/rsyslog/${PN}.git
+ "
+
+ DOC_REPO_URI="
+ git://github.com/rsyslog/${PN}-doc.git
+ https://github.com/rsyslog/${PN}-doc.git
+ "
+
+ inherit git-r3
+else
+ MY_PV=${PV%_rc*}
+ MY_FILENAME="${PN}-${PV}.tar.gz"
+ MY_FILENAME_DOCS="${PN}-docs-${PV}.tar.gz"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+
+ # Upstream URL schema:
+ # RC: http://www.rsyslog.com/files/download/rsyslog/rc/rsyslog-8.18.0.tar.gz
+ # http://www.rsyslog.com/files/download/rsyslog/rc2/rsyslog-8.18.0.tar.gz
+ # Release: http://www.rsyslog.com/files/download/rsyslog/rsyslog-8.18.0.tar.gz
+
+ MY_URL_PREFIX=
+ if [[ ${PV} = *_rc* ]]; then
+ _tmp_last_index=$(($(get_last_version_component_index ${PV})+1))
+ _tmp_suffix=$(get_version_component_range ${_tmp_last_index} ${PV})
+ if [[ ${_tmp_suffix} = *rc* ]]; then
+ MY_URL_PREFIX="${_tmp_suffix}/"
+ fi
+
+ # Cleaning up temporary variables
+ unset _tmp_last_index
+ unset _tmp_suffix
+ else
+ KEYWORDS="~arm ~amd64 ~x86"
+ fi
+
+ SRC_URI="
+ http://www.rsyslog.com/files/download/${PN}/${MY_URL_PREFIX}${PN}-${MY_PV}.tar.gz -> ${MY_FILENAME}
+ doc? ( http://www.rsyslog.com/files/download/${PN}/${MY_URL_PREFIX}${PN}-doc-${MY_PV}.tar.gz -> ${MY_FILENAME_DOCS} )
+ "
+fi
+
+LICENSE="GPL-3 LGPL-3 Apache-2.0"
+SLOT="0"
+IUSE="dbi debug doc elasticsearch +gcrypt grok jemalloc kafka kerberos libressl mongodb mysql normalize omhttpfs"
+IUSE+=" omudpspoof postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp ssl systemd test usertools zeromq"
+
+RDEPEND="
+ >=dev-libs/libfastjson-0.99.2:=
+ >=dev-libs/libestr-0.1.9
+ >=dev-libs/liblogging-1.0.1:=[stdlog]
+ >=sys-libs/zlib-1.2.5
+ dbi? ( >=dev-db/libdbi-0.8.3 )
+ elasticsearch? ( >=net-misc/curl-7.35.0 )
+ gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= )
+ grok? ( >=dev-libs/grok-0.9.2 )
+ jemalloc? ( >=dev-libs/jemalloc-3.3.1:= )
+ kafka? ( >=dev-libs/librdkafka-0.9.0.99:= )
+ kerberos? ( virtual/krb5 )
+ mongodb? ( >=dev-libs/libmongo-client-0.1.4 )
+ mysql? ( virtual/mysql )
+ normalize? (
+ >=dev-libs/libee-0.4.0
+ >=dev-libs/liblognorm-1.1.2:=
+ )
+ omhttpfs? ( >=net-misc/curl-7.35.0 )
+ omudpspoof? ( >=net-libs/libnet-1.1.6 )
+ postgres? ( >=dev-db/postgresql-8.4.20:= )
+ rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0 )
+ redis? ( >=dev-libs/hiredis-0.11.0 )
+ relp? ( >=dev-libs/librelp-1.2.5:= )
+ rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] )
+ rfc5424hmac? (
+ !libressl? ( >=dev-libs/openssl-0.9.8y:0= )
+ libressl? ( dev-libs/libressl:= )
+ )
+ snmp? ( >=net-analyzer/net-snmp-5.7.2 )
+ ssl? ( >=net-libs/gnutls-2.12.23:0= )
+ systemd? ( >=sys-apps/systemd-208 )
+ zeromq? (
+ >=net-libs/zeromq-4.1.1:=
+ >=net-libs/czmq-3.0.0
+ )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ test? ( sys-libs/libfaketime )"
+
+if [[ ${PV} == "9999" ]]; then
+ DEPEND+=" doc? ( >=dev-python/sphinx-1.1.3-r7 )"
+ DEPEND+=" >=sys-devel/flex-2.5.39-r1"
+ DEPEND+=" >=sys-devel/bison-2.4.3"
+ DEPEND+=" >=dev-python/docutils-0.12"
+fi
+
+CONFIG_CHECK="~INOTIFY_USER"
+WARNING_INOTIFY_USER="CONFIG_INOTIFY_USER isn't set. Imfile module on this system will only support polling mode!"
+
+src_unpack() {
+ if [[ ${PV} == "9999" ]]; then
+ git-r3_fetch
+ git-r3_checkout
+ else
+ unpack ${P}.tar.gz
+ fi
+
+ if use doc; then
+ if [[ ${PV} == "9999" ]]; then
+ local _EGIT_BRANCH=
+ if [ -n "${EGIT_BRANCH}" ]; then
+ # Cannot use rsyslog commits/branches for documentation repository
+ _EGIT_BRANCH=${EGIT_BRANCH}
+ unset EGIT_BRANCH
+ fi
+
+ git-r3_fetch "${DOC_REPO_URI}"
+ git-r3_checkout "${DOC_REPO_URI}" "${S}"/docs
+
+ if [ -n "${_EGIT_BRANCH}" ]; then
+ # Restore previous EGIT_BRANCH information
+ EGIT_BRANCH=${_EGIT_BRANCH}
+ fi
+ else
+ local doc_tarball="${PN}-doc-${PV}.tar.gz"
+
+ cd "${S}" || die "Cannot change dir into '${S}'"
+ mkdir docs || die "Failed to create docs directory"
+ cd docs || die "Failed to change dir into '${S}/docs'"
+ unpack ${doc_tarball}
+ fi
+ fi
+}
+
+src_prepare() {
+ if [[ ! ${PV} == "9999" ]]; then
+ eapply -p1 "${FILESDIR}"/8-stable/50-rsyslog-8.18.0-issue964.patch
+ eapply -p1 "${FILESDIR}"/8-stable/50-rsyslog-8.18.0-issue963.patch
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ # Maintainer notes:
+ # * Guardtime support is missing because libgt isn't yet available
+ # in portage.
+ # * Hadoop's HDFS file system output module is currently not
+ # supported in Gentoo because nobody is able to test it
+ # (JAVA dependency).
+ # * dev-libs/hiredis doesn't provide pkg-config (see #504614,
+ # upstream PR 129 and 136) so we need to export HIREDIS_*
+ # variables because rsyslog's build system depends on pkg-config.
+
+ if use redis; then
+ export HIREDIS_LIBS="-L${EPREFIX}/usr/$(get_libdir) -lhiredis"
+ export HIREDIS_CFLAGS="-I${EPREFIX}/usr/include"
+ fi
+
+ local myeconfargs=(
+ --disable-debug-symbols
+ --disable-generate-man-pages
+ --without-valgrind-testbench
+ $(use_enable test testbench)
+ # Input Plugins without depedencies
+ --enable-imdiag
+ --enable-imfile
+ --enable-impstats
+ --enable-imptcp
+ # Message Modificiation Plugins without depedencies
+ --enable-mmanon
+ --enable-mmaudit
+ --enable-mmcount
+ --enable-mmfields
+ --enable-mmjsonparse
+ --enable-mmpstrucdata
+ --enable-mmsequence
+ --enable-mmutf8fix
+ # Output Modification Plugins without dependencies
+ --enable-mail
+ --enable-omprog
+ --enable-omruleset
+ --enable-omstdout
+ --enable-omuxsock
+ # Misc
+ --enable-pmaixforwardedfrom
+ --enable-pmciscoios
+ --enable-pmcisconames
+ --enable-pmlastmsg
+ --enable-pmsnare
+ # DB
+ $(use_enable dbi libdbi)
+ $(use_enable mongodb ommongodb)
+ $(use_enable mysql)
+ $(use_enable postgres pgsql)
+ $(use_enable redis omhiredis)
+ # Debug
+ $(use_enable debug)
+ $(use_enable debug diagtools)
+ $(use_enable debug memcheck)
+ $(use_enable debug rtinst)
+ $(use_enable debug valgrind)
+ # Misc
+ $(use_enable elasticsearch)
+ $(use_enable gcrypt libgcrypt)
+ $(use_enable jemalloc)
+ $(use_enable kafka omkafka)
+ $(use_enable kerberos gssapi-krb5)
+ $(use_enable normalize mmnormalize)
+ $(use_enable grok mmgrok)
+ $(use_enable omhttpfs)
+ $(use_enable omudpspoof)
+ $(use_enable rabbitmq omrabbitmq)
+ $(use_enable relp)
+ $(use_enable rfc3195)
+ $(use_enable rfc5424hmac mmrfc5424addhmac)
+ $(use_enable snmp)
+ $(use_enable snmp mmsnmptrapd)
+ $(use_enable ssl gnutls)
+ $(use_enable systemd imjournal)
+ $(use_enable systemd omjournal)
+ $(use_enable usertools)
+ $(use_enable zeromq imczmq)
+ $(use_enable zeromq imzmq3)
+ $(use_enable zeromq omczmq)
+ $(use_enable zeromq omzmq3)
+ --with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ default
+
+ if use doc && [[ "${PV}" == "9999" ]]; then
+ einfo "Building documentation ..."
+ local doc_dir="${S}/docs"
+ cd "${doc_dir}" || die "Cannot chdir into \"${doc_dir}\"!"
+ sphinx-build -b html source build || die "Building documentation failed!"
+ fi
+}
+
+src_test() {
+ local _has_increased_ulimit=
+
+ # Sometimes tests aren't executable (i.e. when added via patch)
+ einfo "Adjusting permissions of test scripts ..."
+ find "${S}"/tests -type f -name '*.sh' \! -perm -111 -exec chmod a+x '{}' \; || \
+ die "Failed to adjust test scripts permission"
+
+ if ulimit -n 3072; then
+ _has_increased_ulimit="true"
+ fi
+
+ if ! emake --jobs 1 check; then
+ eerror "Test suite failed! :("
+
+ if [ -z "${_has_increased_ulimit}" ]; then
+ eerror "Probably because open file limit couldn't be set to 3072."
+ fi
+
+ if has userpriv ${FEATURES}; then
+ eerror "Please try to reproduce the test suite failure with FEATURES=-userpriv " \
+ "before you submit a bug report."
+ fi
+
+ fi
+}
+
+src_install() {
+ local DOCS=(
+ AUTHORS
+ ChangeLog
+ "${FILESDIR}"/${BRANCH}/README.gentoo
+ )
+
+ use doc && local HTML_DOCS=( "${S}/docs/build/" )
+
+ default
+
+ newconfd "${FILESDIR}/${BRANCH}/${PN}.confd-r1" ${PN}
+ newinitd "${FILESDIR}/${BRANCH}/${PN}.initd-r1" ${PN}
+
+ keepdir /var/empty/dev
+ keepdir /var/spool/${PN}
+ keepdir /etc/ssl/${PN}
+ keepdir /etc/${PN}.d
+
+ insinto /etc
+ newins "${FILESDIR}/${BRANCH}/${PN}.conf" ${PN}.conf
+
+ insinto /etc/rsyslog.d/
+ doins "${FILESDIR}/${BRANCH}/50-default.conf"
+
+ insinto /etc/logrotate.d/
+ newins "${FILESDIR}/${BRANCH}/${PN}.logrotate" ${PN}
+
+ if use mysql; then
+ insinto /usr/share/doc/${PF}/scripts/mysql
+ doins plugins/ommysql/createDB.sql
+ fi
+
+ if use postgres; then
+ insinto /usr/share/doc/${PF}/scripts/pgsql
+ doins plugins/ompgsql/createDB.sql
+ fi
+
+ find "${ED}"usr/lib* -name '*.la' -delete || die
+}
+
+pkg_postinst() {
+ local advertise_readme=0
+
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ # This is a new installation
+
+ advertise_readme=1
+
+ if use mysql || use postgres; then
+ echo
+ elog "Sample SQL scripts for MySQL & PostgreSQL have been installed to:"
+ elog " /usr/share/doc/${PF}/scripts"
+ fi
+
+ if use ssl; then
+ echo
+ elog "To create a default CA and certificates for your server and clients, run:"
+ elog " emerge --config =${PF}"
+ elog "on your logging server. You can run it several times,"
+ elog "once for each logging client. The client certificates will be signed"
+ elog "using the CA certificate generated during the first run."
+ fi
+ fi
+
+ if [[ -z "${REPLACING_VERSIONS}" ]] || [[ ${REPLACING_VERSIONS} < 8.0 ]]; then
+ # Show this message until rsyslog-8.x
+ echo
+ elog "Since ${PN}-7.6.3 we no longer use the catch-all log target"
+ elog "\"/var/log/syslog\" due to its redundancy to the other log targets."
+
+ advertise_readme=1
+ fi
+
+ if [[ ${advertise_readme} -gt 0 ]]; then
+ # We need to show the README file location
+
+ echo ""
+ elog "Please read"
+ elog ""
+ elog " ${EPREFIX}/usr/share/doc/${PF}/README.gentoo*"
+ elog ""
+ elog "for more details."
+ fi
+}
+
+pkg_config() {
+ if ! use ssl ; then
+ einfo "There is nothing to configure for rsyslog unless you"
+ einfo "used USE=ssl to build it."
+ return 0
+ fi
+
+ # Make sure the certificates directory exists
+ local CERTDIR="${EROOT}/etc/ssl/${PN}"
+ if [ ! -d "${CERTDIR}" ]; then
+ mkdir "${CERTDIR}" || die
+ fi
+ einfo "Your certificates will be stored in ${CERTDIR}"
+
+ # Create a default CA if needed
+ if [ ! -f "${CERTDIR}/${PN}_ca.cert.pem" ]; then
+ einfo "No CA key and certificate found in ${CERTDIR}, creating them for you..."
+ certtool --generate-privkey \
+ --outfile "${CERTDIR}/${PN}_ca.privkey.pem" &>/dev/null
+ chmod 400 "${CERTDIR}/${PN}_ca.privkey.pem"
+
+ cat > "${T}/${PF}.$$" <<- _EOF
+ cn = Portage automated CA
+ ca
+ cert_signing_key
+ expiration_days = 3650
+ _EOF
+
+ certtool --generate-self-signed \
+ --load-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
+ --outfile "${CERTDIR}/${PN}_ca.cert.pem" \
+ --template "${T}/${PF}.$$" &>/dev/null
+ chmod 400 "${CERTDIR}/${PN}_ca.privkey.pem"
+
+ # Create the server certificate
+ echo
+ einfon "Please type the Common Name of the SERVER you wish to create a certificate for: "
+ read -r CN
+
+ einfo "Creating private key and certificate for server ${CN}..."
+ certtool --generate-privkey \
+ --outfile "${CERTDIR}/${PN}_${CN}.key.pem" &>/dev/null
+ chmod 400 "${CERTDIR}/${PN}_${CN}.key.pem"
+
+ cat > "${T}/${PF}.$$" <<- _EOF
+ cn = ${CN}
+ tls_www_server
+ dns_name = ${CN}
+ expiration_days = 3650
+ _EOF
+
+ certtool --generate-certificate \
+ --outfile "${CERTDIR}/${PN}_${CN}.cert.pem" \
+ --load-privkey "${CERTDIR}/${PN}_${CN}.key.pem" \
+ --load-ca-certificate "${CERTDIR}/${PN}_ca.cert.pem" \
+ --load-ca-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
+ --template "${T}/${PF}.$$" &>/dev/null
+ chmod 400 "${CERTDIR}/${PN}_${CN}.cert.pem"
+
+ else
+ einfo "Found existing ${CERTDIR}/${PN}_ca.cert.pem, skipping CA and SERVER creation."
+ fi
+
+ # Create a client certificate
+ echo
+ einfon "Please type the Common Name of the CLIENT you wish to create a certificate for: "
+ read -r CN
+
+ einfo "Creating private key and certificate for client ${CN}..."
+ certtool --generate-privkey \
+ --outfile "${CERTDIR}/${PN}_${CN}.key.pem" &>/dev/null
+ chmod 400 "${CERTDIR}/${PN}_${CN}.key.pem"
+
+ cat > "${T}/${PF}.$$" <<- _EOF
+ cn = ${CN}
+ tls_www_client
+ dns_name = ${CN}
+ expiration_days = 3650
+ _EOF
+
+ certtool --generate-certificate \
+ --outfile "${CERTDIR}/${PN}_${CN}.cert.pem" \
+ --load-privkey "${CERTDIR}/${PN}_${CN}.key.pem" \
+ --load-ca-certificate "${CERTDIR}/${PN}_ca.cert.pem" \
+ --load-ca-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
+ --template "${T}/${PF}.$$" &>/dev/null
+ chmod 400 "${CERTDIR}/${PN}_${CN}.cert.pem"
+
+ rm -f "${T}/${PF}.$$"
+
+ echo
+ einfo "Here is the documentation on how to encrypt your log traffic:"
+ einfo " http://www.rsyslog.com/doc/rsyslog_tls.html"
+}