| Summary: | xbmc FTBFS on armv5tel - enforcing -mcpu=cortex-a8 | ||
|---|---|---|---|
| Product: | Fedora | Reporter: | Nicolas Chauvet <kwizart> |
| Component: | kodi | Assignee: | Alex Lancaster <alexl> |
| Status: | RESOLVED DUPLICATE | ||
| Severity: | enhancement | CC: | ktdreyer |
| Priority: | P5 | ||
| Version: | 19 | ||
| Hardware: | armhfp | ||
| OS: | GNU/Linux | ||
| namespace: | |||
| Bug Depends on: | |||
| Bug Blocks: | 2407 | ||
| Attachments: |
xbmc build failure on armv5tel
xbmc build.log failure with 12.0 rc3 |
||
(In reply to comment #0) > Created attachment 952 [details] > xbmc build failure on armv5tel > > xmbc from the rpmfusion-free-17 released repository doesn't build on armv5tel. > > This could be caused by the enforcement of CFLAGS conflicting. > See the full build.log attached. > > Please either: > - remove the hardcoded CFLAGS when building on ARM that would prevent softfp > compilation when target is armv5tel > - Use ExcludeArch: armv5tel > > I would prefer the former as xbmc should work on raspberry-pi. The current CFLAGS looks like this: CFLAGS="$RPM_OPT_FLAGS -fPIC -I/usr/include/afpfs-ng/ -I/usr/include/ffmpeg -D__STDC_CONSTANT_MACROS" So it uses the global flags set by the rpm repository, but then adds some additional flags. Do you know which are the conflicting? Feel free to send a patch, or otherwise suggest what changes should be made, as I don't know anything about builds on armv5tel architectures. I will try to investigate. But according to the configure report, here is the CFLAGS used: I don't know where -Wa,-march=armv7a -mcpu=cortex-a8 comes from. configure: CFLAGS='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -march=armv5te -mfloat-abi=soft -fPIC -I/usr/include/ffmpeg -D__STDC_CONSTANT_MACROS -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG=1 -mfloat-abi=softfp -mno-apcs-stack-check -Wa,-march=armv7a -mcpu=cortex-a8' We should try the xbmc-12.0-0.6.Frodo_rc3 package that's in F18 or F19, since there was a lot of work upstream to make 12.0 operational on the Raspberry Pi. Also, I was able to successfully build xbmc-12.0-0.6.Frodo_rc3 for F17 in mock on ARMv7 qemu VM. Created attachment 1017 [details]
xbmc build.log failure with 12.0 rc3
I attempted an armv5tel build of 12.0-0.6.Frodo_rc3 in an Fedora 17 mock chroot on my Raspberry Pi. It fails with the same problem in xbmc/utils/MathUtils.h: "error: impossible constraint in 'asm'"
This is some deep assembler magic that's over my head. Upstream ticket filed at http://trac.xbmc.org/ticket/13941 I think it's more about pre-processing than ASM. Even when using --with-platform=target_raspberry_pi \ and --target armv6l with rpmbuild, I have a similar error. But we are using softfp armv6l whereas xbmc may implicitly default to hardfp even for armv6l. (raspbian). Workaround by using defined(__arm__) condition in the DISABLE_MATHUTILS_ASM_ROUND_INT and DISABLE_MATHUTILS_ASM_TRUNCATE_INT cases. I've experienced a similar problem later: /mnt/builder/rpmbuild/BUILD/xbmc-12.0-Frodo_rc3/xbmc/utils/StdString.h:1605:14: note: the mangling of ‘va_list’ has changed in GCC 4.4 Utils/AEConvert.cpp: In static member function ‘static unsigned int CAEConvert::S16LE_Float(uint8_t*, unsigned int, float*)’: Utils/AEConvert.cpp:173:28: error: inconsistent operand constraints in an ‘asm’ make[1]: *** [Utils/AEConvert.o] Error 1 testing on panda-builder armv7hl FYI, the build succeeded on armv7hl but failed on armv5tel
One workaround that could be tested is to disable dvdnav on armv5tel armv6l armv7l or even to use ExcludeArch for theses.
For the longer term, we could support armv7hl and armv6hl (and later aarch64).
I will be able to test when back from vacation.
-------------------
gcc -o /builddir/build/BUILD/xbmc-12.0/system/players/dvdplayer/libdvdnav-arm.so -shared -fPIC -rdynamic -ldvdread -fPIC -Wl,--soname,/builddir/build/BUILD/xbmc-12.0/system/players/dvdplayer/libdvdnav-arm.so libdvdnav/obj/*.o -lm \
-Wl,--unresolved-symbols=ignore-all \
`cat /builddir/build/BUILD/xbmc-12.0/xbmc/cores/DllLoader/exports/wrapper.def` /builddir/build/BUILD/xbmc-12.0/xbmc/cores/DllLoader/exports/wrapper.o
make[1]: Leaving directory `/builddir/build/BUILD/xbmc-12.0/lib/libdvd'
CPP xbmc/cores/dvdplayer/DVDAudio.o
In file included from /builddir/build/BUILD/xbmc-12.0/xbmc/cores/AudioEngine/Utils/AEChannelInfo.h:23:0,
from DVDAudio.h:30,
from DVDAudio.cpp:23:
/builddir/build/BUILD/xbmc-12.0/xbmc/utils/StdString.h:1605:14: note: the mangling of 'va_list' has changed in GCC 4.4
CPP xbmc/cores/dvdplayer/DVDClock.o
In file included from DVDClock.cpp:24:0:
/builddir/build/BUILD/xbmc-12.0/xbmc/utils/MathUtils.h: In member function 'int CDVDClock::UpdateFramerate(double, double*)':
/builddir/build/BUILD/xbmc-12.0/xbmc/utils/MathUtils.h:127:6: error: impossible constraint in 'asm'
/builddir/build/BUILD/xbmc-12.0/xbmc/utils/MathUtils.h:127:6: error: impossible constraint in 'asm'
/builddir/build/BUILD/xbmc-12.0/xbmc/utils/MathUtils.h:127:6: error: impossible constraint in 'asm'
/builddir/build/BUILD/xbmc-12.0/xbmc/utils/MathUtils.h:127:6: error: impossible constraint in 'asm'
make[1]: *** [DVDClock.o] Error 1
make: *** [xbmc/cores/dvdplayer/DVDPlayer.a] Error 2
------------
This time, the error is with armhfp.
Experienced with xbmc from releases 19.
-------------------------
Engines/SoftAE/SoftAE.cpp: In constructor 'CSoftAE::CSoftAE()':
Engines/SoftAE/SoftAE.cpp:88:67: warning: format '%lu' expects argument of type 'long unsigned int', but argument 3 has type 'std::vector<AESinkInfo>::size_type {aka unsigned int}' [-Wformat=]
CLog::Log(LOGNOTICE, "Found %lu Lists of Devices", m_sinkInfoList.size());
^
CPP xbmc/cores/AudioEngine/Sinks/AESinkOSS.o
CPP xbmc/cores/AudioEngine/Engines/PulseAE/PulseAE.o
CPP xbmc/cores/AudioEngine/Engines/PulseAE/PulseAEStream.o
CPP xbmc/cores/AudioEngine/Engines/PulseAE/PulseAESound.o
Engines/PulseAE/PulseAESound.cpp: In constructor 'CPulseAESound::CPulseAESound(const string&, pa_context*, pa_threaded_mainloop*)':
Engines/PulseAE/PulseAESound.cpp:40:16: error: 'CreateUUID' is not a member of 'StringUtils'
m_pulseName (StringUtils::CreateUUID())
^
In file included from Engines/PulseAE/PulseAESound.cpp:24:0:
Engines/PulseAE/PulseAESound.h:62:22: warning: 'CPulseAESound::m_volume' will be initialized after [-Wreorder]
float m_maxVolume, m_volume;
^
Engines/PulseAE/PulseAESound.h:50:15: warning: 'std::string CPulseAESound::m_pulseName' [-Wreorder]
std::string m_pulseName;
^
Engines/PulseAE/PulseAESound.cpp:30:1: warning: when initialized here [-Wreorder]
CPulseAESound::CPulseAESound(const std::string &filename, pa_context *context, pa_threaded_mainloop *mainLoop) :
^
make[1]: *** [Engines/PulseAE/PulseAESound.o] Error 1
make[1]: *** Waiting for unfinished jobs....
-------------------------
|
Created attachment 952 [details] xbmc build failure on armv5tel xmbc from the rpmfusion-free-17 released repository doesn't build on armv5tel. This could be caused by the enforcement of CFLAGS conflicting. See the full build.log attached. Please either: - remove the hardcoded CFLAGS when building on ARM that would prevent softfp compilation when target is armv5tel - Use ExcludeArch: armv5tel I would prefer the former as xbmc should work on raspberry-pi.