fuse not building for aarch64

Bug #1087757 reported by simon inizan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Linaro AArch64 cross-distro work
High
Riku Voipio
Linaro OpenEmbedded
Fix Released
High
Riku Voipio

Bug Description

When trying to build the fuse recipe, I get:

| In file included from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm-generic/types.h:7:0,
| from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm/types.h:1,
| from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/linux/types.h:4,
| from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm/sigcontext.h:19,
| from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/bits/sigcontext.h:27,
| from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/signal.h:338,
| from fuse_loop_mt.c:18:
| /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm-generic/int-ll64.h:29:44: error: conflicting types for 'int64_t'
| In file included from /ARM/V8/linaro/12.11/oe/build/tmp-eglibc/sysroots/x86_64-linux/usr/lib/aarch64-oe-linux/gcc/aarch64-oe-linux/4.7.3/include/stdint.h:3:0,
| from ../include/fuse_common.h:19,
| from ../include/fuse_lowlevel.h:26,
| from fuse_loop_mt.c:9:

This package would be particularly useful to enable model users to use the rtsm-fuse filesystem that gives access to the VFS feature of the model.

Marcin Juszkiewicz (hrw)
Changed in linaro-oe:
status: New → Confirmed
Revision history for this message
Riku Voipio (riku-voipio) wrote :

The problem is, that fuse_kernel.h defines

#include <sys/types.h>
#define __u64 uint64_t
#define __s64 int64_t
#define __u32 uint32_t
#define __s32 int32_t
#define __u16 uint16_t

Confusing the heck out of later kernel includes.

But it works on all other architectures, so it probably should on work on aarch64 as well.

Revision history for this message
Riku Voipio (riku-voipio) wrote :

minimized testcase:

Failure on aarch64:

/data/oe/build/tmp-eglibc/sysroots/x86_64-linux/usr/bin/aarch64-oe-linux/aarch64-oe-linux-gcc -save-temps --sysroot=/data/oe/build/tmp-eglibc/sysroots/genericarmv8 -o test test.c

In file included from /data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm-generic/types.h:7:0,
                 from /data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm/types.h:1,
                 from /data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/linux/types.h:4,
                 from /data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm/sigcontext.h:19,
                 from /data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/bits/sigcontext.h:27,
                 from /data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/signal.h:338,
                 from test.c:8:
/data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/asm-generic/int-ll64.h:29:44: error: conflicting types for 'int64_t'
In file included from test.c:2:0:
/data/oe/build/tmp-eglibc/sysroots/genericarmv8/usr/include/sys/types.h:197:1: note: previous declaration of ‘int64_t’ was here

Success on amd64:

$ gcc -o test test.c
$

Changed in linaro-oe:
status: Confirmed → In Progress
assignee: nobody → Riku Voipio (riku-voipio)
importance: Undecided → High
Changed in linaro-aarch64:
status: New → In Progress
importance: Undecided → High
assignee: nobody → Riku Voipio (riku-voipio)
Fathi Boudra (fboudra)
Changed in linaro-oe:
milestone: none → 13.01
Revision history for this message
Riku Voipio (riku-voipio) wrote :

Proposed patch to be added to the meta-aarch64 tree.

Simon, can you test this with the fuse-rtsm?

Revision history for this message
simon inizan (simon-inizan) wrote :

With this patch I can build and install the fuse package.

I have not been able to use the rtsm-fuse layer on top of it though, but this is probably more related to the rtsm-fuse layer itself.
I am getting this message:
Failed to open /dev/rtsm-mbox - falling back to /dev/mem at 0x1c0d0000
fuse: device not found, try 'modprobe fuse' first

the kernel I am using contains the fuse driver built-in as I get
"fuse init (API version 7.20)"
in the boot messages.

Revision history for this message
simon inizan (simon-inizan) wrote :

Note:
I get this:
WARNING: QA Issue: fuse: Files/directories were installed but not shipped
  /dev
  /dev/fuse

When building fuse.

Revision history for this message
Riku Voipio (riku-voipio) wrote :

iozone and ltp fs tests work fine over sshfs-fuse, so I think I can propose this over to fuse upstream.

Meanwhile, I think we still should ask our toolchain team if the headers are ok,

Changed in linaro-oe:
status: In Progress → Fix Committed
Fathi Boudra (fboudra)
Changed in linaro-oe:
status: Fix Committed → Fix Released
Changed in linaro-aarch64:
status: In Progress → Fix Committed
Changed in linaro-aarch64:
status: Fix Committed → Confirmed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers