libnfsidmap: pulled in for NFSv4 support in nfs-utils

Upgraded net-libs/libnfsidmap to version 0.24 on amd64, arm, x86

Nothing depends on nfs-utils (it exists just for devs to play with).

BUG=None
TEST=`emerge-x86-generic nfs-utils` worked

Change-Id: Ia0d3101461b626a663d40af892e1004d02b2e3ad
Reviewed-on: https://gerrit.chromium.org/gerrit/26106
Reviewed-by: David James <davidjames@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Commit-Ready: Mike Frysinger <vapier@chromium.org>
This commit is contained in:
Mike Frysinger 2012-06-26 10:53:05 -04:00 committed by Gerrit
parent 7cde4ba6ed
commit 6a1c6dee79
5 changed files with 194 additions and 0 deletions

View File

@ -0,0 +1,13 @@
DEFINED_PHASES=configure install prepare
DEPEND=ldap? ( net-nds/openldap ) || ( >=sys-devel/automake-1.11.1:1.11 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
DESCRIPTION=NFSv4 ID <-> name mapping library
EAPI=2
HOMEPAGE=http://www.citi.umich.edu/projects/nfsv4/linux/
IUSE=ldap static-libs
KEYWORDS=alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86
LICENSE=BSD
RDEPEND=ldap? ( net-nds/openldap ) !<net-fs/nfs-utils-1.2.2 !net-fs/idmapd
SLOT=0
SRC_URI=http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/libnfsidmap-0.24.tar.gz
_eclasses_=autotools addbdf6cce5024ac93ad2084ad5e1d2d eutils 33ef77a15337022e05342d2c772a7a5a libtool 0fd90d183673bf1107465ec45849d1ea multilib 5f4ad6cf85e365e8f0c6050ddd21659e portability 0be430f759a631e692678ed796e09f5c toolchain-funcs 6526ac6fc9aedf391efb91fcd75ace68 user 9e552f935106ff0bc92af16da64b4b29
_md5_=accc06ffb8606bb01973f5652b2d92b0

View File

@ -0,0 +1 @@
DIST libnfsidmap-0.24.tar.gz 328720 RMD160 c1d61b31cc63a8c6c46709b1dfc4e94d22e0eaba SHA1 3ced887b642d33ecabdd751ec7c4fb536347fba1 SHA256 59501432e683336d7a290da13767e92afb5b86f42ea4254041225fe218e8dd47

View File

@ -0,0 +1,112 @@
http://bugs.gentoo.org/169909
--- libnfsidmap-0.19/configure.in
+++ libnfsidmap-0.19/configure.in
@@ -38,7 +38,7 @@
# Checks for library functions.
AC_FUNC_MALLOC
-AC_CHECK_FUNCS([strchr strdup])
+AC_CHECK_FUNCS([strchr strdup getgrouplist])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT(libnfsidmap.pc)
--- libnfsidmap-0.19/nss.c
+++ libnfsidmap-0.19/nss.c
@@ -49,6 +49,8 @@
#include "cfg.h"
#include <syslog.h>
+#include "getgrouplist.c"
+
/*
* NSS Translation Methods
*
--- libnfsidmap-0.19/getgrouplist.c
+++ libnfsidmap-0.19/getgrouplist.c
@@ -0,0 +1,85 @@
+/*
+ * getgrouplist.c
+ *
+ * if system does not provide the non-standard getgrouplist, we will emulate
+ * it via POSIX standard functions
+ *
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/types.h>
+#include <grp.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifndef HAVE_GETGROUPLIST
+static
+int
+getgrouplist(const char *uname, gid_t agroup, gid_t *groups, int *grpcnt)
+{
+ const struct group *grp;
+ int i, maxgroups, ngroups, ret;
+
+ ret = 0;
+ ngroups = 0;
+ maxgroups = *grpcnt;
+ /*
+ * When installing primary group, duplicate it;
+ * the first element of groups is the effective gid
+ * and will be overwritten when a setgid file is executed.
+ */
+ groups[ngroups++] = agroup;
+ if (maxgroups > 1)
+ groups[ngroups++] = agroup;
+ /*
+ * Scan the group file to find additional groups.
+ */
+ setgrent();
+ while ((grp = getgrent()) != NULL) {
+ for (i = 0; i < ngroups; i++) {
+ if (grp->gr_gid == groups[i])
+ goto skip;
+ }
+ for (i = 0; grp->gr_mem[i]; i++) {
+ if (!strcmp(grp->gr_mem[i], uname)) {
+ if (ngroups >= maxgroups) {
+ ret = -1;
+ break;
+ }
+ groups[ngroups++] = grp->gr_gid;
+ break;
+ }
+ }
+skip:
+ ;
+ }
+ endgrent();
+ *grpcnt = ngroups;
+ return (ret);
+}
+#endif

View File

@ -0,0 +1,22 @@
for toupper and such
--- a/nss.c
+++ b/nss.c
@@ -34,6 +34,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include <ctype.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
--- a/libnfsidmap.c
+++ b/libnfsidmap.c
@@ -37,6 +37,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include <ctype.h>
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>

View File

@ -0,0 +1,46 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-libs/libnfsidmap/libnfsidmap-0.24.ebuild,v 1.7 2012/05/21 19:13:27 xarthisius Exp $
EAPI="2"
inherit autotools eutils
DESCRIPTION="NFSv4 ID <-> name mapping library"
HOMEPAGE="http://www.citi.umich.edu/projects/nfsv4/linux/"
SRC_URI="http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
IUSE="ldap static-libs"
DEPEND="ldap? ( net-nds/openldap )"
RDEPEND="${DEPEND}
!<net-fs/nfs-utils-1.2.2
!net-fs/idmapd"
src_prepare() {
epatch "${FILESDIR}"/${PN}-0.19-getgrouplist.patch #169909
epatch "${FILESDIR}"/${PN}-0.21-headers.patch
eautoreconf
}
src_configure() {
econf \
--disable-dependency-tracking \
$(use_enable static-libs static) \
$(use_enable ldap)
}
src_install() {
emake install DESTDIR="${D}" || die
dodoc AUTHORS ChangeLog NEWS README
insinto /etc
doins idmapd.conf || die
# remove useless files
rm -f "${D}"/usr/lib*/libnfsidmap/*.{a,la}
use static-libs || rm -f "${D}"/usr/lib*/*.la
}