misc/149014: make ZFS makefiles use the libraries from build
directory
Tuco
tuco.xyz at gmail.com
Tue Jul 27 23:30:02 UTC 2010
>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:
More information about the freebsd-bugs
mailing list