1*4882a593SmuzhiyunSUMMARY = "Rsyslog is an enhanced multi-threaded syslogd" 2*4882a593SmuzhiyunDESCRIPTION = "\ 3*4882a593SmuzhiyunRsyslog is an enhanced syslogd supporting, among others, MySQL,\ 4*4882a593Smuzhiyun PostgreSQL, failover log destinations, syslog/tcp, fine grain\ 5*4882a593Smuzhiyun output format control, high precision timestamps, queued operations\ 6*4882a593Smuzhiyun and the ability to filter on any message part. It is quite\ 7*4882a593Smuzhiyun compatible to stock sysklogd and can be used as a drop-in replacement.\ 8*4882a593Smuzhiyun Its advanced features make it suitable for enterprise-class,\ 9*4882a593Smuzhiyun encryption protected syslog relay chains while at the same time being\ 10*4882a593Smuzhiyun very easy to setup for the novice user." 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunDEPENDS = "zlib libestr libfastjson bison-native flex-native liblogging" 13*4882a593SmuzhiyunHOMEPAGE = "http://www.rsyslog.com/" 14*4882a593SmuzhiyunLICENSE = "GPL-3.0-only & LGPL-3.0-only & Apache-2.0" 15*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://COPYING;md5=51d9635e646fb75e1b74c074f788e973 \ 16*4882a593Smuzhiyun file://COPYING.LESSER;md5=cb7903f1e5c39ae838209e130dca270a \ 17*4882a593Smuzhiyun file://COPYING.ASL20;md5=052f8a09206615ab07326ff8ce2d9d32\ 18*4882a593Smuzhiyun" 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunSRC_URI = "http://www.rsyslog.com/download/files/download/rsyslog/${BPN}-${PV}.tar.gz \ 21*4882a593Smuzhiyun file://initscript \ 22*4882a593Smuzhiyun file://rsyslog.conf \ 23*4882a593Smuzhiyun file://rsyslog.logrotate \ 24*4882a593Smuzhiyun file://rsyslog.service \ 25*4882a593Smuzhiyun file://use-pkgconfig-to-check-libgcrypt.patch \ 26*4882a593Smuzhiyun file://run-ptest \ 27*4882a593Smuzhiyun file://0001-tests-disable-the-check-for-inotify.patch \ 28*4882a593Smuzhiyun" 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunSRC_URI:append:libc-musl = " \ 31*4882a593Smuzhiyun file://0001-Include-sys-time-h.patch \ 32*4882a593Smuzhiyun" 33*4882a593Smuzhiyun 34*4882a593SmuzhiyunSRC_URI[sha256sum] = "a1377218b26c0767a7a3f67d166d5338af7c24b455d35ec99974e18e6845ba27" 35*4882a593Smuzhiyun 36*4882a593SmuzhiyunUPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases" 37*4882a593SmuzhiyunUPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)" 38*4882a593Smuzhiyun 39*4882a593Smuzhiyuninherit autotools pkgconfig systemd update-rc.d ptest 40*4882a593Smuzhiyun 41*4882a593SmuzhiyunEXTRA_OECONF += "--disable-generate-man-pages ap_cv_atomic_builtins=yes" 42*4882a593SmuzhiyunEXTRA_OECONF += "--enable-imfile-tests" 43*4882a593SmuzhiyunEXTRA_OECONF:remove:mipsarch = "ap_cv_atomic_builtins=yes" 44*4882a593SmuzhiyunEXTRA_OECONF:remove:powerpc = "ap_cv_atomic_builtins=yes" 45*4882a593SmuzhiyunEXTRA_OECONF:remove:riscv32 = "ap_cv_atomic_builtins=yes" 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun# first line is default yes in configure 48*4882a593SmuzhiyunPACKAGECONFIG ??= " \ 49*4882a593Smuzhiyun rsyslogd rsyslogrt klog inet regexp uuid libgcrypt \ 50*4882a593Smuzhiyun fmhttp imdiag gnutls imfile \ 51*4882a593Smuzhiyun ${@bb.utils.filter('DISTRO_FEATURES', 'snmp systemd', d)} \ 52*4882a593Smuzhiyun ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench relp ${VALGRIND}', '', d)} \ 53*4882a593Smuzhiyun" 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun# default yes in configure 56*4882a593SmuzhiyunPACKAGECONFIG[relp] = "--enable-relp,--disable-relp,librelp," 57*4882a593SmuzhiyunPACKAGECONFIG[rsyslogd] = "--enable-rsyslogd,--disable-rsyslogd,," 58*4882a593SmuzhiyunPACKAGECONFIG[rsyslogrt] = "--enable-rsyslogrt,--disable-rsyslogrt,," 59*4882a593SmuzhiyunPACKAGECONFIG[fmhttp] = "--enable-fmhttp,--disable-fmhttp,curl," 60*4882a593SmuzhiyunPACKAGECONFIG[inet] = "--enable-inet,--disable-inet,," 61*4882a593SmuzhiyunPACKAGECONFIG[klog] = "--enable-klog,--disable-klog,," 62*4882a593SmuzhiyunPACKAGECONFIG[regexp] = "--enable-regexp,--disable-regexp,," 63*4882a593SmuzhiyunPACKAGECONFIG[uuid] = "--enable-uuid,--disable-uuid,util-linux," 64*4882a593SmuzhiyunPACKAGECONFIG[libgcrypt] = "--enable-libgcrypt,--disable-libgcrypt,libgcrypt," 65*4882a593SmuzhiyunPACKAGECONFIG[testbench] = "--enable-testbench --enable-omstdout,--disable-testbench --disable-omstdout,," 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun# default no in configure 68*4882a593SmuzhiyunPACKAGECONFIG[debug] = "--enable-debug,--disable-debug,," 69*4882a593SmuzhiyunPACKAGECONFIG[imdiag] = "--enable-imdiag,--disable-imdiag,," 70*4882a593SmuzhiyunPACKAGECONFIG[imfile] = "--enable-imfile,--disable-imfile,," 71*4882a593SmuzhiyunPACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp," 72*4882a593SmuzhiyunPACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls," 73*4882a593SmuzhiyunPACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd," 74*4882a593SmuzhiyunPACKAGECONFIG[imjournal] = "--enable-imjournal,--disable-imjournal," 75*4882a593SmuzhiyunPACKAGECONFIG[mmjsonparse] = "--enable-mmjsonparse,--disable-mmjsonparse," 76*4882a593SmuzhiyunPACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5," 77*4882a593SmuzhiyunPACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql," 78*4882a593SmuzhiyunPACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi," 79*4882a593SmuzhiyunPACKAGECONFIG[mail] = "--enable-mail,--disable-mail,," 80*4882a593SmuzhiyunPACKAGECONFIG[valgrind] = ",--without-valgrind-testbench,valgrind," 81*4882a593SmuzhiyunPACKAGECONFIG[imhttp] = "--enable-imhttp,--disable-imhttp,civetweb," 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun 84*4882a593SmuzhiyunTESTDIR = "tests" 85*4882a593Smuzhiyundo_compile_ptest() { 86*4882a593Smuzhiyun echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile 87*4882a593Smuzhiyun oe_runmake -C ${TESTDIR} buildtest-TESTS 88*4882a593Smuzhiyun} 89*4882a593Smuzhiyun 90*4882a593Smuzhiyundo_install_ptest() { 91*4882a593Smuzhiyun # install the tests 92*4882a593Smuzhiyun cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH} 93*4882a593Smuzhiyun cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH} 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun # give permissions to all users 96*4882a593Smuzhiyun # some tests need to write to this directory as user 'daemon' 97*4882a593Smuzhiyun chmod 777 -R ${D}${PTEST_PATH}/tests 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun # do NOT need to rebuild Makefile itself 100*4882a593Smuzhiyun sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile 101*4882a593Smuzhiyun # do NOT need to rebuild $(check_PROGRAMS) 102*4882a593Smuzhiyun sed -i 's/^check-TESTS:.*$/check-TESTS:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun # fix the srcdir, top_srcdir 105*4882a593Smuzhiyun sed -i 's,^\(srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile 106*4882a593Smuzhiyun sed -i 's,^\(top_srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile 107*4882a593Smuzhiyun # fix the abs_top_builddir 108*4882a593Smuzhiyun sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun # install test-driver 111*4882a593Smuzhiyun install -m 644 ${S}/test-driver ${D}${PTEST_PATH} 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun # install necessary links 114*4882a593Smuzhiyun install -d ${D}${PTEST_PATH}/tools 115*4882a593Smuzhiyun ln -sf ${sbindir}/rsyslogd ${D}${PTEST_PATH}/tools/rsyslogd 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun install -d ${D}${PTEST_PATH}/runtime 118*4882a593Smuzhiyun install -d ${D}${PTEST_PATH}/runtime/.libs 119*4882a593Smuzhiyun ( 120*4882a593Smuzhiyun cd ${D}/${libdir}/rsyslog 121*4882a593Smuzhiyun allso="*.so" 122*4882a593Smuzhiyun for i in $allso; do 123*4882a593Smuzhiyun ln -sf ${libdir}/rsyslog/$i ${D}${PTEST_PATH}/runtime/.libs/$i 124*4882a593Smuzhiyun done 125*4882a593Smuzhiyun ) 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun # fix the module load path with runtime/.libs 128*4882a593Smuzhiyun find ${D}${PTEST_PATH}/${TESTDIR} -name "*.conf" -o -name "*.sh" -o -name "*.c" | xargs \ 129*4882a593Smuzhiyun sed -i -e 's:../plugins/.*/.libs/:../runtime/.libs/:g' 130*4882a593Smuzhiyun # fix the python3 path for tests/set-envar 131*4882a593Smuzhiyun sed -i -e s:${HOSTTOOLS_DIR}:${bindir}:g ${D}${PTEST_PATH}/tests/set-envvars 132*4882a593Smuzhiyun} 133*4882a593Smuzhiyun 134*4882a593Smuzhiyundo_install:append() { 135*4882a593Smuzhiyun install -d "${D}${sysconfdir}/init.d" 136*4882a593Smuzhiyun install -d "${D}${sysconfdir}/logrotate.d" 137*4882a593Smuzhiyun install -m 755 ${WORKDIR}/initscript ${D}${sysconfdir}/init.d/syslog 138*4882a593Smuzhiyun install -m 644 ${WORKDIR}/rsyslog.conf ${D}${sysconfdir}/rsyslog.conf 139*4882a593Smuzhiyun install -m 644 ${WORKDIR}/rsyslog.logrotate ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog 140*4882a593Smuzhiyun sed -i -e "s#@BINDIR@#${bindir}#g" ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun if ${@bb.utils.contains('PACKAGECONFIG', 'imjournal', 'true', 'false', d)}; then 143*4882a593Smuzhiyun install -d 0755 ${D}${sysconfdir}/rsyslog.d 144*4882a593Smuzhiyun echo '$ModLoad imjournal' >> ${D}${sysconfdir}/rsyslog.d/imjournal.conf 145*4882a593Smuzhiyun fi 146*4882a593Smuzhiyun if ${@bb.utils.contains('PACKAGECONFIG', 'mmjsonparse', 'true', 'false', d)}; then 147*4882a593Smuzhiyun install -d 0755 ${D}${sysconfdir}/rsyslog.d 148*4882a593Smuzhiyun echo '$ModLoad mmjsonparse' >> ${D}${sysconfdir}/rsyslog.d/mmjsonparse.conf 149*4882a593Smuzhiyun fi 150*4882a593Smuzhiyun if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then 151*4882a593Smuzhiyun install -d ${D}${systemd_system_unitdir} 152*4882a593Smuzhiyun install -m 644 ${WORKDIR}/rsyslog.service ${D}${systemd_system_unitdir} 153*4882a593Smuzhiyun sed -i -e "s,@sbindir@,${sbindir},g" ${D}${systemd_system_unitdir}/rsyslog.service 154*4882a593Smuzhiyun fi 155*4882a593Smuzhiyun} 156*4882a593Smuzhiyun 157*4882a593SmuzhiyunFILES:${PN} += "${bindir}" 158*4882a593Smuzhiyun 159*4882a593SmuzhiyunINITSCRIPT_NAME = "syslog" 160*4882a593SmuzhiyunINITSCRIPT_PARAMS = "defaults" 161*4882a593Smuzhiyun 162*4882a593SmuzhiyunCONFFILES:${PN} = "${sysconfdir}/rsyslog.conf" 163*4882a593Smuzhiyun 164*4882a593SmuzhiyunRCONFLICTS:${PN} = "busybox-syslog sysklogd syslog-ng" 165*4882a593Smuzhiyun 166*4882a593SmuzhiyunRPROVIDES:${PN} += "${PN}-systemd" 167*4882a593SmuzhiyunRREPLACES:${PN} += "${PN}-systemd" 168*4882a593SmuzhiyunRCONFLICTS:${PN} += "${PN}-systemd" 169*4882a593SmuzhiyunSYSTEMD_SERVICE:${PN} = "${BPN}.service" 170*4882a593Smuzhiyun 171*4882a593SmuzhiyunRDEPENDS:${PN} += "logrotate" 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun# for rsyslog-ptest 174*4882a593SmuzhiyunVALGRIND = "valgrind" 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun# valgrind supports armv7 and above 177*4882a593SmuzhiyunVALGRIND:armv4 = '' 178*4882a593SmuzhiyunVALGRIND:armv5 = '' 179*4882a593SmuzhiyunVALGRIND:armv6 = '' 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun# X32 isn't supported by valgrind at this time 182*4882a593SmuzhiyunVALGRIND:linux-gnux32 = '' 183*4882a593SmuzhiyunVALGRIND:linux-muslx32 = '' 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun# Disable for some MIPS variants 186*4882a593SmuzhiyunVALGRIND:mipsarchr6 = '' 187*4882a593SmuzhiyunVALGRIND:linux-gnun32 = '' 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun# Disable for powerpc64 with musl 190*4882a593SmuzhiyunVALGRIND:libc-musl:powerpc64 = '' 191*4882a593SmuzhiyunVALGRIND:libc-musl:powerpc64le = '' 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun# RISC-V support for valgrind is not there yet 194*4882a593SmuzhiyunVALGRIND:riscv64 = "" 195*4882a593SmuzhiyunVALGRIND:riscv32 = "" 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun# util-linux: logger needs the -d option 198*4882a593SmuzhiyunRDEPENDS:${PN}-ptest += "\ 199*4882a593Smuzhiyun make diffutils gzip bash gawk coreutils procps \ 200*4882a593Smuzhiyun libgcc python3-core python3-io python3-json \ 201*4882a593Smuzhiyun curl util-linux shadow \ 202*4882a593Smuzhiyun " 203*4882a593Smuzhiyun 204*4882a593SmuzhiyunRRECOMMENDS:${PN}-ptest += "${TCLIBC}-dbg ${VALGRIND}" 205