[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: The state of cross building



On Sat, Jan 30, 2016 at 08:08:09PM +0100, Helmut Grohne wrote:
> Out of those 5000 source packages, I selected 3000 popular (as in
> popcon) source packages and built them using debomatic (build arch =
> amd64, host arch = ppc64el). (Thanks to Luca Falavigna.) About 1000
> builds were successful (which doesn't imply that the resulting packages
> actually work.) We can conclude that about 4% of Debian can be cross
> built today.
> 
> You can find the build logs at:
> http://subdivi.de/~helmut/debomatic-logs/

Thanks for doing this.

How frequently will these be updated?  It would be nice for people to be
able to upload fixes and see the effects.

It would also be helpful to publish a dd-list so that maintainers can
easily look for their own packages here.

> Processing the logs
> -------------------
> 
> I've hacked up a script that guesses failure reasons by scanning the
> logs with some regular expressions. Common issues are:
> 
>  * (>800) Using the build architecture compiler or linker.

Could you help me understand
http://subdivi.de/~helmut/debomatic-logs/groff_1.22.3-5_ppc64el.build ?
This is reported as "uses build arch compiler", but that is a false
positive because groff intentionally does two build passes, one for the
host architecture and one for the build architecture, so that it can use
its own binaries from the build-architecture pass during a cross-build.

The failure is:

     dh_shlibdeps -a -O--builddirectory=debian/build -O--parallel
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/pic (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/preconv (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/groff (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/troff (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/grotty (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/grops (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/soelim (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/eqn (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: couldn't find library libstdc++.so.6 needed by debian/groff-base/usr/bin/tbl (ELF format: 'elf64-powerpcle'; RPATH: '')
  dpkg-shlibdeps: error: cannot continue due to the errors listed above
  Note: libraries are not searched in other binary packages that do not have any shlibs or symbols file.
  To help dpkg-shlibdeps find private libraries, you might need to use -l.
  dh_shlibdeps: dpkg-shlibdeps -Tdebian/groff-base.substvars debian/groff-base/usr/bin/grotty debian/groff-base/usr/bin/grops debian/groff-base/usr/bin/eqn debian/groff-base/usr/bin/pic debian/groff-base/usr/bin/preconv debian/groff-base/usr/bin/tbl debian/groff-base/usr/bin/troff debian/groff-base/usr/bin/soelim debian/groff-base/usr/bin/groff returned exit code 2
  debian/rules:3: recipe for target 'binary-arch' failed
  make: *** [binary-arch] Error 2

groff doesn't build-depend on libstdc++-5-dev (which is the correct -dev
package for libstdc++.so.6, despite the confusing naming) because it's
build-essential, and libstdc++-5-dev-ppc64el-cross is likewise
cross-build-essential on ppc64el; I can see it being installed in the
build log.  So why can't dpkg-shlibdeps find it here?

-- 
Colin Watson                                       [cjwatson@debian.org]


Reply to: