v18 18.0b1v2 fails to build in RPi3 due to fmt/format.h missing
#1
I am using the same build recipe for 18.0b1v2 as I did for 18.0b1 but am getting a fatal failure due to fmt/format.h missing.  Bug or me?

Excerpt of build failure:
Code:
...
In file included from /scratch/PKGBUILDs/alarm/kodi-rbp-git/src/xbmc-xbmc-f21b477/xbmc/utils/log.h:15,
                 from /scratch/PKGBUILDs/alarm/kodi-rbp-git/src/xbmc-xbmc-f21b477/xbmc/interfaces/legacy/Exception.h:11,
                 from /scratch/PKGBUILDs/alarm/kodi-rbp-git/src/xbmc-xbmc-f21b477/xbmc/interfaces/python/swig.h:15,
                 from /scratch/PKGBUILDs/alarm/kodi-rbp-git/src/kodi-build/build/swig/AddonModuleXbmcaddon.i.cpp:22:
/scratch/PKGBUILDs/alarm/kodi-rbp-git/src/xbmc-xbmc-f21b477/xbmc/utils/StringUtils.h:29:10: fatal error: fmt/format.h: No such file or directory
 #include <fmt/format.h>
          ^~~~~~~~~~~~~~
compilation terminated.

Link to compete build log.

Code:
  cmake -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
    -DCMAKE_PREFIX_PATH=/opt/vc \
    -DCORE_PLATFORM_NAME=rbpi \
    -DWITH_CPU="" \
    -DENABLE_EVENTCLIENTS=ON \
    -DENABLE_OPENGL=OFF \
    -DENABLE_VAAPI=OFF \
    -DENABLE_VDPAU=OFF \
    -Dlibdvdcss_URL="/scratch/build/libdvdcss-1.4.1-Leia-Alpha-3.tar.gz" \
    -Dlibdvdnav_URL="/scratch/build/libdvdnav-6.0.0-Leia-Alpha-3.tar.gz" \
    -Dlibdvdread_URL="/scratch/build/libdvdread-6.0.0-Leia-Alpha-3.tar.gz" \
    -DFFMPEG_URL="/scratch/build/ffmpeg-4.0.2-Leia-Alpha3.tar.gz" \
    -DFMT_URL="/scratch/build/fmt-3.0.1.tar.gz" \
    -DENABLE_INTERNAL_FMT=ON \
    -DCROSSGUID_URL="/scratch/build/crossguid-8f399e8bd4.tar.gz" \
    -DENABLE_INTERNAL_CROSSGUID=ON \
    -DFSTRCMP_URL="/scratch/build/fstrcmp-0.7.D001.tar.gz" \
    -DENABLE_INTERNAL_FSTRCMP=ON \
    -DFLATBUFFERS_URL="/scratch/build/flatbuffers-1.9.0.tar.gz" \
    -DENABLE_INTERNAL_FLATBUFFERS=ON \
    ../"xbmc-xbmc-f21b477"
  make
  make preinstall
Need help programming a Streamzap remote?
Reply
#2
You need to install libfmt-dev for it to work.

There are a few more needed but I don't recall which ones. Give it a go and install as needed.
Reply
#3
(2018-08-28, 00:13)KlotX Wrote: You need to install libfmt-dev for it to work.

There are a few more needed but I don't recall which ones. Give it a go and install as needed.
 I believe using the the internal fmt as I have removes that requirement.  Again, this built 18.0beta1 without issue.
Need help programming a Streamzap remote?
Reply
#4
At first disable distcc or configure it properly.
Reply
#5
@Rechi - That seemed to be the problem.  Fixing the DISTCC_HOSTS variable allowed for a smooth build.  So the related question now is why does beta1v2 ignore my cmake directive and build version 5.1.0 of fmt?

Code:
[code]-- Found Fmt: /scratch/PKGBUILDs/alarm/kodi-rbp-git/src/kodi-build/build/lib/libfmt.a (found version "5.1.0")
Need help programming a Streamzap remote?
Reply
#6
it doesn't ignore it, it should use your tarball. But there is no version check when you set FMT_URL, it will just use the version parsed from tools/depends/target/libfmt/Makefile.
I consider this a corner case bug, so not sure I want to fix it.
Reply
#7
@wsnipex - My goal is not to have the fmt package installed as a dependency on the build machine.  Do I even require the two lines in my cmake step or will cmake just use the one in the included tarball?  My memory is that I did in the past need these or else I would have to install the fmt package on the build host as a make dep.  Thanks.

Code:
    -DFMT_URL="/scratch/build/fmt-3.0.1.tar.gz" \
    -DENABLE_INTERNAL_FMT=ON \
Need help programming a Streamzap remote?
Reply
#8
if you don't set FMT_URL, it will be downloaded during build. If your packaging system allows that, you can skip it.
Reply
#9
(2018-08-29, 21:26)wsnipex Wrote: if you don't set FMT_URL, it will be downloaded during build. If your packaging system allows that, you can skip it.
  
My goal is to allow users to build this package offline so all deps including the source for kodi shall be pre-downloaded.

I also am confused.  I downloaded the tarball for fmt version 3.0.1... why/how could version 5.10 get on my box?  I tried an experiment: deny from the RPi3 build box to the WAN.  This means no outgoing connections are possible.  When I build kodi, the cmake step claims that it found version 5.1.0 of fmt which I know for a fact I didn't download and since I am blocking outgoing connections, it could not download.  Part of the same bug?
Need help programming a Streamzap remote?
Reply
#10
If FMT_URL is set, that version is used regardless what's the name of the file and what it contains. The build system doesn't check what version it actually contains, but reads the version string from tools/depends/target/libfmt/Makefile.
Reply
#11
(2018-08-29, 22:14)Rechi Wrote: If FMT_URL is set, that version is used regardless what's the name of the file and what it contains. The build system doesn't check what version it actually contains, but reads the version string from tools/depends/target/libfmt/Makefile.
 Thanks for the explanation.  It does successfully build using version 3.0.1 (even though it wrongly identifies as version 5.0.1).  When I try building with the version 5.0.1 tarball, it does not build ending in those missing file errors.
Need help programming a Streamzap remote?
Reply

Logout Mark Read Team Forum Stats Members Help
18.0b1v2 fails to build in RPi3 due to fmt/format.h missing0