1*4882a593SmuzhiyunSUMMARY = "System and process monitoring utilities" 2*4882a593SmuzhiyunDESCRIPTION = "Procps contains a set of system utilities that provide system information about processes using \ 3*4882a593Smuzhiyunthe /proc filesystem. The package includes the programs ps, top, vmstat, w, kill, and skill." 4*4882a593SmuzhiyunHOMEPAGE = "https://gitlab.com/procps-ng/procps" 5*4882a593SmuzhiyunSECTION = "base" 6*4882a593SmuzhiyunLICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later" 7*4882a593SmuzhiyunLIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 8*4882a593Smuzhiyun file://COPYING.LIB;md5=4cf66a4984120007c9881cc871cf49db \ 9*4882a593Smuzhiyun " 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunDEPENDS = "ncurses" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyuninherit autotools gettext pkgconfig update-alternatives 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunSRC_URI = "git://gitlab.com/procps-ng/procps.git;protocol=https;branch=master \ 16*4882a593Smuzhiyun file://sysctl.conf \ 17*4882a593Smuzhiyun file://0001-w.c-correct-musl-builds.patch \ 18*4882a593Smuzhiyun file://0002-proc-escape.c-add-missing-include.patch \ 19*4882a593Smuzhiyun " 20*4882a593SmuzhiyunSRCREV = "19a508ea121c0c4ac6d0224575a036de745eaaf8" 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunS = "${WORKDIR}/git" 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun# Upstream has a custom autogen.sh which invokes po/update-potfiles as they 25*4882a593Smuzhiyun# don't ship a po/POTFILES.in (which is silly). Without that file gettext 26*4882a593Smuzhiyun# doesn't believe po/ is a gettext directory and won't generate po/Makefile. 27*4882a593Smuzhiyundo_configure:prepend() { 28*4882a593Smuzhiyun ( cd ${S} && po/update-potfiles ) 29*4882a593Smuzhiyun} 30*4882a593Smuzhiyun 31*4882a593SmuzhiyunEXTRA_OECONF = "--enable-skill --disable-modern-top" 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunPACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" 34*4882a593SmuzhiyunPACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd" 35*4882a593Smuzhiyun 36*4882a593Smuzhiyundo_install:append () { 37*4882a593Smuzhiyun install -d ${D}${base_bindir} 38*4882a593Smuzhiyun [ "${bindir}" != "${base_bindir}" ] && for i in ${base_bindir_progs}; do mv ${D}${bindir}/$i ${D}${base_bindir}/$i; done 39*4882a593Smuzhiyun install -d ${D}${base_sbindir} 40*4882a593Smuzhiyun [ "${sbindir}" != "${base_sbindir}" ] && for i in ${base_sbindir_progs}; do mv ${D}${sbindir}/$i ${D}${base_sbindir}/$i; done 41*4882a593Smuzhiyun if [ "${base_sbindir}" != "${sbindir}" ]; then 42*4882a593Smuzhiyun rmdir ${D}${sbindir} 43*4882a593Smuzhiyun fi 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun install -d ${D}${sysconfdir} 46*4882a593Smuzhiyun install -m 0644 ${WORKDIR}/sysctl.conf ${D}${sysconfdir}/sysctl.conf 47*4882a593Smuzhiyun if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then 48*4882a593Smuzhiyun install -d ${D}${sysconfdir}/sysctl.d 49*4882a593Smuzhiyun ln -sf ../sysctl.conf ${D}${sysconfdir}/sysctl.d/99-sysctl.conf 50*4882a593Smuzhiyun fi 51*4882a593Smuzhiyun} 52*4882a593Smuzhiyun 53*4882a593SmuzhiyunCONFFILES:${PN} = "${sysconfdir}/sysctl.conf" 54*4882a593Smuzhiyun 55*4882a593Smuzhiyunbindir_progs = "free pkill pmap pgrep pwdx skill snice top uptime w" 56*4882a593Smuzhiyunbase_bindir_progs += "kill pidof ps watch" 57*4882a593Smuzhiyunbase_sbindir_progs += "sysctl" 58*4882a593Smuzhiyun 59*4882a593SmuzhiyunALTERNATIVE_PRIORITY = "200" 60*4882a593SmuzhiyunALTERNATIVE_PRIORITY[pidof] = "150" 61*4882a593Smuzhiyun 62*4882a593SmuzhiyunALTERNATIVE:${PN} = "${bindir_progs} ${base_bindir_progs} ${base_sbindir_progs}" 63*4882a593Smuzhiyun 64*4882a593SmuzhiyunALTERNATIVE:${PN}-doc = "kill.1 uptime.1" 65*4882a593SmuzhiyunALTERNATIVE_LINK_NAME[kill.1] = "${mandir}/man1/kill.1" 66*4882a593SmuzhiyunALTERNATIVE_LINK_NAME[uptime.1] = "${mandir}/man1/uptime.1" 67*4882a593Smuzhiyun 68*4882a593Smuzhiyunpython __anonymous() { 69*4882a593Smuzhiyun for prog in d.getVar('base_bindir_progs').split(): 70*4882a593Smuzhiyun d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog)) 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun for prog in d.getVar('base_sbindir_progs').split(): 73*4882a593Smuzhiyun d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_sbindir'), prog)) 74*4882a593Smuzhiyun} 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun# 'ps' isn't suitable for use as a security tool so whitelist this CVE. 77*4882a593Smuzhiyun# https://bugzilla.redhat.com/show_bug.cgi?id=1575473#c3 78*4882a593SmuzhiyunCVE_CHECK_IGNORE += "CVE-2018-1121" 79*4882a593Smuzhiyun 80*4882a593SmuzhiyunPROCPS_PACKAGES = "${PN}-lib \ 81*4882a593Smuzhiyun ${PN}-ps \ 82*4882a593Smuzhiyun ${PN}-sysctl" 83*4882a593Smuzhiyun 84*4882a593SmuzhiyunPACKAGE_BEFORE_PN = "${PROCPS_PACKAGES}" 85*4882a593SmuzhiyunRDEPENDS:${PN} += "${PROCPS_PACKAGES}" 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunRDEPENDS:${PN}-ps += "${PN}-lib" 88*4882a593SmuzhiyunRDEPENDS:${PN}-sysctl += "${PN}-lib" 89*4882a593Smuzhiyun 90*4882a593SmuzhiyunFILES:${PN}-lib = "${libdir}" 91*4882a593SmuzhiyunFILES:${PN}-ps = "${base_bindir}/ps.${BPN}" 92*4882a593SmuzhiyunFILES:${PN}-sysctl = "${base_sbindir}/sysctl.${BPN} ${sysconfdir}/sysctl.conf ${sysconfdir}/sysctl.d" 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunALTERNATIVE:${PN}:remove = "ps" 95*4882a593SmuzhiyunALTERNATIVE:${PN}:remove = "sysctl" 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunALTERNATIVE:${PN}-ps = "ps" 98*4882a593SmuzhiyunALTERNATIVE_TARGET[ps] = "${base_bindir}/ps" 99*4882a593SmuzhiyunALTERNATIVE_LINK_NAME[ps] = "${base_bindir}/ps" 100*4882a593Smuzhiyun 101*4882a593SmuzhiyunALTERNATIVE:${PN}-sysctl = "sysctl" 102*4882a593SmuzhiyunALTERNATIVE_TARGET[sysctl] = "${base_sbindir}/sysctl" 103*4882a593SmuzhiyunALTERNATIVE_LINK_NAME[sysctl] = "${base_sbindir}/sysctl"