sys-libs/libcap: Bump to version 2.29
authorLars Wendler <polynomial-c@gentoo.org>
Thu, 26 Dec 2019 12:27:36 +0000 (13:27 +0100)
committerLars Wendler <polynomial-c@gentoo.org>
Thu, 26 Dec 2019 12:27:48 +0000 (13:27 +0100)
Package-Manager: Portage-2.3.83, Repoman-2.3.20
Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
sys-libs/libcap/Manifest
sys-libs/libcap/files/libcap-2.29-build-system-fixes.patch [new file with mode: 0644]
sys-libs/libcap/libcap-2.29.ebuild [new file with mode: 0644]

index 6b6121dd497deb1e2ca5e3863f7440fe3b6b23b4..caa90c1b57dff3bd94ce00a9315a460c9b252af5 100644 (file)
@@ -1,3 +1,4 @@
 DIST libcap-2.26.tar.xz 67172 BLAKE2B 9d1952bd03e1bba5ffa225a5088b8d841c2007219bbb9524f979ac65e472bf932db496acf93984fa77fe42e71d45b85cd603ca461a071fb4742526dfbc5f66eb SHA512 1c2d59f007226405a924950b2c2090393527e06f0692a84e6463e33915a070df61a9070b8f30a624d5630ddd39290eac117e5d440577d1edd48510195b9d12f0
 DIST libcap-2.27.tar.xz 67780 BLAKE2B 7b58d7afdd90281771a302cd9554f067b9e3636b0c052935973d8a0d890490c3933b3513874b788a8c10e37ab5ad9cfa766408c9629b7c8562cb17bfdef87747 SHA512 e32335fd3e0d1564574acc73df7030b5b0fd98875217bffabd76f2765f1a7a6f1369f03df2ee22a1782776838784e342378c10613ea1163d53ae5055ab6a62b6
 DIST libcap-2.28.tar.xz 94244 BLAKE2B 9416ca78da0b985c25682746b5f5d052835d29ed40e2ffb2f70e3e59753423c91176a41f7d32b28d75800ccfccc5ed446050985a44471f0d0cc4cc9e0ef69661 SHA512 e693ac97483f575bb8a3f4d50262082e6d0d4906f2df48a4f52db4dde21014fcdc683d40712294c7c59d1be21740276bd20b486afee53815dc49e57a9938c5eb
