>Number:         149014
>Category:       misc
>Synopsis:       make ZFS makefiles use the libraries from build directory
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jul 27 23:30:01 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Tuco
>Release:        Debian GNU/kFreeBSD
>Organization:
>Environment:
>Description:

Hello

A few declarations in ZFS libraries/utilities collide with Glibc namespace, 
making it impossible to compile on GNU environment.

Here is a patch that either renames them or avoids the conflict with 
preprocessor checks.

>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -ur cddl/compat/opensolaris/include/solaris.h 
cddl/compat/opensolaris/include/solaris.h
--- cddl/compat/opensolaris/include/solaris.h   2008-04-22 03:43:00.000000000 
-0400
+++ cddl/compat/opensolaris/include/solaris.h   2010-07-26 19:18:00.428981335 
-0400
@@ -5,6 +5,9 @@
 
 #include <sys/ccompile.h>
 
+/* GNU libc has its own dirent64 declaration */
+#ifndef __GLIBC__
 #define        dirent64        dirent
+#endif
 
 #endif /* !_SOLARIS_H_ */
diff -ur cddl/compat/opensolaris/misc/fsshare.c 
cddl/compat/opensolaris/misc/fsshare.c
--- cddl/compat/opensolaris/misc/fsshare.c      2008-03-28 18:16:18.000000000 
-0400
+++ cddl/compat/opensolaris/misc/fsshare.c      2010-07-26 19:48:58.456848324 
-0400
@@ -67,7 +70,7 @@
  * mountpoint specified in the 'skip' argument.
  */
 static char *
-getline(FILE *fd, const char *skip)
+xgetline(FILE *fd, const char *skip)
 {
        static char line[MAXLINESIZE];
        size_t len, skiplen;
@@ -198,7 +201,7 @@
 
        /* Place big, fat warning at the begining of the file. */
        fprintf(newfd, "%s", FILE_HEADER);
-       while (oldfd != NULL && (line = getline(oldfd, mountpoint)) != NULL)
+       while (oldfd != NULL && (line = xgetline(oldfd, mountpoint)) != NULL)
                fprintf(newfd, "%s\n", line);
        if (oldfd != NULL && ferror(oldfd) != 0) {
                error = ferror(oldfd);
diff -ur cddl/compat/opensolaris/misc/mnttab.c 
cddl/compat/opensolaris/misc/mnttab.c
--- cddl/compat/opensolaris/misc/mnttab.c       2008-11-17 15:49:29.000000000 
-0500
+++ cddl/compat/opensolaris/misc/mnttab.c       2010-07-26 18:46:46.354168277 
-0400
@@ -63,7 +63,7 @@
 }
 
 char *
-hasmntopt(struct mnttab *mnt, char *opt)
+solaris_hasmntopt(struct mnttab *mnt, char *opt)
 {
        char tmpopts[MNT_LINE_MAX];
        char *f, *opts = tmpopts;
diff -ur cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c 
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c 2008-11-17 
15:49:29.000000000 -0500
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c 2010-07-26 
18:46:46.353151407 -0400
@@ -2166,11 +2166,11 @@
        case ZFS_PROP_NBMAND:
                *val = getprop_uint64(zhp, prop, source);
 
-               if (hasmntopt(&mnt, mntopt_on) && !*val) {
+               if (solaris_hasmntopt(&mnt, mntopt_on) && !*val) {
                        *val = B_TRUE;
                        if (src)
                                *src = ZPROP_SRC_TEMPORARY;
-               } else if (hasmntopt(&mnt, mntopt_off) && *val) {
+               } else if (solaris_hasmntopt(&mnt, mntopt_off) && *val) {
                        *val = B_FALSE;
                        if (src)
                                *src = ZPROP_SRC_TEMPORARY;
diff -ur cddl/contrib/opensolaris/lib/libzpool/common/kernel.c 
cddl/contrib/opensolaris/lib/libzpool/common/kernel.c
--- cddl/contrib/opensolaris/lib/libzpool/common/kernel.c       2009-07-09 
16:22:05.000000000 -0400
+++ cddl/contrib/opensolaris/lib/libzpool/common/kernel.c       2010-07-26 
18:46:46.363308187 -0400
@@ -463,7 +463,7 @@
 /*ARGSUSED*/
 int
 vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len, offset_t offset,
-       int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp)
+       int x1, int x2, solaris_rlim64_t x3, void *x4, ssize_t *residp)
 {
        ssize_t iolen, split;
 
diff -ur cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h 
cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
--- cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h      
2009-07-09 16:22:05.000000000 -0400
+++ cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h      
2010-07-26 18:46:46.368459207 -0400
@@ -105,8 +105,8 @@
 
 #define        ZFS_LOG(...)    do {  } while (0)
 
-typedef u_longlong_t      rlim64_t;
-#define        RLIM64_INFINITY ((rlim64_t)-3)
+typedef u_longlong_t      solaris_rlim64_t;
+#define        RLIM64_INFINITY ((solaris_rlim64_t)-3)
 
 #ifdef ZFS_DEBUG
 extern void dprintf_setup(int *argc, char **argv);
@@ -438,7 +438,7 @@
 extern int vn_openat(char *path, int x1, int oflags, int mode, vnode_t **vpp,
     int x2, int x3, vnode_t *vp, int fd);
 extern int vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len,
-    offset_t offset, int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp);
+    offset_t offset, int x1, int x2, solaris_rlim64_t x3, void *x4, ssize_t 
*residp);
 extern void vn_close(vnode_t *vp, int openflag, cred_t *cr, kthread_t *td);
 
 #define        vn_remove(path, x1, x2)         remove(path)
diff -ur sys/cddl/compat/opensolaris/sys/dirent.h 
sys/cddl/compat/opensolaris/sys/dirent.h
--- sys/cddl/compat/opensolaris/sys/dirent.h    2008-03-28 18:16:18.000000000 
-0400
+++ sys/cddl/compat/opensolaris/sys/dirent.h    2010-07-26 19:18:26.928512005 
-0400
@@ -32,7 +32,10 @@
 #include_next <sys/dirent.h>
 
 typedef        struct dirent   dirent64_t;
+/* GNU libc has its own dirent64 declaration */
+#ifndef __GLIBC__
 #define        dirent64        dirent
+#endif
 #define        ino64_t         ino_t
 
 #define        d_ino   d_fileno
diff -ur sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c 
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c  2009-10-12 
16:36:55.000000000 -0400
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c  2010-07-26 
18:46:46.380558137 -0400
@@ -677,7 +677,7 @@
 zfs_write(vnode_t *vp, uio_t *uio, int ioflag, cred_t *cr, caller_context_t 
*ct)
 {
        znode_t         *zp = VTOZ(vp);
-       rlim64_t        limit = MAXOFFSET_T;
+       solaris_rlim64_t        limit = MAXOFFSET_T;
        ssize_t         start_resid = uio->uio_resid;
        ssize_t         tx_bytes;
        uint64_t        end_size;


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to