mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH] procps: switch from procps to procps-ng
Date: Mon, 6 Jul 2015 17:04:06 +0200	[thread overview]
Message-ID: <20150706150406.GA32551@pengutronix.de> (raw)
In-Reply-To: <1435936314-2188-1-git-send-email-clemens.gruber@pqgruber.com>

On Fri, Jul 03, 2015 at 05:11:54PM +0200, Clemens Gruber wrote:
> The procps package is unmaintained, therefore switch to procps-ng, which
> is used by many major distributions.
> 
> Cc: Michael Olbrich <m.olbrich@pengutronix.de>
> Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com>
> ---
>  rules/procps.in   | 151 ++++++++++++++++++++++++++++++++++++++++++++----------
>  rules/procps.make | 108 +++++++++++++++++++++++++-------------
>  2 files changed, 194 insertions(+), 65 deletions(-)
> 
> diff --git a/rules/procps.in b/rules/procps.in
> index baf6514..65570d8 100644
> --- a/rules/procps.in
> +++ b/rules/procps.in
> @@ -4,31 +4,98 @@ menuconfig PROCPS
>  	tristate
>  	prompt "procps                        "
>  	select GCCLIBS_GCC_S
> -	select NCURSES		if PROCPS_TOP
> -	select NCURSES		if PROCPS_SLABTOP
> +	select NCURSES if PROCPS_USES_NCURSES
> +	select PROCPS_USES_NCURSES if PROCPS_SLABTOP || PROCPS_TOP || PROCPS_WATCH

add "select PROCPS_USES_NCURSES" to each sub option. The selects here are
only to make inter-package dependencies work.

