[LU-3011] client build fails on ubuntu 12.04 Created: 22/Mar/13 Updated: 05/Nov/14 Resolved: 05/Nov/14 |
|
| Status: | Closed |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.4.0 |
| Fix Version/s: | Lustre 2.4.0 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Robert Read (Inactive) | Assignee: | WC Triage |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Severity: | 3 |
| Rank (Obsolete): | 7332 |
| Description |
|
Building current master (19d5b835) on ubuntu 12.04 with kernel 3.2.0-35, though the errors are actually building userspace code. First error is: gcc -DHAVE_CONFIG_H -I. -I../.. -D__arch_lib__ -D_LARGEFILE64_SOURCE=1 -include /root/lustre/config.h -I/root/lustre/libcfs/include -I/root/lustre/lnet/include -I/root/lustre/lustre/include -D_FORTIFY_SOURCE=2 -g -Wall -fPIC -D_GNU_SOURCE -Wall -g -O2 -Werror -c -o libcfs_a-fail.o `test -f 'fail.c' || echo './'`fail.c
In file included from /root/lustre/lustre/include/lprocfs_status.h:54:0,
from /root/lustre/lustre/include/obd_support.h:42,
from /root/lustre/lustre/include/liblustre.h:500,
from fail.c:37:
/root/lustre/lustre/include/lustre/lustre_idl.h: In function ‘fid_ostid_unpack’:
/root/lustre/lustre/include/lustre/lustre_idl.h:632:17: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘obd_seq’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:632:17: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘obd_id’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:644:26: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘obd_seq’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:644:26: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘obd_id’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:657:26: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘obd_seq’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:657:26: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘obd_id’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:666:17: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘obd_seq’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:666:17: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘obd_id’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h: In function ‘fid_ostid_pack’:
/root/lustre/lustre/include/lustre/lustre_idl.h:702:3: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘__u64’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h: In function ‘ostid_seq’:
/root/lustre/lustre/include/lustre/lustre_idl.h:718:17: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘obd_seq’ [-Werror=format]
/root/lustre/lustre/include/lustre/lustre_idl.h:718:17: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘obd_id’ [-Werror=format]
gcc -DHAVE_CONFIG_H -I. -I../.. -D__arch_lib__ -D_LARGEFILE64_SOURCE=1 -include /root/lustre/config.h -I/root/lustre/libcfs/include -I/root/lustre/lnet/include -I/root/lustre/lustre/include -D_FORTIFY_SOURCE=2 -g -Wall -fPIC -D_GNU_SOURCE -Wall -g -O2 -Werror -c -o libcfs_a-libcfs_cpu.o `test -f 'libcfs_cpu.c' || echo './'`libcfs_cpu.c
gcc -DHAVE_CONFIG_H -I. -I../.. -D__arch_lib__ -D_LARGEFILE64_SOURCE=1 -include /root/lustre/config.h -I/root/lustre/libcfs/include -I/root/lustre/lnet/include -I/root/lustre/lustre/include -D_FORTIFY_SOURCE=2 -g -Wall -fPIC -D_GNU_SOURCE -Wall -g -O2 -Werror -c -o libcfs_a-libcfs_mem.o `test -f 'libcfs_mem.c' || echo './'`libcfs_mem.c
cc1: all warnings being treated as errors
make[6]: *** [libcfs_a-fail.o] Error 1
make[6]: *** Waiting for unfinished jobs....
make[6]: Leaving directory `/root/lustre/libcfs/libcfs'
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory `/root/lustre/libcfs/libcfs'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/root/lustre/libcfs'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/lustre'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/lustre'
make[1]: *** [build-stamp] Error 2
make[1]: Leaving directory `/root/lustre'
dpkg-buildpackage: error: debian/rules build gave error exit status 2
make: *** [debs] Error 2
The second error occurs when linking the utils; the readline symbols are not found. The issue seems to be because $(LIBREADLINE) is referenced before the object files that use it. Moving it to the end fixes this, but I wonder why it wsan't there to begin with... Testing a patch now... |
| Comments |
| Comment by Robert Read (Inactive) [ 22/Mar/13 ] |
| Comment by Robert Read (Inactive) [ 22/Mar/13 ] |
|
The build failures for the patch looke like the inverse of the original failure on 12.04 - the configure check for userspace "long long" size is failing because the test code silently fails to compile. Most likely because the option I added, -Wno-error=unused-but-set-variable, isn't available on the versions of gcc in SLES 11 and Ubuntu 10.04. I don't know how to fix the autoconf file to make these options platform/compiler specific. The big stick approach would be to just remove the -Werror from this test case. According to git blame, Brian add this parameter a couple years ago. Brian, do you feel strong about the -Werror here? # check userland __u64 type AC_MSG_CHECKING([userspace __u64 is long long type]) tmp_flags="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE([ #include <stdio.h> #include <linux/types.h> #include <linux/stddef.h> int main(void) { unsigned long long *data1; __u64 *data2 = NULL; data1 = data2; return 0; } ],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_USER__U64_LONG_LONG, 1, [__u64 is long long type]) ],[ AC_MSG_RESULT([no]) ]) CFLAGS="$tmp_flags" |
| Comment by Brian Murrell (Inactive) [ 25/Mar/13 ] |
|
I don't feel strongly about the -Werror, just so long as removing it doesn't break the test. |
| Comment by Robert Read (Inactive) [ 25/Mar/13 ] |
|
Currently, having it there is causing the test fail silently on some platforms, so removing probably won't be worse than that. |
| Comment by Jodi Levi (Inactive) [ 22/Apr/13 ] |
|
Patch landed; however, additional comments make it seem there is more to do? Or can this ticket be closed? |