diff --git a/pkgs/os-specific/linux/procps/builder.sh b/pkgs/os-specific/linux/procps/builder.sh deleted file mode 100644 index 436df18fef5..00000000000 --- a/pkgs/os-specific/linux/procps/builder.sh +++ /dev/null @@ -1,6 +0,0 @@ -source $stdenv/setup - -export DESTDIR=$out - -genericBuild - diff --git a/pkgs/os-specific/linux/procps/default.nix b/pkgs/os-specific/linux/procps/default.nix index 9270e4c6c0e..dce0e36edb4 100644 --- a/pkgs/os-specific/linux/procps/default.nix +++ b/pkgs/os-specific/linux/procps/default.nix @@ -1,12 +1,26 @@ -{stdenv, fetchurl, ncurses}: +{ stdenv, fetchurl, ncurses }: stdenv.mkDerivation { name = "procps-3.2.8"; - builder = ./builder.sh; + src = fetchurl { url = http://procps.sourceforge.net/procps-3.2.8.tar.gz; sha256 = "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i"; }; - patches = [./makefile.patch ./procps-build.patch ./gnumake3.82.patch]; - buildInputs = [ncurses]; + + patches = + [ ./makefile.patch + ./procps-build.patch + ./gnumake3.82.patch + ./linux-ver-init.patch + ]; + + buildInputs = [ ncurses ]; + + makeFlags = "DESTDIR=$(out)"; + + meta = { + homepage = http://procps.sourceforge.net/; + description = "Utilities that give information about processes using the /proc filesystem"; + }; } diff --git a/pkgs/os-specific/linux/procps/linux-ver-init.patch b/pkgs/os-specific/linux/procps/linux-ver-init.patch new file mode 100644 index 00000000000..9f93784a1fd --- /dev/null +++ b/pkgs/os-specific/linux/procps/linux-ver-init.patch @@ -0,0 +1,23 @@ +https://bugs.gentoo.org/303120 + +make sure the linux version constructor runs before the libproc constructor +since the latter uses variables setup by the former + +fix by Chris Coleman + +Index: proc/version.c +=================================================================== +RCS file: /cvsroot/procps/procps/proc/version.c,v +retrieving revision 1.7 +diff -u -p -r1.7 version.c +--- a/proc/version.c 9 Feb 2003 07:27:16 -0000 1.7 ++++ b/proc/version.c 14 Nov 2010 00:22:44 -0000 +@@ -33,7 +33,7 @@ void display_version(void) { + + int linux_version_code; + +-static void init_Linux_version(void) __attribute__((constructor)); ++static void init_Linux_version(void) __attribute__((constructor(100))); + static void init_Linux_version(void) { + static struct utsname uts; + int x = 0, y = 0, z = 0; /* cleared in case sscanf() < 3 */