>  	help
> -	  The procps package contains a set of system utilities that provide
> -	   system information.
> +	  Contains a set of system utilities that provide information out of the
> +	  pseudo-filesystem most commonly located at /proc. The programs generally
> +	  concentrate on the structures that describe the running processes.
> +	  Note: procps-ng is used instead of the older and unmaintained procps.
>  
>  if PROCPS
>  
> -config PROCPS_TOP
> +config PROCPS_USES_NCURSES
>  	bool
> -	prompt "top"
> -	depends on !BUSYBOX_TOP || ALLYES
> +
> +config PROCPS_FREE
> +	bool
> +	prompt "free"
> +	depends on !BUSYBOX_FREE || ALLYES
>  	help
> -	  The  top  program provides a dynamic real-time view of a running
> -	  system.
> -	  Note: This command enlarges your system by the ncurses library.
> +	  The free program reports the amount of free and used memory.
>  
> -comment "busybox' top is selected!"
> -	depends on BUSYBOX_TOP
> +comment "busybox' free is selected!"
> +	depends on BUSYBOX_FREE
> +
> +config PROCPS_PGREP
> +	bool
> +	prompt "pgrep"
> +	depends on !BUSYBOX_PGREP || ALLYES
> +	help
> +	  The pgrep program can look up processes based on name and other
> +	  attributes.
> +
> +comment "busybox' pgrep is selected!"
> +	depends on BUSYBOX_PGREP
> +
> +config PROCPS_PIDOF
> +	bool
> +	prompt "pidof"
> +	depends on !BUSYBOX_PIDOF || ALLYES
> +	help
> +	  The pidof program can list the pids of running processes.
> +
> +comment "busybox' pidof is selected!"
> +	depends on BUSYBOX_PIDOF
> +
> +config PROCPS_PKILL
> +	bool
> +	prompt "pkill"
> +	depends on !BUSYBOX_PKILL || ALLYES
> +	help
> +	  The pkill program can kill processes based on name and other
> +	  attributes.
> +
> +comment "busybox' pkill is selected!"
> +	depends on BUSYBOX_PKILL
> +
> +config PROCPS_PMAP
> +	bool
> +	prompt "pmap"
> +	depends on !BUSYBOX_PMAP || ALLYES
> +	help
> +	  The pmap program reports the memory map of a process.
> +
> +comment "busybox' pmap is selected!"
> +	depends on BUSYBOX_PMAP
> +
> +config PROCPS_PS
> +	bool
> +	prompt "ps"
> +	depends on !BUSYBOX_PS || ALLYES
> +	help
> +	  The ps program can analyse the states of all processes running
> +	  on the system. It stands for process status.
> +
> +comment "busybox' ps is selected!"
> +	depends on BUSYBOX_PS
> +
> +config PROCPS_PWDX
> +	bool
> +	prompt "pwdx"
> +	depends on !BUSYBOX_PWDX || ALLYES
> +	help
> +	  The pwdx program reports the current directory of a process.
> +
> +comment "busybox' pwdx is selected!"
> +	depends on BUSYBOX_PWDX
>  
>  config PROCPS_SLABTOP
>  	bool
>  	prompt "slabtop"
>  	help
> -	  display kernel slab cache information in real time
> +	  The slabtop program displays kernel slab cache information in
> +	  real time.
>  	  Note: This command enlarges your system by the ncurses library.
>  
>  config PROCPS_SYSCTL
> @@ -36,22 +103,48 @@ config PROCPS_SYSCTL
>  	prompt "sysctl"
>  	depends on !BUSYBOX_BB_SYSCTL || ALLYES
>  	help
> -	  configure kernel parameters at runtime
> +	  The sysctl program configures kernel parameters at runtime.
>  
>  comment "busybox' sysctl is selected!"
>  	depends on BUSYBOX_BB_SYSCTL
>  
> -config PROCPS_PS
> +config PROCPS_TOP
>  	bool
> -	prompt "ps"
> -	depends on !BUSYBOX_PS || ALLYES
> +	prompt "top"
> +	depends on !BUSYBOX_TOP || ALLYES
>  	help
> -	  ps stands for process status. With this command you
> -	  analyse current states of all processes running on
> -	  the system
> +	  The  top  program provides a dynamic real-time view of a running
> +	  system.
> +	  Note: This command enlarges your system by the ncurses library.
>  
> -comment "busybox' ps is selected!"
> -	depends on BUSYBOX_PS
> +config PROCPS_TOP_MODERN
> +	bool
> +	prompt "use modern startup defaults for top"
> +	depends on PROCPS_TOP
> +	help
> +	  Use the modern color scheme defaults and the new CPU load representation
> +	  for multiple cores.
> +	  If this option is disabled, the original top layout is used.
> +
> +comment "busybox' top is selected!"
> +	depends on BUSYBOX_TOP
> +
> +config PROCPS_UPTIME
> +	bool
> +	prompt "uptime"
> +	depends on !BUSYBOX_UPTIME || ALLYES
> +	help
> +	  The uptime program displays the system uptime.
> +
> +comment "busybox' uptime is selected!"
> +	depends on BUSYBOX_UPTIME
> +
> +config PROCPS_VMSTAT
> +	bool
> +	prompt "vmstat"
> +	help
> +	  vmstat reports information about processes, memory,
> +	  paging, block IO, traps, disks and cpu activity.
>  
>  config PROCPS_W
>  	bool
> @@ -59,14 +152,16 @@ config PROCPS_W
>  	help
>  	  Show who is logged on and what they are doing.
>  
> -config PROCPS_PGREP
> +config PROCPS_WATCH
>  	bool
> -	prompt "pgrep"
> -	depends on !BUSYBOX_PGREP || ALLYES
> +	prompt "watch"
> +	depends on !BUSYBOX_WATCH || ALLYES
>  	help
> -	  look up processes based on name and other attributes
> +	  The watch program can execute a program periodically, displaying the
> +	  output fullscreen.
> +	  Note: This command enlarges your system by the ncurses library.
>  
> -comment "busybox' pgrep is selected!"
> -	depends on BUSYBOX_PGREP
> +comment "busybox' watch is selected!"
> +	depends on BUSYBOX_WATCH
>  
>  endif
> diff --git a/rules/procps.make b/rules/procps.make
> index 5d9c03a..724a2ad 100644
> --- a/rules/procps.make
> +++ b/rules/procps.make
> @@ -2,7 +2,8 @@
>  #
>  # Copyright (C) 2003 by Ixia Corporation, by Milan Bobde
>  #		2007 by Pengutronix e.K.
> -#               2009 by Marc Kleine-Budde <mkl@pengutronix.de>
> +#		2009 by Marc Kleine-Budde <mkl@pengutronix.de>
> +#		2015 by Clemens Gruber <clemens.gruber@pqgruber.com>
>  #
>  # See CREDITS for details about who has contributed to this project.
>  #
> @@ -18,43 +19,44 @@ PACKAGES-$(PTXCONF_PROCPS) += procps
>  #
>  # Paths and names
>  #
> -PROCPS_VERSION	:= 3.2.8
> -PROCPS_MD5	:= 9532714b6846013ca9898984ba4cd7e0
> -PROCPS		:= procps-$(PROCPS_VERSION)
> -PROCPS_SUFFIX	:= tar.gz
> -PROCPS_URL	:= http://procps.sourceforge.net/$(PROCPS).$(PROCPS_SUFFIX)
> +PROCPS_VERSION	:= 3.3.10
> +PROCPS_MD5	:= 1fb7f3f6bf92ce6c5c9ed9949ae858fe
> +PROCPS		:= procps-ng-$(PROCPS_VERSION)
> +PROCPS_SUFFIX	:= tar.xz
> +PROCPS_URL	:= http://downloads.sourceforge.net/project/procps-ng/Production/$(PROCPS).$(PROCPS_SUFFIX)

