diff mbox series

[v3,1/2] ntirpc: Add ntirpc recipe

Message ID 20220828174356.3074391-1-ptsneves@gmail.com
State New
Headers show
Series [v3,1/2] ntirpc: Add ntirpc recipe | expand

Commit Message

Paulo Neves Aug. 28, 2022, 5:43 p.m. UTC
ntirpc is an actively maintained rpc implementation. We cannot completely
remove libtirpc due to arising circular dependencies where ntirpc
depends on libnsl2, which in turn depends on an RPC implementation.

libtirpc and ntirpc are not mutually exclusive.

Signed-off-by: Paulo Neves <ptsneves@gmail.com>
---
 meta/recipes-extended/ntirpc/ntirpc_4.0.bb    | 36 +++++++++++++++++++
 meta/recipes-extended/quota/quota_4.06.bb     |  2 +-
 .../recipes-extended/rpcbind/rpcbind_1.2.6.bb |  2 +-
 .../watchdog/watchdog_5.16.bb                 |  2 +-
 .../xorg-xserver/xserver-xorg.inc             |  2 +-
 .../recipes-support/liburcu/liburcu_0.13.1.bb |  1 +
 6 files changed, 41 insertions(+), 4 deletions(-)
 create mode 100644 meta/recipes-extended/ntirpc/ntirpc_4.0.bb

Comments

Alexander Kanavin Aug. 28, 2022, 7:07 p.m. UTC | #1
On Sun, 28 Aug 2022 at 19:44, Paulo Neves <ptsneves@gmail.com> wrote:
>
> ntirpc is an actively maintained rpc implementation. We cannot completely
> remove libtirpc due to arising circular dependencies where ntirpc
> depends on libnsl2, which in turn depends on an RPC implementation.

The circular dependency issue should be filed upstream, with a link to
the ticket in the commit. It's possible upstream can suggest a way
out, or take it as a bug.

Alex
Ross Burton Sept. 15, 2022, 10:50 a.m. UTC | #2
On 28 Aug 2022, at 18:43, Paulo Neves via lists.openembedded.org <ptsneves=gmail.com@lists.openembedded.org> wrote:
> 
> ntirpc is an actively maintained rpc implementation. We cannot completely
> remove libtirpc due to arising circular dependencies where ntirpc
> depends on libnsl2, which in turn depends on an RPC implementation.

Can you split this into a series of commits?  Extend liburcu, add ntirpc, update the recipes to use ntirpc.

Ross
Paulo Neves Sept. 15, 2022, 11:18 a.m. UTC | #3
libntirpc is not compatible with libtirpc. Some work would make it so, 
but it is not a trivial change, i tried it :)

Not only the API is different, the pkgconfig presents itself as ntirpc 
whereas most dependencies of litbtirpc specifically try to detect 
libtirpc. A good summary of the differences and the feasibility is in 
this page [1].

I can break the extending of liburcu into another commit no problem.

I was able to break the circular dependency as well, with a patch that 
is already for review upstream.

[1] https://bugs.launchpad.net/ubuntu/+source/nfs-ganesha/+bug/1843403

On 9/15/22 12:50, Ross Burton wrote:
> On 28 Aug 2022, at 18:43, Paulo Neves via lists.openembedded.org <ptsneves=gmail.com@lists.openembedded.org> wrote:
>> ntirpc is an actively maintained rpc implementation. We cannot completely
>> remove libtirpc due to arising circular dependencies where ntirpc
>> depends on libnsl2, which in turn depends on an RPC implementation.
> Can you split this into a series of commits?  Extend liburcu, add ntirpc, update the recipes to use ntirpc.
>
> Ross
diff mbox series

Patch

