[LU-5046] build incorrectly requires system installed zfs headers Created: 10/May/14  Updated: 27/Aug/15  Resolved: 27/Aug/15

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.3.0
Fix Version/s: None

Type: Bug Priority: Critical
Reporter: Brian Murrell (Inactive) Assignee: WC Triage
Resolution: Duplicate Votes: 0
Labels: None

Severity: 3
Rank (Obsolete): 13939

 Description   

On b2_3:

Making all in utils
mount_utils_zfs.c:33:27: error: libzfs/libzfs.h: No such file or directory
mount_utils_zfs.c:55: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
mount_utils_zfs.c:63: error: expected specifier-qualifier-list before 'libzfs_handle_t'
mount_utils_zfs.c: In function 'zfs_populate_symbols':
mount_utils_zfs.c:93: error: 'struct zfs_symbols' has no member named 'libzfs_init'
mount_utils_zfs.c:93: error: 'struct zfs_symbols' has no member named 'libzfs_init'
cc1: warnings being treated as errors
mount_utils_zfs.c:93: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:95: error: 'struct zfs_symbols' has no member named 'libzfs_fini'
mount_utils_zfs.c:95: error: 'struct zfs_symbols' has no member named 'libzfs_fini'
mount_utils_zfs.c:95: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:97: error: 'struct zfs_symbols' has no member named 'libzfs_load_module'
mount_utils_zfs.c:97: error: 'struct zfs_symbols' has no member named 'libzfs_load_module'
mount_utils_zfs.c:97: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:99: error: 'struct zfs_symbols' has no member named 'zfs_open'
mount_utils_zfs.c:99: error: 'struct zfs_symbols' has no member named 'zfs_open'
mount_utils_zfs.c:99: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:101: error: 'struct zfs_symbols' has no member named 'zfs_destroy'
mount_utils_zfs.c:101: error: 'struct zfs_symbols' has no member named 'zfs_destroy'
mount_utils_zfs.c:101: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:103: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c:103: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c:103: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:105: error: 'struct zfs_symbols' has no member named 'zfs_prop_set'
mount_utils_zfs.c:105: error: 'struct zfs_symbols' has no member named 'zfs_prop_set'
mount_utils_zfs.c:105: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:107: error: 'struct zfs_symbols' has no member named 'zfs_get_user_props'
mount_utils_zfs.c:107: error: 'struct zfs_symbols' has no member named 'zfs_get_user_props'
mount_utils_zfs.c:107: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:109: error: 'struct zfs_symbols' has no member named 'zfs_name_valid'
mount_utils_zfs.c:109: error: 'struct zfs_symbols' has no member named 'zfs_name_valid'
mount_utils_zfs.c:109: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:111: error: 'struct zfs_symbols' has no member named 'zpool_open'
mount_utils_zfs.c:111: error: 'struct zfs_symbols' has no member named 'zpool_open'
mount_utils_zfs.c:111: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:113: error: 'struct zfs_symbols' has no member named 'zpool_close'
mount_utils_zfs.c:113: error: 'struct zfs_symbols' has no member named 'zpool_close'
mount_utils_zfs.c:113: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:115: error: 'struct zfs_symbols' has no member named 'nvlist_lookup_string'
mount_utils_zfs.c:115: error: 'struct zfs_symbols' has no member named 'nvlist_lookup_string'
mount_utils_zfs.c:115: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c:117: error: 'struct zfs_symbols' has no member named 'nvlist_lookup_nvlist'
mount_utils_zfs.c:117: error: 'struct zfs_symbols' has no member named 'nvlist_lookup_nvlist'
mount_utils_zfs.c:117: error: type defaults to 'int' in declaration of 'type name'
mount_utils_zfs.c: At top level:
mount_utils_zfs.c:129: error: expected ')' before '*' token
mount_utils_zfs.c:145: error: expected ')' before '*' token
mount_utils_zfs.c:157: error: expected ')' before '*' token
mount_utils_zfs.c: In function 'zfs_write_ldd':
mount_utils_zfs.c:188: error: 'zfs_handle_t' undeclared (first use in this function)
mount_utils_zfs.c:188: error: (Each undeclared identifier is reported only once
mount_utils_zfs.c:188: error: for each function it appears in.)
mount_utils_zfs.c:188: error: 'zhp' undeclared (first use in this function)
mount_utils_zfs.c:194: error: 'struct zfs_symbols' has no member named 'zfs_open'
mount_utils_zfs.c:194: error: 'g_zfs' undeclared (first use in this function)
mount_utils_zfs.c:194: error: 'ZFS_TYPE_FILESYSTEM' undeclared (first use in this function)
mount_utils_zfs.c:202: error: implicit declaration of function 'zfs_set_prop_int'
mount_utils_zfs.c:214: error: implicit declaration of function 'zfs_set_prop_str'
mount_utils_zfs.c:234: error: implicit declaration of function 'zfs_set_prop_param'
mount_utils_zfs.c:252: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c: At top level:
mount_utils_zfs.c:257: error: expected ')' before '*' token
mount_utils_zfs.c:279: error: expected ')' before '*' token
mount_utils_zfs.c:298: error: expected ')' before '*' token
mount_utils_zfs.c: In function 'zfs_read_ldd':
mount_utils_zfs.c:324: error: 'zfs_handle_t' undeclared (first use in this function)
mount_utils_zfs.c:324: error: 'zhp' undeclared (first use in this function)
mount_utils_zfs.c:330: error: 'struct zfs_symbols' has no member named 'zfs_open'
mount_utils_zfs.c:330: error: 'g_zfs' undeclared (first use in this function)
mount_utils_zfs.c:330: error: 'ZFS_TYPE_FILESYSTEM' undeclared (first use in this function)
mount_utils_zfs.c:334: error: implicit declaration of function 'zfs_get_prop_int'
mount_utils_zfs.c:346: error: implicit declaration of function 'zfs_get_prop_str'
mount_utils_zfs.c:366: error: implicit declaration of function 'zfs_get_prop_param'
mount_utils_zfs.c:386: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c: In function 'zfs_make_lustre':
mount_utils_zfs.c:474: error: 'zfs_handle_t' undeclared (first use in this function)
mount_utils_zfs.c:474: error: 'zhp' undeclared (first use in this function)
mount_utils_zfs.c:475: error: 'zpool_handle_t' undeclared (first use in this function)
mount_utils_zfs.c:475: error: 'php' undeclared (first use in this function)
mount_utils_zfs.c:514: error: 'struct zfs_symbols' has no member named 'zfs_open'
mount_utils_zfs.c:514: error: 'g_zfs' undeclared (first use in this function)
mount_utils_zfs.c:514: error: 'ZFS_TYPE_FILESYSTEM' undeclared (first use in this function)
mount_utils_zfs.c:516: error: 'struct zfs_symbols' has no member named 'zfs_destroy'
mount_utils_zfs.c:518: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c:524: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c:533: error: 'struct zfs_symbols' has no member named 'zpool_open'
mount_utils_zfs.c:536: error: 'struct zfs_symbols' has no member named 'zpool_close'
mount_utils_zfs.c: In function 'zfs_prepare_lustre':
mount_utils_zfs.c:609: error: 'struct zfs_symbols' has no member named 'zfs_name_valid'
mount_utils_zfs.c:609: error: 'ZFS_TYPE_FILESYSTEM' undeclared (first use in this function)
mount_utils_zfs.c: In function 'zfs_label_lustre':
mount_utils_zfs.c:629: error: 'zfs_handle_t' undeclared (first use in this function)
mount_utils_zfs.c:629: error: 'zhp' undeclared (first use in this function)
mount_utils_zfs.c:635: error: 'struct zfs_symbols' has no member named 'zfs_open'
mount_utils_zfs.c:635: error: 'g_zfs' undeclared (first use in this function)
mount_utils_zfs.c:635: error: 'ZFS_TYPE_FILESYSTEM' undeclared (first use in this function)
mount_utils_zfs.c:640: error: 'struct zfs_symbols' has no member named 'zfs_close'
mount_utils_zfs.c: In function 'zfs_init':
mount_utils_zfs.c:667: error: 'struct zfs_symbols' has no member named 'libzfs_load_module'
mount_utils_zfs.c:673: error: 'g_zfs' undeclared (first use in this function)
mount_utils_zfs.c:673: error: 'struct zfs_symbols' has no member named 'libzfs_init'
mount_utils_zfs.c: In function 'zfs_fini':
mount_utils_zfs.c:687: error: 'g_zfs' undeclared (first use in this function)
mount_utils_zfs.c:688: error: 'struct zfs_symbols' has no member named 'libzfs_fini'
make[4]: *** [mount_lustre-mount_utils_zfs.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

This is because the compilation of mount_utils_zfs.c is trying to get libzfs/libzfs.h from /usr/include rather than using the zfs-devel that was unpacked by the build, for the build and pointed to configure with:

--with-zfs=/var/lib/jenkins/workspace/lustre-b2_3/arch/i686/build_type/server/distro/el6/ib_stack/inkernel/BUILD/usr/src/zfs-0.6.0-rc10/2.6.32-279.5.1.el6_lustre.i686

Using the pool of sources installed for the build is the right place to get those headers, not the system since the version installed on the system will be unknown whereas the version installed by the build for the build are absolutely known and guaranteed to match the kernel and/or libraries being used by the build which should be out of the same source pool.



 Comments   
Comment by Brian Murrell (Inactive) [ 10/May/14 ]

Looks like this also affects the lustre-daos branch.

Comment by James A Simmons [ 10/May/14 ]

Do you have http://review.whamcloud.com/#/c/8261 from LU-3497

Comment by Brian Murrell (Inactive) [ 11/May/14 ]

Probably not, but nice catch simmonsja. So this change probably needs porting to a few branches. Thanks much for the pointer simmonsja!

Comment by Alex Zhuravlev [ 11/May/14 ]

try with --with-zfs-include-prefix= ?

Comment by James A Simmons [ 11/May/14 ]

With the patch it will first try to see if ZFS headers are installed (/usr/include/...). If it doesn't find them then with will use the headers in the zfs source tree. If that doesn't work then you can use --with-zfs-devel=path_to_headers

Comment by James A Simmons [ 16/May/14 ]

Does that patch help?

Comment by Brian Murrell (Inactive) [ 16/May/14 ]

It looks like it should/would. I have asked the branch owners of branches that it has not yet landed on to try to get it landed.

As I noted in LU-3497 however, it looks like that patch only deals with getting the headers that might be needed from an unpacked zfs-devel but does not do likewise for libraries though. It seems to me that the build of any userspace tool that needs, for example, libzfs, ought to get it from that unpacked zfs-devel (and an accompanying zfs RPM which would be needed to give the zfs-devel unversioned library symlinks somewhere to point to). What are your thoughts?

Comment by James A Simmons [ 27/Aug/15 ]

Since this is for 2.3 we can close this ticket now.

Comment by Peter Jones [ 27/Aug/15 ]

Is it no longer an issue on current master then?

Comment by James A Simmons [ 27/Aug/15 ]

I always build against the source tree on our build box since I don't have permission to install ZFS headers there. The problem here is that the reporter didn't have patch 8261 in the 2.3 tree. Patch 8261 has landed to master long ago.

Comment by Peter Jones [ 27/Aug/15 ]

Ah yes. So let's close it as a duplicate of LU-3497

Generated at Sat Feb 10 01:48:04 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.