this url no longer works. This worked for me:
https://gitlab.com/procps-ng/procps/repository/archive.tar.gz?ref=v$(PROCPS_VERSION)

However, this is not a real tarball, so we need to run autogen.sh.
Add patches/procps-ng-3.3.10/autogen.sh with this content:
----------------------------
#!/bin/sh
exec ./autogen.sh
----------------------------

And remove the patches for the old version.

>  PROCPS_SOURCE	:= $(SRCDIR)/$(PROCPS).$(PROCPS_SUFFIX)
>  PROCPS_DIR	:= $(BUILDDIR)/$(PROCPS)
>  PROCPS_LICENSE	:= GPLv2 (tools), LGPLv2 (libs)
>  PROCPS_LICENSE_FILES := \
> -	file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3 \
> -	file://COPYING.LIB;md5=6e29c688d912da12b66b73e32b03d812
> +	file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
> +	file://COPYING.LIB;md5=4cf66a4984120007c9881cc871cf49db
>  
>  # ----------------------------------------------------------------------------
>  # Prepare
>  # ----------------------------------------------------------------------------
>  
> -# build only the required parts
> -PROCPS_ALL-$(PTXCONF_PROCPS_TOP)	+= $(PROCPS_PKGDIR)/usr/bin/top
> -PROCPS_ALL-$(PTXCONF_PROCPS_SLABTOP)	+= $(PROCPS_PKGDIR)/usr/bin/slabtop
> -PROCPS_ALL-$(PTXCONF_PROCPS_SYSCTL)	+= $(PROCPS_PKGDIR)/sbin/sysctl
> -PROCPS_ALL-$(PTXCONF_PROCPS_W)		+= $(PROCPS_PKGDIR)/usr/bin/w
> -PROCPS_ALL-$(PTXCONF_PROCPS_PGREP)	+= $(PROCPS_PKGDIR)/usr/bin/pgrep
> +PROCPS_CONF_ENV	:= \
> +	$(CROSS_ENV) \
> +	$(call ptx/ncurses, PTXCONF_PROCPS_USES_NCURSES)
>  
> -PROCPS_PATH	:= PATH=$(CROSS_PATH)
> -PROCPS_MAKEVARS	:= \
> -	CC="$(CROSS_CC)" \
> -	CFLAGS=-O2 \
> -	CPPFLAGS='$(CROSS_CPPFLAGS)' \
> -	LDFLAGS='$(CROSS_LDFLAGS)' \
> -	lib64=$(CROSS_LIB_DIR) \
> -	ldconfig=true \
> -	MANFILES="" \
> -	BINFILES="$(PROCPS_ALL-y)"
> +#
> +# autoconf
> +#
> +PROCPS_CONF_TOOL	:= autoconf
> +PROCPS_CONF_OPT	:= \
> +	$(CROSS_AUTOCONF_USR) \
> +	--enable-shared \
> +	--disable-static \
> +	--disable-nls \
> +	--disable-rpath \
> +	--disable-kill \
> +	--$(call ptx/endis, PROCPS_TOP_MODERN)-modern-top \
> +	--prefix=/ \
> +	--without-libiconv-prefix \
> +	--without-libintl-prefix \
> +	--$(call ptx/wwo, PTXCONF_PROCPS_USES_NCURSES)-ncurses \
> +	--$(call ptx/wwo, PTXCONF_INITMETHOD_SYSTEMD)-systemd

