Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Oct 2013 02:43:19 -0700 (PDT)
From:      Beeblebrox <zaphod@berentweb.com>
To:        freebsd-questions@freebsd.org
Subject:   [grub2 + ZFS] /usr/lib/libzfs.so and grub/trunk mismatch
Message-ID:  <1383212599591-5856933.post@n5.nabble.com>

next in thread | raw e-mail | index | archive | help
I am trying to compile grub2 from the bazaar repo of gnu/grub
(http://bzr.savannah.gnu.org/lh/grub/)

The reason I am trying to do this, is because I was advised on the
grub-devel mail list that:
"Also grub 2.00 is not enough for version 5000. You need current trunk"
discussion here:
http://lists.gnu.org/archive/html/grub-devel/2013-09/msg00102.html

So, trying to compile, after ./autogen and ./configure, I get this:
GRUB2 will be compiled with following components:
Platform: i386-pc
With devmapper support: No (need libdevmapper header)
With memory debugging: No
With disk cache statistics: No
With boot time statistics: No
efiemu runtime: No (cannot compile with -m64 -mcmodel=large
-mno-red-zone -nostdlib)
grub-mkfont: Yes
grub-mount: No (need FUSE library)
starfield theme: No (No DejaVu found)
*With libzfs support: No (need zfs library)*
Build-time grub-mkfont: No (no fonts)
Without unifont (no build-time grub-mkfont)
With liblzma from -llzma (support for XZ-compressed mips images)

When I asked about libzfs support, I was advised to look through the
configure.log for that section. Here's what that log has to say:
configure:26929: checking for libzfs_init in -lzfs
configure:26954: gcc -o conftest  -I/usr/local/include  conftest.c -lzfs 
-lgeom  >&5
/usr/lib/libzfs.so: undefined reference to `uu_avl_pool_create'
/usr/lib/libzfs.so: undefined reference to `avl_numnodes'
/usr/lib/libzfs.so: undefined reference to `uu_list_destroy'
/usr/lib/libzfs.so: undefined reference to `avl_remove'
/usr/lib/libzfs.so: undefined reference to `uu_list_pool_create'
/usr/lib/libzfs.so: undefined reference to `uu_avl_find'
/usr/lib/libzfs.so: undefined reference to `uu_avl_destroy'
/usr/lib/libzfs.so: undefined reference to `uu_error'
/usr/lib/libzfs.so: undefined reference to `avl_add'
/usr/lib/libzfs.so: undefined reference to `avl_first'
/usr/lib/libzfs.so: undefined reference to `uu_list_node_init'
/usr/lib/libzfs.so: undefined reference to `uu_avl_first'
/usr/lib/libzfs.so: undefined reference to `uu_avl_pool_destroy'
/usr/lib/libzfs.so: undefined reference to `uu_list_insert_before'
/usr/lib/libzfs.so: undefined reference to `uu_list_first'
/usr/lib/libzfs.so: undefined reference to `uu_list_next'
/usr/lib/libzfs.so: undefined reference to `avl_destroy_nodes'
/usr/lib/libzfs.so: undefined reference to `uu_list_teardown'
/usr/lib/libzfs.so: undefined reference to `avl_create'
/usr/lib/libzfs.so: undefined reference to `uu_list_insert_after'
/usr/lib/libzfs.so: undefined reference to `uu_avl_insert'
/usr/lib/libzfs.so: undefined reference to `uu_avl_create'
/usr/lib/libzfs.so: undefined reference to `uu_list_create'
/usr/lib/libzfs.so: undefined reference to `uu_list_pool_destroy'
/usr/lib/libzfs.so: undefined reference to `uu_avl_next'
/usr/lib/libzfs.so: undefined reference to `avl_destroy'
/usr/lib/libzfs.so: undefined reference to `uu_list_find'
/usr/lib/libzfs.so: undefined reference to `uu_list_remove'
/usr/lib/libzfs.so: undefined reference to `uu_avl_teardown'
/usr/lib/libzfs.so: undefined reference to `avl_walk'
/usr/lib/libzfs.so: undefined reference to `uu_list_last'
/usr/lib/libzfs.so: undefined reference to `avl_find'
/usr/lib/libzfs.so: undefined reference to `uu_list_insert'
/usr/lib/libzfs.so: undefined reference to `uu_list_prev'
configure:26954: $? = 1

I don't know what the significance of the failed output above means. Does it
mean grub2 will not work and cannot boot 5/5000 zpool on FreeBSD, or does it
mean that certain functions will not be available for grub (which is not a
serious problem).

separately, there is a textproc/flex issue as well - ./autogen gives:
> as_fn_error $? "flex is too old. GRUB requires 2.5.35 or above"

On my system (FreeBSD-9.2-stable_amd64):
flex --version  =>  flex version 2.5.4,  PORTVERSION=    2.5.37
When I asked on the grub-devel mail list, I was informed:
>> I had to disable line 6014 in config, because it gives incorrect error re
>> flex version
> (answer): And what is incorrect here? Flex version 2.5.4 is less than
> 2.3.35.
I don't understand how 2.5.4 is < 2.3.35, but sure enough, when trying to
compile (gmake) I get:
$ gmake
flex -o grub_script.yy.c --header-file=grub_script.yy.h
./grub-core/script/yylex.l
flex: can't open grub_script.yy.c
gmake: *** [grub_script.yy.h] Error 1

Regards.



-----
FreeBSD-9.2-stable_amd64_root-on-zfs_clang-only-world
--
View this message in context: http://freebsd.1045724.n5.nabble.com/grub2-ZFS-usr-lib-libzfs-so-and-grub-trunk-mismatch-tp5856933.html
Sent from the freebsd-questions mailing list archive at Nabble.com.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1383212599591-5856933.post>