All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3] package/zfs: new package
@ 2021-03-17  9:52 José Luis Salvador Rufo
  2021-04-13 21:16 ` Yann E. MORIN
  0 siblings, 1 reply; 5+ messages in thread
From: José Luis Salvador Rufo @ 2021-03-17  9:52 UTC (permalink / raw)
  To: buildroot

OpenZFS is an advanced file system and volume manager which was originally
developed for Solaris and is now maintained by the OpenZFS community. This
repository contains the code for running OpenZFS on Linux and FreeBSD.

http://zfsonlinux.org/

Signed-off-by: Jos? Luis Salvador Rufo <salvador.joseluis@gmail.com>
---
Changes v2 -> v3:
  - Updated OpenZFS to 2.0.4
Changes v1 -> v2:
  (suggested by Yann E. MORIN)
  - Config.in: check-package accomplished
  - Config.in: fixed Config.in dependences
  - zfs.hash: proper zfs.hash format
  - zfs.mk: added cpe for openzfs
  - zfs.mk: uclibc patch merged into upstream
  - zfs.mk: removed futile comments as "zfs needs"
  - zfs.mk: added comments about the kernel dependence
  - zfs.mk: removed autotools default arguments values
  - zfs.mk: added optional PAM dependence
  - zfs.mk: replaced inline conditionals by full explained blocks
  - zfs.mk: added comments about optionals systemd and sysv
  - zfs.mk: removed --disable-silent-rules
  - zfs.mk: reordered autoreconf
  - zfs.mk: removed futile shared, static, and both logic
  - zfs.mk: fixed optional python(2|3) support for pyzfs
  - zfs.mk: removed futile kernel fragment
  - test_zfs: replaced external toolchain by already defined bootlin
  - test_zfs: increased memory a bit to prevents OOM
  - test_zfs: added pyzfs test

 DEVELOPERS                                |  4 +
 package/Config.in                         |  1 +
 package/zfs/Config.in                     | 32 ++++++++
 package/zfs/zfs.hash                      |  6 ++
 package/zfs/zfs.mk                        | 90 +++++++++++++++++++++++
 support/testing/tests/package/test_zfs.py | 61 +++++++++++++++
 6 files changed, 194 insertions(+)
 create mode 100644 package/zfs/Config.in
 create mode 100644 package/zfs/zfs.hash
 create mode 100644 package/zfs/zfs.mk
 create mode 100644 support/testing/tests/package/test_zfs.py

diff --git a/DEVELOPERS b/DEVELOPERS
index 6a7e88039e..71e95b5bcf 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1383,6 +1383,10 @@ F:	package/libuio/
 F:	package/netsniff-ng/
 F:	package/rabbitmq-c/
 
+N:	Jos? Luis Salvador Rufo <salvador.joseluis@gmail.com>
+F:	package/zfs/
+F:	support/testing/tests/package/test_zfs.py
+
 N:	Joseph Kogut <joseph.kogut@gmail.com>
 F:	package/at-spi2-atk/
 F:	package/at-spi2-core/
diff --git a/package/Config.in b/package/Config.in
index d278e78b68..60afa84c2f 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -229,6 +229,7 @@ menu "Filesystem and flash utilities"
 	source "package/udftools/Config.in"
 	source "package/unionfs/Config.in"
 	source "package/xfsprogs/Config.in"
+	source "package/zfs/Config.in"
 endmenu
 
 menu "Fonts, cursors, icons, sounds and themes"
diff --git a/package/zfs/Config.in b/package/zfs/Config.in
new file mode 100644
index 0000000000..96711d681e
--- /dev/null
+++ b/package/zfs/Config.in
@@ -0,0 +1,32 @@
+comment "zfs needs a Linux kernel to be built"
+	depends on !BR2_LINUX_KERNEL
+
+comment "zfs needs udev /dev management"
+	depends on BR2_LINUX_KERNEL
+	depends on !BR2_PACKAGE_HAS_UDEV
+
+config BR2_PACKAGE_ZFS
+	bool "zfs"
+	depends on BR2_LINUX_KERNEL
+	depends on BR2_PACKAGE_HAS_UDEV
+	depends on BR2_USE_MMU  # util-linux (libblkid)
+	depends on BR2_TOOLCHAIN_HAS_THREADS  # libtirpc
+	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	select BR2_PACKAGE_LIBTIRPC
+	select BR2_PACKAGE_LIBAIO
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_ZLIB
+	help
+	  OpenZFS on Linux and FreeBSD
+
+	  OpenZFS is an advanced file system and volume manager which
+	  was originally developed for Solaris and is now maintained by
+	  the OpenZFS community. This repository contains the code for
+	  running OpenZFS on Linux and FreeBSD.
+
+	  http://zfsonlinux.org/
+
+	  This package builds the kernel modules and userland utils
+	  required to operates with ZFS volumes.
diff --git a/package/zfs/zfs.hash b/package/zfs/zfs.hash
new file mode 100644
index 0000000000..5a0c43d366
--- /dev/null
+++ b/package/zfs/zfs.hash
@@ -0,0 +1,6 @@
+# Locally calculated
+sha256  7d1344c5433b91823f02c2e40b33d181fa6faf286bea5591f4b1965f23d45f6c  zfs-2.0.4.tar.gz
+
+# Hash for license files:
+sha256  1ffb70c33c4f79f04e947facc5c7851f289609256aacb47fc115f700427d9520  LICENSE
+sha256  f125a37c829705eff3e6f77a9f6c58fd71060f84ab54180b98fafdf94a2021eb  COPYRIGHT
diff --git a/package/zfs/zfs.mk b/package/zfs/zfs.mk
new file mode 100644
index 0000000000..7e7e6081a5
--- /dev/null
+++ b/package/zfs/zfs.mk
@@ -0,0 +1,90 @@
+################################################################################
+#
+# zfs
+#
+################################################################################
+
+ZFS_VERSION = 2.0.4
+ZFS_SITE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_VERSION)
+ZFS_LICENSE = CDDL
+ZFS_LICENSE_FILES = LICENSE COPYRIGHT
+ZFS_CPE_ID_VENDOR = openzfs
+ZFS_CPE_ID_PRODUCT = openzfs
+ZFS_CPE_ID_PREFIX = cpe:2.3:a
+
+# ZFS userland tools are unfunctional without its Linux kernel modules.
+ZFS_MODULES = zavl icp zlua znvpair spl zunicode zcommon zzstd zfs
+ZFS_MODULE_SUBDIRS = module/avl module/icp module/lua module/nvpair module/spl module/unicode module/zcommon module/zstd module/zfs
+
+# These requirements will be validated by zfs/config/kernel-config-defined.m4
+define ZFS_LINUX_CONFIG_FIXUPS
+	$(call KCONFIG_DISABLE_OPT,CONFIG_DEBUG_LOCK_ALLOC)
+	$(call KCONFIG_DISABLE_OPT,CONFIG_TRIM_UNUSED_KSYMS)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEFLATE)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_DEFLATE)
+	$(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_INFLATE)
+endef
+
+ZFS_AUTORECONF = YES
+ZFS_AUTORECONF_OPTS = -fiv
+
+ZFS_DEPENDENCIES += zlib util-linux libtirpc libaio openssl udev
+ZFS_CONF_OPTS = \
+	--with-linux=$(LINUX_DIR) \
+	--with-linux-obj=$(LINUX_DIR) \
+	--with-tirpc \
+	--disable-rpath
+
+ifeq ($(BR2_ENABLE_LOCALE),)
+ZFS_CONF_OPTS += --enable-nls
+else
+ZFS_CONF_OPTS += --disable-nls
+endif
+
+ifeq ($(BR2_INIT_SYSTEMD),y)
+# Installs the optional systemd generators, units, and presets files.
+ZFS_CONF_OPTS += --enable-systemd
+else
+ZFS_CONF_OPTS += --disable-systemd
+endif
+
+ifeq ($(BR2_INIT_SYSV),y)
+# Installs the optional sysvinit modules-load.d conf. file.
+ZFS_CONF_OPTS += --enable-sysvinit
+else
+ZFS_CONF_OPTS += --disable-sysvinit
+endif
+
+# The optional PyZFS uses different scripts depending on the python
+# version (ex: arc_summary2 or arc_summary3).
+ifeq ($(BR2_PACKAGE_PYTHON),y)
+ZFS_DEPENDENCIES += python python-setuptools host-python-cffi
+ZFS_CONF_ENV += \
+	PYTHON=$(HOST_DIR)/usr/bin/python2 \
+	PYTHON_CPPFLAGS="`$(STAGING_DIR)/usr/bin/python2-config --includes`" \
+	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python2-config --ldflags`" \
+	PYTHON_SITE_PKG="/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
+ZFS_CONF_OPTS += --enable-pyzfs
+else ifeq ($(BR2_PACKAGE_PYTHON3),y)
+ZFS_DEPENDENCIES += python3 python-setuptools host-python-cffi
+ZFS_CONF_ENV += \
+	PYTHON=$(HOST_DIR)/usr/bin/python3 \
+	PYTHON_CPPFLAGS="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \
+	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`" \
+	PYTHON_EXTRA_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`" \
+	PYTHON_SITE_PKG="/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
+ZFS_CONF_OPTS += --enable-pyzfs
+else
+ZFS_CONF_OPTS += --disable-pyzfs --without-python
+endif
+
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+# ZFS will check for pam_modules.h
+ZFS_DEPENDENCIES += linux-pam
+ZFS_CONF_ENV += --enable-pam=yes
+else
+ZFS_CONF_OPTS += --disable-pam
+endif
+
+$(eval $(kernel-module))
+$(eval $(autotools-package))
diff --git a/support/testing/tests/package/test_zfs.py b/support/testing/tests/package/test_zfs.py
new file mode 100644
index 0000000000..6a6d2da120
--- /dev/null
+++ b/support/testing/tests/package/test_zfs.py
@@ -0,0 +1,61 @@
+import os
+
+from ..toolchain.test_external_bootlin import (
+    TestExternalToolchainBootlinX8664corei7UclibcStable,
+)
+
+
+class TestZfs(TestExternalToolchainBootlinX8664corei7UclibcStable):
+    config = (
+        TestExternalToolchainBootlinX8664corei7UclibcStable.config
+        + """
+        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config"
+        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.23"
+        BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+        BR2_LINUX_KERNEL=y
+        BR2_PACKAGE_BUSYBOX=y
+        BR2_PACKAGE_ZFS=y
+        BR2_PACKAGE_ZLIB_NG=y
+        BR2_PACKAGE_LIBRESSL=y
+        BR2_PACKAGE_PYTHON3=y
+        BR2_PACKAGE_PYTHON_SETUPTOOLS=y
+        BR2_PACKAGE_PYTHON_CFFI=y
+        BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
+        BR2_TARGET_ROOTFS_CPIO=y
+        """
+    )
+
+    def test_run(self):
+        kernel = os.path.join(self.builddir, "images", "bzImage")
+        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
+        self.emulator.boot(
+            arch="x86_64",
+            kernel=kernel,
+            kernel_cmdline=["console=ttyS0"],
+            options=["-cpu", "Nehalem", "-m", "320", "-initrd", cpio_file],
+        )
+        self.emulator.login()
+
+        timeout = 35 * self.emulator.timeout_multiplier
+        cmds = [
+            # Init
+            "modprobe zfs",
+            "mount -o remount,size=132M /tmp",
+            "fallocate -l 64M /tmp/container1.raw",
+            "fallocate -l 64M /tmp/container2.raw",
+            "zpool create -m /pool pool raidz /tmp/container1.raw /tmp/container2.raw",
+            "dd if=/dev/urandom bs=1M count=8 of=/pool/urandom",
+            "sha256sum /pool/urandom > /tmp/urandom.sha256",
+            # Check ZFS
+            "zpool export pool",
+            "zpool import pool -d /tmp/container1.raw -d /tmp/container2.raw",
+            "dd conv=notrunc bs=1M count=32 seek=16 if=/dev/urandom of=/tmp/container1.raw",
+            "zpool scrub -w pool",
+            "sha256sum -c /tmp/urandom.sha256",
+            "zpool status -v",
+            # Check PyZFS
+            "arc_summary",
+        ]
+        for cmd in cmds:
+            self.assertRunOk(cmd, timeout=timeout)
-- 
2.31.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH v3] package/zfs: new package
  2021-03-17  9:52 [Buildroot] [PATCH v3] package/zfs: new package José Luis Salvador Rufo
@ 2021-04-13 21:16 ` Yann E. MORIN
  2021-08-22 10:38   ` Romain Naour
  0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2021-04-13 21:16 UTC (permalink / raw)
  To: buildroot

Jos? Luis, All,

On 2021-03-17 10:52 +0100, Jos? Luis Salvador Rufo spake thusly:
> OpenZFS is an advanced file system and volume manager which was originally
> developed for Solaris and is now maintained by the OpenZFS community. This
> repository contains the code for running OpenZFS on Linux and FreeBSD.
> 
> http://zfsonlinux.org/
> 
> Signed-off-by: Jos? Luis Salvador Rufo <salvador.joseluis@gmail.com>

I did a few substancial changes:

  - fix test case on how to use a pre-built toolchain
  - reorder the test case config
  - add test case with glibc
  - drop superflous test timeout override
  - only select libtirpc when C library lacks native RPC
  - drop unused ZFS_MODULES variable
  - drop ZFS_CPE_ID_PREFIX and ZFS_AUTORECONF_OPTS which are defaults
  - drop NLS options, already set in a generic manner
  - drop incomplete/improper sysvinit support
  - some cosmetics

Applied to master with the above changes, thanks.

Regards,
Yann E. MORIN.

> ---
> Changes v2 -> v3:
>   - Updated OpenZFS to 2.0.4
> Changes v1 -> v2:
>   (suggested by Yann E. MORIN)
>   - Config.in: check-package accomplished
>   - Config.in: fixed Config.in dependences
>   - zfs.hash: proper zfs.hash format
>   - zfs.mk: added cpe for openzfs
>   - zfs.mk: uclibc patch merged into upstream
>   - zfs.mk: removed futile comments as "zfs needs"
>   - zfs.mk: added comments about the kernel dependence
>   - zfs.mk: removed autotools default arguments values
>   - zfs.mk: added optional PAM dependence
>   - zfs.mk: replaced inline conditionals by full explained blocks
>   - zfs.mk: added comments about optionals systemd and sysv
>   - zfs.mk: removed --disable-silent-rules
>   - zfs.mk: reordered autoreconf
>   - zfs.mk: removed futile shared, static, and both logic
>   - zfs.mk: fixed optional python(2|3) support for pyzfs
>   - zfs.mk: removed futile kernel fragment
>   - test_zfs: replaced external toolchain by already defined bootlin
>   - test_zfs: increased memory a bit to prevents OOM
>   - test_zfs: added pyzfs test
> 
>  DEVELOPERS                                |  4 +
>  package/Config.in                         |  1 +
>  package/zfs/Config.in                     | 32 ++++++++
>  package/zfs/zfs.hash                      |  6 ++
>  package/zfs/zfs.mk                        | 90 +++++++++++++++++++++++
>  support/testing/tests/package/test_zfs.py | 61 +++++++++++++++
>  6 files changed, 194 insertions(+)
>  create mode 100644 package/zfs/Config.in
>  create mode 100644 package/zfs/zfs.hash
>  create mode 100644 package/zfs/zfs.mk
>  create mode 100644 support/testing/tests/package/test_zfs.py
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 6a7e88039e..71e95b5bcf 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1383,6 +1383,10 @@ F:	package/libuio/
>  F:	package/netsniff-ng/
>  F:	package/rabbitmq-c/
>  
> +N:	Jos? Luis Salvador Rufo <salvador.joseluis@gmail.com>
> +F:	package/zfs/
> +F:	support/testing/tests/package/test_zfs.py
> +
>  N:	Joseph Kogut <joseph.kogut@gmail.com>
>  F:	package/at-spi2-atk/
>  F:	package/at-spi2-core/
> diff --git a/package/Config.in b/package/Config.in
> index d278e78b68..60afa84c2f 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -229,6 +229,7 @@ menu "Filesystem and flash utilities"
>  	source "package/udftools/Config.in"
>  	source "package/unionfs/Config.in"
>  	source "package/xfsprogs/Config.in"
> +	source "package/zfs/Config.in"
>  endmenu
>  
>  menu "Fonts, cursors, icons, sounds and themes"
> diff --git a/package/zfs/Config.in b/package/zfs/Config.in
> new file mode 100644
> index 0000000000..96711d681e
> --- /dev/null
> +++ b/package/zfs/Config.in
> @@ -0,0 +1,32 @@
> +comment "zfs needs a Linux kernel to be built"
> +	depends on !BR2_LINUX_KERNEL
> +
> +comment "zfs needs udev /dev management"
> +	depends on BR2_LINUX_KERNEL
> +	depends on !BR2_PACKAGE_HAS_UDEV
> +
> +config BR2_PACKAGE_ZFS
> +	bool "zfs"
> +	depends on BR2_LINUX_KERNEL
> +	depends on BR2_PACKAGE_HAS_UDEV
> +	depends on BR2_USE_MMU  # util-linux (libblkid)
> +	depends on BR2_TOOLCHAIN_HAS_THREADS  # libtirpc
> +	select BR2_PACKAGE_UTIL_LINUX
> +	select BR2_PACKAGE_UTIL_LINUX_LIBBLKID
> +	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
> +	select BR2_PACKAGE_LIBTIRPC
> +	select BR2_PACKAGE_LIBAIO
> +	select BR2_PACKAGE_OPENSSL
> +	select BR2_PACKAGE_ZLIB
> +	help
> +	  OpenZFS on Linux and FreeBSD
> +
> +	  OpenZFS is an advanced file system and volume manager which
> +	  was originally developed for Solaris and is now maintained by
> +	  the OpenZFS community. This repository contains the code for
> +	  running OpenZFS on Linux and FreeBSD.
> +
> +	  http://zfsonlinux.org/
> +
> +	  This package builds the kernel modules and userland utils
> +	  required to operates with ZFS volumes.
> diff --git a/package/zfs/zfs.hash b/package/zfs/zfs.hash
> new file mode 100644
> index 0000000000..5a0c43d366
> --- /dev/null
> +++ b/package/zfs/zfs.hash
> @@ -0,0 +1,6 @@
> +# Locally calculated
> +sha256  7d1344c5433b91823f02c2e40b33d181fa6faf286bea5591f4b1965f23d45f6c  zfs-2.0.4.tar.gz
> +
> +# Hash for license files:
> +sha256  1ffb70c33c4f79f04e947facc5c7851f289609256aacb47fc115f700427d9520  LICENSE
> +sha256  f125a37c829705eff3e6f77a9f6c58fd71060f84ab54180b98fafdf94a2021eb  COPYRIGHT
> diff --git a/package/zfs/zfs.mk b/package/zfs/zfs.mk
> new file mode 100644
> index 0000000000..7e7e6081a5
> --- /dev/null
> +++ b/package/zfs/zfs.mk
> @@ -0,0 +1,90 @@
> +################################################################################
> +#
> +# zfs
> +#
> +################################################################################
> +
> +ZFS_VERSION = 2.0.4
> +ZFS_SITE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_VERSION)
> +ZFS_LICENSE = CDDL
> +ZFS_LICENSE_FILES = LICENSE COPYRIGHT
> +ZFS_CPE_ID_VENDOR = openzfs
> +ZFS_CPE_ID_PRODUCT = openzfs
> +ZFS_CPE_ID_PREFIX = cpe:2.3:a
> +
> +# ZFS userland tools are unfunctional without its Linux kernel modules.
> +ZFS_MODULES = zavl icp zlua znvpair spl zunicode zcommon zzstd zfs
> +ZFS_MODULE_SUBDIRS = module/avl module/icp module/lua module/nvpair module/spl module/unicode module/zcommon module/zstd module/zfs
> +
> +# These requirements will be validated by zfs/config/kernel-config-defined.m4
> +define ZFS_LINUX_CONFIG_FIXUPS
> +	$(call KCONFIG_DISABLE_OPT,CONFIG_DEBUG_LOCK_ALLOC)
> +	$(call KCONFIG_DISABLE_OPT,CONFIG_TRIM_UNUSED_KSYMS)
> +	$(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_DEFLATE)
> +	$(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_DEFLATE)
> +	$(call KCONFIG_ENABLE_OPT,CONFIG_ZLIB_INFLATE)
> +endef
> +
> +ZFS_AUTORECONF = YES
> +ZFS_AUTORECONF_OPTS = -fiv
> +
> +ZFS_DEPENDENCIES += zlib util-linux libtirpc libaio openssl udev
> +ZFS_CONF_OPTS = \
> +	--with-linux=$(LINUX_DIR) \
> +	--with-linux-obj=$(LINUX_DIR) \
> +	--with-tirpc \
> +	--disable-rpath
> +
> +ifeq ($(BR2_ENABLE_LOCALE),)
> +ZFS_CONF_OPTS += --enable-nls
> +else
> +ZFS_CONF_OPTS += --disable-nls
> +endif
> +
> +ifeq ($(BR2_INIT_SYSTEMD),y)
> +# Installs the optional systemd generators, units, and presets files.
> +ZFS_CONF_OPTS += --enable-systemd
> +else
> +ZFS_CONF_OPTS += --disable-systemd
> +endif
> +
> +ifeq ($(BR2_INIT_SYSV),y)
> +# Installs the optional sysvinit modules-load.d conf. file.
> +ZFS_CONF_OPTS += --enable-sysvinit
> +else
> +ZFS_CONF_OPTS += --disable-sysvinit
> +endif
> +
> +# The optional PyZFS uses different scripts depending on the python
> +# version (ex: arc_summary2 or arc_summary3).
> +ifeq ($(BR2_PACKAGE_PYTHON),y)
> +ZFS_DEPENDENCIES += python python-setuptools host-python-cffi
> +ZFS_CONF_ENV += \
> +	PYTHON=$(HOST_DIR)/usr/bin/python2 \
> +	PYTHON_CPPFLAGS="`$(STAGING_DIR)/usr/bin/python2-config --includes`" \
> +	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python2-config --ldflags`" \
> +	PYTHON_SITE_PKG="/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
> +ZFS_CONF_OPTS += --enable-pyzfs
> +else ifeq ($(BR2_PACKAGE_PYTHON3),y)
> +ZFS_DEPENDENCIES += python3 python-setuptools host-python-cffi
> +ZFS_CONF_ENV += \
> +	PYTHON=$(HOST_DIR)/usr/bin/python3 \
> +	PYTHON_CPPFLAGS="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \
> +	PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`" \
> +	PYTHON_EXTRA_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --libs --embed`" \
> +	PYTHON_SITE_PKG="/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
> +ZFS_CONF_OPTS += --enable-pyzfs
> +else
> +ZFS_CONF_OPTS += --disable-pyzfs --without-python
> +endif
> +
> +ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
> +# ZFS will check for pam_modules.h
> +ZFS_DEPENDENCIES += linux-pam
> +ZFS_CONF_ENV += --enable-pam=yes
> +else
> +ZFS_CONF_OPTS += --disable-pam
> +endif
> +
> +$(eval $(kernel-module))
> +$(eval $(autotools-package))
> diff --git a/support/testing/tests/package/test_zfs.py b/support/testing/tests/package/test_zfs.py
> new file mode 100644
> index 0000000000..6a6d2da120
> --- /dev/null
> +++ b/support/testing/tests/package/test_zfs.py
> @@ -0,0 +1,61 @@
> +import os
> +
> +from ..toolchain.test_external_bootlin import (
> +    TestExternalToolchainBootlinX8664corei7UclibcStable,
> +)
> +
> +
> +class TestZfs(TestExternalToolchainBootlinX8664corei7UclibcStable):
> +    config = (
> +        TestExternalToolchainBootlinX8664corei7UclibcStable.config
> +        + """
> +        BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config"
> +        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.23"
> +        BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +        BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
> +        BR2_LINUX_KERNEL=y
> +        BR2_PACKAGE_BUSYBOX=y
> +        BR2_PACKAGE_ZFS=y
> +        BR2_PACKAGE_ZLIB_NG=y
> +        BR2_PACKAGE_LIBRESSL=y
> +        BR2_PACKAGE_PYTHON3=y
> +        BR2_PACKAGE_PYTHON_SETUPTOOLS=y
> +        BR2_PACKAGE_PYTHON_CFFI=y
> +        BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
> +        BR2_TARGET_ROOTFS_CPIO=y
> +        """
> +    )
> +
> +    def test_run(self):
> +        kernel = os.path.join(self.builddir, "images", "bzImage")
> +        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
> +        self.emulator.boot(
> +            arch="x86_64",
> +            kernel=kernel,
> +            kernel_cmdline=["console=ttyS0"],
> +            options=["-cpu", "Nehalem", "-m", "320", "-initrd", cpio_file],
> +        )
> +        self.emulator.login()
> +
> +        timeout = 35 * self.emulator.timeout_multiplier
> +        cmds = [
> +            # Init
> +            "modprobe zfs",
> +            "mount -o remount,size=132M /tmp",
> +            "fallocate -l 64M /tmp/container1.raw",
> +            "fallocate -l 64M /tmp/container2.raw",
> +            "zpool create -m /pool pool raidz /tmp/container1.raw /tmp/container2.raw",
> +            "dd if=/dev/urandom bs=1M count=8 of=/pool/urandom",
> +            "sha256sum /pool/urandom > /tmp/urandom.sha256",
> +            # Check ZFS
> +            "zpool export pool",
> +            "zpool import pool -d /tmp/container1.raw -d /tmp/container2.raw",
> +            "dd conv=notrunc bs=1M count=32 seek=16 if=/dev/urandom of=/tmp/container1.raw",
> +            "zpool scrub -w pool",
> +            "sha256sum -c /tmp/urandom.sha256",
> +            "zpool status -v",
> +            # Check PyZFS
> +            "arc_summary",
> +        ]
> +        for cmd in cmds:
> +            self.assertRunOk(cmd, timeout=timeout)
> -- 
> 2.31.0
> 

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH v3] package/zfs: new package
  2021-04-13 21:16 ` Yann E. MORIN