diff --git a/meta/recipes-extended/ntirpc/ntirpc_4.0.bb b/meta/recipes-extended/ntirpc/ntirpc_4.0.bb
new file mode 100644
index 0000000000..eff9d36069
--- /dev/null
+++ b/meta/recipes-extended/ntirpc/ntirpc_4.0.bb
@@ -0,0 +1,36 @@ 
+SUMMARY = "Transport-Independent RPC library (nfs-ganesha fork)"
+DESCRIPTION = "ntirpc is a port of Suns Transport-Independent RPC library to Linux"
+SECTION = "libs/network"
+HOMEPAGE = "https://github.com/nfs-ganesha/ntirpc"
+BUGTRACKER = "https://github.com/nfs-ganesha/ntirpc/issues"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=f835cce8852481e4b2bbbdd23b5e47f3 \
+    file://src/netname.c;beginline=1;endline=27;md5=f8a8cd2cb25ac5aa16767364fb0e3c24"
+
+SRC_URI = "https://download.nfs-ganesha.org/4/${PV}/ntirpc-${PV}.tar.gz"
+SRC_URI[md5sum] = "17b0baada54936dcde80eba27bb6d88d"
+SRC_URI[sha256sum] = "6a7921cd48d02077b394a02be42bf4f9b4678d4ebfd86a7ae4385bbcdce55462"
+
+DEPENDS = "liburcu libnsl2"
+
+inherit cmake pkgconfig
+
+PACKAGECONFIG[gss] = "-DUSE_GSS=true,-DUSE_GSS=false,krb5"
+PACKAGECONFIG[rdma] = "-DUSE_RPC_RDMA=true,-DUSE_RPC_RDMA=false,rdma-core"
+PACKAGECONFIG[winbind] = "-D_MSPAC_SUPPORT=true,-D_MSPAC_SUPPORT=false,samba"
+PACKAGECONFIG[profile] = "-DUSE_PROFILE=true,-DUSE_PROFILE=false,gperftools"
+PACKAGECONFIG[lttng] = "-DUSE_LTTNG=true,-DUSE_LTTNG=false,lttng-ust lttng-tools"
+
+# Sort out the brain-dead cmake file
+# (https://github.com/nfs-ganesha/ntirpc/issues/150)
+do_install:append() {
+    if [ "${prefix}/lib64" != "${libdir}" -a -d ${D}${prefix}/lib64 ]; then
+        mv ${D}${prefix}/lib64 ${D}${libdir}
+    fi
+}
+
+BBCLASSEXTEND = "native nativesdk"
+EXTRA_OECMAKE:armv5 += '-DSYSTEM_LIBRARIES="-latomic"'
+EXTRA_OECMAKE:riscv32 += '-DSYSTEM_LIBRARIES="-latomic"'
+EXTRA_OECMAKE:riscv64 += '-DSYSTEM_LIBRARIES="-latomic"'
+EXTRA_OECMAKE:powerpc += '-DSYSTEM_LIBRARIES="-latomic"'
diff --git a/meta/recipes-extended/quota/quota_4.06.bb b/meta/recipes-extended/quota/quota_4.06.bb
index 0535d14c20..304477d72b 100644
--- a/meta/recipes-extended/quota/quota_4.06.bb
+++ b/meta/recipes-extended/quota/quota_4.06.bb
@@ -30,6 +30,6 @@  PACKAGECONFIG ??= "tcp-wrappers rpc bsd"
 PACKAGECONFIG:libc-musl = "tcp-wrappers rpc"
 
 PACKAGECONFIG[tcp-wrappers] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[rpc] = "--enable-rpc,--disable-rpc,libtirpc"
+PACKAGECONFIG[rpc] = "--enable-rpc,--disable-rpc,ntirpc"
 PACKAGECONFIG[bsd] = "--enable-bsd_behaviour=yes,--enable-bsd_behaviour=no,"
 PACKAGECONFIG[ldapmail] = "--enable-ldapmail,--disable-ldapmail,openldap"
diff --git a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
index dd89726afc..e30a23909c 100644
--- a/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
+++ b/meta/recipes-extended/rpcbind/rpcbind_1.2.6.bb
@@ -4,7 +4,7 @@  DESCRIPTION = "The rpcbind utility is a server that converts RPC \
 SECTION = "console/network"
 HOMEPAGE = "http://sourceforge.net/projects/rpcbind/"
 BUGTRACKER = "http://sourceforge.net/tracker/?group_id=201237&atid=976751"
-DEPENDS = "libtirpc quota"
+DEPENDS = "ntirpc quota"
 
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b46486e4c4a416602693a711bb5bfa39 \
diff --git a/meta/recipes-extended/watchdog/watchdog_5.16.bb b/meta/recipes-extended/watchdog/watchdog_5.16.bb
index 26fcc10487..5f5fd4dc87 100644
--- a/meta/recipes-extended/watchdog/watchdog_5.16.bb
+++ b/meta/recipes-extended/watchdog/watchdog_5.16.bb
@@ -28,7 +28,7 @@  UPSTREAM_CHECK_REGEX = "/watchdog/(?P<pver>(\d+[\.\-_]*)+)/"
 
 inherit autotools update-rc.d systemd pkgconfig
 
-DEPENDS += "libtirpc"
+DEPENDS += "ntirpc"
 CFLAGS += "-I${STAGING_INCDIR}/tirpc"
 LDFLAGS += "-ltirpc"
 
diff --git a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
index 057a1ba6ad..2085f742d6 100644
--- a/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
+++ b/meta/recipes-graphics/xorg-xserver/xserver-xorg.inc
@@ -36,7 +36,7 @@  inherit meson pkgconfig
 inherit features_check
 REQUIRED_DISTRO_FEATURES = "x11"
 
-LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess libxcvt libtirpc"
+LIB_DEPS = "pixman libxfont2 xtrans libxau libxext libxdmcp libdrm libxkbfile libpciaccess libxcvt ntirpc"
 DEPENDS = "xorgproto ${LIB_DEPS} font-util"
 
 # Split out some modules and extensions from the main package
diff --git a/meta/recipes-support/liburcu/liburcu_0.13.1.bb b/meta/recipes-support/liburcu/liburcu_0.13.1.bb
index 66763349d2..d7e831e803 100644
--- a/meta/recipes-support/liburcu/liburcu_0.13.1.bb
+++ b/meta/recipes-support/liburcu/liburcu_0.13.1.bb
@@ -22,3 +22,4 @@  CPPFLAGS:append:riscv64  = " -pthread -D_REENTRANT"
 do_install:append() {
     oe_multilib_header urcu/config.h
 }
+BBCLASSEXTEND = "native nativesdk"