ypbind-mt: new package
PATCH v3 1/1 ypbind-mt: new package
From: Jonathan Ben Avraham <[email protected]>
This patch adds the ypbind-mt package that contains a multithreaded ypbind daemon for Linux. It uses threads for better response and supports the ypbind protocols version 1, 2 and 3. ypbind finds the server for a given NIS domain and stores information about it in a binding file on the local host.
---
This patch is a complete rework of the previous patches submitted by the author for the ypbind-mt package in December 2015. The main difference between this version and the previous version is the dependency on a glibc toolchain and the Kconfig comment to this effect.
Performed menuconfig UI testing and build testing for absolute minimal configurations using the following toolchains:
- br-arm-basic-2015.11-rc1
- br-arm-full-2015.11-rc1
- br-arm-cortex-a9-musl-2015.11-rc1
- br-arm11-full-nothread-2015.11-rc1
- br-arm-full-static-2015.11-rc1
- ia32-2012.09-62-i686-pc-linux-gnu-i386-linux
- crosstool-ng GCC 5.1 arm-mxs-linux-gnueabihf
---
--- package/Config.in | 2 +- .../ypbind-mt/0001-Remove_man_dir_from_build.patch | 16 ++++ package/ypbind-mt/Config.in | 17 ++++ package/ypbind-mt/S70ypbind | 99 ++++++++++++++++++++ package/ypbind-mt/ypbind-mt.mk | 21 +++++ 5 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 package/ypbind-mt/0001-Remove_man_dir_from_build.patch create mode 100644 package/ypbind-mt/Config.in create mode 100755 package/ypbind-mt/S70ypbind create mode 100644 package/ypbind-mt/ypbind-mt.mk
package/Config.in +1 -0
@@ -1476,7 +1476,7 @@ endif source "package/xinetd/Config.in" source "package/xl2tp/Config.in" source "package/xtables-addons/Config.in" + source "package/ypbind-mt/Config.in" source "package/znc/Config.in" endmenu
package/ypbind-mt/0001-Remove_man_dir_from_build.patch new file +16 -0
@@ -0,0 +1,16 @@ +Remove the man directory from the build in order to avoid trying to build the +commented targets ypbind.8 and ypconf.5 + +Signed-off-by: Jonathan Ben Avraham <[email protected]> + +--- a/Makefile.am 2014-12-04 16:27:18.000000000 +0200 ++++ b/Makefile.am 2015-12-16 15:00:21.950050679 +0200 +@@ -5,7 +5,7 @@ + # + AUTOMAKE_OPTIONS = 1.6 gnits dist-bzip2 + # +-SUBDIRS = lib src man po ++SUBDIRS = lib src po + + CLEANFILES = *~ +
package/ypbind-mt/Config.in new file +17 -0
@@ -0,0 +1,17 @@ +config BR2_PACKAGE_YPBIND_MT + bool "ypbind-mt" + depends on BR2_TOOLCHAIN_USES_GLIBC # rpcsvc/nis.h + select BR2_PACKAGE_YP_TOOLS + select BR2_PACKAGE_RPCBIND # runtime + help + The ypbind-mt package contains a multithreaded ypbind daemon + for Linux. It uses threads for better response and supports + the ypbind protocols version 1, 2 and 3. + + Note: You need to select package "linux-pam" for NIS + authentication. + + https://github.com/thkukuk/ypbind-mt + +comment "ypbind-mt needs an (e)glibc toolchain with rpcsvc/nis.h" + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL
package/ypbind-mt/S70ypbind new file +99 -0
99 lines not on this page · raw message
package/ypbind-mt/ypbind-mt.mk new file +21 -0
@@ -0,0 +1,21 @@ +################################################################################ +# +# ypbind-mt +# +################################################################################ + +YPBIND_MT_VERSION = ypbind-mt-2_2 +YPBIND_MT_SITE = $(call github,thkukuk,ypbind-mt,$(YPBIND_MT_VERSION)) +YPBIND_MT_LICENSE = GPLv2 +YPBIND_MT_LICENSE_FILES = COPYING +YPBIND_MT_AUTORECONF = YES +YPBIND_MT_DEPENDENCIES = host-pkgconf libtirpc yp-tools +YPBIND_MT_CONF_ENV = \ + PKG_CONFIG_SYSROOT_DIR="$(TARGET_DIR)" \ + PKG_CONFIG_PATH="$(TARGET_DIR)/usr/lib/pkgconfig" + +define YPBIND_MT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/ypbind-mt/S70ypbind $(TARGET_DIR)/etc/init.d/S70ypbind +endef + +$(eval $(autotools-package))
Signature · 1 line
1.7.9.5
PATCH v3 1/1 ypbind-mt: new package
Hi Jonathan,
Quoted 8 lines · Jonathan Ben-Avraham
From: Jonathan Ben Avraham <[email protected]>
This patch adds the ypbind-mt package that contains a multithreaded ypbind daemon for Linux. It uses threads for better response and supports the ypbind protocols version 1, 2 and 3. ypbind finds the server for a given NIS domain and stores information about it in a binding file on the local host.
You Sob should go here, before the ---
package/Config.in endif
Quoted 36 lines
---
This patch is a complete rework of the previous patches submitted by the author for the ypbind-mt package in December 2015. The main difference between this version and the previous version is the dependency on a glibc toolchain and theKconfigcomment to this effect.Performed menuconfig UI testing and build testing for absolute minimal configurations using the following toolchains:
- br-arm-basic-2015.11-rc1
- br-arm-full-2015.11-rc1
- br-arm-cortex-a9-musl-2015.11-rc1
- br-arm11-full-nothread-2015.11-rc1
- br-arm-full-static-2015.11-rc1
- ia32-2012.09-62-i686-pc-linux-gnu-i386-linux
- crosstool-ng GCC 5.1 arm-mxs-linux-gnueabihf
---Signed-off-by Jonathan Ben Avraham <[email protected]>--- package/Config.in | 2 +- .../ypbind-mt/0001-Remove_man_dir_from_build.patch | 16 ++++ package/ypbind-mt/Config.in | 17 ++++ package/ypbind-mt/S70ypbind | 99 ++++++++++++++++++++ package/ypbind-mt/ypbind-mt.mk | 21 +++++ 5 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 package/ypbind-mt/0001-Remove_man_dir_from_build.patch create mode 100644 package/ypbind-mt/Config.in create mode 100755 package/ypbind-mt/S70ypbind create mode 100644 package/ypbind-mt/ypbind-mt.mkpackage/Config.in +0
-0@@ -1476,7 +1476,7 @@ endif
There's something funky about this patch fragment (i.e. it's wrong). Did you
manually edit it?
package/Config.in endif · line 1479
Quoted 4 lines
package/Config.in +1
-0source "package/xinetd/Config.in" source "package/xl2tp/Config.in" source "package/xtables-addons/Config.in" + source "package/ypbind-mt/Config.in"
This conflicts with your own yp-tools submission from a few hours before. You
should put these patches in a single series to avoid that kind of problem.
Quoted 32 lines
package/Config.in +0
-0source "package/znc/Config.in" endmenupackage/ypbind-mt/0001-Remove_man_dir_from_build.patch new file +16
-0@@ -0,0 +1,16 @@ +Remove the man directory from the build in order to avoid trying to build the +commented targets ypbind.8 and ypconf.5 + +Signed-off-by: Jonathan Ben Avraham <[email protected]> + +--- a/Makefile.am 2014-12-04 16:27:18.000000000 +0200 ++++ b/Makefile.am 2015-12-16 15:00:21.950050679 +0200 +@@ -5,7 +5,7 @@ + # + AUTOMAKE_OPTIONS = 1.6 gnits dist-bzip2 + # +-SUBDIRS = lib src man po ++SUBDIRS = lib src po + + CLEANFILES = *~ +package/ypbind-mt/Config.in new file +0
-0
package/ypbind-mt/Config.in line 4
Quoted 4 lines
package/ypbind-mt/Config.in new file +4
-0@@ -0,0 +1,17 @@ +config BR2_PACKAGE_YPBIND_MT + bool "ypbind-mt" + depends on BR2_TOOLCHAIN_USES_GLIBC # rpcsvc/nis.h + select BR2_PACKAGE_YP_TOOLS
In this case it should _definitely_ be in a single series with yp-tools.
package/ypbind-mt/Config.in line 14
Quoted 10 lines
package/ypbind-mt/Config.in new file +10
-0+ select BR2_PACKAGE_RPCBIND # runtime + help + The ypbind-mt package contains a multithreaded ypbind daemon + for Linux. It uses threads for better response and supports + the ypbind protocols version 1, 2 and 3. + + Note: You need to select package "linux-pam" for NIS + authentication. + + https://github.com/thkukuk/ypbind-mt
Isn't this a better URL?
package/ypbind-mt/Config.in line 17
Quoted 3 lines
package/ypbind-mt/Config.in new file +3
-0+ +comment "ypbind-mt needs an (e)glibc toolchain with rpcsvc/nis.h" + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL
This should be exactly the same condition as the one in the main package
symbol, i.e. !BR2_TOOLCHAIN_USES_GLIBC. That's needed to avoid problems when/if we add another libc implementation in the future.
Quoted 6 lines
package/ypbind-mt/S70ypbind new file +0
-0
package/ypbind-mt/S70ypbind line 10
Quoted 10 lines
package/ypbind-mt/S70ypbind new file +10
-0@@ -0,0 +1,99 @@ +#! /bin/sh +# Copyright (c) 2004 Author: Thorsten Kukuk <[email protected]> +# +# /etc/init.d/ypbind +# +# and symbolic its link +# +# /usr/sbin/rcypbind +# +# System startup script for the ypbind daemon
We tend to prefer either an init script that is distributed with the package,
or a buildroot-specific init script. The latter should be a lot simpler, see for instance package/inadyn/S70inadyn.
Quoted 15 lines
package/ypbind-mt/S70ypbind new file +15
-0+# +### BEGIN INIT INFO +# Provides: ypbind +# Required-Start: $remote_fs $portmap +# Should-Start: ypserv slpd +# Required-Stop: portmap +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Short-Description: Start ypbind (necessary for a NIS client) +# Description: ypbind finds the server for NIS domains and maintains +# the NIS binding information. +### END INIT INFO + +YPBIND_BIN=/usr/sbin/ypbind +pidfile=/var/run/ypbind.pid
package/ypbind-mt/S70ypbind line 35
Quoted 10 lines
package/ypbind-mt/S70ypbind new file +10
-0+ +[ -f /etc/default/ypbind ] && . /etc/default/ypbind + +case "$1" in + start) + echo -n "Starting ypbind" + ## If the domainname is not set, skip starting of ypbind + ## and return with "program not configured" + /usr/bin/ypdomainname &> /dev/null + if [ $? -ne 0 -o -z "`/bin/ypdomainname 2>/dev/null`" ]; then
I guess ypdomainname is part of this package? Then it is either installed in
/bin or in /usr/bin, so the script should use just that.
package/ypbind-mt/S70ypbind line 37
Quoted 2 lines
package/ypbind-mt/S70ypbind new file +2
-0+ if [ -f /etc/defaultdomain ]; then + XDOMAINNAME=`cat /etc/defaultdomain`
How standard is /etc/defaultdomain? Otherwise the default domain should just be
set in the /etc/default file.
package/ypbind-mt/S70ypbind line 47
Quoted 10 lines
package/ypbind-mt/S70ypbind new file +10
-0+ /usr/bin/ypdomainname "$XDOMAINNAME" + fi + /usr/bin/ypdomainname &> /dev/null + if [ $? -ne 0 -o -z "`/usr/bin/ypdomainname 2>/dev/null`" ]; then + # Tell the user this has skipped + echo -n " . . . . . . . . . . No domainname set" + # service is not configured + exit 1 + fi + fi
This entire logic (and the indentation) is too convoluted. Can't it be done
simpler?
package/ypbind-mt/S70ypbind line 54
Quoted 7 lines
package/ypbind-mt/S70ypbind new file +7
-0+ + ## If we don't have a /etc/yp.conf file, skip starting of + ## ypbind and return with "program not configured" + ## if you add the -broadcast Option later, comment this out. + if [ ! -f /etc/yp.conf -a "$YPBIND_BROADCAST" != "yes" ] ; then + # Tell the user this has skipped + echo -n " . . . . . . . . . . ${attn}/etc/yp.conf not found${norm}"
We don't have ${attn} and ${norm}.
package/ypbind-mt/S70ypbind line 63
Quoted 9 lines
package/ypbind-mt/S70ypbind new file +9
-0+ # service is not configured + exit 1 + fi + + # evaluate the OPTIONS for ypbind-mt + OPTIONS="" + test "$YPBIND_LOCAL_ONLY" = "yes" && OPTIONS="-local-only $OPTIONS" + test "$YPBIND_BROADCAST" = "yes" && OPTIONS="-broadcast $OPTIONS" + test "$YPBIND_BROKEN_SERVER" = "yes" && OPTIONS="-broken-server $OPTIONS"
The /etc/default file should just contain the _YPBIND_OPTIONS variable.
Quoted 16 lines
package/ypbind-mt/S70ypbind new file +16
-0+ + start-stop-daemon --start --quiet --pidfile $pidfile --exec $YPBIND_BIN -- $YPBIND_OPTIONS $OPTIONS + if [ $? -eq 0 ]; then + notfound=1 + for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do + ypwhich &>/dev/null && { notfound=0 ; break; }; + echo -n " ." + sleep 1; + done + if [ $notfound -eq 1 ]; then + echo -n " ${warn}No NIS server found${norm}"; + fi + else + exit 1 + fi + ;;
package/ypbind-mt/S70ypbind line 89
Quoted 10 lines
package/ypbind-mt/S70ypbind new file +10
-0+ stop) + echo -n "Shutting down ypbind" + start-stop-daemon --stop --quiet --pidfile $pidfile + # Remove static data, else glibc will continue to use NIS + rm -f /var/yp/binding/* /var/run/ypbind.pid + ;; + restart) + $0 stop + sleep 1 + $0 start
To handle this, we generally define start() and stop() functions and call them
here.
package/ypbind-mt/S70ypbind line 96
Quoted 7 lines
package/ypbind-mt/S70ypbind new file +7
-0+ ;; + reload | force-reload) + echo -n "Reload service ypbind" + start-stop-daemon --stop --quiet --signal 1 --pidfile $pidfile + ;; + *) + echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
try-restart and probe are not defined.
Quoted 9 lines
package/ypbind-mt/S70ypbind new file +3
-0+ exit 1 + ;; +esacpackage/ypbind-mt/ypbind-mt.mk new file +0
-0
package/ypbind-mt/ypbind-mt.mk line 8
Quoted 8 lines
package/ypbind-mt/ypbind-mt.mk new file +8
-0@@ -0,0 +1,21 @@ +################################################################################ +# +# ypbind-mt +# +################################################################################ + +YPBIND_MT_VERSION = ypbind-mt-2_2 +YPBIND_MT_SITE = $(call github,thkukuk,ypbind-mt,$(YPBIND_MT_VERSION))
Anything wrong with the following URL?
http://www.linux-nis.org/download/ypbind/ypbind-mt-2.2.tar.bz2
package/ypbind-mt/ypbind-mt.mk line 9
Quoted 1 line
package/ypbind-mt/ypbind-mt.mk new file +1
-0+YPBIND_MT_LICENSE = GPLv2
Verified that most files are indeed v2 only.
package/ypbind-mt/ypbind-mt.mk line 12
Quoted 3 lines
package/ypbind-mt/ypbind-mt.mk new file +3
-0+YPBIND_MT_LICENSE_FILES = COPYING +YPBIND_MT_AUTORECONF = YES +YPBIND_MT_DEPENDENCIES = host-pkgconf libtirpc yp-tools
libtirpc is not selected in Config.in. However, you typically only need it if
!BR2_TOOLCHAIN_HAS_NATIVE_RPC - cfr. libnfs for example.
package/ypbind-mt/ypbind-mt.mk line 15
Quoted 3 lines
package/ypbind-mt/ypbind-mt.mk new file +3
-0+YPBIND_MT_CONF_ENV = \ + PKG_CONFIG_SYSROOT_DIR="$(TARGET_DIR)" \ + PKG_CONFIG_PATH="$(TARGET_DIR)/usr/lib/pkgconfig"
This shouldn't be needed and is wrong. The .pc files are in $(STAGING_DIR), the
pkg-config wrapper scripts sets the paths correctly, and everything is passed through TARGET_CONFIGURE_OPTS.
package/ypbind-mt/ypbind-mt.mk line 18
Quoted 3 lines
package/ypbind-mt/ypbind-mt.mk new file +3
-0+ +define YPBIND_MT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/ypbind-mt/S70ypbind $(TARGET_DIR)/etc/init.d/S70ypbind
Instead of package/ypbind-mt, use $(YPBIND_MT_PKGDIR).
Regards,
Arnout
Quoted 4 lines
package/ypbind-mt/ypbind-mt.mk new file +3
-0+endef + +$(eval $(autotools-package))
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH v3 1/1 ypbind-mt: new package
Quoted 10 lines · Arnout Vandecappelle
Date: Tue, 12 Jan 2016 23:10:13 +0100
From: Arnout Vandecappelle <[email protected]>
To: Jonathan Ben-Avraham <[email protected]>, buildroot at buildroot.org
Subject: Re: [Buildroot] [PATCH 1/1 v3] ypbind-mt: new packageHi Jonathan,
Quoted 2 lines · Jonathan Ben-Avraham
From: Jonathan Ben Avraham <[email protected]>
Quoted 8 lines
Quoted 6 lines
This patch adds the ypbind-mt package that contains a multithreaded ypbind daemon for Linux. It uses threads for better response and supports the ypbind protocols version 1, 2 and 3. ypbind finds the server for a given NIS domain and stores information about it in a binding file on the local host.
You Sob should go here, before the ---
Hi Arnout,
I do not understand this comment. Please provide further explanation.
Quoted 6 lines
Quoted 6 lines
---
This patch is a complete rework of the previous patches submitted by the author for the ypbind-mt package in December 2015. The main difference between this version and the previous version is the dependency on a glibc toolchain and theKconfigcomment to this effect.
[snip]
- yba
Signature · 3 lines
9590 8E58 D30D 1660 C349 673D B205 4FC4 B8F5 B7F9 ~. .~ Tk Open Systems
=}-------- Jonathan Ben-Avraham ("yba") ----------ooO--U--Ooo------------{=
mailto:yba at tkos.co.il tel:+972.52.486.3386 http://tkos.co.il skype:benavrhmPATCH v3 1/1 ypbind-mt: new package
Jonathan,
Quoted 11 lines · Jonathan Ben Avraham
Quoted 8 lines
Quoted 6 lines
This patch adds the ypbind-mt package that contains a multithreaded ypbind daemon for Linux. It uses threads for better response and supports the ypbind protocols version 1, 2 and 3. ypbind finds the server for a given NIS domain and stores information about it in a binding file on the local host.
You Sob should go here, before the ---
Hi Arnout,
I do not understand this comment. Please provide further explanation.
A Git formatted patch looks like this:
=====================================================================
foo: some short description
Here is some longer description that explains what I'm doing, it spans multiple lines.
And even multiple paragraphs.
---
This is the v2 of the patch, which compared to v1 has such and such changes.
=====================================================================
When Git will apply this patch, it will discard everything that is after the "---" line. So:
* We need the SoB line to be before the "---" sign, because we want the SoB line to be preserved in the commit log.
* We want all informations that should be kept in the Git history before the "---" line.
* We want all informations that should *NOT* be kept in the Git history *after* the "---" line.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v3 1/1 ypbind-mt: new package
In reply to Arnout VandecappelleQuoted 15 lines · Arnout Vandecappelle
Date: Tue, 12 Jan 2016 23:10:13 +0100
From: Arnout Vandecappelle <[email protected]>
To: Jonathan Ben-Avraham <[email protected]>, buildroot at buildroot.org
Subject: Re: [Buildroot] [PATCH 1/1 v3] ypbind-mt: new packageHi Jonathan,
Quoted 7 lines · Jonathan Ben-Avraham
From: Jonathan Ben Avraham <[email protected]>
This patch adds the ypbind-mt package that contains a multithreaded ypbind daemon for Linux. It uses threads for better response and supports the ypbind protocols version 1, 2 and 3. ypbind finds the server for a given NIS domain and stores information about it in a binding file on the local host.
[snip]
Quoted 9 lines
package/Config.in endif
Quoted 5 lines
package/Config.in +0
-0@@ -1476,7 +1476,7 @@ endifThere's something funky about this patch fragment (i.e. it's wrong). Did you manually edit it?
Quoted 11 lines
package/Config.in endif · line 1479
Quoted 4 lines
package/Config.in +1
-0source "package/xinetd/Config.in" source "package/xl2tp/Config.in" source "package/xtables-addons/Config.in" + source "package/ypbind-mt/Config.in"This conflicts with your own yp-tools submission from a few hours before. You should put these patches in a single series to avoid that kind of problem.
Quoted 3 lines
package/Config.in +0
-0source "package/znc/Config.in" endmenu
[snip]
Hi Arnout,
TP explicitly asked to submit yp-tools and ypbind-mt in separate submissions.
It is not clear to me how to submit a patch that depends on another pending patch having been applied. The possibilities that I see are:
1. Patch against the current origin and ignore the fact that there is a dependency on the yp-tools patch having been applied
2. Provide the same line added by the patch for yp-tools as part of this patch. That is, the ypbind-mt patch would add two lines to package/Config.in.
3. Provide a patch for ypbind-mt that assumes that the patch for yp-tools has already been applied to the origin.
What is the correct decision?
- yba
Signature · 3 lines
9590 8E58 D30D 1660 C349 673D B205 4FC4 B8F5 B7F9 ~. .~ Tk Open Systems
=}-------- Jonathan Ben-Avraham ("yba") ----------ooO--U--Ooo------------{=
mailto:yba at tkos.co.il tel:+972.52.486.3386 http://tkos.co.il skype:benavrhmPATCH v3 1/1 ypbind-mt: new package
Dear Jonathan Ben Avraham,
Quoted 3 lines · Jonathan Ben Avraham
Hi Arnout,
TP explicitly asked to submit yp-tools and ypbind-mt in separate submissions.
No, I said they should be separate *patches*.
You seem to do be aware of the concept of a patch series. See for example
http://lists.busybox.net/pipermail/buildroot/2016-January/149238.html
and the following e-mails. It is a set of 29 *separate* patches, but grouped together in a series so that we clearly understand that PATCH 2 needs PATCH 1, that PATCH 3 needs PATCH 2 and so on.
Quoted 6 lines
It is not clear to me how to submit a patch that depends on another pending patch having been applied. The possibilities that I see are:
1. Patch against the current origin and ignore the fact that there is a dependency on the yp-tools patch having been applied
Quoted 8 lines
2. Provide the same line added by the patch for yp-tools as part of this patch. That is, the ypbind-mt patch would add two lines to package/Config.in.
3. Provide a patch for ypbind-mt that assumes that the patch for yp-tools has already been applied to the origin.
What is the correct decision?
Send a patch series. To do so, make N commits in your Git branch. Then do:
$ git format-patch --cover master
It will generate for you N+1 .patch files, the first one being the cover letter for the series, the remaining ones being the patches themselves, one per commit in your branch.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com