this requires systemd at build time. Add an option for systemd support and
select SYSTEMD if enabled. Maybe 'default INITMETHOD_SYSTEMD'?

Michael

>  
> -$(STATEDIR)/procps.prepare:
> -	@$(call targetinfo)
> -	@$(call touch)
>  
>  # ----------------------------------------------------------------------------
>  # Target-Install
> @@ -66,14 +68,38 @@ $(STATEDIR)/procps.targetinstall:
>  	@$(call install_init, procps)
>  	@$(call install_fixup, procps,PRIORITY,optional)
>  	@$(call install_fixup, procps,SECTION,base)
> -	@$(call install_fixup, procps,AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>")
> +	@$(call install_fixup, procps,AUTHOR,"Clemens Gruber <clemens.gruber@pqgruber.com>")
>  	@$(call install_fixup, procps,DESCRIPTION,missing)
>  
> -	@$(call install_lib, procps, 0, 0, 0644, libproc-3.2.8)
> +	@$(call install_lib, procps, 0, 0, 0644, libprocps)
>  
> -ifdef PTXCONF_PROCPS_TOP
> -	@$(call install_copy, procps, 0, 0, 0755, -,\
> -		/usr/bin/top)
> +ifdef PTXCONF_PROCPS_FREE
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/free)
> +endif
> +ifdef PTXCONF_PROCPS_PGREP
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/pgrep)
> +endif
> +ifdef PTXCONF_PROCPS_PIDOF
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/pidof)
> +endif
> +ifdef PTXCONF_PROCPS_PKILL
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/pkill)
> +endif
> +ifdef PTXCONF_PROCPS_PMAP
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/pmap)
> +endif
> +ifdef PTXCONF_PROCPS_PS
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/bin/ps)
> +endif
> +ifdef PTXCONF_PROCPS_PWDX
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/pwdx)
>  endif
>  ifdef PTXCONF_PROCPS_SLABTOP
>  	@$(call install_copy, procps, 0, 0, 0755, -, \
> @@ -82,21 +108,29 @@ endif
>  ifdef PTXCONF_PROCPS_SYSCTL
>  	@$(call install_copy, procps, 0, 0, 0755, -, \
>  		/sbin/sysctl)
> -
>  	@$(call install_alternative, procps, 0, 0, 0644, /etc/sysctl.conf, n)
>  endif
> -ifdef PTXCONF_PROCPS_PS
> +ifdef PTXCONF_PROCPS_TOP
>  	@$(call install_copy, procps, 0, 0, 0755, -, \
> -		/bin/ps)
> +		/usr/bin/top)
> +endif
> +ifdef PTXCONF_PROCPS_UPTIME
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/uptime)
> +endif
> +ifdef PTXCONF_PROCPS_VMSTAT
> +	@$(call install_copy, procps, 0, 0, 0755, -, \
> +		/usr/bin/vmstat)
>  endif
>  ifdef PTXCONF_PROCPS_W
>  	@$(call install_copy, procps, 0, 0, 0755, -, \
>  		/usr/bin/w)
>  endif
> -ifdef PTXCONF_PROCPS_PGREP
> +ifdef PTXCONF_PROCPS_WATCH
>  	@$(call install_copy, procps, 0, 0, 0755, -, \
> -		/usr/bin/pgrep)
> +		/usr/bin/watch)
>  endif
> +
>  	@$(call install_finish, procps)
>  
>  	@$(call touch)
> -- 
> 2.4.5
> 
> 
> -- 
> ptxdist mailing list
> ptxdist@pengutronix.de

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

-- 
ptxdist mailing list
ptxdist@pengutronix.de

      reply	other threads:[~2015-07-06 13:04 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-03 15:11 Clemens Gruber
2015-07-06 15:04 ` Michael Olbrich [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150706150406.GA32551@pengutronix.de \
    --to=m.olbrich@pengutronix.de \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox