libcap-ng: Fix python bindings determinism issue

(From OE-Core rev: e4ff283d8ae7f77b523a648e7c0dbbb1781008fe)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2021-02-20 14:52:25 +00:00
parent c907ea3246
commit e1767e1287
3 changed files with 72 additions and 11 deletions

View File

@@ -8,9 +8,13 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://COPYING.LIB;md5=e3eda01d9815f8d24aae2dbd89b68b06"
SRC_URI = "https://people.redhat.com/sgrubb/libcap-ng/libcap-ng-${PV}.tar.gz \
file://determinism.patch \
file://python.patch \
"
SRC_URI[sha256sum] = "52c083b77c2b0d8449dee141f9c3eba76e6d4c5ad44ef05df25891126cb85ae9"
EXTRA_OECONF_append_class-target = " --with-capability_header=${STAGING_INCDIR}/linux/capability.h"
EXTRA_OECONF_append_class-nativesdk = " --with-capability_header=${STAGING_INCDIR}/linux/capability.h"
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,59 @@
[PATCH] bindings/python: Allow hardcoded path to capability.h to be overridden
Currently the path to capability.h is hardcoded. When cross compiling
the host capabiity.h may be different to the target copy, leading
to different options being encoded in the python bindings than
expected. This causes a reproducibility issue amongst other potential
problems.
Add a configure option to optionally specify the right path to the
correct header as its probably safer/more reliable than trying to
query the compiler to get the header path.
Signed-off-by: Richard Purdie richard.purdie@linuxfoundation.org
Upstream-Status: Submitted [https://github.com/stevegrubb/libcap-ng/pull/30]
Index: libcap-ng-0.8.2/configure.ac
===================================================================
--- libcap-ng-0.8.2.orig/configure.ac
+++ libcap-ng-0.8.2/configure.ac
@@ -63,6 +63,13 @@ AC_CHECK_HEADERS(sys/vfs.h, [
AC_CHECK_HEADERS(linux/magic.h, [] [AC_MSG_WARN(linux/magic.h is required in order to verify procfs.)])
], [AC_MSG_WARN(sys/vfs.h is required in order to verify procfs.)])
+
+AC_ARG_WITH([capability_header],
+ [AS_HELP_STRING([--with-capability_header=path : path to cpapbility.h])],
+ [CAPABILITY_HEADER=$withval],
+ [CAPABILITY_HEADER=/usr/include/linux/capability.h])
+AC_SUBST(CAPABILITY_HEADER)
+
AC_C_CONST
AC_C_INLINE
AM_PROG_CC_C_O
Index: libcap-ng-0.8.2/bindings/python3/Makefile.am
===================================================================
--- libcap-ng-0.8.2.orig/bindings/python3/Makefile.am
+++ libcap-ng-0.8.2/bindings/python3/Makefile.am
@@ -41,7 +41,7 @@ nodist__capng_la_SOURCES = capng_wrap.c
capng.py capng_wrap.c: ${srcdir}/../src/capng_swig.i caps.h capng.h
swig -o capng_wrap.c ${SWIG_FLAGS} ${SWIG_INCLUDES} ${srcdir}/../src/capng_swig.i
caps.h:
- cat /usr/include/linux/capability.h | grep '^#define CAP' | grep -v '[()]' > caps.h
+ cat $(CAPABILITY_HEADER) | grep '^#define CAP' | grep -v '[()]' > caps.h
capng.h:
cat ${top_srcdir}/src/cap-ng.h | grep -v '_state' > capng.h
Index: libcap-ng-0.8.2/bindings/python/Makefile.am
===================================================================
--- libcap-ng-0.8.2.orig/bindings/python/Makefile.am
+++ libcap-ng-0.8.2/bindings/python/Makefile.am
@@ -38,7 +38,7 @@ nodist__capng_la_SOURCES = capng_wrap.c
capng.py capng_wrap.c: ${srcdir}/../src/capng_swig.i caps.h capng.h
swig -o capng_wrap.c ${SWIG_FLAGS} ${SWIG_INCLUDES} ${srcdir}/../src/capng_swig.i
caps.h:
- cat /usr/include/linux/capability.h | grep '^#define CAP' | grep -v '[()]' > caps.h
+ cat $(CAPABILITY_HEADER) | grep '^#define CAP' | grep -v '[()]' > caps.h
capng.h:
cat ${top_srcdir}/src/cap-ng.h | grep -v '_state' > capng.h

View File

@@ -13,10 +13,10 @@ Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
configure.ac | 17 ++---------------
2 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/bindings/python/Makefile.am b/bindings/python/Makefile.am
index 999b184..c8e49db 100644
--- a/bindings/python/Makefile.am
+++ b/bindings/python/Makefile.am
Index: libcap-ng-0.8.2/bindings/python/Makefile.am
===================================================================
--- libcap-ng-0.8.2.orig/bindings/python/Makefile.am
+++ libcap-ng-0.8.2/bindings/python/Makefile.am
@@ -23,7 +23,9 @@
SUBDIRS = test
CONFIG_CLEAN_FILES = *.loT *.rej *.orig
@@ -28,11 +28,11 @@ index 999b184..c8e49db 100644
SWIG_FLAGS = -python
SWIG_INCLUDES = ${AM_CPPFLAGS}
pyexec_PYTHON = capng.py
diff --git a/configure.ac b/configure.ac
index 8b46f51..2d7e00c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -141,21 +141,8 @@ fi
Index: libcap-ng-0.8.2/configure.ac
===================================================================
--- libcap-ng-0.8.2.orig/configure.ac
+++ libcap-ng-0.8.2/configure.ac
@@ -169,21 +169,8 @@ fi
# Setup Python2 with the interpreter found previously.
AM_PATH_PYTHON
@@ -56,5 +56,3 @@ index 8b46f51..2d7e00c 100644
fi
AM_CONDITIONAL(HAVE_PYTHON, test ${python_found} = "yes")
--
2.25.1