Opened 12 years ago

Closed 11 years ago

#3095 closed enhancement (fixed)

Procps-ng-3.3.6

Reported by: Gilles Espinasse Owned by: bdubbs@…
Priority: normal Milestone: 7.3
Component: Book Version: SVN
Severity: normal Keywords:
Cc:

Description

procps-ng is a fork that could be found on http://gitorious.org/procps used by Debian, Fedora, openSUSE.

the announce of v3.3.3 release is at http://www.freelists.org/post/procps/procps-333-released

What is better is a standard configure, compilation with less warnings, a test suite, some bugs fixed.

But the package is not distributed bootstrapped actually. The git tree with v3.3.3 tag could be downloaded from gitorious or you may wait to pick a bootstrapped copy of the package from a distrib that use it (Debian, Fedora, openSUSE)

Due to the non-boostrapped package, that's an issue for LFS build order as build before autoconf/automake. I was using debian package and patches with 3.3.2.

Test suite had many issues in 3.3.2 on my configuration. v3.3.3 now work for me with a 32-bits kernel and userspace but fail on a 64-bits kernel and a 32-bits userspace in one test where free -b give bad values for swaptotal.

Attachments (1)

pmap.log (40.8 KB ) - added by bdubbs@… 11 years ago.

Download all attachments as: .zip

Change History (21)

comment:1 by Matthew Burgess, 12 years ago

Interesting. I obviously don't want to take this package without them fixing their packaging bugs and/or complete lack of packaging. I also note that they're considering merging procps-ng and psmisc, which would be nice. I'm happy to leave this open to serve as a reminder to do this once upstream provide ready-to-build tarballs.

comment:2 by bdubbs@…, 12 years ago

Priority: normallow
Summary: Switch to procps-ng (3.3.3)Switch to procps-ng (3.3.3) - placeholder - not ready yet
Type: taskenhancement

comment:3 by Sorina82, 12 years ago

probably Debian patches in it. stuff like that.

comment:4 by Gilles Espinasse, 12 years ago

probably Debian patches in it. stuff like that.

No. Debian patches are not applied on .orig.tar.xz package, they are inside debian.tar.gz. I haven't yet look (have been busy on other packages).

comment:5 by bdubbs@…, 12 years ago

Milestone: 7.2Future

comment:6 by Gilles Espinasse, 11 years ago

3.3.4 has been released.

http://www.freelists.org/post/procps/procpsng-version-334-released

Test suite has been fixed, should now work on LFS build

(I didn't try yet the released package).

ABI has changed without bumping .so name. So 3.3.5 should follow soon to fix that.

As with 3.3.3, the package made on gitorious is not bootstrapped, so the alternative is to use a bootstrapped package used by one distro like debian (with the .orig). http://packages.debian.org/source/sid/procps

http://ftp.de.debian.org/debian/pool/main/p/procps/

comment:7 by Gilles Espinasse, 11 years ago

I had forgotten the hack I used to make the testsuite successfull. There is still 2 issues in the test suite:

  • 2 files are missing in debian .orig files (reported today), required to run some tests,
  • which is not build in LFS order, so exec which sleep fail, I used
sed -i 's|exec which sleep|exec echo /bin/sleep|' testsuite/config/unix.exp

comment:8 by Armin, 11 years ago

Hm, their autotools system is weird. If you specify --prefix=/usr, you end up having /usr/usr/bin ...

Anyways, for anyone interested I used these commands to build procps:

./configure --prefix=/usr --sysconfdir=/etc --exec-prefix= --libdir=/usr/lib --docdir=/usr/share/doc/procps-3.3.5 --disable-static &&
make &&
make install &&
mv -v /usr/lib/libprocps.so.* /lib &&
ln -sfv ../../lib/libprocps.so.1.0.0 /usr/lib/libprocps.so

I've specified --libdir=/usr/lib because if it's not specified, we'd have /lib/pkgconfig which pkg-config doesn't include into search path. Another reason is easy way to move .la file from /lib which shouldn't be there and to avoid "file has been moved" warning. (I can't stand libtool, I always delete .la files).

I've put a working tarball on http://linuxfromscratch.org/~krejzi/procps-3.3.5.tar.xz with md5sum 22f1cdedfd892fb31a6d22880130e2e4

comment:9 by Matthew Burgess, 11 years ago

Summary: Switch to procps-ng (3.3.3) - placeholder - not ready yetSwitch to procps-ng (3.3.6) - placeholder - not ready yet

comment:10 by Gilles Espinasse, 11 years ago

Packages are now available from sourceforge http://sourceforge.net/projects/procps-ng/files/Production/

I am using

./configure --prefix=

There is still one minor issue in the test suite that need hacking as which is not available, so I use

sed -i "s|exec which sleep|exec echo /$(TOOLS_DIR)/bin/sleep|" testsuite/config/unix.exp

There is another small detail.

make check

work but the ouput is not very nice to read. I prefer using

(cd $(DIR_APP)/testsuite; make site.exp && DEJAGNU=global-conf.exp runtest)

I understand you may find that command too complicated, but I haven't found a way with make check to produce the same nice to read output.

comment:11 by bdubbs@…, 11 years ago

I haven't tested the applications but the build works pretty well without the patches and sed. I note that snice is not there, but the current man page for snice/skill says:

"These tools are probably obsolete and unportable. The command syntax is poorly defined. Consider using the killall, pkill, and pgrep commands instead."

There is probably a minor error in the build because they have the option

--enable-skill build skill and snice

but they build skill by default.

Using --prefix= is not enough. We would need to use --mandir and --docdir. This seems to work for me:

