zfs icon indicating copy to clipboard operation
zfs copied to clipboard

Building ZFS from sources : missing depmpfs sources

Open captain-haddock17 opened this issue 4 years ago • 12 comments

Dear ZFS developers !

Id like to compile ZFS from sources, by following instructions in Installing from sourc.

Launching ./zfsadmin.sh for configuration and compilation, I got somme errors on: bin/sh ../../../libtool --tag=CC --silent --mode=link clang -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing -g -Os -Wno-tautological-constant-out-of-range-compare -lstdc++ -o kextsymboltool kextsymboltool.o ./kextsymboltool -arch x86_64 -import allsymbols -export zfs.exports -output KernelExports_64

exported name not in import list: _decmpfs_cnode_alloc exported name not in import list: _decmpfs_cnode_free make[4]: *** [KernelExports] Error 1

captain-haddock17 avatar Apr 12 '20 08:04 captain-haddock17

Old OsX? If so, delete them from spl/module/spkl/KernelExports/zfs.exports

lundman avatar Apr 12 '20 08:04 lundman

I found out that decmpfs source code is part of Apple's Opensource kernel.

57209 31 jan 19:13 ./xnu-4903.270.47/bsd/kern/decmpfs.c
8123 31 jan 19:13 ./xnu-4903.270.47/bsd/sys/decmpfs.h

I'm not quite comfortable with autogen and automate& al.

so as to declare these kernel source code. Sorry, William

captain-haddock17 avatar Apr 12 '20 08:04 captain-haddock17

Hmm did they change something.. check

# grep decmpfs spl/module/spl/KernelExports/allsymbols

lundman avatar Apr 12 '20 08:04 lundman

$ grep decmpfs -n spl/module/spl/KernelExports/allsymbols

7288:_decmpfs_cnode_destroy 7289:_decmpfs_cnode_get_vnode_cached_size 7290:_decmpfs_cnode_get_vnode_state 7291:_decmpfs_cnode_init 7292:_decmpfs_cnode_set_vnode_state 7293:_decmpfs_ctx 7294:_decmpfs_decompress_file 7295:_decmpfs_file_is_compressed 7296:_decmpfs_free_compressed_data 7297:_decmpfs_hides_rsrc 7298:_decmpfs_hides_xattr 7299:_decmpfs_init 7300:_decmpfs_lock_compressed_data 7301:_decmpfs_pagein_compressed 7302:_decmpfs_read_compressed 7303:_decmpfs_trylock_compressed_data 7304:_decmpfs_unlock_compressed_data 7305:_decmpfs_update_attributes 7306:_decmpfs_validate_compressed_file 8586:_hfs_lazy_init_decmpfs_cnode 13842:_register_decmpfs_decompressor 16759:_unregister_decmpfs_decompressor

captain-haddock17 avatar Apr 12 '20 08:04 captain-haddock17

So they did, updating my mojave now and let's see if I get the same issue

lundman avatar Apr 12 '20 08:04 lundman

Hmm no it appears normal, did you update xcode and it's component ? decmpfs_cnode_alloc doesn't exist in 10.13 and earlier, but still in latest Catalina

lundman avatar Apr 12 '20 09:04 lundman

bash-3.2# uname -a
Darwin o3xtest.local 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/DEVELOPMENT_X86_64 x86_64

bash-3.2# sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.6
BuildVersion:   18G103

bash-3.2# nm -gj /System/Library/Kernels/kernel|grep decmpfs
_decmpfs_cnode_alloc

lundman avatar Apr 12 '20 09:04 lundman

mine is: $ uname -a

Darwin macpro.home 18.7.0 Darwin Kernel Version 18.7.0: Mon Feb 10 21:08:45 PST 2020; root:xnu-4903.278.28~1/RELEASE_X86_64 x86_64

$ sw_vers

ProductName: Mac OS X ProductVersion: 10.14.6 BuildVersion: 18G4032

$ nm -gj /System/Library/Kernels/kernel|grep decmpfs

_decmpfs_cnode_alloc _decmpfs_cnode_cmp_type _decmpfs_cnode_destroy _decmpfs_cnode_free _decmpfs_cnode_get_vnode_cached_size _decmpfs_cnode_get_vnode_state _decmpfs_cnode_init _decmpfs_cnode_set_vnode_state _decmpfs_ctx _decmpfs_decompress_file _decmpfs_file_is_compressed _decmpfs_free_compressed_data _decmpfs_hides_rsrc _decmpfs_hides_xattr _decmpfs_init _decmpfs_lock_compressed_data _decmpfs_pagein_compressed _decmpfs_read_compressed _decmpfs_trylock_compressed_data _decmpfs_unlock_compressed_data _decmpfs_update_attributes _decmpfs_validate_compressed_file _register_decmpfs_decompressor _unregister_decmpfs_decompressor

captain-haddock17 avatar Apr 12 '20 09:04 captain-haddock17

As I understand,

_decmpfs_cnode_alloc _decmpfs_cnode_free

are already present on my system. but not found at link time.

captain-haddock17 avatar Apr 12 '20 09:04 captain-haddock17

Good, it's in there. Something else must be going on with the build.

Yes, zfs.exports ask for them, the we produce all symbols in to allsymbols, then when spl links, it links against them. ZFS will complain they dont exist, but carry on.

lundman avatar Apr 12 '20 09:04 lundman

Hi Jörgen, I can't carry on with this for now. Could you please give me a corrected build script ? Thanks a lot, William

captain-haddock17 avatar Apr 16 '20 07:04 captain-haddock17

Can you start again with sources? I have re-compiled everything on Mojave to make sure it works. You have shown that your kernel does have the decmpfs_cnode_alloc function.

lundman avatar Apr 16 '20 08:04 lundman