1 |
On 2018-07-05 09:09, Zoltán Kócsi wrote: |
2 |
> The */* x86_ ... in the use file and asking emerge to re-build the |
3 |
> libraries is pretty cool for building both 64 and 32 bit libs. |
4 |
> |
5 |
> But it has it's problems, it seems. |
6 |
> The library libcap fails to compile with some spectacular errors: |
7 |
> |
8 |
> ---------------------------------- |
9 |
> x86_64-pc-linux-gnu-gcc -m32 -O2 -pipe -Wall -Wwrite-strings |
10 |
> -Wpointer-arith -Wcast-qual -Wcast-align -Wstrict-prototypes |
11 |
> -Wmissing-prototypes -Wnested-externs -Winline -Wshadow -g -Wall |
12 |
> -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align |
13 |
> -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline |
14 |
> -Wshadow -g -fPIC |
15 |
> -I/var/tmp/portage/sys-libs/libcap-2.24-r2/work/libcap-2.24-abi_x86_32.x86/libcap/../libcap/include/uapi |
16 |
> -I/var/tmp/portage/sys-libs/libcap-2.24-r2/work/libcap-2.24-abi_x86_32.x86/libcap/../libcap/include |
17 |
> -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Dlinux -c cap_file.c -o |
18 |
> cap_file.o |
19 |
> In file included from <command-line>:0:0: |
20 |
> ./_caps_output.gperf:71:80: error: unknown type name 'size_t' |
21 |
> gperf_case_strncmp (register const char *s1, register const char *s2, |
22 |
> register size_t n) |
23 |
> |
24 |
> ^~~~~~ |
25 |
> ./_caps_output.gperf:96:53: error: unknown type name 'size_t' |
26 |
> __cap_hash_name (register const char *str, register size_t len) |
27 |
> ^~~~~~ |
28 |
> ./_caps_output.gperf:197:55: error: unknown type name 'size_t' |
29 |
> __cap_lookup_name (register const char *str, register size_t len) |
30 |
> ^~~~~~ |
31 |
> ./_caps_output.gperf:197:1: error: conflicting types for |
32 |
> '__cap_lookup_name' |
33 |
> __cap_lookup_name (register const char *str, register size_t len) |
34 |
> ^~~~~~~~~~~~~~~~~ |
35 |
> ./_caps_output.gperf:33:29: note: previous declaration of |
36 |
> '__cap_lookup_name' was here |
37 |
> const struct __cap_token_s *__cap_lookup_name(const char *, unsigned |
38 |
> int); |
39 |
> ^~~~~~~~~~~~~~~~~ |
40 |
> cap_text.c: In function 'cap_to_name': |
41 |
> cap_text.c:291:2: warning: ignoring return value of 'asprintf', |
42 |
> declared with attribute warn_unused_result [-Wunused-result] |
43 |
> asprintf(&tmp, "%u", cap); |
44 |
> ^~~~~~~~~~~~~~~~~~~~~~~~~ |
45 |
> make[1]: *** [Makefile:84: cap_text.o] Error 1 |
46 |
> ------------------------------------ |
47 |
> |
48 |
> If it can't find size_t then for some reason it fails to include |
49 |
> pretty much any standard header. Which is supported by the |
50 |
> "included from <command-line>" pip from gcc. Obviously, whatever |
51 |
> generates the _caps_output.gperf file made a mistake, both not |
52 |
> including the standard headers and also with declaration of the |
53 |
> __cap_lookup_name() function. |
54 |
> |
55 |
> Considering that libcap builds happily on a 64-bit system and I assume |
56 |
> would also build on 32-bit one, the problem must be with the magic |
57 |
> required to build a 32-bit version on a 64-bit machine. |
58 |
> |
59 |
> Should it be considered a bug worthy of reporting? |
60 |
> |
61 |
> Thanks, |
62 |
> |
63 |
> Zoltan |
64 |
|
65 |
See bug 604802 (https://bugs.gentoo.org/604802). |
66 |
|
67 |
Workaround: unmerge gperf, merge libpcap, afterwards merge gperf again. |
68 |
|
69 |
For an 'emerge -e @world', temporarily downgrade to gperf-3.0.4 before. |
70 |
|
71 |
-- |
72 |
Sent with eQmail-1.11 beta |