summaryrefslogtreecommitdiff
path: root/sys-libs/libcap
diff options
context:
space:
mode:
Diffstat (limited to 'sys-libs/libcap')
-rw-r--r--sys-libs/libcap/Manifest15
-rw-r--r--sys-libs/libcap/files/libcap-2.20-ignore-RAISE_SETFCAP-install-failures.patch29
-rw-r--r--sys-libs/libcap/files/libcap-2.21-include.patch10
-rw-r--r--sys-libs/libcap/files/libcap-2.22-no-perl.patch54
-rw-r--r--sys-libs/libcap/files/libcap-2.24-build-system-fixes.patch163
-rw-r--r--sys-libs/libcap/files/libcap-2.24-setcap-errno.patch45
-rw-r--r--sys-libs/libcap/files/libcap-2.25-build-system-fixes.patch153
-rw-r--r--sys-libs/libcap/files/libcap-2.25-gperf.patch20
-rw-r--r--sys-libs/libcap/files/libcap-2.25-ignore-RAISE_SETFCAP-install-failures.patch33
-rw-r--r--sys-libs/libcap/libcap-2.24-r2.ebuild72
-rw-r--r--sys-libs/libcap/libcap-2.25.ebuild77
-rw-r--r--sys-libs/libcap/metadata.xml8
12 files changed, 679 insertions, 0 deletions
diff --git a/sys-libs/libcap/Manifest b/sys-libs/libcap/Manifest
new file mode 100644
index 000000000000..5326ea16f42a
--- /dev/null
+++ b/sys-libs/libcap/Manifest
@@ -0,0 +1,15 @@
+AUX libcap-2.20-ignore-RAISE_SETFCAP-install-failures.patch 840 SHA256 29be1427227f9b045151bd02597192bff1c6761c649014b0fd1384f08e010616 SHA512 59936147919f3a8959d87831583df96ab3e1883e58b746f6542cc6430434d2a93c07e79ff7e9fdf9698626aa42e60c6c57981025e46923be76ff2d65720d606c WHIRLPOOL c721054ac8538b748367b9a17971d3021831fdaf49260a2290484a506638ee8598946f001272e014937abb99569b17b0a3f9daed31ea426b6ce74f9a09460867
+AUX libcap-2.21-include.patch 290 SHA256 60038e5f67928edbf7e1b43b8799d5a92cff40dd7c3678135c793ed434c29305 SHA512 6f4867c64121e1294824a2dc1ac02578c9900cd051aea41d0920f1f65e162e3acec86a42f7e4fa6ee1dff08554fe25bd740951e9dc8a11bf79471229f268cffd WHIRLPOOL c3233cf04efc380c274bbd2860576f68494a16e4b0a2827284a692b560650379e33497532b347c2e8aa5019d229f8ceb6be3e0a990e21eae5d459134115aafd1
+AUX libcap-2.22-no-perl.patch 2360 SHA256 4eca873685da1aec0d06e9d7681c285166f9ad7e7cb14c65da6e05cbb135e9ef SHA512 8c49d829cbae15f28ded70b96bc0715819b13183136d90b64b7b6bfbd85c262f0161d89450579e9b58961c724b34816919d111f839e3f5a7a68427ffe441881d WHIRLPOOL 1da9b5b8b54c38bf45117653122ee6dc55949c21c39152d18d2dc0c721d4b906f777a8734d184d18b2c7a25b2aa06aa68d1ccc4409b16915aeb8d9b014951759
+AUX libcap-2.24-build-system-fixes.patch 4943 SHA256 c3d77ae406d13def200f520f6063b3783ae0dae46e740ad78ab189f8a6168210 SHA512 84283f0652f87a8c1f598413d03e8f3aeeb140b322519051df1873933d6d3ac738757e1c7c91ea6efc51548d224149b84d6a1fab0301a655eb609b183bc9e7ba WHIRLPOOL 1697c9223a59f10c5472b0286fa19a9a6c4b9dee16314f785164731043b4207f122b916bef7d596cb94e46eaf4eb7d376129cbedbcc7d317f1b49f17875d11d2
+AUX libcap-2.24-setcap-errno.patch 1491 SHA256 397462a3e207944a7ab2837a06794b225c29ad45e630de69e02df64225106586 SHA512 367037d6c42d07c359e9ee397cbc7431ea05c3d34deea93db1473394decb9f61a2c9de186652fc3a12fb615406ec1a2f4d76eb63c4410c6a2b5f435ece5b05ef WHIRLPOOL 07ce9f884251aad17fd9f7a3fef11e8193b66f3dcd9b58fb4aad755237cd7e4ad28e55a8d5434c65c5e56cc0a92af45f7bf677f0dc451276f46dcffe046a2ee1
+AUX libcap-2.25-build-system-fixes.patch 4705 SHA256 577368c8f23c3de76ba8fe580c4f89f3d23642f00e727547b25b8a9eae8e16af SHA512 c99df67dfdceefeea3c3033a38e94a93cd7a9c4ed6e74f42c3b7198d66deee4b5d4aa91c540a48b12749ce3285c0ac3f11d0ecc33b913c3f0169578ae28745da WHIRLPOOL 5f3a9cb1be9163a7692dafdd3ddc1e18d7152a06e773b0cd260faf3671155fe11225de4dfadb11a41a4d3eb739e69880230ce9f1bafe528d2b4e003ac9ce41d3
+AUX libcap-2.25-gperf.patch 620 SHA256 313ceed1d85424aa5f2143501e1d39e3ff8a3ad83b1f3813266ab158db902324 SHA512 1fd325160ebcf96f8a8f58e7f453241d15d2c968752cc050b52871536840f8ebbbfe1fa2bd03c19f86859e9739eb0059d30f157d2fa3a076da4a895fc32182e6 WHIRLPOOL 5adf5e901329188e91c6e5ae29dc0da61861408b5f3f04a46fd6b0b5d82ab7ae8d31cc8fe88734dd13a0df7a36deadd7f41b4babcef72e62f661aae37e89abae
+AUX libcap-2.25-ignore-RAISE_SETFCAP-install-failures.patch 988 SHA256 fd18c5bb8cfd2f5b35b11d71d6170f0bff680aca313757bb3d8c201f137453d7 SHA512 ba573ce68858c1370f3d25ad03678a534e6f3052076694d09e795d1febf2f3d76a6a170658b71d9e31105521fd5d22dd72095585a5402286dba424937064b389 WHIRLPOOL 3d3d564cd1d066ac695a34c5d7ab4a5da30212e370492cface41581760bb47c5e113db5b8fda7eeb1bb645c01eb2f12a61b640d07ddba0754a883fb7dfe2aa8d
+DIST libcap-2.24.tar.xz 63412 SHA256 cee4568f78dc851d726fc93f25f4ed91cc223b1fe8259daa4a77158d174e6c65 SHA512 c062bab936d651a50efa66dcfa51ab3ce4b0881195d23bb32142b5c8044d30e0e2152f3497844ce90c04f909aeffe2d41203efff41972e38758dcca7b653884b WHIRLPOOL bb7a9d8d3b999ad289962ebdc8b9eff87e25bd744a86ee4717e999738cb5a556a51826d0f0cbfc628629948fa8355d5d972208910d6c1c99bdf66a673b6f1cc8
+DIST libcap-2.25.tar.xz 63672 SHA256 693c8ac51e983ee678205571ef272439d83afe62dd8e424ea14ad9790bc35162 SHA512 c3ab491885292adc171cde542b96f1295e84132febb50112a46575c3bde3a3eb6fcf733f7a756b4b656e013c0abb5ed6571db24799f8c0b23d8f759f992864f9 WHIRLPOOL 294a399224997bb3e6187103f364dee2d64f5ab633068361c56fcb4a496abf24d0283b35d4c48df193d36f9372540a3afe853627429ba7f7caba7e9826e1a13d
+EBUILD libcap-2.24-r2.ebuild 1849 SHA256 ca4f76b966bfd23f822ce50299569e3946bc5be5cfc9adc731f3eb724f5602d7 SHA512 bcc666cb5493e71c9060144a87289cdbb8cdf7a9ee98de6d44619a54881a0b4585e50c8edd24596a419a9e79c67e8ecd0eb215fcb68bd2b7305e704d346dd1e1 WHIRLPOOL 0653cc83acef8d600bc834a52a36c8a8fe4d229db312fc4b85352171fd3564d4e021ea919c5c5dd8e80fa6e227029770fc166f80d6e0a0da7456046e1610f8fe
+EBUILD libcap-2.25.ebuild 1993 SHA256 15384016d977aacb418668811fe8f53704cb5f40485d43918868617d3ecd02d4 SHA512 f06c3222c4138950a7acbf1ff51dec492e383a8f6155a6e00477df63fb56f71138e49754bdb4fc4c7644d4acfc379d26504de926b8419cda8b8ac14c1efafb9d WHIRLPOOL 21177d62ce59b62963e2258e3c2bb36605bba96cb67cd21ac7db0b0f38b33210c7ef92474442675a566f8b194a38bb528e2d10c3c8c6f08ddbb7876988e9eb76
+MISC ChangeLog 6561 SHA256 eeaaba458412aa89795d59c4dac7b01914e38a3332e1f0e1790ccad7e2888de6 SHA512 edff5c5b9b1aea5bc80c069ed80dd4e46fedc6dc622444063bf651dbdf344423af62de1a9edb1782d38898c64b227b680830125f0cf6423cd31d0803b48ba6bd WHIRLPOOL 5b31ca3c4715d89f9553680f8fd16bb778c3cca175883c3c3dd14156583eaa13da3c065b5234b478018a18b198188c440ff3b57999db0a88bd4a865c109ee94d
+MISC ChangeLog-2015 19662 SHA256 b0af676d62d97ad4f30806040c14cc2fc4a8b55cac6b4840bc05866ccaf0204e SHA512 f39e403217fe2cde0c5e67501505e142726af4c662cca86561f8d5b737e5c8c5148f3ec73f33638e7aeabc3bd4aab93663bb814ba0db8a8e2a5ed1b993fe3334 WHIRLPOOL 37c17ae1a701eec386716a6902bef89ddf2ce61ad2a2d87f674dcc83ba1e67c579950ed2c0380f571c803b41a94fd9a42d9975b5e8299d81b421c06cf879c0f3
+MISC metadata.xml 253 SHA256 d82c33ef453113a5c1ebe250dcba373c22934a69b0a86c6ab15a5ca589c25b91 SHA512 54a9069aeb4165d2dff3d473c8001bc51613aac9dff3f7f5e9971a9891a737a31511ffa11cbd523febe581ac1d9de2bdf2f40410f0c4239138f2ccca3ef15555 WHIRLPOOL e5aee23acff864609953a1e4de768f0e4aef704b44c53c021f28573e1ca5c99f1a46d92935ecec2449f7b4419a36d8373127d0ecfa8d7bae72d835e1839eb3f8
diff --git a/sys-libs/libcap/files/libcap-2.20-ignore-RAISE_SETFCAP-install-failures.patch b/sys-libs/libcap/files/libcap-2.20-ignore-RAISE_SETFCAP-install-failures.patch
new file mode 100644
index 000000000000..1bc4d63ebb1a
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.20-ignore-RAISE_SETFCAP-install-failures.patch
@@ -0,0 +1,29 @@
+From f2020ee4ee4b2f245637c77e81d62ab6d1db3c6c Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Tue, 25 Jan 2011 15:52:31 -0500
+Subject: [PATCH] ignore RAISE_SETFCAP install failures
+
+While the new RAISE_SETFCAP feature is nifty, its failure to run (often
+due to the fs not supporting it) shouldn't impair the default install.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ progs/Makefile | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/progs/Makefile b/progs/Makefile
+index c261f57..9e1a84d 100644
+--- a/progs/Makefile
++++ b/progs/Makefile
+@@ -30,7 +30,7 @@ install: all
+ install -m 0755 $$p $(SBINDIR) ; \
+ done
+ ifeq ($(RAISE_SETFCAP),yes)
+- $(SBINDIR)/setcap cap_setfcap=i $(SBINDIR)/setcap
++ -$(SBINDIR)/setcap cap_setfcap=i $(SBINDIR)/setcap
+ endif
+
+ clean:
+--
+1.7.4.rc2
+
diff --git a/sys-libs/libcap/files/libcap-2.21-include.patch b/sys-libs/libcap/files/libcap-2.21-include.patch
new file mode 100644
index 000000000000..2a534246ee01
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.21-include.patch
@@ -0,0 +1,10 @@
+--- libcap/libcap.h.org 2011-06-15 07:25:58.912480899 +0200
++++ libcap/libcap.h 2011-06-15 07:26:16.421329661 +0200
+@@ -13,6 +13,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <sys/capability.h>
++#include <sys/prctl.h> /* prctl() */
+
+ #ifndef __u8
+ #define __u8 unsigned char
diff --git a/sys-libs/libcap/files/libcap-2.22-no-perl.patch b/sys-libs/libcap/files/libcap-2.22-no-perl.patch
new file mode 100644
index 000000000000..9c29e7efbf38
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.22-no-perl.patch
@@ -0,0 +1,54 @@
+From fdd0f3b207785711663f48e0dd3414d90d1f2e86 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 12 Nov 2011 14:24:08 -0500
+Subject: [PATCH] use awk/sed instead of perl for creating header files
+
+More systems should have awk/sed than perl.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ libcap/Makefile | 20 ++++++++++++++++----
+ 1 files changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/libcap/Makefile b/libcap/Makefile
+index 4762c60..68845e0 100644
+--- a/libcap/Makefile
++++ b/libcap/Makefile
+@@ -24,6 +24,8 @@ OBJS=$(addsuffix .o, $(FILES))
+ MINLIBNAME=$(MAJLIBNAME).$(MINOR)
+ GPERF_OUTPUT = _caps_output.gperf
+ CFLAGS += -fPIC
++AWK = awk
++SED = sed
+
+ all: $(MINLIBNAME) $(STALIBNAME)
+
+@@ -39,11 +41,21 @@ cap_names.h: _makenames
+ ./_makenames > cap_names.h
+
+ $(GPERF_OUTPUT): cap_names.list.h
+- perl -e 'print "struct __cap_token_s { const char *name; int index; };\n%{\nconst struct __cap_token_s *__cap_lookup_name(const char *, unsigned int);\n%}\n%%\n"; while ($$l = <>) { $$l =~ s/[\{\"]//g; $$l =~ s/\}.*// ; print $$l; }' < $< | gperf --ignore-case --language=ANSI-C --readonly --null-strings --global-table --hash-function-name=__cap_hash_name --lookup-function-name="__cap_lookup_name" -c -t -m20 $(INDENT) > $@
++ (printf "%b" "struct __cap_token_s { const char *name; int index; };\n%{\nconst struct __cap_token_s *__cap_lookup_name(const char *, unsigned int);\n%}\n%%\n"; \
++ $(SED) -e 's:["{}]::g' -e 's:,$$::' $<) | \
++ gperf \
++ --ignore-case \
++ --language=ANSI-C \
++ --readonly \
++ --null-strings \
++ --global-table \
++ --hash-function-name=__cap_hash_name \
++ --lookup-function-name="__cap_lookup_name" \
++ -c -t -m20 $(INDENT) > $@
+
+-cap_names.list.h: Makefile $(KERNEL_HEADERS)/linux/capability.h
+- @echo "=> making $@ from $(KERNEL_HEADERS)/linux/capability.h"
+- perl -e 'while ($$l=<>) { if ($$l =~ /^\#define[ \t](CAP[_A-Z]+)[ \t]+([0-9]+)\s+$$/) { $$tok=$$1; $$val=$$2; $$tok =~ tr/A-Z/a-z/; print "{\"$$tok\",$$val},\n"; } }' $(KERNEL_HEADERS)/linux/capability.h | fgrep -v 0x > $@
++cap_names.list.h: $(KERNEL_HEADERS)/linux/capability.h Makefile
++ @echo "=> making $@ from $<"
++ $(AWK) '($$0 ~ /^#define[[:space:]]+CAP[_A-Z]+[[:space:]]+[0-9]+[[:space:]]*$$/) { printf "{\"%s\",%s},\n", tolower($$2), $$3 }' $< > $@
+
+ $(STALIBNAME): $(OBJS)
+ $(AR) rcs $@ $^
+--
+1.7.6.1
+
diff --git a/sys-libs/libcap/files/libcap-2.24-build-system-fixes.patch b/sys-libs/libcap/files/libcap-2.24-build-system-fixes.patch
new file mode 100644
index 000000000000..64393275bb80
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.24-build-system-fixes.patch
@@ -0,0 +1,163 @@
+From 0485ff3e7f62a331aa4f1e8ec4c2fdcee400e324 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sun, 16 Nov 2008 09:10:31 -0500
+Subject: [PATCH] build system fixes
+
+This touches up the homebrewed build system to work much better "out of the
+box" for people. Specifically:
+ - allow toolchain vars to be set via environment
+ - CC / BUILD_CC / AR / RANLIB
+ - CFLAGS / CPPFLAGS / LDFLAGS
+ - split CPPFLAGS out of CFLAGS
+ - break -fPIC out of global CFLAGS and only use where needed
+ - use LDLIBS for libraries, not LDFLAGS
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Make.Rules | 26 ++++++++++++++------------
+ libcap/Makefile | 11 ++++++-----
+ pam_cap/Makefile | 8 +++++---
+ progs/Makefile | 2 +-
+ 4 files changed, 26 insertions(+), 21 deletions(-)
+
+diff --git a/Make.Rules b/Make.Rules
+index 18b7cf7..5364c46 100644
+--- a/Make.Rules
++++ b/Make.Rules
+@@ -45,27 +45,29 @@ MINOR=24
+
+ # Compilation specifics
+
+-KERNEL_HEADERS := $(topdir)/libcap/include/uapi
+-IPATH += -fPIC -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include
+-
+-CC := gcc
+-CFLAGS := -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+-BUILD_CC := $(CC)
+-BUILD_CFLAGS := $(CFLAGS) $(IPATH)
+-AR := ar
+-RANLIB := ranlib
++CC ?= gcc
++CFLAGS ?= -O2
++BUILD_CC ?= $(CC)
++BUILD_CFLAGS ?= $(CFLAGS)
++AR ?= ar
++RANLIB ?= ranlib
+ DEBUG = -g #-DDEBUG
+ WARNINGS=-Wall -Wwrite-strings \
+ -Wpointer-arith -Wcast-qual -Wcast-align \
+ -Wstrict-prototypes -Wmissing-prototypes \
+ -Wnested-externs -Winline -Wshadow
+ LD=$(CC) -Wl,-x -shared
+-LDFLAGS := #-g
++LDFLAGS ?= #-g
+
+-SYSTEM_HEADERS = /usr/include
++KERNEL_HEADERS = $(topdir)/libcap/include/uapi
++LIBCAP_CPPFLAGS = -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include
++LIBCAP_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
++CPPFLAGS += $(LIBCAP_CPPFLAGS)
++BUILD_CPPFLAGS += $(LIBCAP_CPPFLAGS)
+ INCS=$(topdir)/libcap/include/sys/capability.h
+ LDFLAGS += -L$(topdir)/libcap
+-CFLAGS += -Dlinux $(WARNINGS) $(DEBUG)
++CPPFLAGS += -Dlinux
++CFLAGS += $(WARNINGS) $(DEBUG)
+ PAM_CAP := $(shell if [ -f /usr/include/security/pam_modules.h ]; then echo yes ; else echo no ; fi)
+ INDENT := $(shell if [ -n "$$(which indent 2>/dev/null)" ]; then echo "| indent -kr" ; fi)
+ DYNAMIC := $(shell if [ ! -d "$(topdir)/.git" ]; then echo yes; fi)
+diff --git a/libcap/Makefile b/libcap/Makefile
+index 0ccd2e7..6b446ea 100644
+--- a/libcap/Makefile
++++ b/libcap/Makefile
+@@ -16,7 +16,7 @@ FILES=cap_alloc cap_proc cap_extint cap_flag cap_text
+ # no support).
+ ifeq ($(LIBATTR),yes)
+ FILES += cap_file
+-LDFLAGS += -lattr
++LDLIBS += -lattr
+ DEPS = -lattr
+ endif
+
+@@ -25,6 +25,7 @@ OBJS=$(addsuffix .o, $(FILES))
+ MAJLIBNAME=$(LIBNAME).$(VERSION)
+ MINLIBNAME=$(MAJLIBNAME).$(MINOR)
+ GPERF_OUTPUT = _caps_output.gperf
++CFLAGS += -fPIC
+
+ all: $(MINLIBNAME) $(STALIBNAME) libcap.pc
+
+@@ -43,7 +44,7 @@ libcap.pc: libcap.pc.in
+ $< >$@
+
+ _makenames: _makenames.c cap_names.list.h
+- $(BUILD_CC) $(BUILD_CFLAGS) $< -o $@
++ $(BUILD_CC) $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@
+
+ cap_names.h: _makenames
+ ./_makenames > cap_names.h
+@@ -60,15 +61,15 @@ $(STALIBNAME): $(OBJS)
+ $(RANLIB) $@
+
+ $(MINLIBNAME): $(OBJS)
+- $(LD) $(CFLAGS) $(LDFLAGS) -Wl,-soname,$(MAJLIBNAME) -o $@ $^
++ $(LD) $(CFLAGS) $(LDFLAGS) -Wl,-soname,$(MAJLIBNAME) -o $@ $^ $(LDLIBS)
+ ln -sf $(MINLIBNAME) $(MAJLIBNAME)
+ ln -sf $(MAJLIBNAME) $(LIBNAME)
+
+ %.o: %.c $(INCLS)
+- $(CC) $(CFLAGS) $(IPATH) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ cap_text.o: cap_text.c $(USE_GPERF_OUTPUT) $(INCLS)
+- $(CC) $(CFLAGS) $(IPATH) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@
+
+ install: all
+ mkdir -p -m 0755 $(FAKEROOT)$(INCDIR)/sys
+diff --git a/pam_cap/Makefile b/pam_cap/Makefile
+index cc32fb6..6f07b6b 100644
+--- a/pam_cap/Makefile
++++ b/pam_cap/Makefile
+@@ -9,6 +9,8 @@ include ../Make.Rules
+ # written (and you know why it fails), email me and explain why. Thanks!
+ LDLIBS += -L../libcap -lcap
+
++CFLAGS += -fPIC
++
+ all: pam_cap.so
+ $(MAKE) testcompile
+
+@@ -17,13 +19,13 @@ install: all
+ install -m 0755 pam_cap.so $(FAKEROOT)$(LIBDIR)/security
+
+ pam_cap.so: pam_cap.o
+- $(LD) $(LDFLAGS) -o pam_cap.so $< $(LDLIBS)
++ $(LD) $(CFLAGS) $(LDFLAGS) -o pam_cap.so $< $(LDLIBS)
+
+ pam_cap.o: pam_cap.c
+- $(CC) $(CFLAGS) $(IPATH) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ testcompile: test.c pam_cap.o
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ -lpam -ldl $(LDLIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $+ -lpam -ldl $(LDLIBS)
+
+ clean:
+ rm -f *.o *.so testcompile *~
+diff --git a/progs/Makefile b/progs/Makefile
+index 778149e..8f4e2e6 100644
+--- a/progs/Makefile
++++ b/progs/Makefile
+@@ -22,7 +22,7 @@ $(BUILD): %: %.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
+ %.o: %.c $(INCS)
+- $(CC) $(IPATH) $(CFLAGS) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ install: all
+ mkdir -p -m 0755 $(FAKEROOT)$(SBINDIR)
+--
+2.4.1
+
diff --git a/sys-libs/libcap/files/libcap-2.24-setcap-errno.patch b/sys-libs/libcap/files/libcap-2.24-setcap-errno.patch
new file mode 100644
index 000000000000..08513f643e65
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.24-setcap-errno.patch
@@ -0,0 +1,45 @@
+From 62b190c09d5652c58679dffd7f09e4aceb4c7daa Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Mon, 13 Jul 2015 01:59:14 -0400
+Subject: [PATCH] setcap: fix errno display
+
+The commit 056ffb0bd25d91ffbcb83c521fc4d3d9904ec4d4 broke the display of
+the final error message because it would do more operations that would
+clobber errno. Example:
+(libcap-2.22) sudo setcap cap_ipc_lock=ep /proc/filesystems | head -1
+Failed to set capabilities on file `/proc/filesystems' (Operation not supported)
+(libcap-2.23) sudo setcap cap_ipc_lock=ep /proc/filesystems | head -1
+Failed to set capabilities on file `/proc/filesystems' (Invalid argument)
+
+Save the original errno value and use that for the final display instead.
+
+URL: https://bugs.gentoo.org/551672
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ progs/setcap.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/progs/setcap.c b/progs/setcap.c
+index 83090ae..7304343 100644
+--- a/progs/setcap.c
++++ b/progs/setcap.c
+@@ -171,6 +171,7 @@ int main(int argc, char **argv)
+ retval = cap_set_file(*++argv, cap_d);
+ if (retval != 0) {
+ int explained = 0;
++ int oerrno = errno;
+ #ifdef linux
+ cap_value_t cap;
+ cap_flag_value_t per_state;
+@@ -193,7 +194,7 @@ int main(int argc, char **argv)
+
+ fprintf(stderr,
+ "Failed to set capabilities on file `%s' (%s)\n",
+- argv[0], strerror(errno));
++ argv[0], strerror(oerrno));
+ if (!explained) {
+ usage();
+ }
+--
+2.4.4
+
diff --git a/sys-libs/libcap/files/libcap-2.25-build-system-fixes.patch b/sys-libs/libcap/files/libcap-2.25-build-system-fixes.patch
new file mode 100644
index 000000000000..c33fffda8d91
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.25-build-system-fixes.patch
@@ -0,0 +1,153 @@
+From d5a0c023a7f3deefd471d7b97ef4fa40ed374645 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Wed, 10 Feb 2016 09:47:27 +0100
+Subject: [PATCH] build system fixes
+
+This touches up the homebrewed build system to work much better "out of the
+box" for people. Specifically:
+ - allow toolchain vars to be set via environment
+ - CC / BUILD_CC / AR / RANLIB
+ - CFLAGS / CPPFLAGS / LDFLAGS
+ - split CPPFLAGS out of CFLAGS
+ - break -fPIC out of global CFLAGS and only use where needed
+ - use LDLIBS for libraries, not LDFLAGS
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+
+Forward ported from libcap-2.24 to libcap-2.25
+
+Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
+---
+ Make.Rules | 26 ++++++++++++++------------
+ libcap/Makefile | 7 ++++---
+ pam_cap/Makefile | 8 +++++---
+ progs/Makefile | 2 +-
+ 4 files changed, 24 insertions(+), 19 deletions(-)
+
+diff --git a/Make.Rules b/Make.Rules
+index 8347b26..d7196ef 100644
+--- a/Make.Rules
++++ b/Make.Rules
+@@ -45,28 +45,30 @@ MINOR=25
+
+ # Compilation specifics
+
+-KERNEL_HEADERS := $(topdir)/libcap/include/uapi
+-IPATH += -fPIC -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include
+-
+-CC := gcc
+-CFLAGS := -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+-BUILD_CC := $(CC)
+-BUILD_CFLAGS := $(CFLAGS) $(IPATH)
+-AR := ar
+-RANLIB := ranlib
++CC ?= gcc
++CFLAGS ?= -O2
++BUILD_CC ?= $(CC)
++BUILD_CFLAGS ?= $(CFLAGS)
++AR ?= ar
++RANLIB ?= ranlib
+ DEBUG = -g #-DDEBUG
+ WARNINGS=-Wall -Wwrite-strings \
+ -Wpointer-arith -Wcast-qual -Wcast-align \
+ -Wstrict-prototypes -Wmissing-prototypes \
+ -Wnested-externs -Winline -Wshadow
+ LD=$(CC) -Wl,-x -shared
+-LDFLAGS := #-g
++LDFLAGS ?= #-g
+ BUILD_GPERF := $(shell which gperf >/dev/null 2>/dev/null && echo yes)
+
+-SYSTEM_HEADERS = /usr/include
++KERNEL_HEADERS = $(topdir)/libcap/include/uapi
++LIBCAP_CPPFLAGS = -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include
++LIBCAP_CPPFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
++CPPFLAGS += $(LIBCAP_CPPFLAGS)
++BUILD_CPPFLAGS += $(LIBCAP_CPPFLAGS)
+ INCS=$(topdir)/libcap/include/sys/capability.h
+ LDFLAGS += -L$(topdir)/libcap
+-CFLAGS += -Dlinux $(WARNINGS) $(DEBUG)
++CPPFLAGS += -Dlinux
++CFLAGS += $(WARNINGS) $(DEBUG)
+ PAM_CAP := $(shell if [ -f /usr/include/security/pam_modules.h ]; then echo yes ; else echo no ; fi)
+ INDENT := $(shell if [ -n "$$(which indent 2>/dev/null)" ]; then echo "| indent -kr" ; fi)
+ DYNAMIC := $(shell if [ ! -d "$(topdir)/.git" ]; then echo yes; fi)
+diff --git a/libcap/Makefile b/libcap/Makefile
+index d189777..b99740f 100644
+--- a/libcap/Makefile
++++ b/libcap/Makefile
+@@ -17,6 +17,7 @@ OBJS=$(addsuffix .o, $(FILES))
+ MAJLIBNAME=$(LIBNAME).$(VERSION)
+ MINLIBNAME=$(MAJLIBNAME).$(MINOR)
+ GPERF_OUTPUT = _caps_output.gperf
++CFLAGS += -fPIC
+
+ all: $(MINLIBNAME) $(STALIBNAME) libcap.pc
+
+@@ -35,7 +36,7 @@ libcap.pc: libcap.pc.in
+ $< >$@
+
+ _makenames: _makenames.c cap_names.list.h
+- $(BUILD_CC) $(BUILD_CFLAGS) $< -o $@
++ $(BUILD_CC) $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -o $@
+
+ cap_names.h: _makenames
+ ./_makenames > cap_names.h
+@@ -57,10 +58,10 @@ $(MINLIBNAME): $(OBJS)
+ ln -sf $(MAJLIBNAME) $(LIBNAME)
+
+ %.o: %.c $(INCLS)
+- $(CC) $(CFLAGS) $(IPATH) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ cap_text.o: cap_text.c $(USE_GPERF_OUTPUT) $(INCLS)
+- $(CC) $(CFLAGS) $(IPATH) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@
+
+ install: all
+ mkdir -p -m 0755 $(FAKEROOT)$(INCDIR)/sys
+diff --git a/pam_cap/Makefile b/pam_cap/Makefile
+index cc32fb6..6f07b6b 100644
+--- a/pam_cap/Makefile
++++ b/pam_cap/Makefile
+@@ -9,6 +9,8 @@ include ../Make.Rules
+ # written (and you know why it fails), email me and explain why. Thanks!
+ LDLIBS += -L../libcap -lcap
+
++CFLAGS += -fPIC
++
+ all: pam_cap.so
+ $(MAKE) testcompile
+
+@@ -17,13 +19,13 @@ install: all
+ install -m 0755 pam_cap.so $(FAKEROOT)$(LIBDIR)/security
+
+ pam_cap.so: pam_cap.o
+- $(LD) $(LDFLAGS) -o pam_cap.so $< $(LDLIBS)
++ $(LD) $(CFLAGS) $(LDFLAGS) -o pam_cap.so $< $(LDLIBS)
+
+ pam_cap.o: pam_cap.c
+- $(CC) $(CFLAGS) $(IPATH) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ testcompile: test.c pam_cap.o
+- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ -lpam -ldl $(LDLIBS)
++ $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $+ -lpam -ldl $(LDLIBS)
+
+ clean:
+ rm -f *.o *.so testcompile *~
+diff --git a/progs/Makefile b/progs/Makefile
+index c094a24..b9f0d3f 100644
+--- a/progs/Makefile
++++ b/progs/Makefile
+@@ -19,7 +19,7 @@ $(BUILD): %: %.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LDLIBS)
+
+ %.o: %.c $(INCS)
+- $(CC) $(IPATH) $(CFLAGS) -c $< -o $@
++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+
+ install: all
+ mkdir -p -m 0755 $(FAKEROOT)$(SBINDIR)
+--
+2.7.1
+
diff --git a/sys-libs/libcap/files/libcap-2.25-gperf.patch b/sys-libs/libcap/files/libcap-2.25-gperf.patch
new file mode 100644
index 000000000000..86e930f6a446
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.25-gperf.patch
@@ -0,0 +1,20 @@
+update gperf call to work with gperf-3.1
+
+https://bugs.gentoo.org/604802
+
+--- a/libcap/Makefile
++++ b/libcap/Makefile
+@@ -44,11 +44,12 @@
+ ./_makenames > cap_names.h
+
+ $(GPERF_OUTPUT): cap_names.list.h
+- (printf "%b" "struct __cap_token_s { const char *name; int index; };\n%{\nconst struct __cap_token_s *__cap_lookup_name(const char *, unsigned int);\n%}\n%%\n"; \
++ (printf "%b" "struct __cap_token_s { const char *name; int index; };\n%%\n"; \
+ $(SED) -e 's:["{}]::g' -e 's:,$$::' $<) | \
+ gperf \
+ --ignore-case \
+ --language=ANSI-C \
++ --includes \
+ --readonly \
+ --null-strings \
+ --global-table \
diff --git a/sys-libs/libcap/files/libcap-2.25-ignore-RAISE_SETFCAP-install-failures.patch b/sys-libs/libcap/files/libcap-2.25-ignore-RAISE_SETFCAP-install-failures.patch
new file mode 100644
index 000000000000..0f737361a4d1
--- /dev/null
+++ b/sys-libs/libcap/files/libcap-2.25-ignore-RAISE_SETFCAP-install-failures.patch
@@ -0,0 +1,33 @@
+From 8dfcdcfdcb9c462a05566aa8d3c6eca871f0ddbf Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Wed, 10 Feb 2016 09:52:45 +0100
+Subject: [PATCH] ignore RAISE_SETFCAP install failures
+
+While the new RAISE_SETFCAP feature is nifty, its failure to run (often
+due to the fs not supporting it) shouldn't impair the default install.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+
+Forward ported from libcap-2.20 to libcap-2.25
+
+Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
+---
+ progs/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/progs/Makefile b/progs/Makefile
+index c094a24..4a6db38 100644
+--- a/progs/Makefile
++++ b/progs/Makefile
+@@ -27,7 +27,7 @@ install: all
+ install -m 0755 $$p $(FAKEROOT)$(SBINDIR) ; \
+ done
+ ifeq ($(RAISE_SETFCAP),yes)
+- $(FAKEROOT)$(SBINDIR)/setcap cap_setfcap=i $(FAKEROOT)$(SBINDIR)/setcap
++ -$(FAKEROOT)$(SBINDIR)/setcap cap_setfcap=i $(FAKEROOT)$(SBINDIR)/setcap
+ endif
+
+ clean:
+--
+2.7.1
+
diff --git a/sys-libs/libcap/libcap-2.24-r2.ebuild b/sys-libs/libcap/libcap-2.24-r2.ebuild
new file mode 100644
index 000000000000..5575faa355ce
--- /dev/null
+++ b/sys-libs/libcap/libcap-2.24-r2.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="4"
+
+inherit eutils multilib multilib-minimal toolchain-funcs pam
+
+DESCRIPTION="POSIX 1003.1e capabilities"
+HOMEPAGE="http://www.friedhoff.org/posixfilecaps.html"
+SRC_URI="mirror://kernel/linux/libs/security/linux-privs/libcap2/${P}.tar.xz"
+
+# it's available under either of the licenses
+LICENSE="|| ( GPL-2 BSD )"
+SLOT="0"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-linux ~arm-linux ~x86-linux"
+IUSE="pam static-libs"
+
+RDEPEND=">=sys-apps/attr-2.4.47-r1[${MULTILIB_USEDEP}]
+ pam? ( virtual/pam )"
+DEPEND="${RDEPEND}
+ sys-kernel/linux-headers"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-2.24-build-system-fixes.patch
+ epatch "${FILESDIR}"/${PN}-2.22-no-perl.patch
+ epatch "${FILESDIR}"/${PN}-2.20-ignore-RAISE_SETFCAP-install-failures.patch
+ epatch "${FILESDIR}"/${PN}-2.21-include.patch
+ epatch "${FILESDIR}"/${PN}-2.24-setcap-errno.patch #551672
+
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ local pam
+ if multilib_is_native_abi && use pam; then
+ pam=yes
+ else
+ pam=no
+ fi
+
+ sed -i \
+ -e "/^PAM_CAP/s:=.*:=${pam}:" \
+ -e '/^DYNAMIC/s:=.*:=yes:' \
+ -e '/^lib_prefix=/s:=.*:=$(prefix):' \
+ -e "/^lib=/s:=.*:=$(get_libdir):" \
+ Make.Rules
+}
+
+multilib_src_compile() {
+ tc-export_build_env BUILD_CC
+ tc-export AR CC RANLIB
+
+ default
+}
+
+multilib_src_install() {
+ # no configure, needs explicit install line #444724#c3
+ emake install DESTDIR="${ED}"
+
+ gen_usr_ldscript -a cap
+ use static-libs || rm "${ED}"/usr/$(get_libdir)/libcap.a
+
+ rm -rf "${ED}"/usr/$(get_libdir)/security
+ if multilib_is_native_abi && use pam; then
+ dopammod pam_cap/pam_cap.so
+ dopamsecurity '' pam_cap/capability.conf
+ fi
+}
+
+multilib_src_install_all() {
+ dodoc CHANGELOG README doc/capability.notes
+}
diff --git a/sys-libs/libcap/libcap-2.25.ebuild b/sys-libs/libcap/libcap-2.25.ebuild
new file mode 100644
index 000000000000..feb60b9a4b62
--- /dev/null
+++ b/sys-libs/libcap/libcap-2.25.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils multilib multilib-minimal toolchain-funcs pam
+
+DESCRIPTION="POSIX 1003.1e capabilities"
+HOMEPAGE="http://www.friedhoff.org/posixfilecaps.html"
+SRC_URI="mirror://kernel/linux/libs/security/linux-privs/libcap2/${P}.tar.xz"
+
+# it's available under either of the licenses
+LICENSE="|| ( GPL-2 BSD )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~arm-linux ~x86-linux"
+IUSE="pam static-libs"
+
+# While the build system optionally uses gperf, we don't DEPEND on it because
+# the build automatically falls back when it's unavailable. #604802
+RDEPEND=">=sys-apps/attr-2.4.47-r1[${MULTILIB_USEDEP}]
+ pam? ( virtual/pam )"
+DEPEND="${RDEPEND}
+ sys-kernel/linux-headers"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.25-build-system-fixes.patch
+ "${FILESDIR}"/${PN}-2.22-no-perl.patch
+ "${FILESDIR}"/${PN}-2.25-ignore-RAISE_SETFCAP-install-failures.patch
+ "${FILESDIR}"/${PN}-2.21-include.patch
+ "${FILESDIR}"/${PN}-2.25-gperf.patch
+)
+
+src_prepare() {
+ epatch "${PATCHES[@]}"
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ local pam
+ if multilib_is_native_abi && use pam; then
+ pam=yes
+ else
+ pam=no
+ fi
+
+ sed -i \
+ -e "/^PAM_CAP/s:=.*:=${pam}:" \
+ -e '/^DYNAMIC/s:=.*:=yes:' \
+ -e '/^lib_prefix=/s:=.*:=$(prefix):' \
+ -e "/^lib=/s:=.*:=$(get_libdir):" \
+ Make.Rules
+}
+
+multilib_src_compile() {
+ tc-export_build_env BUILD_CC
+ tc-export AR CC RANLIB
+
+ default
+}
+
+multilib_src_install() {
+ # no configure, needs explicit install line #444724#c3
+ emake install DESTDIR="${ED}"
+
+ gen_usr_ldscript -a cap
+ use static-libs || rm "${ED}"/usr/$(get_libdir)/libcap.a
+
+ rm -rf "${ED}"/usr/$(get_libdir)/security
+ if multilib_is_native_abi && use pam; then
+ dopammod pam_cap/pam_cap.so
+ dopamsecurity '' pam_cap/capability.conf
+ fi
+}
+
+multilib_src_install_all() {
+ dodoc CHANGELOG README doc/capability.notes
+}
diff --git a/sys-libs/libcap/metadata.xml b/sys-libs/libcap/metadata.xml
new file mode 100644
index 000000000000..56c124413057
--- /dev/null
+++ b/sys-libs/libcap/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ <name>Gentoo Base System</name>
+</maintainer>
+</pkgmetadata>