xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-extended/procps/procps_3.3.17.bb (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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"