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

Re: jessie release goals



On Sat, 11 May 2013 11:39:28 +0200, Goswin von Brederlow <goswin-v-b@web.de>
wrote:
> On Wed, May 08, 2013 at 11:57:58AM +0200, Stephen Kitt wrote:
> > The big issue which crops up then isn't so much the directory structure's
> > impact on the build process, but rather its impact on the packaging
> > process. If the target directory structure depends on whether we're
> > building for a full Debian architecture or for a partial architecture or
> > just some cross-compiler target, that means ad-hoc changes in the
> > packaging for the various cases and that much more friction (see for
> > example http://bugs.debian.org/671437 - although in zlib's case packaging
> > changes are necessary to build for Windows).
> 
> But it wouldn't. The target directory structure would be the same
> across all builds. It would always be
> /usr/include/[$(DEB_HOST_MULTIARCH)] and
> /usr/lib/[$(DEB_HOST_MULTIARCH)].
> 
> The effect of partial architecture is simply that not everything needs
> to be build for that architecture and the partial architecture might
> not be self hosting. E.g. we can cross build for mingw but we wouldn't
> be including windows in Debian nor run a buildd on windows.

Yes, but that's not the problem. Take the premise that the target directory
structure is as described above, so most library development packages ship as
many headers as possible in /usr/include. For now we'll assume all
mingw-w64-...-dev headers are in /usr/include/...-w64-mingw32; but to use
mingw-targeted libraries other than mingw-w64-...-dev (libgtk for example),
the mingw toolchain needs to look in /usr/include as well.

This is all fine as long as libc6-dev is not installed (say perhaps with
sbuild and cross-build-essential). But in a typical work environment,
libc6-dev will be installed, and because we'll always be cross-compiling on
the buildds, packages which need to build stuff for the host to run during
the build (wine-gecko does this) need build-essential too, so libc6-dev
headers end up in /usr/include and are picked up by the mingw toolchain.
Likewise for other -dev packages which may be available for the host
architecture but not the target architecture. Imagine the confusion then for
configure scripts!

As far as I can see there are three solutions to this:
* split headers completely
* drop the idea of building mingw packages using the existing Debian
  packaging
* add patches to all supported packages so that they build differently when
  targeting mingw (and any other partial architecture which can't
  share /usr/include)

Fedora went with the second solution; they have mingw-specific packages for
everything they build targeting Windows. If we could build-depend on source
packages (which has been mentioned elsewhere in this thread) this would be
possible on Debian too, although it would be a bit of a chore for me (and
whoever else wants to chip in). But I wouldn't want supporting a non-free
operating system to become a chore for more Debian developers than necessary!

(The aim of all the mingw work as far as Debian is concerned, apart from
providing a nice mingw build environment, is to provide a wine-mono package,
which needs a whole bunch of dependencies. wine-gecko is relatively easy to
support because it's essentially Firefox, which ships all its build
dependencies in its source archives.)

Regards,

Stephen

Attachment: signature.asc
Description: PGP signature


Reply to: