Message ID | 20220828174356.3074391-1-ptsneves@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v3,1/2] ntirpc: Add ntirpc recipe | expand |
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
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
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 --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"
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