@ 2021-08-22 10:38   ` Romain Naour
  2021-08-22 12:13     ` José Luis Salvador Rufo
  0 siblings, 1 reply; 5+ messages in thread
From: Romain Naour @ 2021-08-22 10:38 UTC (permalink / raw)
  To: Yann E. MORIN, José Luis Salvador Rufo; +Cc: Thomas Petazzoni, buildroot

[-- Attachment #1: Type: text/plain, Size: 3598 bytes --]

Hello José Luis, All,

Le 13/04/2021 à 23:16, Yann E. MORIN a écrit :
> José Luis, All,
> 
> On 2021-03-17 10:52 +0100, José Luis Salvador Rufo spake thusly:
>> OpenZFS is an advanced file system and volume manager which was originally
>> developed for Solaris and is now maintained by the OpenZFS community. This
>> repository contains the code for running OpenZFS on Linux and FreeBSD.
>>
>> http://zfsonlinux.org/
>>
>> Signed-off-by: José Luis Salvador Rufo <salvador.joseluis@gmail.com>
> 
> I did a few substancial changes:
> 
>   - fix test case on how to use a pre-built toolchain
>   - reorder the test case config
>   - add test case with glibc
>   - drop superflous test timeout override
>   - only select libtirpc when C library lacks native RPC
>   - drop unused ZFS_MODULES variable
>   - drop ZFS_CPE_ID_PREFIX and ZFS_AUTORECONF_OPTS which are defaults
>   - drop NLS options, already set in a generic manner
>   - drop incomplete/improper sysvinit support
>   - some cosmetics
> 
> Applied to master with the above changes, thanks.
> 
> Regards,
> Yann E. MORIN.
> 
>> ---
>> Changes v2 -> v3:
>>   - Updated OpenZFS to 2.0.4
>> Changes v1 -> v2:
>>   (suggested by Yann E. MORIN)
>>   - Config.in: check-package accomplished
>>   - Config.in: fixed Config.in dependences
>>   - zfs.hash: proper zfs.hash format
>>   - zfs.mk: added cpe for openzfs
>>   - zfs.mk: uclibc patch merged into upstream
>>   - zfs.mk: removed futile comments as "zfs needs"
>>   - zfs.mk: added comments about the kernel dependence
>>   - zfs.mk: removed autotools default arguments values
>>   - zfs.mk: added optional PAM dependence
>>   - zfs.mk: replaced inline conditionals by full explained blocks
>>   - zfs.mk: added comments about optionals systemd and sysv
>>   - zfs.mk: removed --disable-silent-rules
>>   - zfs.mk: reordered autoreconf
>>   - zfs.mk: removed futile shared, static, and both logic
>>   - zfs.mk: fixed optional python(2|3) support for pyzfs
>>   - zfs.mk: removed futile kernel fragment
>>   - test_zfs: replaced external toolchain by already defined bootlin
>>   - test_zfs: increased memory a bit to prevents OOM
>>   - test_zfs: added pyzfs test
>>
>>  DEVELOPERS                                |  4 +
>>  package/Config.in                         |  1 +
>>  package/zfs/Config.in                     | 32 ++++++++
>>  package/zfs/zfs.hash                      |  6 ++
>>  package/zfs/zfs.mk                        | 90 +++++++++++++++++++++++
>>  support/testing/tests/package/test_zfs.py | 61 +++++++++++++++

The test_zfs doesn't build in our gitlab CI:

https://gitlab.com/kubu93/buildroot/-/jobs/1522848483

zfs use the host compiler to check if it can build zfs modules for the target

checking kernel source directory...
/builds/kubu93/buildroot/test-output/TestZfsGlibc/build/linux-5.12.13
checking kernel build directory...
/builds/kubu93/buildroot/test-output/TestZfsGlibc/build/linux-5.12.13
checking kernel source version... 5.12.13
checking kernel file name for module symbols... Module.symvers
checking whether modules can be built... no
configure: error:
	*** Unable to build an empty module.
		
See build-host-gcc-6.log

  CC [M]
/home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.o
In file included from <command-line>:0:0:
./arch/x86/include/asm/segment.h: In function 'vdso_read_cpunode':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline

The check pass if a newer host gcc is used (gcc 10.3 here).

Can you have a look ?

Best regards,
Romain

[-- Attachment #2: build-host-gcc-6.log --]
[-- Type: text/x-log, Size: 64029 bytes --]

$ gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

make[2]: Entering directory '/home/br-user/buildroot/testsuite/TestZfsGlibc/build/linux-5.12.13'
  CC [M]  /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.o
In file included from <command-line>:0:0:
./arch/x86/include/asm/segment.h: In function 'vdso_read_cpunode':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:240:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/segment.h:262:2: note: in expansion of macro 'alternative_io'
  alternative_io ("lsl %[seg],%[p]",
  ^~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/bitops.h:17:0,
                 from ./include/linux/bitops.h:32,
                 from ./include/linux/kernel.h:11,
                 from ./include/linux/list.h:9,
                 from ./include/linux/module.h:12,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/alternative.h:108:2: error: expected identifier or '(' before string constant
  "# ALT: oldnstr\n"      \
  ^
./arch/x86/include/asm/alternative.h:159:2: note: in expansion of macro 'OLDINSTR'
  OLDINSTR(oldinstr, 1)      \
  ^~~~~~~~
./arch/x86/include/asm/alternative.h:240:23: note: in expansion of macro 'ALTERNATIVE'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
                       ^~~~~~~~~~~
./arch/x86/include/asm/segment.h:262:2: note: in expansion of macro 'alternative_io'
  alternative_io ("lsl %[seg],%[p]",
  ^~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:240:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/segment.h:262:2: note: in expansion of macro 'alternative_io'
  alternative_io ("lsl %[seg],%[p]",
  ^~~~~~~~~~~~~~
./include/linux/jump_label.h: In function 'static_key_slow_inc':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:278:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:278:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:278:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
./include/linux/jump_label.h: In function 'static_key_slow_dec':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:284:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:284:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:284:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
./include/linux/jump_label.h: In function 'static_key_enable':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:306:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:306:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:306:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/jump_label.h:309:3: note: in expansion of macro 'WARN_ON_ONCE'
   WARN_ON_ONCE(atomic_read(&key->enabled) != 1);
   ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/jump_label.h:309:3: note: in expansion of macro 'WARN_ON_ONCE'
   WARN_ON_ONCE(atomic_read(&key->enabled) != 1);
   ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/jump_label.h:309:3: note: in expansion of macro 'WARN_ON_ONCE'
   WARN_ON_ONCE(atomic_read(&key->enabled) != 1);
   ^~~~~~~~~~~~
./include/linux/jump_label.h: In function 'static_key_disable':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:317:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:317:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/jump_label.h:81:35: note: in expansion of macro 'WARN'
 #define STATIC_KEY_CHECK_USE(key) WARN(!static_key_initialized,        \
                                   ^~~~
./include/linux/jump_label.h:317:2: note: in expansion of macro 'STATIC_KEY_CHECK_USE'
  STATIC_KEY_CHECK_USE(key);
  ^~~~~~~~~~~~~~~~~~~~
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/jump_label.h:320:3: note: in expansion of macro 'WARN_ON_ONCE'
   WARN_ON_ONCE(atomic_read(&key->enabled) != 0);
   ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/jump_label.h:320:3: note: in expansion of macro 'WARN_ON_ONCE'
   WARN_ON_ONCE(atomic_read(&key->enabled) != 0);
   ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/jump_label.h:320:3: note: in expansion of macro 'WARN_ON_ONCE'
   WARN_ON_ONCE(atomic_read(&key->enabled) != 0);
   ^~~~~~~~~~~~
./arch/x86/include/asm/page_64.h: In function 'clear_page':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:256:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
  ^~~~~~~~~~
./arch/x86/include/asm/page_64.h:49:2: note: in expansion of macro 'alternative_call_2'
  alternative_call_2(clear_page_orig,
  ^~~~~~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/bitops.h:17:0,
                 from ./include/linux/bitops.h:32,
                 from ./include/linux/kernel.h:11,
                 from ./include/linux/list.h:9,
                 from ./include/linux/module.h:12,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/alternative.h:128:2: error: expected identifier or '(' before string constant
  "# ALT: oldinstr2\n"         \
  ^
./arch/x86/include/asm/alternative.h:168:2: note: in expansion of macro 'OLDINSTR_2'
  OLDINSTR_2(oldinstr, 1, 2)     \
  ^~~~~~~~~~
./arch/x86/include/asm/alternative.h:256:23: note: in expansion of macro 'ALTERNATIVE_2'
  asm_inline volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
                       ^~~~~~~~~~~~~
./arch/x86/include/asm/page_64.h:49:2: note: in expansion of macro 'alternative_call_2'
  alternative_call_2(clear_page_orig,
  ^~~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:256:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\
  ^~~~~~~~~~
./arch/x86/include/asm/page_64.h:49:2: note: in expansion of macro 'alternative_call_2'
  alternative_call_2(clear_page_orig,
  ^~~~~~~~~~~~~~~~~~
./arch/x86/include/asm/special_insns.h: In function 'clflushopt':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:240:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/special_insns.h:217:2: note: in expansion of macro 'alternative_io'
  alternative_io(".byte " __stringify(NOP_DS_PREFIX) "; clflush %P0",
  ^~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/bitops.h:17:0,
                 from ./include/linux/bitops.h:32,
                 from ./include/linux/kernel.h:11,
                 from ./include/linux/list.h:9,
                 from ./include/linux/module.h:12,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/alternative.h:108:2: error: expected identifier or '(' before string constant
  "# ALT: oldnstr\n"      \
  ^
./arch/x86/include/asm/alternative.h:159:2: note: in expansion of macro 'OLDINSTR'
  OLDINSTR(oldinstr, 1)      \
  ^~~~~~~~
./arch/x86/include/asm/alternative.h:240:23: note: in expansion of macro 'ALTERNATIVE'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
                       ^~~~~~~~~~~
./arch/x86/include/asm/special_insns.h:217:2: note: in expansion of macro 'alternative_io'
  alternative_io(".byte " __stringify(NOP_DS_PREFIX) "; clflush %P0",
  ^~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:240:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/special_insns.h:217:2: note: in expansion of macro 'alternative_io'
  alternative_io(".byte " __stringify(NOP_DS_PREFIX) "; clflush %P0",
  ^~~~~~~~~~~~~~
./arch/x86/include/asm/processor.h: In function 'prefetch':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:221:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/processor.h:735:2: note: in expansion of macro 'alternative_input'
  alternative_input(BASE_PREFETCH, "prefetchnta %P1",
  ^~~~~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/bitops.h:17:0,
                 from ./include/linux/bitops.h:32,
                 from ./include/linux/kernel.h:11,
                 from ./include/linux/list.h:9,
                 from ./include/linux/module.h:12,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/alternative.h:108:2: error: expected identifier or '(' before string constant
  "# ALT: oldnstr\n"      \
  ^
./arch/x86/include/asm/alternative.h:159:2: note: in expansion of macro 'OLDINSTR'
  OLDINSTR(oldinstr, 1)      \
  ^~~~~~~~
./arch/x86/include/asm/alternative.h:221:23: note: in expansion of macro 'ALTERNATIVE'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
                       ^~~~~~~~~~~
./arch/x86/include/asm/processor.h:735:2: note: in expansion of macro 'alternative_input'
  alternative_input(BASE_PREFETCH, "prefetchnta %P1",
  ^~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:221:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/processor.h:735:2: note: in expansion of macro 'alternative_input'
  alternative_input(BASE_PREFETCH, "prefetchnta %P1",
  ^~~~~~~~~~~~~~~~~
./arch/x86/include/asm/processor.h: In function 'prefetchw':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:221:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/processor.h:747:2: note: in expansion of macro 'alternative_input'
  alternative_input(BASE_PREFETCH, "prefetchw %P1",
  ^~~~~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/bitops.h:17:0,
                 from ./include/linux/bitops.h:32,
                 from ./include/linux/kernel.h:11,
                 from ./include/linux/list.h:9,
                 from ./include/linux/module.h:12,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/alternative.h:108:2: error: expected identifier or '(' before string constant
  "# ALT: oldnstr\n"      \
  ^
./arch/x86/include/asm/alternative.h:159:2: note: in expansion of macro 'OLDINSTR'
  OLDINSTR(oldinstr, 1)      \
  ^~~~~~~~
./arch/x86/include/asm/alternative.h:221:23: note: in expansion of macro 'ALTERNATIVE'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
                       ^~~~~~~~~~~
./arch/x86/include/asm/processor.h:747:2: note: in expansion of macro 'alternative_input'
  alternative_input(BASE_PREFETCH, "prefetchw %P1",
  ^~~~~~~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/alternative.h:221:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
  ^~~~~~~~~~
./arch/x86/include/asm/processor.h:747:2: note: in expansion of macro 'alternative_input'
  alternative_input(BASE_PREFETCH, "prefetchw %P1",
  ^~~~~~~~~~~~~~~~~
./include/linux/thread_info.h: In function 'copy_overflow':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/thread_info.h:199:2: note: in expansion of macro 'WARN'
  WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count);
  ^~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/thread_info.h:199:2: note: in expansion of macro 'WARN'
  WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count);
  ^~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:98:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
   ^~~~~~~~~~~~
./include/asm-generic/bug.h:130:3: note: in expansion of macro '__WARN_printf'
   __WARN_printf(TAINT_WARN, format);   \
   ^~~~~~~~~~~~~
./include/linux/thread_info.h:199:2: note: in expansion of macro 'WARN'
  WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count);
  ^~~~
./include/linux/thread_info.h: In function 'check_copy_size':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/thread_info.h:215:6: note: in expansion of macro 'WARN_ON_ONCE'
  if (WARN_ON_ONCE(bytes > INT_MAX))
      ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/thread_info.h:215:6: note: in expansion of macro 'WARN_ON_ONCE'
  if (WARN_ON_ONCE(bytes > INT_MAX))
      ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/thread_info.h:215:6: note: in expansion of macro 'WARN_ON_ONCE'
  if (WARN_ON_ONCE(bytes > INT_MAX))
      ^~~~~~~~~~~~
./include/linux/rcupdate.h: In function 'rcu_head_after_call_rcu':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/rcupdate.h:985:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(func != (rcu_callback_t)~0L);
  ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/rcupdate.h:985:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(func != (rcu_callback_t)~0L);
  ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/rcupdate.h:985:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(func != (rcu_callback_t)~0L);
  ^~~~~~~~~~~~
./include/linux/ktime.h: In function 'ktime_divns':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:94:19: note: in expansion of macro '__WARN_FLAGS'
 #define __WARN()  __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
                   ^~~~~~~~~~~~
./include/asm-generic/bug.h:121:3: note: in expansion of macro '__WARN'
   __WARN();      \
   ^~~~~~
./include/linux/ktime.h:154:2: note: in expansion of macro 'WARN_ON'
  WARN_ON(div < 0);
  ^~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:94:19: note: in expansion of macro '__WARN_FLAGS'
 #define __WARN()  __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
                   ^~~~~~~~~~~~
./include/asm-generic/bug.h:121:3: note: in expansion of macro '__WARN'
   __WARN();      \
   ^~~~~~
./include/linux/ktime.h:154:2: note: in expansion of macro 'WARN_ON'
  WARN_ON(div < 0);
  ^~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:94:19: note: in expansion of macro '__WARN_FLAGS'
 #define __WARN()  __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
                   ^~~~~~~~~~~~
./include/asm-generic/bug.h:121:3: note: in expansion of macro '__WARN'
   __WARN();      \
   ^~~~~~
./include/linux/ktime.h:154:2: note: in expansion of macro 'WARN_ON'
  WARN_ON(div < 0);
  ^~~~~~~
./include/linux/srcu.h: In function 'srcu_read_unlock':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/srcu.h:182:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(idx & ~0x1);
  ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/srcu.h:182:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(idx & ~0x1);
  ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/srcu.h:182:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(idx & ~0x1);
  ^~~~~~~~~~~~
./include/linux/xarray.h: In function 'xa_mk_value':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:94:19: note: in expansion of macro '__WARN_FLAGS'
 #define __WARN()  __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
                   ^~~~~~~~~~~~
./include/asm-generic/bug.h:121:3: note: in expansion of macro '__WARN'
   __WARN();      \
   ^~~~~~
./include/linux/xarray.h:54:2: note: in expansion of macro 'WARN_ON'
  WARN_ON((long)v < 0);
  ^~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:94:19: note: in expansion of macro '__WARN_FLAGS'
 #define __WARN()  __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
                   ^~~~~~~~~~~~
./include/asm-generic/bug.h:121:3: note: in expansion of macro '__WARN'
   __WARN();      \
   ^~~~~~
./include/linux/xarray.h:54:2: note: in expansion of macro 'WARN_ON'
  WARN_ON((long)v < 0);
  ^~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:94:19: note: in expansion of macro '__WARN_FLAGS'
 #define __WARN()  __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
                   ^~~~~~~~~~~~
./include/asm-generic/bug.h:121:3: note: in expansion of macro '__WARN'
   __WARN();      \
   ^~~~~~
./include/linux/xarray.h:54:2: note: in expansion of macro 'WARN_ON'
  WARN_ON((long)v < 0);
  ^~~~~~~
./include/linux/xarray.h: In function 'xas_set_order':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:75:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, 0);     \
  ^~~~~~~~~~
./include/asm-generic/bug.h:63:57: note: in expansion of macro 'BUG'
 #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                                         ^~~
./include/linux/xarray.h:1598:2: note: in expansion of macro 'BUG_ON'
  BUG_ON(order > 0);
  ^~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:75:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, 0);     \
  ^~~~~~~~~~
./include/asm-generic/bug.h:63:57: note: in expansion of macro 'BUG'
 #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                                         ^~~
./include/linux/xarray.h:1598:2: note: in expansion of macro 'BUG_ON'
  BUG_ON(order > 0);
  ^~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:75:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, 0);     \
  ^~~~~~~~~~
./include/asm-generic/bug.h:63:57: note: in expansion of macro 'BUG'
 #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                                         ^~~
./include/linux/xarray.h:1598:2: note: in expansion of macro 'BUG_ON'
  BUG_ON(order > 0);
  ^~~~~~
./include/linux/kernfs.h: In function 'kernfs_enable_ns':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kernfs.h:330:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(kernfs_type(kn) != KERNFS_DIR);
  ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kernfs.h:330:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(kernfs_type(kn) != KERNFS_DIR);
  ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kernfs.h:330:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(kernfs_type(kn) != KERNFS_DIR);
  ^~~~~~~~~~~~
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kernfs.h:331:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(!RB_EMPTY_ROOT(&kn->dir.children));
  ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kernfs.h:331:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(!RB_EMPTY_ROOT(&kn->dir.children));
  ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kernfs.h:331:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(!RB_EMPTY_ROOT(&kn->dir.children));
  ^~~~~~~~~~~~
./include/linux/kobject.h: In function 'kobject_has_children':
././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kobject.h:133:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(kref_read(&kobj->kref) == 0);
  ^~~~~~~~~~~~
In file included from ./include/linux/bug.h:5:0,
                 from ./include/linux/jump_label.h:250,
                 from ./include/linux/static_key.h:1,
                 from ./arch/x86/include/asm/nospec-branch.h:6,
                 from ./arch/x86/include/asm/paravirt_types.h:45,
                 from ./arch/x86/include/asm/ptrace.h:94,
                 from ./arch/x86/include/asm/math_emu.h:5,
                 from ./arch/x86/include/asm/processor.h:13,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:65,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.c:64:
./arch/x86/include/asm/bug.h:36:22: error: expected identifier or '(' before string constant
  asm_inline volatile("1:\t" ins "\n"    \
                      ^
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kobject.h:133:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(kref_read(&kobj->kref) == 0);
  ^~~~~~~~~~~~
In file included from <command-line>:0:0:
././include/linux/compiler_types.h:250:24: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
 #define asm_inline asm __inline
                        ^
./arch/x86/include/asm/bug.h:36:2: note: in expansion of macro 'asm_inline'
  asm_inline volatile("1:\t" ins "\n"    \
  ^~~~~~~~~~
./arch/x86/include/asm/bug.h:88:2: note: in expansion of macro '_BUG_FLAGS'
  _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags));  \
  ^~~~~~~~~~
./include/asm-generic/bug.h:104:3: note: in expansion of macro '__WARN_FLAGS'
   __WARN_FLAGS(BUGFLAG_ONCE |   \
   ^~~~~~~~~~~~
./include/linux/kobject.h:133:2: note: in expansion of macro 'WARN_ON_ONCE'
  WARN_ON_ONCE(kref_read(&kobj->kref) == 0);
  ^~~~~~~~~~~~
cc1: all warnings being treated as errors
scripts/Makefile.build:271: recipe for target '/home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.o' failed
make[3]: *** [/home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.o] Error 1
make[3]: Target '__build' not remade because of errors.
Makefile:1859: recipe for target '/home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest' failed
make[2]: *** [/home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest] Error 2
make[2]: Target 'modules' not remade because of errors.
make[2]: Leaving directory '/home/br-user/buildroot/testsuite/TestZfsGlibc/build/linux-5.12.13'

[-- Attachment #3: Type: text/plain, Size: 145 bytes --]

_______________________________________________
buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH v3] package/zfs: new package
  2021-08-22 10:38   ` Romain Naour
@ 2021-08-22 12:13     ` José Luis Salvador Rufo
  2021-08-22 13:10       ` Romain Naour
  0 siblings, 1 reply; 5+ messages in thread
From: José Luis Salvador Rufo @ 2021-08-22 12:13 UTC (permalink / raw)
  To: Romain Naour
  Cc: Philippe Serbruyns, Yann E. MORIN, Thomas Petazzoni, buildroot


[-- Attachment #1.1: Type: text/plain, Size: 7737 bytes --]

Hello Romain,

I added Philippe Serbruyns to CC (from another related thread).

I'm on it. Currently we have two main issues with ZFS:

- AIO uClibc support for zfs 2.1.X and beyond:

This is the reason I didn't send the `zfs 2.1.x bump version` yet.

This commit added AIO in order to improve the speed importing volumes
parallely:
https://github.com/openzfs/zfs/commit/e50b5217e7a85f1466edf88d5f3ea5aed0c2fd22

But uClibc doesn't support `#include <aio.h>`. So I need to only import
this library when it is not uClibc. I don't figure out yet how (attached a
`poc.patch` for ZFS that does not work).

I'm trying to create a proper patch for upstream.



- Cross-platform-compilations and the `empty module` test:

This issue is very old, and everything is about environments and
cross-platform-compilations. The problem comes from here:
https://github.com/openzfs/zfs/blob/master/config/kernel.m4#L598

In this test, the `make` (modules) is from the host because (I think)
somewhere someone unset all environments. Some people include `export PATH`
in order to execute the `make` from the cross-compilation environment. I am
still thinking about a proper patch for upstream.

Here is my `build.log` from the referred `make`:

make[2]: Entering directory
'/home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom'


  ERROR: Kernel configuration is invalid.

         include/generated/autoconf.h or include/config/auto.conf are
missing.

         Run 'make oldconfig && make prepare' on kernel src to fix it.

make[2]: *** [Makefile:719: include/config/auto.conf] Error 1

make[2]: Failed to remake makefile 'include/config/auto.conf'.

  CC [M]
 /home/jlsalvador/src/buildroot-rpi4-tmp/build/zfs-2.0.5/build/conftest/conftest.o

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized argument in
option ‘-mcmodel=kernel’

aarch64-buildroot-linux-uclibc-gcc.br_real: note: valid arguments to
‘-mcmodel=’ are: large small tiny

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
command-line option ‘-mno-sse’; did you mean ‘-fno-dse’?

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
command-line option ‘-mno-mmx’

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
command-line option ‘-mno-sse2’

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
command-line option ‘-mno-3dnow’

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
command-line option ‘-m64’

aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
command-line option ‘-mno-red-zone’

make[3]: *** [scripts/Makefile.build:279:
/home/jlsalvador/src/buildroot-rpi4-tmp/build/zfs-2.0.5/build/conftest/conftest.o]
Error 1

make[3]: Target '__build' not remade because of errors.

make[2]: *** [Makefile:1824:
/home/jlsalvador/src/buildroot-rpi4-tmp/build/zfs-2.0.5/build/conftest]
Error 2

make[2]: Target 'modules' not remade because of errors.

make[2]: Leaving directory
'/home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom'

The `include/config/auto.conf` file exists:

$ file
/home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom/include/config/auto.conf
/home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom/include/config/auto.conf:
Linux make config build file, ASCII text


But because the `make` is from a x86, and the final platform is a Arm64,
the LINUX config is incorrect.

As you already saw, I need to figure out how to use the `make` from the
cross-compilation path instead of the host path for this test.


This is the current status. I'm trying to fix the second issue today. Any
help is more than welcome.

Greetings.

El dom, 22 ago 2021 a las 12:38, Romain Naour (<romain.naour@gmail.com>)
escribió:

> Hello José Luis, All,
>
> Le 13/04/2021 à 23:16, Yann E. MORIN a écrit :
> > José Luis, All,
> >
> > On 2021-03-17 10:52 +0100, José Luis Salvador Rufo spake thusly:
> >> OpenZFS is an advanced file system and volume manager which was
> originally
> >> developed for Solaris and is now maintained by the OpenZFS community.
> This
> >> repository contains the code for running OpenZFS on Linux and FreeBSD.
> >>
> >> http://zfsonlinux.org/
> >>
> >> Signed-off-by: José Luis Salvador Rufo <salvador.joseluis@gmail.com>
> >
> > I did a few substancial changes:
> >
> >   - fix test case on how to use a pre-built toolchain
> >   - reorder the test case config
> >   - add test case with glibc
> >   - drop superflous test timeout override
> >   - only select libtirpc when C library lacks native RPC
> >   - drop unused ZFS_MODULES variable
> >   - drop ZFS_CPE_ID_PREFIX and ZFS_AUTORECONF_OPTS which are defaults
> >   - drop NLS options, already set in a generic manner
> >   - drop incomplete/improper sysvinit support
> >   - some cosmetics
> >
> > Applied to master with the above changes, thanks.
> >
> > Regards,
> > Yann E. MORIN.
> >
> >> ---
> >> Changes v2 -> v3:
> >>   - Updated OpenZFS to 2.0.4
> >> Changes v1 -> v2:
> >>   (suggested by Yann E. MORIN)
> >>   - Config.in: check-package accomplished
> >>   - Config.in: fixed Config.in dependences
> >>   - zfs.hash: proper zfs.hash format
> >>   - zfs.mk: added cpe for openzfs
> >>   - zfs.mk: uclibc patch merged into upstream
> >>   - zfs.mk: removed futile comments as "zfs needs"
> >>   - zfs.mk: added comments about the kernel dependence
> >>   - zfs.mk: removed autotools default arguments values
> >>   - zfs.mk: added optional PAM dependence
> >>   - zfs.mk: replaced inline conditionals by full explained blocks
> >>   - zfs.mk: added comments about optionals systemd and sysv
> >>   - zfs.mk: removed --disable-silent-rules
> >>   - zfs.mk: reordered autoreconf
> >>   - zfs.mk: removed futile shared, static, and both logic
> >>   - zfs.mk: fixed optional python(2|3) support for pyzfs
> >>   - zfs.mk: removed futile kernel fragment
> >>   - test_zfs: replaced external toolchain by already defined bootlin
> >>   - test_zfs: increased memory a bit to prevents OOM
> >>   - test_zfs: added pyzfs test
> >>
> >>  DEVELOPERS                                |  4 +
> >>  package/Config.in                         |  1 +
> >>  package/zfs/Config.in                     | 32 ++++++++
> >>  package/zfs/zfs.hash                      |  6 ++
> >>  package/zfs/zfs.mk                        | 90 +++++++++++++++++++++++
> >>  support/testing/tests/package/test_zfs.py | 61 +++++++++++++++
>
> The test_zfs doesn't build in our gitlab CI:
>
> https://gitlab.com/kubu93/buildroot/-/jobs/1522848483
>
> zfs use the host compiler to check if it can build zfs modules for the
> target
>
> checking kernel source directory...
> /builds/kubu93/buildroot/test-output/TestZfsGlibc/build/linux-5.12.13
> checking kernel build directory...
> /builds/kubu93/buildroot/test-output/TestZfsGlibc/build/linux-5.12.13
> checking kernel source version... 5.12.13
> checking kernel file name for module symbols... Module.symvers
> checking whether modules can be built... no
> configure: error:
>         *** Unable to build an empty module.
>
> See build-host-gcc-6.log
>
>   CC [M]
>
> /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.o
> In file included from <command-line>:0:0:
> ./arch/x86/include/asm/segment.h: In function 'vdso_read_cpunode':
> ././include/linux/compiler_types.h:250:24: error: expected '(' before
> '__inline'
>  #define asm_inline asm __inline
>
> The check pass if a newer host gcc is used (gcc 10.3 here).
>
> Can you have a look ?
>
> Best regards,
> Romain
>

[-- Attachment #1.2: Type: text/html, Size: 12873 bytes --]

[-- Attachment #2: poc.patch --]
[-- Type: text/x-patch, Size: 3240 bytes --]

diff --git a/package/zfs/0001-zutil_import.patch b/package/zfs/0001-zutil_import.patch
new file mode 100644
index 0000000000..24788bbf35
--- /dev/null
+++ b/package/zfs/0001-zutil_import.patch
@@ -0,0 +1,36 @@
+diff --git a/lib/libzutil/zutil_import.c b/lib/libzutil/zutil_import.c
+index 0e59ec8c8..64b53651b 100644
+--- a/lib/libzutil/zutil_import.c
++++ b/lib/libzutil/zutil_import.c
+@@ -47,7 +47,10 @@
+  * using our derived config, and record the results.
+  */
+ 
+-#include <aio.h>
++#if (__GLIBC__ && !__UCLIBC__)
++# warning AIO included
++# include <aio.h>
++#endif
+ #include <ctype.h>
+ #include <dirent.h>
+ #include <errno.h>
+@@ -973,6 +975,8 @@ zpool_read_label_slow(int fd, nvlist_t **config, int *num_labels)
+ int
+ zpool_read_label(int fd, nvlist_t **config, int *num_labels)
+ {
++	#if (__GLIBC__ && !__UCLIBC__)
++	# warning AIO included
+ 	struct stat64 statbuf;
+ 	struct aiocb aiocbs[VDEV_LABELS];
+ 	struct aiocb *aiocbps[VDEV_LABELS];
+@@ -1093,6 +1096,10 @@ zpool_read_label(int fd, nvlist_t **config, int *num_labels)
+ 	*config = expected_config;
+ 
+ 	return (0);
++	#else
++	int error = zpool_read_label_slow(fd, config, num_labels);
++	return (error);
++	#endif
+ }
+ 
+ /*
diff --git a/package/zfs/zfs.hash b/package/zfs/zfs.hash
index 5a0c43d366..188b9acfe8 100644
--- a/package/zfs/zfs.hash
+++ b/package/zfs/zfs.hash
@@ -1,5 +1,5 @@
 # Locally calculated
-sha256  7d1344c5433b91823f02c2e40b33d181fa6faf286bea5591f4b1965f23d45f6c  zfs-2.0.4.tar.gz
+sha256  60bddcb630284c771dcf5a1109ca9329d16523a3a40a374019955cfbf97bf34f  zfs-2.1.0.tar.gz
 
 # Hash for license files:
 sha256  1ffb70c33c4f79f04e947facc5c7851f289609256aacb47fc115f700427d9520  LICENSE
diff --git a/package/zfs/zfs.mk b/package/zfs/zfs.mk
index c8e33a7b1a..25fd9e5676 100644
--- a/package/zfs/zfs.mk
+++ b/package/zfs/zfs.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-ZFS_VERSION = 2.0.4
+ZFS_VERSION = 2.1.0
 ZFS_SITE = https://github.com/openzfs/zfs/releases/download/zfs-$(ZFS_VERSION)
 ZFS_LICENSE = CDDL
 ZFS_LICENSE_FILES = LICENSE COPYRIGHT
diff --git a/support/testing/tests/package/test_zfs.py b/support/testing/tests/package/test_zfs.py
index e5f5526faf..b636c1f2aa 100644
--- a/support/testing/tests/package/test_zfs.py
+++ b/support/testing/tests/package/test_zfs.py
@@ -13,7 +13,7 @@ class TestZfsGlibc(infra.basetest.BRTest):
         BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
         BR2_LINUX_KERNEL=y
         BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.23"
+        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.13.2"
         BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
         BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config"
         BR2_PACKAGE_ZFS=y
@@ -70,7 +70,7 @@ class TestZfsUclibc(infra.basetest.BRTest):
         BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
         BR2_LINUX_KERNEL=y
         BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.10.23"
+        BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.13.2"
         BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
         BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux.config"
         BR2_PACKAGE_ZFS=y

[-- Attachment #3: Type: text/plain, Size: 145 bytes --]

_______________________________________________
buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Buildroot] [PATCH v3] package/zfs: new package
  2021-08-22 12:13     ` José Luis Salvador Rufo
@ 2021-08-22 13:10       ` Romain Naour
  0 siblings, 0 replies; 5+ messages in thread
From: Romain Naour @ 2021-08-22 13:10 UTC (permalink / raw)
  To: José Luis Salvador Rufo
  Cc: Philippe Serbruyns, Yann E. MORIN, Thomas Petazzoni, buildroot

Hello José Luis,

Le 22/08/2021 à 14:13, José Luis Salvador Rufo a écrit :
> Hello Romain,
> 
> I added Philippe Serbruyns to CC (from another related thread).
> 
> I'm on it. Currently we have two main issues with ZFS:

Ok, thanks!

> 
> - AIO uClibc support for zfs 2.1.X and beyond:
> 
>     This is the reason I didn't send the `zfs 2.1.x bump version` yet.
> 
>     This commit added AIO in order to improve the speed importing volumes parallely:
>     https://github.com/openzfs/zfs/commit/e50b5217e7a85f1466edf88d5f3ea5aed0c2fd22
>     <https://github.com/openzfs/zfs/commit/e50b5217e7a85f1466edf88d5f3ea5aed0c2fd22>
> 
>     But uClibc doesn't support `#include <aio.h>`. So I need to only import this
>     library when it is not uClibc. I don't figure out yet how (attached a
>     `poc.patch` for ZFS that does not work).
> 
>     I'm trying to create a proper patch for upstream.
> 
> 
> 
> - Cross-platform-compilations and the `empty module` test:
> 
>     This issue is very old, and everything is about environments and
>     cross-platform-compilations. The problem comes from here:
>     https://github.com/openzfs/zfs/blob/master/config/kernel.m4#L598
>     <https://github.com/openzfs/zfs/blob/master/config/kernel.m4#L598>
> 
>     In this test, the `make` (modules) is from the host because (I think)
>     somewhere someone unset all environments. Some people include `export PATH`
>     in order to execute the `make` from the cross-compilation environment. I am
>     still thinking about a proper patch for upstream.
> 
>     Here is my `build.log` from the referred `make`:
> 
>         make[2]: Entering directory
>         '/home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom'
> 
> 
>           ERROR: Kernel configuration is invalid.
> 
>                  include/generated/autoconf.h or include/config/auto.conf are
>         missing.
> 
>                  Run 'make oldconfig && make prepare' on kernel src to fix it.
> 
>         make[2]: *** [Makefile:719: include/config/auto.conf] Error 1
> 
>         make[2]: Failed to remake makefile 'include/config/auto.conf'.
> 
>           CC [M]
>          /home/jlsalvador/src/buildroot-rpi4-tmp/build/zfs-2.0.5/build/conftest/conftest.o
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized argument
>         in option ‘-mcmodel=kernel’
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: note: valid arguments to
>         ‘-mcmodel=’ are: large small tiny
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
>         command-line option ‘-mno-sse’; did you mean ‘-fno-dse’?
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
>         command-line option ‘-mno-mmx’
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
>         command-line option ‘-mno-sse2’
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
>         command-line option ‘-mno-3dnow’
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
>         command-line option ‘-m64’
> 
>         aarch64-buildroot-linux-uclibc-gcc.br_real: error: unrecognized
>         command-line option ‘-mno-red-zone’
> 
>         make[3]: *** [scripts/Makefile.build:279:
>         /home/jlsalvador/src/buildroot-rpi4-tmp/build/zfs-2.0.5/build/conftest/conftest.o]
>         Error 1
> 
>         make[3]: Target '__build' not remade because of errors.
> 
>         make[2]: *** [Makefile:1824:
>         /home/jlsalvador/src/buildroot-rpi4-tmp/build/zfs-2.0.5/build/conftest]
>         Error 2
> 
>         make[2]: Target 'modules' not remade because of errors.
> 
>         make[2]: Leaving directory
>         '/home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom'
> 
>     The `include/config/auto.conf` file exists:
> 
>         $ file
>         /home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom/include/config/auto.conf
>         /home/jlsalvador/src/buildroot-rpi4-tmp/build/linux-custom/include/config/auto.conf:
>         Linux make config build file, ASCII text
> 
> 
>     But because the `make` is from a x86, and the final platform is a Arm64, the
>     LINUX config is incorrect.
> 
>     As you already saw, I need to figure out how to use the `make` from the
>     cross-compilation path instead of the host path for this test.
> 
> 
> This is the current status. I'm trying to fix the second issue today. Any help
> is more than welcome.

Thanks for the feedback, I'm currently looking at the Buildroot testsuite issues
for the upcoming release. I'll try to take a look if I have time.

Best regards,
Romain


> 
> Greetings.
> 
> El dom, 22 ago 2021 a las 12:38, Romain Naour (<romain.naour@gmail.com
> <mailto:romain.naour@gmail.com>>) escribió:
> 
>     Hello José Luis, All,
> 
>     Le 13/04/2021 à 23:16, Yann E. MORIN a écrit :
>     > José Luis, All,
>     >
>     > On 2021-03-17 10:52 +0100, José Luis Salvador Rufo spake thusly:
>     >> OpenZFS is an advanced file system and volume manager which was originally
>     >> developed for Solaris and is now maintained by the OpenZFS community. This
>     >> repository contains the code for running OpenZFS on Linux and FreeBSD.
>     >>
>     >> http://zfsonlinux.org/ <http://zfsonlinux.org/>
>     >>
>     >> Signed-off-by: José Luis Salvador Rufo <salvador.joseluis@gmail.com
>     <mailto:salvador.joseluis@gmail.com>>
>     >
>     > I did a few substancial changes:
>     >
>     >   - fix test case on how to use a pre-built toolchain
>     >   - reorder the test case config
>     >   - add test case with glibc
>     >   - drop superflous test timeout override
>     >   - only select libtirpc when C library lacks native RPC
>     >   - drop unused ZFS_MODULES variable
>     >   - drop ZFS_CPE_ID_PREFIX and ZFS_AUTORECONF_OPTS which are defaults
>     >   - drop NLS options, already set in a generic manner
>     >   - drop incomplete/improper sysvinit support
>     >   - some cosmetics
>     >
>     > Applied to master with the above changes, thanks.
>     >
>     > Regards,
>     > Yann E. MORIN.
>     >
>     >> ---
>     >> Changes v2 -> v3:
>     >>   - Updated OpenZFS to 2.0.4
>     >> Changes v1 -> v2:
>     >>   (suggested by Yann E. MORIN)
>     >>   - Config.in: check-package accomplished
>     >>   - Config.in: fixed Config.in dependences
>     >>   - zfs.hash: proper zfs.hash format
>     >>   - zfs.mk <http://zfs.mk>: added cpe for openzfs
>     >>   - zfs.mk <http://zfs.mk>: uclibc patch merged into upstream
>     >>   - zfs.mk <http://zfs.mk>: removed futile comments as "zfs needs"
>     >>   - zfs.mk <http://zfs.mk>: added comments about the kernel dependence
>     >>   - zfs.mk <http://zfs.mk>: removed autotools default arguments values
>     >>   - zfs.mk <http://zfs.mk>: added optional PAM dependence
>     >>   - zfs.mk <http://zfs.mk>: replaced inline conditionals by full
>     explained blocks
>     >>   - zfs.mk <http://zfs.mk>: added comments about optionals systemd and sysv
>     >>   - zfs.mk <http://zfs.mk>: removed --disable-silent-rules
>     >>   - zfs.mk <http://zfs.mk>: reordered autoreconf
>     >>   - zfs.mk <http://zfs.mk>: removed futile shared, static, and both logic
>     >>   - zfs.mk <http://zfs.mk>: fixed optional python(2|3) support for pyzfs
>     >>   - zfs.mk <http://zfs.mk>: removed futile kernel fragment
>     >>   - test_zfs: replaced external toolchain by already defined bootlin
>     >>   - test_zfs: increased memory a bit to prevents OOM
>     >>   - test_zfs: added pyzfs test
>     >>
>     >>  DEVELOPERS                                |  4 +
>     >>  package/Config.in                         |  1 +
>     >>  package/zfs/Config.in                     | 32 ++++++++
>     >>  package/zfs/zfs.hash                      |  6 ++
>     >>  package/zfs/zfs.mk <http://zfs.mk>                        | 90
>     +++++++++++++++++++++++
>     >>  support/testing/tests/package/test_zfs.py | 61 +++++++++++++++
> 
>     The test_zfs doesn't build in our gitlab CI:
> 
>     https://gitlab.com/kubu93/buildroot/-/jobs/1522848483
>     <https://gitlab.com/kubu93/buildroot/-/jobs/1522848483>
> 
>     zfs use the host compiler to check if it can build zfs modules for the target
> 
>     checking kernel source directory...
>     /builds/kubu93/buildroot/test-output/TestZfsGlibc/build/linux-5.12.13
>     checking kernel build directory...
>     /builds/kubu93/buildroot/test-output/TestZfsGlibc/build/linux-5.12.13
>     checking kernel source version... 5.12.13
>     checking kernel file name for module symbols... Module.symvers
>     checking whether modules can be built... no
>     configure: error:
>             *** Unable to build an empty module.
> 
>     See build-host-gcc-6.log
> 
>       CC [M]
>     /home/br-user/buildroot/testsuite/TestZfsGlibc/build/zfs-2.0.5/build/conftest/conftest.o
>     In file included from <command-line>:0:0:
>     ./arch/x86/include/asm/segment.h: In function 'vdso_read_cpunode':
>     ././include/linux/compiler_types.h:250:24: error: expected '(' before '__inline'
>      #define asm_inline asm __inline
> 
>     The check pass if a newer host gcc is used (gcc 10.3 here).
> 
>     Can you have a look ?
> 
>     Best regards,
>     Romain
> 

_______________________________________________
buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-08-22 13:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-17  9:52 [Buildroot] [PATCH v3] package/zfs: new package José Luis Salvador Rufo
2021-04-13 21:16 ` Yann E. MORIN
2021-08-22 10:38   ` Romain Naour
2021-08-22 12:13     ` José Luis Salvador Rufo
2021-08-22 13:10       ` Romain Naour

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.