Hi,
I've been trying to figure out why NTFS-3g doesn't build on the NetBSD-8 and-current and found that the Librefuse library updated to track some changes in LIBFUSE3, http://mail-index.netbsd.org/source-changes/2016/11/20/msg079195.html.
But unfortunately these changes are incompatible with the previous version of the API.
I have a few questions:
1-The version of the Librefuse library should not be changed to reflect the update?
2-Should the previous version be maintained in any way to maintain compatibility with existing software?
3-Should I open a PR to document this? If yes, which category: Lib or pkg?
Building NTFS-3g show the following error:
gcc -DHAVE_CONFIG_H -I. -I.. -D_KERNTYPES -I/usr/pkg/include -DFUSE_USE_VERSION=26 -I../include/ntfs-3g -O2 -D_KERNTYPES -D_NETBSD_SOURCE -D_FORTIFY_SOURCE=2 -I/usr/pkg/include -Wall -MT ntfs_3g-ntfs-3g.o -MD -MP -MF .deps/ntfs_3g-ntfs-3g.Tpo -c -o ntfs_3g-ntfs-3g.o `test -f 'ntfs-3g.c' || echo './'`ntfs-3g.c
In file included from ../include/ntfs-3g/mft.h:30:0,
from ../include/ntfs-3g/index.h:60,
from ../include/ntfs-3g/volume.h:53,
from ../include/ntfs-3g/inode.h:34,
from ../include/ntfs-3g/attrib.h:33,
from ntfs-3g.c:86:
ntfs-3g.c: In function 'usage':
ntfs-3g.c:3528:58: warning: implicit declaration of function 'fuse_version' [-Wimplicit-function-declaration]
ntfs_log_info(usage_msg, EXEC_NAME, VERSION, FUSE_TYPE, fuse_version(),
^
../include/ntfs-3g/logging.h:95:123: note: in definition of macro 'ntfs_log_info'
#define ntfs_log_info(FORMAT, ARGS...) ntfs_log_redirect(__FUNCTION__,__FILE__,__LINE__,NTFS_LOG_LEVEL_INFO,NULL,FORMAT,##ARGS)
^
ntfs-3g.c: In function 'try_fuse_mount':
ntfs-3g.c:3657:18: warning: passing argument 1 of 'fuse_mount' from incompatible pointer type [-Wincompatible-pointer-types]
fc = fuse_mount(opts.mnt_point, &margs);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:156:5: note: expected 'struct fuse *' but argument is of type 'char *'
int fuse_mount(struct fuse *, const char *);
^
ntfs-3g.c:3657:34: warning: passing argument 2 of 'fuse_mount' from incompatible pointer type [-Wincompatible-pointer-types]
fc = fuse_mount(opts.mnt_point, &margs);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:156:5: note: expected 'const char *' but argument is of type 'struct fuse_args *'
int fuse_mount(struct fuse *, const char *);
^
ntfs-3g.c:3657:5: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
fc = fuse_mount(opts.mnt_point, &margs);
^
ntfs-3g.c: In function 'mount_fuse':
ntfs-3g.c:3705:16: warning: passing argument 1 of 'fuse_new' from incompatible pointer type [-Wincompatible-pointer-types]
fh = fuse_new(ctx->fc, &args , &ntfs_3g_ops, sizeof(ntfs_3g_ops), NULL);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:153:14: note: expected 'struct fuse_args *' but argument is of type 'struct fuse_chan *'
struct fuse *fuse_new(struct fuse_args *,
^
ntfs-3g.c:3705:25: warning: passing argument 2 of 'fuse_new' from incompatible pointer type [-Wincompatible-pointer-types]
fh = fuse_new(ctx->fc, &args , &ntfs_3g_ops, sizeof(ntfs_3g_ops), NULL);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:153:14: note: expected 'const struct fuse_operations *' but argument is of type 'struct fuse_args *'
struct fuse *fuse_new(struct fuse_args *,
^
ntfs-3g.c:3705:33: warning: passing argument 3 of 'fuse_new' makes integer from pointer without a cast [-Wint-conversion]
fh = fuse_new(ctx->fc, &args , &ntfs_3g_ops, sizeof(ntfs_3g_ops), NULL);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:153:14: note: expected 'size_t {aka long unsigned int}' but argument is of type 'struct fuse_operations *'
struct fuse *fuse_new(struct fuse_args *,
^
ntfs-3g.c:3705:47: warning: passing argument 4 of 'fuse_new' makes pointer from integer without a cast [-Wint-conversion]
fh = fuse_new(ctx->fc, &args , &ntfs_3g_ops, sizeof(ntfs_3g_ops), NULL);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:153:14: note: expected 'void *' but argument is of type 'long unsigned int'
struct fuse *fuse_new(struct fuse_args *,
^
ntfs-3g.c:3705:7: error: too many arguments to function 'fuse_new'
fh = fuse_new(ctx->fc, &args , &ntfs_3g_ops, sizeof(ntfs_3g_ops), NULL);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:153:14: note: declared here
struct fuse *fuse_new(struct fuse_args *,
^
ntfs-3g.c:3720:15: warning: passing argument 1 of 'fuse_unmount' from incompatible pointer type [-Wincompatible-pointer-types]
fuse_unmount(opts.mnt_point, ctx->fc);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:157:6: note: expected 'struct fuse *' but argument is of type 'char *'
void fuse_unmount(struct fuse *);
^
ntfs-3g.c:3720:2: error: too many arguments to function 'fuse_unmount'
fuse_unmount(opts.mnt_point, ctx->fc);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:157:6: note: declared here
void fuse_unmount(struct fuse *);
^
ntfs-3g.c:3716:1: warning: label 'err_destory' defined but not used [-Wunused-label]
err_destory:
^
ntfs-3g.c: In function 'main':
ntfs-3g.c:3999:15: warning: passing argument 1 of 'fuse_unmount' from incompatible pointer type [-Wincompatible-pointer-types]
fuse_unmount(opts.mnt_point, ctx->fc);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:157:6: note: expected 'struct fuse *' but argument is of type 'char *'
void fuse_unmount(struct fuse *);
^
ntfs-3g.c:3999:2: error: too many arguments to function 'fuse_unmount'
fuse_unmount(opts.mnt_point, ctx->fc);
^
In file included from ntfs-3g.c:30:0:
/usr/include/fuse.h:157:6: note: declared here
void fuse_unmount(struct fuse *);
^
*** Error code 1
Stop.
make: stopped in /usr/pkgsrc/filesystems/fuse-ntfs-3g/work/ntfs-3g_ntfsprogs-2015.3.14/src
*** Error code 1
Stop.
make[1]: stopped in /usr/pkgsrc/filesystems/fuse-ntfs-3g
*** Error code 1
Stop.
make: stopped in /usr/pkgsrc/filesystems/fuse-ntfs-3g
nb8beta#
Best regards
Vicente