+DIST libcap-2.29.tar.xz 97432 BLAKE2B 5e6de66350e79228b02b00737ce6e4be0982b88cb5e68cf89d33e46191f3444db5139b3fd241ec574204823d6c8a4862d1ea5a34845cff8d6789483cf5dd18fa SHA512 400a6883037bbc1f00847e2fcfb940d733784adec857969069972a3d5120dde6b554326ba6dd652670d854308433c66147944dda8b8b344ca249cef73ea866ef
diff --git a/sys-libs/libcap/files/libcap-2.29-build-system-fixes.patch b/sys-libs/libcap/files/libcap-2.29-build-system-fixes.patch
new file mode 100644 (file)
index 0000000..910163c
--- /dev/null
@@ -0,0 +1,200 @@
+From 449b6cb6226086c136dd108d11471d99692812b7 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
+Forward ported from libcap-2.25 to libcap-2.28
+Forward ported from libcap-2.28 to libcap-2.29
+
+Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
+---
+ Make.Rules       | 27 +++++++++++++++------------
+ libcap/Makefile  |  7 ++++---
+ pam_cap/Makefile |  8 +++++---
+ progs/Makefile   |  2 +-
+ tests/Makefile   |  8 +++++---
+ 5 files changed, 30 insertions(+), 22 deletions(-)
+
+diff --git a/Make.Rules b/Make.Rules
+index e7641e7..32c57df 100644
+--- a/Make.Rules
++++ b/Make.Rules
+@@ -47,35 +47,38 @@ MINOR=29
+ # 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
+ LIBCAPLIB := -L$(topdir)/libcap -lcap
+ LIBPSXLIB := -L$(topdir)/libcap -lpsx -lpthread
+ BUILD_GPERF := $(shell which gperf >/dev/null 2>/dev/null && echo yes)
+-SYSTEM_HEADERS = /usr/include
++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)
+-GOLANG := $(shell if [ -n "$(shell go version 2>/dev/null)" ]; then echo yes ; else echo no ; fi)
++GOLANG ?= $(shell if [ -n "$(shell go version 2>/dev/null)" ]; then echo yes ; else echo no ; fi)
+ ifeq ($(GOLANG),yes)
+ GOROOT := $(shell go env GOROOT)
+ GOCGO := $(shell if [ "$(shell go env CGO_ENABLED)" = 1 ]; then echo yes ; else echo no ; fi)
+diff --git a/libcap/Makefile b/libcap/Makefile
+index 949cfad..a7f80ce 100644
+--- a/libcap/Makefile
++++ b/libcap/Makefile
+@@ -21,6 +21,7 @@ PSXOBJS=$(addsuffix .o, $(PSXFILES))
+ MAJLIBNAME=$(LIBNAME).$(VERSION)
+ MINLIBNAME=$(MAJLIBNAME).$(MINOR)
+ GPERF_OUTPUT = _caps_output.gperf
++CFLAGS += -fPIC
+ all: $(MINLIBNAME) $(STACAPLIBNAME) libcap.pc $(STAPSXLIBNAME)
+@@ -39,7 +40,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
+@@ -66,10 +67,10 @@ $(MINLIBNAME): $(CAPOBJS)
+       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 56604fd..2da4674 100644
+--- a/pam_cap/Makefile
++++ b/pam_cap/Makefile
+@@ -3,6 +3,8 @@
+ topdir=$(shell pwd)/..
+ include ../Make.Rules
++CFLAGS += -fPIC
++
+ all: pam_cap.so
+       $(MAKE) testlink
+@@ -16,16 +18,16 @@ install: all
+ # written (and you know why it fails), email me and explain why. Thanks!
+ pam_cap.so: pam_cap.o
+-      $(LD) -o pam_cap.so $< $(LIBCAPLIB) $(LDFLAGS)
++      $(LD) $(CFLAGS) -o pam_cap.so $< $(LIBCAPLIB) $(LDFLAGS)
+ pam_cap.o: pam_cap.c
+-      $(CC) $(CFLAGS) $(IPATH) -c $< -o $@
++      $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+ test_pam_cap: test_pam_cap.c pam_cap.c
+       $(CC) $(CFLAGS) $(IPATH) -o $@ test_pam_cap.c $(LIBCAPLIB) $(LDFLAGS) --static
+ testlink: test.c pam_cap.o
+-      $(CC) $(CFLAGS) -o $@ $+ -lpam -ldl $(LIBCAPLIB) $(LDFLAGS)
++      $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $+ -lpam -ldl $(LIBCAPLIB) $(LDFLAGS)
+ test: pam_cap.so
+       make testlink
+diff --git a/progs/Makefile b/progs/Makefile
+index 4c24f16..a3bbbd4 100644
+--- a/progs/Makefile
++++ b/progs/Makefile
+@@ -23,7 +23,7 @@ $(BUILD): %: %.o $(DEPS)
+       $(CC) $(CFLAGS) -o $@ $< $(LIBCAPLIB) $(LDFLAGS)
+ %.o: %.c $(INCS)
+-      $(CC) $(IPATH) $(CFLAGS) -c $< -o $@
++      $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
+ install: all
+       mkdir -p -m 0755 $(FAKEROOT)$(SBINDIR)
+diff --git a/tests/Makefile b/tests/Makefile
+index 95e4ca6..dcb89ae 100644
+--- a/tests/Makefile
++++ b/tests/Makefile
+@@ -16,6 +16,8 @@ test: run_psx_test run_libcap_psx_test
+ sudotest: test
++CFLAGS += -fPIC
++
+ install: all
+ run_psx_test: psx_test psx_test_wrap
+@@ -23,16 +25,16 @@ run_psx_test: psx_test psx_test_wrap
+       ./psx_test_wrap
+ psx_test: psx_test.c $(DEPS)
+-      $(CC) $(CFLAGS) $(IPATH) -DNOWRAP $< -o $@ $(LIBPSXLIB)
++      $(CC) $(CFLAGS) $(CPPFLAGS) -DNOWRAP $< -o $@ $(LIBPSXLIB)
+ psx_test_wrap: psx_test.c $(DEPS)
+-      $(CC) $(CFLAGS) $(IPATH) $< -o $@ $(LIBPSXLIB) -Wl,-wrap,pthread_create
++      $(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@ $(LIBPSXLIB) -Wl,-wrap,pthread_create
+ run_libcap_psx_test: libcap_psx_test
+       ./libcap_psx_test
+ libcap_psx_test: libcap_psx_test.c $(DEPS)
+-      $(CC) $(CFLAGS) $(IPATH) $< -o $@ $(LIBCAPLIB) $(LIBPSXLIB) -Wl,-wrap,pthread_create --static
++      $(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@ $(LIBCAPLIB) $(LIBPSXLIB) -Wl,-wrap,pthread_create --static
+ clean:
+       rm -f psx_test psx_test_wrap libcap_psx_test
+-- 
+2.24.1
+
diff --git a/sys-libs/libcap/libcap-2.29.ebuild b/sys-libs/libcap/libcap-2.29.ebuild
new file mode 100644 (file)
index 0000000..567940f
--- /dev/null
@@ -0,0 +1,82 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit multilib multilib-minimal toolchain-funcs pam usr-ldscript
+
+DESCRIPTION="POSIX 1003.1e capabilities"
+HOMEPAGE="http://www.friedhoff.org/posixfilecaps.html"
+SRC_URI="https://www.kernel.org/pub/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 ~riscv ~s390 ~sh ~sparc ~x86 ~amd64-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? ( sys-libs/pam[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+       sys-kernel/linux-headers"
+
+# Requires test suite being run as root (via sudo)
+RESTRICT="test"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-2.29-build-system-fixes.patch
+       "${FILESDIR}"/${PN}-2.28-no_perl.patch
+       "${FILESDIR}"/${PN}-2.25-ignore-RAISE_SETFCAP-install-failures.patch
+       "${FILESDIR}"/${PN}-2.21-include.patch
+)
+
+src_prepare() {
+       default
+       multilib_copy_sources
+}
+
+run_emake() {
+       local args=(
+               exec_prefix="${EPREFIX}"
+               lib_prefix="${EPREFIX}/usr"
+               lib="$(get_libdir)"
+               prefix="${EPREFIX}/usr"
+               PAM_CAP="$(usex pam yes no)"
+               DYNAMIC=yes
+               GOLANG=no
+       )
+       emake "${args[@]}" "$@"
+}
+
+multilib_src_compile() {
+       tc-export AR CC RANLIB
+       local BUILD_CC
+       tc-export_build_env BUILD_CC
+
+       run_emake
+}
+
+multilib_src_install() {
+       # no configure, needs explicit install line #444724#c3
+       run_emake DESTDIR="${D}" install
+
+       gen_usr_ldscript -a cap
+       if ! use static-libs ; then
+               rm "${ED}"/usr/$(get_libdir)/lib{cap,psx}.a || die
+       fi
+
+       if [[ -d "${ED}"/usr/$(get_libdir)/security ]] ; then
+               rm -r "${ED}"/usr/$(get_libdir)/security || die
+       fi
+
+       if 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
+}