Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failure to compile on armv7hl #6

Open
rinigus opened this issue Apr 8, 2023 · 2 comments
Open

Failure to compile on armv7hl #6

rinigus opened this issue Apr 8, 2023 · 2 comments

Comments

@rinigus
Copy link
Collaborator

rinigus commented Apr 8, 2023

Some packages may fail to compile on armv7hl while on 64bit host. It is possible that it is related to QEMU issue https://gitlab.com/qemu-project/qemu/-/issues/263

Workaround is to use static QEMU compiled for 32bit host, for example the one distributed by Jolla with their SDK.

Original issue and discussion below:

While i486 and aarch64 compile fine, armv7hl fails with qmake message indicating failure to find qtsvg.pro in current directory. It reminds of QEMU bug. However in this case, we don't have "Unknown syscall 397" - that was supposed to be fixed a while ago, in QEMU version 5 (running version 7.2.0). Traces from failing and aarch64 cases are shown below.

armv7hl Failed

[builder@9eeff0cc9ba5 upstream]$ QEMU_STRACE=1 /opt/qt5/bin/qmake
1121 brk(NULL) = 0x0028a000
1121 uname(0x40800720) = 0
1121 access("/etc/ld.so.preload",R_OK) = -1 errno=2 (No such file or directory)
1121 openat(AT_FDCWD,"/etc/ld.so.cache",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1121 fstat64(3,0x407fff18) = 0
1121 mmap2(NULL,13690,PROT_READ,MAP_PRIVATE,3,0) = 0x3ffcf000
1121 close(3) = 0
1121 openat(AT_FDCWD,"/usr/lib/libstdc++.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1121 read(3,0x40800028,512) = 512
1121 fstat64(3,0x407fff48) = 0
1121 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3ffcd000
1121 mmap2(NULL,1119980,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x3febb000
1121 mprotect(0x3ffb5000,61440,PROT_NONE) = 0
1121 mmap2(0x3ffc4000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xf9) = 0x3ffc4000
1121 mmap2(0x3ffcb000,5868,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x3ffcb000
1121 close(3) = 0
1121 openat(AT_FDCWD,"/lib/libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1121 read(3,0x40800018,512) = 512
1121 fstat64(3,0x407fff38) = 0
1121 mmap2(NULL,430096,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x3fe51000
1121 mprotect(0x3feaa000,61440,PROT_NONE) = 0
1121 mmap2(0x3feb9000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x58) = 0x3feb9000
1121 close(3) = 0
1121 openat(AT_FDCWD,"/lib/libgcc_s.so.1",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1121 read(3,0x40800008,512) = 512
1121 fstat64(3,0x407fff28) = 0
1121 mmap2(NULL,98572,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x3fe38000
1121 mprotect(0x3fe40000,61440,PROT_NONE) = 0
1121 mmap2(0x3fe4f000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x7) = 0x3fe4f000
1121 close(3) = 0
1121 openat(AT_FDCWD,"/lib/libc.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1121 read(3,0x407ffff8,512) = 512
1121 fstat64(3,0x407fff18) = 0
1121 mmap2(NULL,1148784,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x3fd1f000
1121 mprotect(0x3fe23000,61440,PROT_NONE) = 0
1121 mmap2(0x3fe32000,16384,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x103) = 0x3fe32000
1121 mmap2(0x3fe36000,6000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x3fe36000
1121 close(3) = 0
1121 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x3fd1d000
1121 mprotect(0x3fe32000,8192,PROT_READ) = 0
1121 mprotect(0x3fe4f000,4096,PROT_READ) = 0
1121 mprotect(0x3feb9000,4096,PROT_READ) = 0
1121 mprotect(0x3ffc4000,20480,PROT_READ) = 0
1121 mprotect(0x00287000,4096,PROT_READ) = 0
1121 mprotect(0x3fffe000,4096,PROT_READ) = 0
1121 munmap(0x3ffcf000,13690) = 0
1121 brk(NULL) = 0x0028a000
1121 brk(0x002ab000) = 0x002ab000
1121 getcwd(0x407ff658,4096) = 54
1121 getcwd(0x407ff640,4096) = 54
1121 access("/builder/rpmbuild/BUILD/opt-qt5-qtsvg-5.15.8/upstream/upstream.pro",F_OK) = -1 errno=2 (No such file or directory)
1121 openat(AT_FDCWD,"/builder/rpmbuild/BUILD/opt-qt5-qtsvg-5.15.8/upstream",O_RDONLY|O_DIRECTORY|O_LARGEFILE|O_NONBLOCK|O_CLOEXEC) = 3
1121 fstat64(3,0x40800478) = 0
1121 getdents64(3,0x290fd8,32768) = 624
1121 close(3) = 0
1121 write(1,0x407fe124,3005)Usage: /opt/qt5/bin/qmake [mode] [options] [files]

aarch64 Works

[builder@ed7fd0a0a4a2 upstream]$ QEMU_STRACE=1 /opt/qt5/bin/qmake
2160 brk(NULL) = 0x0000000000737000
2160 uname(0x55008000c8) = 0
2160 faccessat(AT_FDCWD,"/etc/ld.so.preload",R_OK,AT_SYMLINK_NOFOLLOW|0x50) = -1 errno=2 (No such file or directory)
2160 openat(AT_FDCWD,"/etc/ld.so.cache",O_RDONLY|O_CLOEXEC) = 3
2160 fstat(3,0x00000055007ff650) = 0
2160 mmap(NULL,13910,PROT_READ,MAP_PRIVATE,3,0) = 0x0000005500836000
2160 close(3) = 0
2160 openat(AT_FDCWD,"/usr/lib64/libstdc++.so.6",O_RDONLY|O_CLOEXEC) = 3
2160 read(3,0x7ff810,832) = 832
2160 fstat(3,0x00000055007ff6a0) = 0
2160 mmap(NULL,1646200,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x000000550083a000
2160 mprotect(0x00000055009ad000,65536,PROT_NONE) = 0
2160 mmap(0x00000055009bd000,49152,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x173000) = 0x00000055009bd000
2160 mmap(0x00000055009c9000,11896,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x00000055009c9000
2160 close(3) = 0
2160 openat(AT_FDCWD,"/lib64/libm.so.6",O_RDONLY|O_CLOEXEC) = 3
2160 read(3,0x7ff7f0,832) = 832
2160 fstat(3,0x00000055007ff680) = 0
2160 mmap(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x00000055009cc000
2160 mmap(NULL,720920,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x00000055009ce000
2160 mprotect(0x0000005500a6e000,61440,PROT_NONE) = 0
2160 mmap(0x0000005500a7d000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x9f000) = 0x0000005500a7d000
2160 close(3) = 0
2160 openat(AT_FDCWD,"/lib64/libgcc_s.so.1",O_RDONLY|O_CLOEXEC) = 3
2160 read(3,0x7ff7d0,832) = 832
2160 fstat(3,0x00000055007ff660) = 0
2160 mmap(NULL,148536,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x0000005500a7f000
2160 mprotect(0x0000005500a93000,61440,PROT_NONE) = 0
2160 mmap(0x0000005500aa2000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x13000) = 0x0000005500aa2000
2160 close(3) = 0
2160 openat(AT_FDCWD,"/lib64/libc.so.6",O_RDONLY|O_CLOEXEC) = 3
2160 read(3,0x7ff7b0,832) = 832
2160 fstat(3,0x00000055007ff640) = 0
2160 mmap(NULL,1641416,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x0000005500aa4000
2160 mprotect(0x0000005500c1c000,65536,PROT_NONE) = 0
2160 mmap(0x0000005500c2c000,24576,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x178000) = 0x0000005500c2c000
2160 mmap(0x0000005500c32000,11208,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x0000005500c32000
2160 close(3) = 0
2160 mmap(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x0000005500c35000
2160 mprotect(0x0000005500c2c000,12288,PROT_READ) = 0
2160 mprotect(0x0000005500aa2000,4096,PROT_READ) = 0
2160 mprotect(0x0000005500a7d000,4096,PROT_READ) = 0
2160 mmap(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x0000005500c37000
2160 mprotect(0x00000055009bd000,40960,PROT_READ) = 0
2160 mprotect(0x0000000000734000,4096,PROT_READ) = 0
2160 mprotect(0x0000005500832000,4096,PROT_READ) = 0
2160 munmap(0x0000005500836000,13910) = 0
2160 brk(NULL) = 0x0000000000737000
2160 brk(0x0000000000758000) = 0x0000000000758000
2160 getcwd(0x55007ff270,4096) = 54
2160 getcwd(0x55007ff240,4096) = 54
2160 faccessat(AT_FDCWD,"/builder/rpmbuild/BUILD/opt-qt5-qtsvg-5.15.8/upstream/upstream.pro",F_OK,0xff) = -1 errno=2 (No such file or directory)
2160 openat(AT_FDCWD,"/builder/rpmbuild/BUILD/opt-qt5-qtsvg-5.15.8/upstream",O_RDONLY|O_DIRECTORY|O_NONBLOCK|O_CLOEXEC) = 3
2160 fstat(3,0x00000055007fff48) = 0
2160 getdents64(3,0x74b5d0,32768) = 800
2160 getdents64(3,0x74b5d0,32768) = 0
2160 close(3) = 0
2160 faccessat(AT_FDCWD,"/opt/qt5/bin/qt.conf",F_OK,0xff) = -1 errno=2 (No such file or directory)
2160 newfstatat(AT_FDCWD,"/opt",0x00000055007fed68,AT_SYMLINK_NOFOLLOW) = 0
...
@rinigus
Copy link
Collaborator Author

rinigus commented Apr 8, 2023

Jolla SDK manages to work just fine in this case:

[SB2 sdk-build devel-armv7hl.default] sailfish-code@fn upstream $ QEMU_STRACE=1 /opt/qt5/bin/qmake
1686111 brk(NULL) = 0x0028a000
1686111 uname(0x40800240) = 0
1686111 access("/etc/ld.so.preload",R_OK) = -1 errno=2 (No such file or directory)
1686111 openat(AT_FDCWD,"/etc/ld.so.cache",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1686111 fstat64(3,0x407ffa38) = 0
1686111 mmap2(NULL,43449,PROT_READ,MAP_PRIVATE,3,0) = 0x4082d000
1686111 close(3) = 0
1686111 openat(AT_FDCWD,"/usr/lib/libstdc++.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1686111 read(3,0x407ffb48,512) = 512
1686111 fstat64(3,0x407ffa68) = 0
1686111 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x40838000
1686111 mmap2(NULL,1119980,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x4083a000
1686111 mprotect(0x40934000,61440,PROT_NONE) = 0
1686111 mmap2(0x40943000,28672,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0xf9) = 0x40943000
1686111 mmap2(0x4094a000,5868,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x4094a000
1686111 close(3) = 0
1686111 openat(AT_FDCWD,"/lib/libm.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1686111 read(3,0x407ffb38,512) = 512
1686111 fstat64(3,0x407ffa58) = 0
1686111 mmap2(NULL,430096,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x4094c000
1686111 mprotect(0x409a5000,61440,PROT_NONE) = 0
1686111 mmap2(0x409b4000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x58) = 0x409b4000
1686111 close(3) = 0
1686111 openat(AT_FDCWD,"/lib/libgcc_s.so.1",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1686111 read(3,0x407ffb28,512) = 512
1686111 fstat64(3,0x407ffa48) = 0
1686111 mmap2(NULL,98572,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x409b6000
1686111 mprotect(0x409be000,61440,PROT_NONE) = 0
1686111 mmap2(0x409cd000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x7) = 0x409cd000
1686111 close(3) = 0
1686111 openat(AT_FDCWD,"/lib/libc.so.6",O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
1686111 read(3,0x407ffb18,512) = 512
1686111 fstat64(3,0x407ffa38) = 0
1686111 mmap2(NULL,1148784,PROT_EXEC|PROT_READ,MAP_PRIVATE|MAP_DENYWRITE,3,0) = 0x409cf000
1686111 mprotect(0x40ad3000,61440,PROT_NONE) = 0
1686111 mmap2(0x40ae2000,16384,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_DENYWRITE|MAP_FIXED,3,0x103) = 0x40ae2000
1686111 mmap2(0x40ae6000,6000,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED,-1,0) = 0x40ae6000
1686111 close(3) = 0
1686111 mmap2(NULL,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) = 0x40ae8000
1686111 mprotect(0x40ae2000,8192,PROT_READ) = 0
1686111 mprotect(0x409cd000,4096,PROT_READ) = 0
1686111 mprotect(0x409b4000,4096,PROT_READ) = 0
1686111 mprotect(0x40943000,20480,PROT_READ) = 0
1686111 mprotect(0x00287000,4096,PROT_READ) = 0
1686111 mprotect(0x4082b000,4096,PROT_READ) = 0
1686111 munmap(0x4082d000,43449) = 0
1686111 brk(NULL) = 0x0028a000
1686111 brk(0x002ab000) = 0x002ab000
1686111 getcwd(0x407ff178,4096) = 32
1686111 getcwd(0x407ff160,4096) = 32
1686111 access("/home/rinigus/qt/qtsvg/upstream/upstream.pro",F_OK) = -1 errno=2 (No such file or directory)
1686111 openat(AT_FDCWD,"/home/rinigus/qt/qtsvg/upstream",O_RDONLY|O_DIRECTORY|O_LARGEFILE|O_NONBLOCK|O_CLOEXEC) = 3
1686111 fstat64(3,0x407fff98) = 0
1686111 getdents64(3,2690952,32768,1124741376,2690952,1082130704) = 880
1686111 getdents64(3,2690952,32768,1124741376,2690952,1082130696) = 0
1686111 close(3) = 0
1686111 access("/opt/qt5/bin/qt.conf",F_OK) = -1 errno=2 (No such file or directory)
...

@rinigus
Copy link
Collaborator Author

rinigus commented Apr 8, 2023

And when taking QEMU from Jolla's SDK (qemu-arm-static), it all works using Docker too. As soon as you reconfigure binfmt to use it!

Versions:

  • buggy QEMU: 7.2.0 Gentoo
  • working QEMU: 5.1.0 SFOS SDK

@rinigus rinigus changed the title Failure to compile QtSvg 5.15 on armv7hl Failure to compile on armv7hl Apr 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant