[debhelper-devel] Bug#840323: debhelper: cmake build system: cross compilation

Helmut Grohne helmut at subdivi.de
Tue Oct 11 21:04:22 UTC 2016


On Tue, Oct 11, 2016 at 08:40:13AM +0100, Neil Williams wrote:
> cross-config exists solely to allow the removal of the dpkg-cross and
> libdebian-dpkgcross-perl binaries. Even then, the contents of
> cross-config could end up in other packages just as easily.

Yes, we should move cross-config to a better place.

> To repeat:
> > | summary 771496 If anything you are doing would fail after the
> > removal of dpkg-cross, you're doing it wrong. It's going away,
> > whether you want it to or not.
> 
> That does *not* apply to cross-config and the original bug made it
> clear that the configuration elements could remain.

Even cross-config is sorely broken. Let me give some examples:
 * ac_cv_func_malloc_0_nonnull=yes is wrong for e.g. musl
 * Relying on DEB_HOST_* makes cross-config unuseable for
   non-package builds. Instead, it should be multiarched.
 * Searching /lib/$DEB_HOST_GNU_TYPE is broken on i386.
 * glib_cv_stack_grows=no is wrong on hppa.
 * ac_cv_file__etc_environment=no does not match native builds.
 * CMAKE_SYSTEM_NAME=Linux breaks kfreebsd-any and hurd-any.
 * The CMake toolchain file thinks we're still using sysroots.
 * There are very many cache results that are not required anymore. In
   general, all ac_cv_sizeof_* should be removed and the projects still
   requiring them (e.g. blt until Steve Langasek fixed it) should be
   fixed.

Thus I believe that using cross-config is more harmful than useful,
because it has been completely unmaintained for years.

> Wrong package for this bug report. The package you need for CMake and
> other *configuration* support for cross-building (not *packaging*
> support for cross-building) is cross-config.
> 
> https://packages.debian.org/sid/all/cross-config/filelist
> 
> /etc/dpkg-cross/cmake/CMakeCross.txt

Having dpkg-cross in the name is wrong. It should not be endorsed in any
way. This needs to become a cross-distribution collaboration thing to
become sustainable.

> That's the only file needed for CMake - it could just as easily be
> migrated into another package.

As I explained, no file is needed for CMake in the common case.
dh_auto_configure will just work.

> > Wookey, should we add a blocker bug keep it out of jessie?

Yes, this should have been stretch.

> However, Stretch must not release with the dpkg-cross and
> libdebian-dpkgcross-perl binary packages. If the new upload doesn't
> happen by the end of November 2017, then (as agreed at DebConf16), I'll
> have to do it as a final QA upload, leaving only the cross-config
> binary package.

Before killing it in sid, note that bootstrapping still relies on
dpkg-cross. We're in kind of a limbo here. There are basically two ways
to do a cross toolchain bootstrap:

1. Use dpkg-cross.
2. Use the patches from cross-gcc-dev.

cross-gcc-dev is fragile because it tends to break with gcc uploads.
Thus dpkg-cross currently is the only reliable way to bootstrap. Please
upstream cross-gcc-dev before removing dpkg-cross.

Helmut



More information about the debhelper-devel mailing list