about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2006-12-22 19:22:57 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2006-12-22 19:22:57 +0000
commit33db7f3dd3f317c6385a9c0430f8df66550776c2 (patch)
tree466b8922ea5fcf293797e59ebe5729e4b2b040ac /pkgs
parent000b1f4cd6e463d5f66a10c7f627382f66c90631 (diff)
downloadnixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.tar
nixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.tar.gz
nixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.tar.bz2
nixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.tar.lz
nixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.tar.xz
nixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.tar.zst
nixlib-33db7f3dd3f317c6385a9c0430f8df66550776c2.zip
* Build ntpd with capabilities support.
svn path=/nixpkgs/trunk/; revision=7462
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/os-specific/linux/libcap/default.nix21
-rw-r--r--pkgs/os-specific/linux/libcap/syscall.patch40
-rw-r--r--pkgs/tools/networking/ntp/default.nix8
-rw-r--r--pkgs/top-level/all-packages.nix6
4 files changed, 73 insertions, 2 deletions
diff --git a/pkgs/os-specific/linux/libcap/default.nix b/pkgs/os-specific/linux/libcap/default.nix
new file mode 100644
index 000000000000..b7b1c07072f8
--- /dev/null
+++ b/pkgs/os-specific/linux/libcap/default.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation {
+  name = "libcap-1.10";
+  src = fetchurl {
+    url = http://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.4/libcap-1.10.tar.bz2;
+    md5 = "4426a413128142cab89eb2e6f13d8571";
+  };
+  
+  preBuild = "
+    sed 's|/usr/include|${stdenv.glibc}/include|' < libcap/Makefile > libcap/Makefile.tmp
+    mv libcap/Makefile.tmp libcap/Makefile
+
+    installFlags=\"LIBDIR=$out/lib INCDIR=$out/include SBINDIR=$out/sbin MANDIR=$out/man\"
+  ";
+
+  patches = [
+    # Borrowed from http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-libs/libcap/files/libcap-1.10-syscall.patch?rev=1.2&view=log.
+    ./syscall.patch
+  ];
+}
diff --git a/pkgs/os-specific/linux/libcap/syscall.patch b/pkgs/os-specific/linux/libcap/syscall.patch
new file mode 100644
index 000000000000..7dd084ba32b4
--- /dev/null
+++ b/pkgs/os-specific/linux/libcap/syscall.patch
@@ -0,0 +1,40 @@
+--- libcap-1.10/libcap/cap_sys.c.jj	2003-08-24 19:03:35.524759616 -0700
++++ libcap-1.10/libcap/cap_sys.c	2003-08-24 19:03:48.406801248 -0700
+@@ -10,7 +10,7 @@
+ #include "libcap.h"
+ #define __LIBRARY__
+ #include <linux/unistd.h>
+-
++/*
+ _syscall2(int, capget,
+ 	  cap_user_header_t, header,
+ 	  cap_user_data_t, data)
+@@ -18,7 +18,7 @@
+ _syscall2(int, capset,
+ 	  cap_user_header_t, header,
+ 	  const cap_user_data_t, data)
+-
++*/
+ /*
+  * $Log: libcap-1.10-syscall.patch,v $
+  * Revision 1.1.1.1  2005/11/30 09:39:11  chriswhite
+  * *** empty log message ***
+  *
+  * Revision 1.2  2003/08/29 06:28:38  cretin
+  * Only add -fPIC for libcap.so objects
+  *
+  * Revision 1.1  2003/08/27 06:10:53  cretin
+  * Added -fPIC for prelink to work, and fixed compile error
+  *
+  * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
+--- libcap-1.10/libcap/Makefile.jj	2003-08-29 07:19:21.863907872 +0100
++++ libcap-1.10/libcap/Makefile	2003-08-29 07:20:21.562832256 +0100
+@@ -61,7 +61,7 @@
+ 	ln -sf $(MAJLIBNAME) $(LIBNAME)
+ 
+ %.o: %.c $(INCLS)
+-	$(CC) $(CFLAGS) -c $< -o $@
++	$(CC) $(CFLAGS) -fPIC -c $< -o $@
+ 
+ install: all
+ 	mkdir -p -m 0755 $(INCDIR)/sys
diff --git a/pkgs/tools/networking/ntp/default.nix b/pkgs/tools/networking/ntp/default.nix
index 3b707bbb8a18..b84c9cccfeb0 100644
--- a/pkgs/tools/networking/ntp/default.nix
+++ b/pkgs/tools/networking/ntp/default.nix
@@ -1,4 +1,6 @@
-{stdenv, fetchurl}:
+{stdenv, fetchurl, libcap}:
+
+assert stdenv.isLinux -> libcap != null;
  
 stdenv.mkDerivation {
   name = "ntp-4.2.2p4";
@@ -6,4 +8,8 @@ stdenv.mkDerivation {
     url = http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.2p4.tar.gz;
     md5 = "916fe57525f8327f340b203f129088fa";
   };
+  configureFlags = "
+    ${if stdenv.isLinux then "--enable-linuxcaps" else ""}
+  ";
+  buildInputs = if stdenv.isLinux then [libcap] else [];
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9115dd571ee8..a41ec8734d34 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -435,7 +435,7 @@ rec {
   };
 
   ntp = import ../tools/networking/ntp {
-    inherit fetchurl stdenv;
+    inherit fetchurl stdenv libcap;
   };
 
   openssh = import ../tools/networking/openssh {
@@ -2207,6 +2207,10 @@ rec {
     inherit fetchurl stdenv perl bison mktemp kernel;
   };
 
+  libcap = import ../os-specific/linux/libcap {
+    inherit fetchurl stdenv;
+  };
+
   mingetty = import ../os-specific/linux/mingetty {
     inherit fetchurl stdenv;
   };