zfs: added musl support via Alpine.
This commit is contained in:
parent
fd1b1da98d
commit
fe11f4b542
|
@ -0,0 +1,341 @@
|
|||
diff --git a/cmd/mount_zfs/Makefile.am b/cmd/mount_zfs/Makefile.am
|
||||
index b1d9389..4be1135 100644
|
||||
--- a/cmd/mount_zfs/Makefile.am
|
||||
+++ b/cmd/mount_zfs/Makefile.am
|
||||
@@ -19,4 +19,5 @@ mount_zfs_LDADD = \
|
||||
$(top_builddir)/lib/libuutil/libuutil.la \
|
||||
$(top_builddir)/lib/libzpool/libzpool.la \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
- $(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||
+ $(TIRPC_LIBS)
|
||||
diff --git a/cmd/mount_zfs/mount_zfs.c b/cmd/mount_zfs/mount_zfs.c
|
||||
index e3e8cfc..91efda6 100644
|
||||
--- a/cmd/mount_zfs/mount_zfs.c
|
||||
+++ b/cmd/mount_zfs/mount_zfs.c
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <libzfs.h>
|
||||
#include <locale.h>
|
||||
+#include <fcntl.h>
|
||||
|
||||
#define ZS_COMMENT 0x00000000 /* comment */
|
||||
#define ZS_ZFSUTIL 0x00000001 /* caller is zfs(8) */
|
||||
diff --git a/cmd/zdb/Makefile.am b/cmd/zdb/Makefile.am
|
||||
index bc47cff..b8200da 100644
|
||||
--- a/cmd/zdb/Makefile.am
|
||||
+++ b/cmd/zdb/Makefile.am
|
||||
@@ -17,4 +17,4 @@ zdb_LDADD = \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
|
||||
-zdb_LDADD += $(ZLIB)
|
||||
+zdb_LDADD += $(ZLIB) $(TIRPC_LIBS)
|
||||
diff --git a/cmd/zed/Makefile.am b/cmd/zed/Makefile.am
|
||||
index 70e4f7f..ce16ceb 100644
|
||||
--- a/cmd/zed/Makefile.am
|
||||
+++ b/cmd/zed/Makefile.am
|
||||
@@ -30,7 +30,8 @@ zed_LDADD = \
|
||||
$(top_builddir)/lib/libspl/libspl.la \
|
||||
$(top_builddir)/lib/libzpool/libzpool.la \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
- $(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||
+ $(TIRPC_LIBS)
|
||||
|
||||
zedconfdir = $(sysconfdir)/zfs/zed.d
|
||||
|
||||
diff --git a/cmd/zfs/Makefile.am b/cmd/zfs/Makefile.am
|
||||
index 3cac73d..2554011 100644
|
||||
--- a/cmd/zfs/Makefile.am
|
||||
+++ b/cmd/zfs/Makefile.am
|
||||
@@ -19,5 +19,5 @@ zfs_LDADD = \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
|
||||
-zfs_LDADD += $(ZLIB)
|
||||
+zfs_LDADD += $(ZLIB) $(TIRPC_LIBS)
|
||||
zfs_LDFLAGS = -pthread
|
||||
diff --git a/cmd/zhack/Makefile.am b/cmd/zhack/Makefile.am
|
||||
index 53e3241..07b5fab 100644
|
||||
--- a/cmd/zhack/Makefile.am
|
||||
+++ b/cmd/zhack/Makefile.am
|
||||
@@ -16,4 +16,4 @@ zhack_LDADD = \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
|
||||
-zhack_LDADD += $(ZLIB)
|
||||
+zhack_LDADD += $(ZLIB) $(TIRPC_LIBS)
|
||||
diff --git a/cmd/zinject/Makefile.am b/cmd/zinject/Makefile.am
|
||||
index 2500bee..2d069d3 100644
|
||||
--- a/cmd/zinject/Makefile.am
|
||||
+++ b/cmd/zinject/Makefile.am
|
||||
@@ -16,4 +16,5 @@ zinject_LDADD = \
|
||||
$(top_builddir)/lib/libuutil/libuutil.la \
|
||||
$(top_builddir)/lib/libzpool/libzpool.la \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
- $(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||
+ $(TIRPC_LIBS)
|
||||
diff --git a/cmd/zpool/Makefile.am b/cmd/zpool/Makefile.am
|
||||
index c11951b..a59bf32 100644
|
||||
--- a/cmd/zpool/Makefile.am
|
||||
+++ b/cmd/zpool/Makefile.am
|
||||
@@ -19,4 +19,4 @@ zpool_LDADD = \
|
||||
$(top_builddir)/lib/libzpool/libzpool.la \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la \
|
||||
- $(LIBBLKID)
|
||||
+ $(LIBBLKID) $(TIRPC_LIBS)
|
||||
diff --git a/cmd/zstreamdump/Makefile.am b/cmd/zstreamdump/Makefile.am
|
||||
index 654863a..f800a8e 100644
|
||||
--- a/cmd/zstreamdump/Makefile.am
|
||||
+++ b/cmd/zstreamdump/Makefile.am
|
||||
@@ -16,4 +16,4 @@ zstreamdump_LDADD = \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
|
||||
-zstreamdump_LDADD += $(ZLIB)
|
||||
+zstreamdump_LDADD += $(ZLIB) $(TIRPC_LIBS)
|
||||
diff --git a/cmd/ztest/Makefile.am b/cmd/ztest/Makefile.am
|
||||
index ef4d99f..3c1ae75 100644
|
||||
--- a/cmd/ztest/Makefile.am
|
||||
+++ b/cmd/ztest/Makefile.am
|
||||
@@ -18,4 +18,4 @@ ztest_LDADD = \
|
||||
$(top_builddir)/lib/libzfs/libzfs.la \
|
||||
$(top_builddir)/lib/libzfs_core/libzfs_core.la
|
||||
|
||||
-ztest_LDADD += -lm -ldl
|
||||
+ztest_LDADD += -lm -ldl $(TIRPC_LIBS)
|
||||
diff --git a/cmd/ztest/ztest.c b/cmd/ztest/ztest.c
|
||||
index afe6faa..40524ed 100644
|
||||
--- a/cmd/ztest/ztest.c
|
||||
+++ b/cmd/ztest/ztest.c
|
||||
@@ -123,7 +123,7 @@
|
||||
#include <math.h>
|
||||
#include <sys/fs/zfs.h>
|
||||
#include <libnvpair.h>
|
||||
-#ifdef __GNUC__
|
||||
+#ifdef __GLIBC__
|
||||
#include <execinfo.h> /* for backtrace() */
|
||||
#endif
|
||||
|
||||
@@ -490,7 +490,7 @@ _umem_logging_init(void)
|
||||
static void sig_handler(int signo)
|
||||
{
|
||||
struct sigaction action;
|
||||
-#ifdef __GNUC__ /* backtrace() is a GNU extension */
|
||||
+#ifdef __GLIBC__ /* backtrace() is a GNU extension */
|
||||
int nptrs;
|
||||
void *buffer[BACKTRACE_SZ];
|
||||
|
||||
diff --git a/config/tirpc.m4 b/config/tirpc.m4
|
||||
new file mode 100644
|
||||
index 0000000..ec15785
|
||||
--- /dev/null
|
||||
+++ b/config/tirpc.m4
|
||||
@@ -0,0 +1,17 @@
|
||||
+dnl
|
||||
+dnl musl support
|
||||
+dnl
|
||||
+
|
||||
+AC_DEFUN([ZFS_AC_CONFIG_USER_TIRPC], [
|
||||
+AH_TEMPLATE([WITH_TIRPC],
|
||||
+ [Define to 1 if libtirpc is being used as the RPC library])
|
||||
+AC_ARG_WITH(tirpc,
|
||||
+AC_HELP_STRING([--with-tirpc], [compile with libtirpc]),
|
||||
+[if test x$withval = xyes; then
|
||||
+ AC_DEFINE([WITH_TIRPC], 1, [Define if you have musl])
|
||||
+ PKG_CHECK_MODULES([TIRPC],[libtirpc])
|
||||
+ AC_DEFINE([WITH_TIRPC], 1, [Define if you have libtirpc])
|
||||
+ AC_SUBST(TIRPC_CFLAGS)
|
||||
+ AC_SUBST(TIRPC_LIBS)
|
||||
+fi])
|
||||
+])
|
||||
diff --git a/config/user.m4 b/config/user.m4
|
||||
index 7f79420..820b8d3 100644
|
||||
--- a/config/user.m4
|
||||
+++ b/config/user.m4
|
||||
@@ -13,6 +13,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER], [
|
||||
ZFS_AC_CONFIG_USER_LIBBLKID
|
||||
ZFS_AC_CONFIG_USER_FRAME_LARGER_THAN
|
||||
ZFS_AC_CONFIG_USER_RUNSTATEDIR
|
||||
+ ZFS_AC_CONFIG_USER_TIRPC
|
||||
dnl #
|
||||
dnl # Checks for library functions
|
||||
AC_CHECK_FUNCS([mlockall])
|
||||
diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h
|
||||
index 4f7e328..78e33e1 100644
|
||||
--- a/include/sys/zfs_context.h
|
||||
+++ b/include/sys/zfs_context.h
|
||||
@@ -623,7 +623,7 @@ extern void delay(clock_t ticks);
|
||||
#define maxclsyspri -20
|
||||
#define defclsyspri 0
|
||||
|
||||
-#define CPU_SEQID (pthread_self() & (max_ncpus - 1))
|
||||
+#define CPU_SEQID ((uintptr_t)pthread_self() & (max_ncpus - 1))
|
||||
|
||||
#define kcred NULL
|
||||
#define CRED() NULL
|
||||
diff --git a/lib/libnvpair/Makefile.am b/lib/libnvpair/Makefile.am
|
||||
index c9ac1f1..985285a 100644
|
||||
--- a/lib/libnvpair/Makefile.am
|
||||
+++ b/lib/libnvpair/Makefile.am
|
||||
@@ -4,7 +4,7 @@ VPATH = \
|
||||
$(top_srcdir)/module/nvpair \
|
||||
$(top_srcdir)/lib/libnvpair
|
||||
|
||||
-AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN)
|
||||
+AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) $(TIRPC_CFLAGS)
|
||||
|
||||
DEFAULT_INCLUDES += \
|
||||
-I$(top_srcdir)/include \
|
||||
diff --git a/lib/libspl/Makefile.am b/lib/libspl/Makefile.am
|
||||
index a569446..9cedfaa 100644
|
||||
--- a/lib/libspl/Makefile.am
|
||||
+++ b/lib/libspl/Makefile.am
|
||||
@@ -4,13 +4,13 @@ VPATH = \
|
||||
$(top_srcdir)/lib/libspl \
|
||||
$(top_srcdir)/lib/libspl/$(TARGET_ASM_DIR)
|
||||
|
||||
-AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN)
|
||||
+AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) $(TIRPC_CFLAGS)
|
||||
|
||||
SUBDIRS = include $(TARGET_ASM_DIR)
|
||||
DIST_SUBDIRS = include asm-generic asm-i386 asm-x86_64
|
||||
|
||||
DEFAULT_INCLUDES += \
|
||||
- -I$(top_srcdir)/lib/libspl/include
|
||||
+ -I$(top_srcdir)/lib/libspl/include $(TIRPC_CFLAGS)
|
||||
|
||||
AM_CCASFLAGS = \
|
||||
-I$(top_srcdir)/lib/libspl/include
|
||||
@@ -42,6 +42,6 @@ nodist_libspl_la_SOURCES = \
|
||||
$(USER_ASM) \
|
||||
$(KERNEL_C)
|
||||
|
||||
-libspl_la_LIBADD = -lrt
|
||||
+libspl_la_LIBADD = -lrt $(TIRPC_LDFLAGS)
|
||||
|
||||
EXTRA_DIST = $(USER_C)
|
||||
diff --git a/lib/libspl/include/assert.h b/lib/libspl/include/assert.h
|
||||
index 52924e8..63ca9dd 100644
|
||||
--- a/lib/libspl/include/assert.h
|
||||
+++ b/lib/libspl/include/assert.h
|
||||
@@ -42,6 +42,17 @@ __assert_c99(const char *expr, const char *file, int line, const char *func)
|
||||
}
|
||||
#endif /* __assert_c99 */
|
||||
|
||||
+#ifndef __assert
|
||||
+static inline void
|
||||
+__assert(const char *expr, const char *file, int line)
|
||||
+{
|
||||
+ fprintf(stderr, "%s:%i: %s: Assertion failed.\n", file, line, expr);
|
||||
+ abort();
|
||||
+}
|
||||
+#else
|
||||
+extern void __assert(const char *, const char *, int);
|
||||
+#endif
|
||||
+
|
||||
#ifndef verify
|
||||
#if defined(__STDC__)
|
||||
#if __STDC_VERSION__ - 0 >= 199901L
|
||||
@@ -61,8 +72,6 @@ __assert_c99(const char *expr, const char *file, int line, const char *func)
|
||||
#define VERIFY verify
|
||||
#define ASSERT assert
|
||||
|
||||
-extern void __assert(const char *, const char *, int);
|
||||
-
|
||||
static inline int
|
||||
assfail(const char *buf, const char *file, int line)
|
||||
{
|
||||
diff --git a/lib/libspl/include/devid.h b/lib/libspl/include/devid.h
|
||||
index 5406c33..4b346da 100644
|
||||
--- a/lib/libspl/include/devid.h
|
||||
+++ b/lib/libspl/include/devid.h
|
||||
@@ -27,6 +27,7 @@
|
||||
#ifndef _LIBSPL_DEVID_H
|
||||
#define _LIBSPL_DEVID_H
|
||||
|
||||
+#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef int ddi_devid_t;
|
||||
diff --git a/lib/libspl/include/rpc/xdr.h b/lib/libspl/include/rpc/xdr.h
|
||||
index 99500d6..cd2d17a 100644
|
||||
--- a/lib/libspl/include/rpc/xdr.h
|
||||
+++ b/lib/libspl/include/rpc/xdr.h
|
||||
@@ -60,6 +60,8 @@ typedef struct xdr_bytesrec {
|
||||
#define XDR_RDMAGET 4
|
||||
#define XDR_RDMASET 5
|
||||
|
||||
+#ifndef WITH_TIRPC
|
||||
extern bool_t xdr_control(XDR *xdrs, int request, void *info);
|
||||
+#endif
|
||||
|
||||
#endif
|
||||
diff --git a/lib/libspl/include/sys/time.h b/lib/libspl/include/sys/time.h
|
||||
index f0da440..aa96c39 100644
|
||||
--- a/lib/libspl/include/sys/time.h
|
||||
+++ b/lib/libspl/include/sys/time.h
|
||||
@@ -58,6 +58,11 @@
|
||||
#define NSEC2MSEC(n) ((n) / (NANOSEC / MILLISEC))
|
||||
#endif
|
||||
|
||||
+#ifndef HAVE_HR_TYPES
|
||||
+typedef long long longlong_t;
|
||||
+typedef longlong_t hrtime_t;
|
||||
+typedef struct timespec timestruc_t;
|
||||
+#endif
|
||||
extern hrtime_t gethrtime(void);
|
||||
extern void gethrestime(timestruc_t *);
|
||||
|
||||
diff --git a/lib/libspl/timestamp.c b/lib/libspl/timestamp.c
|
||||
index a4f4cf4..a177270 100644
|
||||
--- a/lib/libspl/timestamp.c
|
||||
+++ b/lib/libspl/timestamp.c
|
||||
@@ -28,6 +28,10 @@
|
||||
#include <langinfo.h>
|
||||
#include "statcommon.h"
|
||||
|
||||
+#ifndef _DATE_FMT
|
||||
+#define _DATE_FMT D_FMT
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Print timestamp as decimal reprentation of time_t value (-T u was specified)
|
||||
* or in date(1) format (-T d was specified).
|
||||
diff --git a/lib/libspl/xdr.c b/lib/libspl/xdr.c
|
||||
index 288a338..f122496 100644
|
||||
--- a/lib/libspl/xdr.c
|
||||
+++ b/lib/libspl/xdr.c
|
||||
@@ -29,6 +29,7 @@
|
||||
* under license from the Regents of the University of California.
|
||||
*/
|
||||
|
||||
+#ifndef WITH_TIRPC
|
||||
#include <rpc/xdr.h>
|
||||
|
||||
/*
|
||||
@@ -76,3 +77,4 @@ xdr_control(XDR *xdrs, int request, void *info)
|
||||
}
|
||||
return (FALSE);
|
||||
}
|
||||
+#endif
|
||||
diff --git a/module/nvpair/nvpair.c b/module/nvpair/nvpair.c
|
||||
index 1eca0fe..efd6287 100644
|
||||
--- a/module/nvpair/nvpair.c
|
||||
+++ b/module/nvpair/nvpair.c
|
||||
@@ -3251,8 +3251,12 @@ nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
|
||||
return (0);
|
||||
|
||||
/* sanity check the size parameter */
|
||||
+#ifndef WITH_TIRPC
|
||||
if (!xdr_control(xdr, XDR_GET_BYTES_AVAIL, &bytesrec))
|
||||
return (EFAULT);
|
||||
+#else
|
||||
+ xdr_control(xdr, XDR_GET_BYTES_AVAIL, &bytesrec);
|
||||
+#endif
|
||||
|
||||
if (*size > NVS_XDR_MAX_LEN(bytesrec.xc_num_avail))
|
||||
return (EFAULT);
|
|
@ -1,14 +1,15 @@
|
|||
# Template file for 'zfs'
|
||||
pkgname=zfs
|
||||
version=0.6.5.4
|
||||
revision=1
|
||||
revision=2
|
||||
patch_args="-Np1"
|
||||
wrksrc="${pkgname}-${pkgname}-${version/r/-}"
|
||||
build_style=gnu-configure
|
||||
configure_args="--with-config=user --with-mounthelperdir=/usr/bin
|
||||
--with-udevdir=/usr/lib/udev --with-udevruledir=/usr/lib/udev/rules.d
|
||||
--with-dracutdir=/usr/lib/dracut"
|
||||
hostmakedepends="dracut automake libtool"
|
||||
makedepends="spl-devel zlib-devel libuuid-devel libblkid-devel"
|
||||
--with-dracutdir=/usr/lib/dracut --with-tirpc"
|
||||
hostmakedepends="dracut automake libtool pkg-config"
|
||||
makedepends="spl-devel zlib-devel libuuid-devel libblkid-devel libtirpc-devel"
|
||||
conf_files="/etc/zfs/zed.d/zed.rc"
|
||||
short_desc="Z File System -- userland and kernel modules (using DKMS)"
|
||||
maintainer="Christian Neukirchen <chneukirchen@gmail.com>"
|
||||
|
|
Loading…
Reference in New Issue