./configure --prefix= 
            --mandir=/usr/share/man 
            --docdir=/usr/share/doc/procps-ng-3.3.6 
            --disable-skill

I'm in the middle of of a full build, but will test the executables when I'm done.

Matt, What do you think?

comment:12 by bdubbs@…, 11 years ago

Inside chroot, the build is OK, but I get:

Running ./pmap.test/pmap.exp ...
FAIL: pmap X with unreachable process
FAIL: pmap XX with unreachable process

                ===  Summary ===

# of expected passes            98
# of unexpected failures        2
# of untested testcases         20

In a non-chroot environment and as a regular user, I get no failures:

# of expected passes            91
# of untested testcases         20
# of unsupported tests          2

In a full system, running as root gives the same numbers as chroot. Trying su -s /bin/bash -c "PATH=$PATH DEJAGNU=global-conf.exp runtest" gives 3 failures. The third in Running ./pgrep.test/pgrep.exp ... FAIL: pgrep matches on tty

I note that the old procps does not even come with a test suite. vmstat has a minor problem with formatting (when more than 1G free and size is K). top seems fine.

comment:13 by Matthew Burgess, 11 years ago

Hi Bruce. It'd be interesting to see what causes those test failures, but I'm happy enough to see this go in as-is with a warning to expect 2 test failures.

comment:14 by Matthew Burgess, 11 years ago

Milestone: Future7.3
Priority: lownormal
Summary: Switch to procps-ng (3.3.6) - placeholder - not ready yetProcps-ng-3.3.6

comment:15 by Gilles Espinasse, 11 years ago

procps-ng-3.3.6 test suite fail only once in three build with :

FAIL: pmap extra extended output (footer)
FAIL: pmap X with unreachable process
FAIL: pmap XX with unreachable process

That procps build was while running with 2.6.32-5-686 debian stable kernel. The other two build against running kernel linux-3.4.24 (32 bits) show no error. You could retrieve which kernel was running in make test log looking for 'Running tests for GNU make on Linux'

by bdubbs@…, 11 years ago

Attachment: pmap.log added

comment:16 by bdubbs@…, 11 years ago

The kernel was 3.5.2. Test log of failed test is attached.

comment:17 by bdubbs@…, 11 years ago

I think I've figured out the failures. The script has:

set pmap_initname "1:\\s+\\S+\[^\\r\]+\\s+"
...
set test "pmap X with unreachable process"
spawn $pmap -X 1
expect_pass $test "$pmap_initname\$"

where the expect_pass is a function defined in the unix.exp script:

proc expect_pass { testname reg } {
    expect {
      -re "$reg" { pass "$testname" }
      default { fail "$testname" }
      timeout { fail "$testname" }
    }
}

The "$pmap_initname\$" maps to:

1: 
one or more spaces
one or more non-spaces
one or more anything except return, \r, character
one or more spaces
end-of-line

The spawn command is producing return characters, \r, as end-of-line, but I think the regex is expecting a line feed (unix newline, \n) at the end of the line.

Changing "$pmap_initname\$" to "$pmap_initname\r" makes the test pass. Just removing the \$ in this string also works.

sed -i -e 's/pmap_initname
\$/pmap_initname/' testsuite/pmap.test/pmap.exp

Yes, that's three backslashes,
\$.

Using the sed to remove 'which', I now get:

# DEJAGNU=global-conf.exp runtestWARNING: No tool specified
Test Run By root on Sun Jan 20 00:05:18 2013
Native configuration is x86_64-unknown-linux-gnu

                ===  tests ===

Schedule of variations:
    unix

Running target unix
Using /tools/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /tools/share/dejagnu/config/unix.exp as generic interface file for target.
Using ./config/unix.exp as tool-and-target-specific interface file.
Running ./free.test/free.exp ...
Running ./kill.test/kill.exp ...
Running ./lib.test/fileutils.exp ...
Running ./lib.test/strutils.exp ...
Running ./pgrep.test/pgrep.exp ...
Running ./pkill.test/pkill.exp ...
Running ./pmap.test/pmap.exp ...
Running ./ps.test/ps_output.exp ...
Running ./ps.test/ps_personality.exp ...
Running ./ps.test/ps_sched_batch.exp ...
Running ./pwdx.test/pwdx.exp ...
Running ./slabtop.test/slabtop.exp ...
Running ./sysctl.test/sysctl_read.exp ...
Running ./uptime.test/uptime.exp ...
Running ./vmstat.test/vmstat.exp ...
Running ./w.test/w.exp ...

                ===  Summary ===

# of expected passes            100
# of untested testcases         20

18 of the untested testcases are in pkill.exp and seem to be placeholders. The same for pgrep.exp. The untested case in ps seems to be wrong and is tested OK.

sed -i -e "s/untested/#untested/" testsuite/ps.test/ps_sched_batch.exp

comment:18 by Matthew Burgess, 11 years ago

Good detective work, Gilles & Bruce. As I said a couple of days ago, I'm happy to see this go in, with whatever seds are required to get the test suite as clean as possible. Would you mind passing those upstream too please, to see if we can get 3.3.7 to pass using a cmmi build? Ta.

comment:19 by bdubbs@…, 11 years ago

Owner: changed from lfs-book@… to bdubbs@…
Status: newassigned

I'll go ahead and add the package. There will be a couple of seds to make the tests pass, but otherwise it should be straight forward.

comment:20 by bdubbs@…, 11 years ago

Resolution: fixed
Status: assignedclosed

Fixed at revision 10099.

Note: See TracTickets for help on using tickets.