Re: Depends: libfoo:foreign ???

2013-05-18 Thread Neil Williams
On Sat, 18 May 2013 01:36:02 +0200
Adam Borowski kilob...@angband.pl wrote:

 On Fri, May 17, 2013 at 07:12:26PM -0400, The Wanderer wrote:
  I can already say that it won't be binary identical to the 64+32 build,
  because even the 64-bit standalone build isn't binary identical to the
  64-bit side of a combined build (even though they're configured the
  exact same way). I'm not sure what the differences are, though vbindiff
  confirms that (in at least one file selected at random) it's not just a
  few random bytes.
 
 A wild idea: what if official amd64 buildds were mandated to have i386
 enabled?  That's nasty special casing, but far less nasty than multilib.

Special casing which gets in the way as soon as people ask for armel on
armhf etc.

Multi-Arch is not just about runtime, there are very good reasons to
have foreign architectures installed together with Multi-Arch (armhf on
amd64) rather than just related architectures (i386 on amd64).

Cross-architecture dependencies are going to be necessary for other
packages (like sane Multi-Arch cross-compilers), not just Wine.

This isn't about just 32bit vs 64bit. The solution needs to be generic
for any combination of architectures.

-- 


Neil Williams
=
http://www.linux.codehelp.co.uk/



pgp2rGU0FUy3h.pgp
Description: PGP signature


Re: Depends: libfoo:foreign ???

2013-05-17 Thread The Wanderer

On 05/14/2013 09:40 AM, Goswin von Brederlow wrote:


Could you build a 32bit only, a 64bit only and a 32+64bit wine, run
make install for each case and generate a file list for each?
Including file output so it shows what is 32bit and what 64bit in
the mixed case.


I have these file lists now, along with several other lists based on the
same data; they aren't attached because the combination of all 5 file
lists alone would be close to 1.5MB, and I'm not sure what's acceptable
on-list here. I can provide them, here or elsewhere, on request.

I've spent some time considering them, but I'm not sure what conclusions
to draw.


Also what happens if you take the list for 32+64bit and then manually
pick the respective files from the 32bit only and 64bit only tree
according to bitness of the files? Does that produce something
functional? Equal to the 32+64bit build?


As there are over 3000 files involved, this is a fairly big task to
handle manually, and I haven't yet found the time to either do it by
hand or devise a way to automate it. This is therefore still pending.

I can already say that it won't be binary identical to the 64+32 build,
because even the 64-bit standalone build isn't binary identical to the
64-bit side of a combined build (even though they're configured the
exact same way). I'm not sure what the differences are, though vbindiff
confirms that (in at least one file selected at random) it's not just a
few random bytes.


I'm coming to lean towards the conclusion that further work on this
would probably be better done in the context of the Debian Wine
packaging team, if not (for some parts of it) Wine upstream...

--
   The Wanderer

Warning: Simply because I argue an issue does not mean I agree with any
side of it.

Every time you let somebody set a limit they start moving it.
  - LiveJournal user antonia_tiger


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/5196b95a.7040...@fastmail.fm



Re: Depends: libfoo:foreign ???

2013-05-17 Thread Adam Borowski
On Fri, May 17, 2013 at 07:12:26PM -0400, The Wanderer wrote:
 I can already say that it won't be binary identical to the 64+32 build,
 because even the 64-bit standalone build isn't binary identical to the
 64-bit side of a combined build (even though they're configured the
 exact same way). I'm not sure what the differences are, though vbindiff
 confirms that (in at least one file selected at random) it's not just a
 few random bytes.

A wild idea: what if official amd64 buildds were mandated to have i386
enabled?  That's nasty special casing, but far less nasty than multilib.

-- 
ᛊᚨᚾᛁᛏᚣ᛫ᛁᛊ᛫ᚠᛟᚱ᛫ᚦᛖ᛫ᚹᛖᚨᚲ


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130517233602.ga25...@angband.pl



Re: Depends: libfoo:foreign ???

2013-05-14 Thread Goswin von Brederlow
On Mon, May 13, 2013 at 07:55:30AM -0400, The Wanderer wrote:
 On 05/09/2013 11:59 AM, Wookey wrote:
 
 +++ Goswin von Brederlow [2013-05-09 11:39 +0200]:
 
 I would say that a foreign dependency on a library is never right.
 
 That's too strong. It can make sense for cross-tools, or maybe
 emulators, which genuinely need a foreign-arch library to operate.
 But I'm not aware of other sensible usages.
 
 If I'm correctly understanding what's being described here, I would
 think that the full-functionality 64+32 Wine would probably be another
 exception (unless it falls under emulators, in which case another
 doesn't apply); the 64-bit side is built against and depends on 64-bit
 libraries, and the 32-bit side is built against and depends on both
 32-bit libraries and the already-built 64-bit side, and both sides are
 needed for an install capable of handling both 32-bit and 64-bit Windows
 programs.
 
 I don't see any practical way to let a package providing the
 full-functionality 64+32 Wine work without depending on both the 64-bit
 (native) and the 32-bit (foreign) libraries.

Wouldn't that be 64-bit + 32-bit binaries? I thought wine had seperate
binaries and a wrapper that picks the right one to start.

Wine depends on wine-bin:i386 or wine64-bin:amd64 (similar for
kfreebsd). The arch qualifier is not needed since the right thing
already happens (normaly).

Except there is wine-bin:powerpc. That kind of ruins that. A system
with amd64, i386 and powerpc configured would hapily use
wine-bin:powerpc instead of wine-bin:i386. Or wine-bin:i386 can be
used instead of wine-bin:kfreebsd-i386. But that is a matter of pining
the architectures corectly.

 If the source compiles binaries for the foreign arch then the
 package should be build on the foreign arch directly. Period.
 
 Apart from the above exceptions, I agree.
 
 For the full 64+32 Wine, I don't believe this is possible - or if it is
 possible, no way of doing it has yet been documented that I know of. The
 official Wine documentation of how to build that configuration involves
 compiling the 32-bit side on the same 64-bit host as the 64-bit side -
 and, importantly, compiling it against the already-built but
 not-yet-installed 64-bit build tree.
 
 Theoretically it might be possible to build the 64-bit side on an amd64
 machine, make the resulting tree available to an i386 machine, let the
 i386 machine compile the 32-bit side against the 64-bit tree, make the
 resulting tree available to the amd64 machine again, and let the amd64
 machine do the final 'make install' or equivalent process. I wouldn't
 expect that to actually work, though, given that it looks like the Wine
 tools built on the 64-bit side may get run during the 32-bit side of
 the build - and even if it does work, that seems like far more trouble
 than should be justifiable for what is otherwise a straightforwardly
 scriptable build process.

That seems to be a problem in the wine build system though. It should
already be possible to build a 32bit only wine and a 64bit only wine.
And then you just need something to build the extra tools that chose
between 32bit and 64bit. Or not?

I don't know the wine build system so I can't say how much pain that
would cause. But it would be the most logical way.

 (This is the main use case I have for multi-arch -dev packages; without
 them, the only way I can think of to potentially accomplish a full 64+32
 Wine build which I would expect to result in full functionality is to
 identify all -dev packages needed for the desired Wine library support,
 then pause in between build stages to manually swap which architecture
 of each of those -dev packages is installed - and swap back afterwards
 for normal compilation of other things.)

Shifting the build tree around between amd64 and i386 and back to
amd64 is no solution. That will never fly.

If the two archs can't be build seperately then I guess you will have
to encourage maintainers to make their -dev packages coinstallable
quickly for jessie. And get support for Build-Depends: libfoo-dev:i386
[amd64] added.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130514133439.GG27079@frosties



Re: Depends: libfoo:foreign ???

2013-05-14 Thread Goswin von Brederlow
On Mon, May 13, 2013 at 10:31:54AM -0400, The Wanderer wrote:
 On 05/13/2013 10:22 AM, The Wanderer wrote:
 
 On 05/13/2013 09:46 AM, Wookey wrote:
 
 Hmm. Do the parts of the 64-bit tree that the 32-bit side compiles
 against end up installed in a final installation (as libraries?) or
 are they really just intermediate 'during build' items?
 
 They do end up getting installed, though whether as libraries or not
 I don't recall offhand.
 
 I think I may have misunderstood this question.
 
 Some of the 64-bit components which would ordinarily get installed in a
 64-bit-only build get omitted from the final install (and possibly from
 compilation) in a combined build, because the 32-bit components replace
 them. Not all do, however, and some - I think most - do get installed as
 both in parallel.
 
 I would have to investigate the build process more closely in order to
 say much more with any certainty.

Could you build a 32bit only, a 64bit only and a 32+64bit wine, run
make install for each case and generate a file list for each?
Including file output so it shows what is 32bit and what 64bit in
the mixed case.

Also what happens if you take the list for 32+64bit and then manually
pick the respective files from the 32bit only and 64bit only tree
according to bitness of the files? Does that produce something
functional? Equal to the 32+64bit build?

MfG
Goswin


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130514134017.GH27079@frosties



Re: Depends: libfoo:foreign ???

2013-05-14 Thread The Wanderer

On 05/14/2013 09:34 AM, Goswin von Brederlow wrote:


On Mon, May 13, 2013 at 07:55:30AM -0400, The Wanderer wrote:



If I'm correctly understanding what's being described here, I would
think that the full-functionality 64+32 Wine would probably be
another exception (unless it falls under emulators, in which case
another doesn't apply); the 64-bit side is built against and
depends on 64-bit libraries, and the 32-bit side is built against
and depends on both 32-bit libraries and the already-built 64-bit
side, and both sides are needed for an install capable of handling
both 32-bit and 64-bit Windows programs.

I don't see any practical way to let a package providing the
full-functionality 64+32 Wine work without depending on both the
64-bit (native) and the 32-bit (foreign) libraries.


Wouldn't that be 64-bit + 32-bit binaries? I thought wine had
seperate binaries and a wrapper that picks the right one to start.


It does have separate binaries, but although I'm not an expert on the
Wine software architecture, AFAICT it doesn't have a wrapper; rather, in
a combined build, each binary will apparently detect what kind of
program you're running and either handle things itself (when the
architectures match) or transfer things over the other binary (when they
don't).


Wine depends on wine-bin:i386 or wine64-bin:amd64 (similar for
kfreebsd). The arch qualifier is not needed since the right thing
already happens (normaly).

Except there is wine-bin:powerpc. That kind of ruins that. A system
with amd64, i386 and powerpc configured would hapily use
wine-bin:powerpc instead of wine-bin:i386. Or wine-bin:i386 can be
used instead of wine-bin:kfreebsd-i386. But that is a matter of
pining the architectures corectly.


I'm afraid I don't quite understand what you're talking about here. Or
rather I think I do, but I don't see why you would have mentioned it at
this point, so I suspect I may be wrong.


For the full 64+32 Wine, I don't believe this is possible - or if
it is possible, no way of doing it has yet been documented that I
know of. The official Wine documentation of how to build that
configuration involves compiling the 32-bit side on the same 64-bit
host as the 64-bit side - and, importantly, compiling it against
the already-built but not-yet-installed 64-bit build tree.

Theoretically it might be possible to build the 64-bit side on an
amd64 machine, make the resulting tree available to an i386
machine, let the i386 machine compile the 32-bit side against the
64-bit tree, make the resulting tree available to the amd64 machine
again, and let the amd64 machine do the final 'make install' or
equivalent process. I wouldn't expect that to actually work,
though, given that it looks like the Wine tools built on the
64-bit side may get run during the 32-bit side of the build - and
even if it does work, that seems like far more trouble than should
be justifiable for what is otherwise a straightforwardly scriptable
build process.


That seems to be a problem in the wine build system though. It should
already be possible to build a 32bit only wine and a 64bit only
wine. And then you just need something to build the extra tools that
chose between 32bit and 64bit. Or not?

I don't know the wine build system so I can't say how much pain that
would cause. But it would be the most logical way.


As far as I can tell, there are no extra tools; it's all integrated into
the usual Wine binaries. I could be wrong about that, but I haven't seen
anything which seems to indicate such.

The real question is the one you posed in your other mail: can you
assemble a working combined install (with functionality equivalent to
the as-documented combined build) from the results of two separate
standalone builds, by correctly selecting which files from each side to
install, or are there actual important (functional) differences in the
binaries created by a combined build?

I'm running the builds to try to test that now, but it's not clear how
long it will take to come up with an even vaguely reliable answer. I'll
provide what information I come up with when I have it.

(If this becomes specifically about Wine, it may not any longer be
really on topic for -devel; if there would be a better place to discuss
it, I'd be willing to move the discussion, but if this is considered
sufficiently on-topic I don't have a problem with continuing it here.)


(This is the main use case I have for multi-arch -dev packages;
without them, the only way I can think of to potentially accomplish
a full 64+32 Wine build which I would expect to result in full
functionality is to identify all -dev packages needed for the
desired Wine library support, then pause in between build stages to
manually swap which architecture of each of those -dev packages is
installed - and swap back afterwards for normal compilation of
other things.)


Shifting the build tree around between amd64 and i386 and back to 
amd64 is no solution. That will never fly.


Yes, of course; that 

Re: Depends: libfoo:foreign ???

2013-05-13 Thread Goswin von Brederlow
On Thu, May 09, 2013 at 04:59:28PM +0100, Wookey wrote:
 +++ Goswin von Brederlow [2013-05-09 11:39 +0200]:
  On Thu, May 09, 2013 at 08:43:22AM +0200, Niels Thykier wrote:
   On 2013-05-09 07:56, Paul Wise wrote:
On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:

I just noticed that we have the first amd64 package in the archive that
has dependencies on :i386 qualified libraries:
   
Package: teamspeak-client
  
  A Depends like in this case is never right since it mixes biarch
  (libc6-i386) packages with multiarch (libfoo:i386).
 
 This does seem wrong, especially in this case. I can't think of a case
 where it makes sense offhand, but there might be one.

It should be libc6:i386, libfoo:i386 at least.
 
  I would say that a foreign dependency on a library is never right.
 
 That's too strong. It can make sense for cross-tools, or maybe
 emulators, which genuinely need a foreign-arch library to operate. But
 I'm not aware of other sensible usages.

Right. cross-tools are probably the exception there. Forgot about them
for a minute.

  If
  the source compiles binaries for the foreign arch then the package
  should be build on the foreign arch directly. Period.
 
 Apart from the above exceptions, I agree.
 
 We haven't yet formulated any policy on what is/isn't going to be
 allowed/deemed sensible. 
 
  Also, iirc, the use of foreign dependencies is only supposed to be on
  packages with Multi-Arch: allowed. 
 
 I don't think that's relevant/correct. A foreign-arch dep is
 appropriate when the binary is linked against/uses said library, and a
 same-arch libfoo-arch-cross isn't used instead. Said library could be a
 perfectly normal M-A:same package.
 
 I guess it's time to have a think about this stuff and write down some
 guidelines/policy.
 
 Wookey

Should that include binaries linked against libraries? Imho any
foreign arch binary or library should come from a foreign arch
package. So even for cross-tools if they need a foreign binary or
library they should depend on the foreign package containing them.
[And how will they run the foreign binary? seems like the foreign
binaries case shouldn't happen at all.]

That should only leave the uses foreign library case. Like a gcc
cross-compiler uses the foreign libgcc. The gcc cross-compiler itself
is not linked against the foreign libgcc though.

But that destroys the idea of DAK catching it. I don't see how
teamspeak-client depending on libfoo:i386 would be cought but
i486-linux-gnu-gcc depending on libfoo:i386 would pass. Unless we add
a specific tag for cross-tools to excempt them from the check.

Looks like we have to keep catching those bugs by hand.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130513102146.GD8366@frosties



Re: Depends: libfoo:foreign ???

2013-05-13 Thread The Wanderer

On 05/09/2013 11:59 AM, Wookey wrote:


+++ Goswin von Brederlow [2013-05-09 11:39 +0200]:



I would say that a foreign dependency on a library is never right.


That's too strong. It can make sense for cross-tools, or maybe
emulators, which genuinely need a foreign-arch library to operate.
But I'm not aware of other sensible usages.


If I'm correctly understanding what's being described here, I would
think that the full-functionality 64+32 Wine would probably be another
exception (unless it falls under emulators, in which case another
doesn't apply); the 64-bit side is built against and depends on 64-bit
libraries, and the 32-bit side is built against and depends on both
32-bit libraries and the already-built 64-bit side, and both sides are
needed for an install capable of handling both 32-bit and 64-bit Windows
programs.

I don't see any practical way to let a package providing the
full-functionality 64+32 Wine work without depending on both the 64-bit
(native) and the 32-bit (foreign) libraries.


If the source compiles binaries for the foreign arch then the
package should be build on the foreign arch directly. Period.


Apart from the above exceptions, I agree.


For the full 64+32 Wine, I don't believe this is possible - or if it is
possible, no way of doing it has yet been documented that I know of. The
official Wine documentation of how to build that configuration involves
compiling the 32-bit side on the same 64-bit host as the 64-bit side -
and, importantly, compiling it against the already-built but
not-yet-installed 64-bit build tree.

Theoretically it might be possible to build the 64-bit side on an amd64
machine, make the resulting tree available to an i386 machine, let the
i386 machine compile the 32-bit side against the 64-bit tree, make the
resulting tree available to the amd64 machine again, and let the amd64
machine do the final 'make install' or equivalent process. I wouldn't
expect that to actually work, though, given that it looks like the Wine
tools built on the 64-bit side may get run during the 32-bit side of
the build - and even if it does work, that seems like far more trouble
than should be justifiable for what is otherwise a straightforwardly
scriptable build process.

(This is the main use case I have for multi-arch -dev packages; without
them, the only way I can think of to potentially accomplish a full 64+32
Wine build which I would expect to result in full functionality is to
identify all -dev packages needed for the desired Wine library support,
then pause in between build stages to manually swap which architecture
of each of those -dev packages is installed - and swap back afterwards
for normal compilation of other things.)

--
   The Wanderer

Warning: Simply because I argue an issue does not mean I agree with any
side of it.

Every time you let somebody set a limit they start moving it.
  - LiveJournal user antonia_tiger


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/5190d4b2.2030...@fastmail.fm



Re: Depends: libfoo:foreign ???

2013-05-13 Thread Wookey
+++ The Wanderer [2013-05-13 07:55 -0400]:
 On 05/09/2013 11:59 AM, Wookey wrote:
 
 +++ Goswin von Brederlow [2013-05-09 11:39 +0200]:
 
 I would say that a foreign dependency on a library is never right.
 
 That's too strong. It can make sense for cross-tools, or maybe
 emulators, which genuinely need a foreign-arch library to operate.
 But I'm not aware of other sensible usages.
 
 If I'm correctly understanding what's being described here, I would
 think that the full-functionality 64+32 Wine would probably be another
 exception (unless it falls under emulators, in which case another
 doesn't apply); the 64-bit side is built against and depends on 64-bit
 libraries, and the 32-bit side is built against and depends on both
 32-bit libraries and the already-built 64-bit side, and both sides are
 needed for an install capable of handling both 32-bit and 64-bit Windows
 programs.
 
 I don't see any practical way to let a package providing the
 full-functionality 64+32 Wine work without depending on both the 64-bit
 (native) and the 32-bit (foreign) libraries.

OK. If that's how it works, then I agree - this is another sensible
use-case. Thanks for the explanation. 

 If the source compiles binaries for the foreign arch then the
 package should be build on the foreign arch directly. Period.
 
 Apart from the above exceptions, I agree.
 
 For the full 64+32 Wine, I don't believe this is possible - or if it is
 possible, no way of doing it has yet been documented that I know of. The
 official Wine documentation of how to build that configuration involves
 compiling the 32-bit side on the same 64-bit host as the 64-bit side -
 and, importantly, compiling it against the already-built but
 not-yet-installed 64-bit build tree.

OK. I'd like to understand some more about this, as it's a similar
issue to other cross-compiler toolchains, and if we can't solve both
the same way then our design is poor. By '32+64 wine' do you mean
packages designed to be installed on an amd64 machine that run both
32bit and 64bit windows apps? Or do you mean versions of wine to run
on both i386 and amd64 machines?

 Theoretically it might be possible to build the 64-bit side on an amd64
 machine, make the resulting tree available to an i386 machine, let the
 i386 machine compile the 32-bit side against the 64-bit tree, make the
 resulting tree available to the amd64 machine again, and let the amd64
 machine do the final 'make install' or equivalent process. 

Hmm. Do the parts of the 64-bit tree that the 32-bit side compiles
against end up installed in a final installation (as libraries?) or
are they really just intermediate 'during build' items?

If the former then the it should work to build the 64-bit tree, then
have the 32-bit build depend on a package that contains those parts it
needs to build aginst.

Still, there may not be much point doing this, and just building both
in one go on a 64-bit build machine, so the 64-part is natively build
and the 32-bit part is cross-built may make more sense. My
understanding of wine is currently too weak to say anything further.

 I wouldn't
 expect that to actually work, though, given that it looks like the Wine
 tools built on the 64-bit side may get run during the 32-bit side of
 the build - and even if it does work, that seems like far more trouble
 than should be justifiable for what is otherwise a straightforwardly
 scriptable build process.

There are various aspects to this, such as making it buildable on our
autobuilders, trying not to diverge too much from upstream/getting
them to understand how multiarch is useful, and incorporating that
into the build system, future expansion of wine to other architectures
(arm/arm64). I'd hope that using multiarch makes these things simpler,
not more complicated. Arranging to build things on the arch they are
inteded to be run on seems a sensible initial stance, but I'm not
going to be religious about it if it turns out to be a daft idea.

 (This is the main use case I have for multi-arch -dev packages; without
 them, the only way I can think of to potentially accomplish a full 64+32
 Wine build which I would expect to result in full functionality is to
 identify all -dev packages needed for the desired Wine library support,
 then pause in between build stages to manually swap which architecture
 of each of those -dev packages is installed - and swap back afterwards
 for normal compilation of other things.)

Right. You should be able to install any needed foo-dev:host-arch
packages on your build system and either build natively against them
if you are building on the correct arch, or cross-build against them
if on a foreign arch. That's how it should work. The neat (and radical
by past standards) bit being that the the -dev:host-arch packages
are the same packages (in the same paths) for both cases. 

It sounds like (at least) you and Stephen Kitt and I should discuss
this (wine and mingw) further and flesh out how it should all work. Is
a 

Re: Depends: libfoo:foreign ???

2013-05-13 Thread The Wanderer

On 05/13/2013 09:46 AM, Wookey wrote:


+++ The Wanderer [2013-05-13 07:55 -0400]:



For the full 64+32 Wine, I don't believe this is possible - or if
it is possible, no way of doing it has yet been documented that I
know of. The official Wine documentation of how to build that
configuration involves compiling the 32-bit side on the same 64-bit
host as the 64-bit side - and, importantly, compiling it against
the already-built but not-yet-installed 64-bit build tree.


OK. I'd like to understand some more about this, as it's a similar
issue to other cross-compiler toolchains, and if we can't solve both
the same way then our design is poor. By '32+64 wine' do you mean
packages designed to be installed on an amd64 machine that run both
32bit and 64bit windows apps? Or do you mean versions of wine to run
on both i386 and amd64 machines?


The former. I don't know if there's an official term for that, but I
don't know of any other; the full 64+32 Wine is just what I've been
using in my own conversations as a shorthand for a longer explanation.


Theoretically it might be possible to build the 64-bit side on an
amd64 machine, make the resulting tree available to an i386
machine, let the i386 machine compile the 32-bit side against the
64-bit tree, make the resulting tree available to the amd64 machine
again, and let the amd64 machine do the final 'make install' or
equivalent process.


Just to clarify: at least for a non-package-build arrangement, the amd64
machine would have to run the 'make install' from *both* trees,
separately and in the correct order, after both builds had completed.
This isn't automated, at least not last I checked; I've had to write
wrapper scripts to automate part of it myself, for my own builds.


Hmm. Do the parts of the 64-bit tree that the 32-bit side compiles
against end up installed in a final installation (as libraries?) or
are they really just intermediate 'during build' items?


They do end up getting installed, though whether as libraries or not I
don't recall offhand.

IIRC, the end result gets wineserver from the 64-bit side, wine from the
32-bit side, and wine64 from the 64-bit side, along with supporting
files for both; I haven't examined it recently enough to remember what
libraries (aside from the numerous Wine-internal fake-DLL objects) that
may include.


If the former then the it should work to build the 64-bit tree, then
have the 32-bit build depend on a package that contains those parts
it needs to build aginst.


I think that could work, although as far as I can see it doesn't help
the normal-build scenario (i.e. not building for a Debian package, just
for a local install), which is the angle I approach this from.

Having an intermediate package containing a build tree (as opposed to
the results of installing from that build tree) seems like an
undesirable thing, though.


Still, there may not be much point doing this, and just building both
in one go on a 64-bit build machine, so the 64-part is natively
build and the 32-bit part is cross-built may make more sense. My 
understanding of wine is currently too weak to say anything further.


My own understanding of Wine isn't in terribly much depth, but that is
the scenario prescribed by the official Wine documentation for building
something capable of running both 32-bit and 64-bit Windows programs,
and I at least understand why it works that way; I think I know enough
to also understand why it *has* to work that way, but I can't swear I'm
not wrong about that.


It sounds like (at least) you and Stephen Kitt and I should discuss
this (wine and mingw) further and flesh out how it should all work.
Is a debconf session a useful venue?


I'm not sure how much I'd be able to contribute to such a discussion;
I'm not actually involved with the Wine project on more than a very
peripheral level (reporting occasional bugs and trying to track them
down), I'm just a user who has use for the combined 64+32 functionality.

I'm also not familiar with what a debconf session, in this context,
means or involves; my kneejerk interpretation was a face-to-face
discussion session during an official Debian meetup or other
convention, but brief online searching seems to imply that that may not
be accurate.

I'd be willing to contribute what I can, however, and I'm always willing
to learn more. (It's not like I don't have enough projects already, but
this would at least be another interesting one.)

--
   The Wanderer

Warning: Simply because I argue an issue does not mean I agree with any
side of it.

Every time you let somebody set a limit they start moving it.
  - LiveJournal user antonia_tiger


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/5190f734.3030...@fastmail.fm



Re: Depends: libfoo:foreign ???

2013-05-13 Thread The Wanderer

On 05/13/2013 10:22 AM, The Wanderer wrote:


On 05/13/2013 09:46 AM, Wookey wrote:



Hmm. Do the parts of the 64-bit tree that the 32-bit side compiles
against end up installed in a final installation (as libraries?) or
are they really just intermediate 'during build' items?


They do end up getting installed, though whether as libraries or not
I don't recall offhand.


I think I may have misunderstood this question.

Some of the 64-bit components which would ordinarily get installed in a
64-bit-only build get omitted from the final install (and possibly from
compilation) in a combined build, because the 32-bit components replace
them. Not all do, however, and some - I think most - do get installed as
both in parallel.

I would have to investigate the build process more closely in order to
say much more with any certainty.

--
   The Wanderer

Warning: Simply because I argue an issue does not mean I agree with any
side of it.

Every time you let somebody set a limit they start moving it.
  - LiveJournal user antonia_tiger


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/5190f95a.6010...@fastmail.fm



Re: Depends: libfoo:foreign ???

2013-05-13 Thread The Wanderer

On 05/13/2013 10:31 AM, The Wanderer wrote:


On 05/13/2013 10:22 AM, The Wanderer wrote:


On 05/13/2013 09:46 AM, Wookey wrote:



Hmm. Do the parts of the 64-bit tree that the 32-bit side
compiles against end up installed in a final installation (as
libraries?) or are they really just intermediate 'during build'
items?


They do end up getting installed, though whether as libraries or
not I don't recall offhand.


I think I may have misunderstood this question.

Some of the 64-bit components which would ordinarily get installed in
a 64-bit-only build get omitted from the final install (and possibly
from compilation) in a combined build, because the 32-bit components
replace them.


Argh. I think I got this wrong again. If I'm not mistaken, it's actually
closer to the other way around.

Post-install-time, the 32-bit build tree contains symlinks pointing to
the 64-bit build tree for three directories: fonts/, server/, and tools/.

Post-install-time, the 64-bit build tree contains symlinks pointing to
the 32-bit build tree for two executables: loader/wine and
loader/wine-preloader.

Everything else appears to be separate for the two build trees. As far
as I'm aware, the installs for both of them run completely separately.

However, since the directions call for installing the 32-bit version
first and the 64-bit version second, some files installed by the 32-bit
version may get overwritten. If that happens, I have no idea which ones.


I would have to investigate the build process more closely in order
to say much more with any certainty.


This remains true.

--
   The Wanderer

Warning: Simply because I argue an issue does not mean I agree with any
side of it.

Every time you let somebody set a limit they start moving it.
  - LiveJournal user antonia_tiger


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51910019.5030...@fastmail.fm



Re: Depends: libfoo:foreign ???

2013-05-13 Thread Wookey
+++ The Wanderer [2013-05-13 10:22 -0400]:
 On 05/13/2013 09:46 AM, Wookey wrote:
 
 +++ The Wanderer [2013-05-13 07:55 -0400]:
 
 For the full 64+32 Wine, I don't believe this is possible - or if
 it is possible, no way of doing it has yet been documented that I
 know of. The official Wine documentation of how to build that
 configuration involves compiling the 32-bit side on the same 64-bit
 host as the 64-bit side - and, importantly, compiling it against
 the already-built but not-yet-installed 64-bit build tree.
 
 OK. I'd like to understand some more about this, as it's a similar
 issue to other cross-compiler toolchains, and if we can't solve both
 the same way then our design is poor.

I was actually confusing mingw and wine when I wrote that.

 By '32+64 wine' do you mean
 packages designed to be installed on an amd64 machine that run both
 32bit and 64bit windows apps? Or do you mean versions of wine to run
 on both i386 and amd64 machines?
 
 The former. I don't know if there's an official term for that, but I
 don't know of any other; the full 64+32 Wine is just what I've been
 using in my own conversations as a shorthand for a longer explanation.

OK. And is 32-bit wine (to be installed on amd64) an amd64 binary that
understands i386 code or is it actually i386 code? If the latter to
what degree are wine32:amd64 and wine32:i386 any different?

Do we actually (ideally perhaps) just have 2 things:
wine64:amd64  (amd64, amd64, win64)
wine32:i386   (amd64, i386, win32)

or three things:
wine64:amd64  (amd64, amd64, win64)
wine32:amd64  (amd64, amd64, win32)
wine32:i386   (amd64, i386, win32, if cross-built) (i386, i386, win32, if 
native-built)

where:  (Build, Host, Target) means: Build is the arch built on,
Host is the arch it runs/is installed on, and target is the code/abi 
'(not)-emulated'

Perhaps this question is too simplistic once libraries are taken into
account.

 Theoretically it might be possible to build the 64-bit side on an
 amd64 machine, make the resulting tree available to an i386
 machine, let the i386 machine compile the 32-bit side against the
 64-bit tree, make the resulting tree available to the amd64 machine
 again, and let the amd64 machine do the final 'make install' or
 equivalent process.
 
 Just to clarify: at least for a non-package-build arrangement, the amd64
 machine would have to run the 'make install' from *both* trees,
 separately and in the correct order, after both builds had completed.
 This isn't automated, at least not last I checked; I've had to write
 wrapper scripts to automate part of it myself, for my own builds.
 
 Hmm. Do the parts of the 64-bit tree that the 32-bit side compiles
 against end up installed in a final installation (as libraries?) or
 are they really just intermediate 'during build' items?
 
 They do end up getting installed, though whether as libraries or not I
 don't recall offhand.
 
 IIRC, the end result gets wineserver from the 64-bit side, wine from the
 32-bit side, and wine64 from the 64-bit side, along with supporting
 files for both; I haven't examined it recently enough to remember what
 libraries (aside from the numerous Wine-internal fake-DLL objects) that
 may include.
 
 If the former then the it should work to build the 64-bit tree, then
 have the 32-bit build depend on a package that contains those parts
 it needs to build aginst.
 
 I think that could work, although as far as I can see it doesn't help
 the normal-build scenario (i.e. not building for a Debian package, just
 for a local install), which is the angle I approach this from.

Not if you need to rebuild both the 'library' and the tools (i.e the
whole thing), no. But if you just want to rebuild the tools then that
should work so long as the relevant 'wine32 library bits' -dev package
is installed. 

multiarch layouts won't help for upstream builds unless they adopt
support for it (which would be good). I've only been thinking about
the packaged version. upstream stuff is a different matter.

 Having an intermediate package containing a build tree (as opposed to
 the results of installing from that build tree) seems like an
 undesirable thing, though.

Yes, it only makes sense if this part is essentially a library-dev
package type thing which has some logical existence in it's own right,
as something to build-dep on.

 Still, there may not be much point doing this, and just building both
 in one go on a 64-bit build machine, so the 64-part is natively
 build and the 32-bit part is cross-built may make more sense. My
 understanding of wine is currently too weak to say anything
 further.
 
 My own understanding of Wine isn't in terribly much depth, but that is
 the scenario prescribed by the official Wine documentation for building
 something capable of running both 32-bit and 64-bit Windows programs,
 and I at least understand why it works that way; I think I know enough
 to also understand why it *has* to work that way, but I can't swear I'm
 not wrong about 

Re: Depends: libfoo:foreign ???

2013-05-13 Thread The Wanderer

On 05/13/2013 11:00 AM, Wookey wrote:


+++ The Wanderer [2013-05-13 10:22 -0400]:


On 05/13/2013 09:46 AM, Wookey wrote:



OK. I'd like to understand some more about this, as it's a
similar issue to other cross-compiler toolchains, and if we can't
solve both the same way then our design is poor.


I was actually confusing mingw and wine when I wrote that.


That clears up a bit of confusion, then.


By '32+64 wine' do you mean packages designed to be installed on
an amd64 machine that run both 32bit and 64bit windows apps? Or
do you mean versions of wine to run on both i386 and amd64
machines?


The former. I don't know if there's an official term for that, but
I don't know of any other; the full 64+32 Wine is just what I've
been using in my own conversations as a shorthand for a longer
explanation.


OK. And is 32-bit wine (to be installed on amd64) an amd64 binary
that understands i386 code or is it actually i386 code? If the latter
to what degree are wine32:amd64 and wine32:i386 any different?


To the best of my ability to determine, it is the latter.

On a per-file level, I don't actually know that they are different, and
what investigation I've done seems to indicate that they may not be. On
a package-wide level, some components which get built and installed
during a standalone 32-bit build don't get built for a combined build,
because they are covered by components provided by the 64-bit build.
(The same also appears to be true in reverse.)


Do we actually (ideally perhaps) just have 2 things:
wine64:amd64  (amd64, amd64, win64)
wine32:i386   (amd64, i386, win32)

or three things:
wine64:amd64  (amd64, amd64, win64)
wine32:amd64  (amd64, amd64, win32)
wine32:i386   (amd64, i386, win32, if cross-built) (i386, i386, win32, if 
native-built)

where:  (Build, Host, Target) means: Build is the arch built on, Host
is the arch it runs/is installed on, and target is the code/abi
'(not)-emulated'


The three things case seems almost accurate, except for one thing:
wine32:amd64 would be targeted to install on an amd64 host, but would be
i386 code. That may be what you intended, but I don't see it implied by
the above statement.


Perhaps this question is too simplistic once libraries are taken into
account.


I'm not sure it is; I think this may be enough to account for
everything.


Hmm. Do the parts of the 64-bit tree that the 32-bit side
compiles against end up installed in a final installation (as
libraries?) or are they really just intermediate 'during build'
items?



If the former then the it should work to build the 64-bit tree,
then have the 32-bit build depend on a package that contains
those parts it needs to build aginst.


I think that could work, although as far as I can see it doesn't
help the normal-build scenario (i.e. not building for a Debian
package, just for a local install), which is the angle I approach
this from.


Not if you need to rebuild both the 'library' and the tools (i.e the
whole thing), no. But if you just want to rebuild the tools then that
should work so long as the relevant 'wine32 library bits' -dev
package is installed.


I'm looking at the scenario of (potentially frequent) compilation of the
Wine development tree, rather than of a released version. Since the
32-bit and 64-bit build trees have to be built against the same source
for this to work properly, the wine32 library bits package wouldn't
help.


multiarch layouts won't help for upstream builds unless they adopt
support for it (which would be good). I've only been thinking about
the packaged version. upstream stuff is a different matter.


Acknowledged. For packaging purposes, this does seem like a reasonable
approach, modulo the questionability of a separate build-tree-only
package.

(It seems to me that coinstallable multiarch -dev packages would allow
this to work for Wine with the existing documented approach, with no
upstream changes; it's certainly worked fine with ia32-libs-dev so far.
But I agree that this is a separate question.)


Still, there may not be much point doing this, and just building
both in one go on a 64-bit build machine, so the 64-part is
natively build and the 32-bit part is cross-built may make more
sense. My understanding of wine is currently too weak to say
anything further.


My own understanding of Wine isn't in terribly much depth, but that
is the scenario prescribed by the official Wine documentation for
building something capable of running both 32-bit and 64-bit
Windows programs, and I at least understand why it works that way;
I think I know enough to also understand why it *has* to work that
way, but I can't swear I'm not wrong about that.


If what is being built is all amd64 code, then clearly it makes sense
to build it all in one go, on one machine. If part of what is being 
built is i386 code, depending on :i386 libs then it may make sense to

do part of that on i386 build machines, or it may make more sense to
cross-build it on amd64.


Part of what is being built 

Re: Depends: libfoo:foreign ???

2013-05-13 Thread Stephen Kitt
On Mon, 13 May 2013 11:43:05 -0400, The Wanderer wande...@fastmail.fm wrote:
 On 05/13/2013 11:00 AM, Wookey wrote:
  OK. And is 32-bit wine (to be installed on amd64) an amd64 binary
  that understands i386 code or is it actually i386 code? If the latter
  to what degree are wine32:amd64 and wine32:i386 any different?
 
 To the best of my ability to determine, it is the latter.
 
 On a per-file level, I don't actually know that they are different, and
 what investigation I've done seems to indicate that they may not be. On
 a package-wide level, some components which get built and installed
 during a standalone 32-bit build don't get built for a combined build,
 because they are covered by components provided by the 64-bit build.
 (The same also appears to be true in reverse.)
 
  Do we actually (ideally perhaps) just have 2 things:
  wine64:amd64  (amd64, amd64, win64)
  wine32:i386   (amd64, i386, win32)
  
  or three things:
  wine64:amd64  (amd64, amd64, win64)
  wine32:amd64  (amd64, amd64, win32)
  wine32:i386   (amd64, i386, win32, if cross-built) (i386, i386, win32, if
  native-built)
  
  where:  (Build, Host, Target) means: Build is the arch built on, Host
  is the arch it runs/is installed on, and target is the code/abi
  '(not)-emulated'
 
 The three things case seems almost accurate, except for one thing:
 wine32:amd64 would be targeted to install on an amd64 host, but would be
 i386 code. That may be what you intended, but I don't see it implied by
 the above statement.

The upstream approach would be three things, using multilib rather than
multiarch for the wine32:amd64 packages and native building for the i386
packages. It may be possible to support the two things approach using
multiarch, but it would make life a bit harder for maintainers and would
introduce yet another change from upstream (but if multilib disappears in
favour of multiarch we'd need to do it anyway). Mike Gilbert is working on
all this just now, he'd be the one to ask!

Regards,

Stephen


signature.asc
Description: PGP signature


Re: Depends: libfoo:foreign ???

2013-05-11 Thread Thorsten Glaser
Goswin von Brederlow goswin-v-b at web.de writes:

 I would say that a foreign dependency on a library is never right. If

Nope. I’m waiting for support for that for pcc.
(And that pcc CVS HEAD gets stable/usable again, but that’s
a totally different issue.)

bye,
//mirabilos


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/loom.20130511t173458-...@post.gmane.org



Re: Depends: libfoo:foreign ???

2013-05-10 Thread Ben Hutchings
On Thu, 2013-05-09 at 08:43 +0200, Niels Thykier wrote:
 On 2013-05-09 07:56, Paul Wise wrote:
  On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:
  
  I just noticed that we have the first amd64 package in the archive that
  has dependencies on :i386 qualified libraries:
 
  Package: teamspeak-client
  
  It appears that will block it from reaching testing:
  
 
 Indeed, Britney does not support those annotations (at the moment?).  To
 avoid issues with this kind of thing, we made her consider such
 dependencies for unsatisfiable[1].
   So for now anything using that form in Depends or Pre-Depends will not
 reach testing (without manual intervention from the Release team and I
 am not sure how likely we are to do that).
[...]

During this release cycle I'm hoping to get rid of the 'amd64' kernel
flavour in i386.  The linux-image-3.2.0-4-amd64 package is already
installable in wheezy with amd64 as a foreign arch.  However, the
linux-headers-*-amd64 packages are not, as they depend on a specific
major version of gcc (e.g. gcc-4.6). I think that a dependency on
'gcc-4.6 | gcc-4.6:i386' might fix that, but what would britney think of
it?

Ben.

-- 
Ben Hutchings
For every action, there is an equal and opposite criticism. - Harrison


signature.asc
Description: This is a digitally signed message part


Re: Depends: libfoo:foreign ???

2013-05-10 Thread Niels Thykier
On 2013-05-10 14:48, Ben Hutchings wrote:
 On Thu, 2013-05-09 at 08:43 +0200, Niels Thykier wrote:
 On 2013-05-09 07:56, Paul Wise wrote:
 On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:

 I just noticed that we have the first amd64 package in the archive that
 has dependencies on :i386 qualified libraries:

 Package: teamspeak-client

 It appears that will block it from reaching testing:


 Indeed, Britney does not support those annotations (at the moment?).  To
 avoid issues with this kind of thing, we made her consider such
 dependencies for unsatisfiable[1].
   So for now anything using that form in Depends or Pre-Depends will not
 reach testing (without manual intervention from the Release team and I
 am not sure how likely we are to do that).
 [...]
 
 During this release cycle I'm hoping to get rid of the 'amd64' kernel
 flavour in i386.  The linux-image-3.2.0-4-amd64 package is already
 installable in wheezy with amd64 as a foreign arch.  However, the
 linux-headers-*-amd64 packages are not, as they depend on a specific
 major version of gcc (e.g. gcc-4.6). I think that a dependency on
 'gcc-4.6 | gcc-4.6:i386' might fix that, but what would britney think of
 it?
 
 Ben.
 

As I understand the code, she ignores unsatisifiable dependencies in an
OR clause (as long as the result is not empty).  That said, our test
case for this does not include alternatives.
  Though looking at the commit log, if she doesn't accept it (I think
she will, but...) you will get a big fat warning on the excuses page[1].
 If you want to know ahead of time, you are welcome to donate a test
case[2]. :)

~Niels

[1]
http://anonscm.debian.org/gitweb/?p=mirror/britney2.git;a=commitdiff;h=3e9c1acb8e3724c7f1cf10f4578a4082fb5c1756

[2] http://anonscm.debian.org/gitweb/?p=collab-maint/britney2-tests.git

I think t/multi-arch-depends should serve as a good starting point.



-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/518cf552.9080...@thykier.net



Re: Depends: libfoo:foreign ???

2013-05-09 Thread Niels Thykier
On 2013-05-09 07:56, Paul Wise wrote:
 On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:
 
 I just noticed that we have the first amd64 package in the archive that
 has dependencies on :i386 qualified libraries:

 Package: teamspeak-client
 
 It appears that will block it from reaching testing:
 

Indeed, Britney does not support those annotations (at the moment?).  To
avoid issues with this kind of thing, we made her consider such
dependencies for unsatisfiable[1].
  So for now anything using that form in Depends or Pre-Depends will not
reach testing (without manual intervention from the Release team and I
am not sure how likely we are to do that).

 http://packages.qa.debian.org/t/teamspeak-client.html
 
 The proper thing to do would be to remove the amd64 package entirely
 and have users install the i386 version.
 

Indeed, I believe that should work.

~Niels

[1] Though she ignores them in Recommends/Suggests and possibly also in
Breaks/Conflicts.



-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/518b458a.2020...@thykier.net



Re: Depends: libfoo:foreign ???

2013-05-09 Thread Goswin von Brederlow
On Thu, May 09, 2013 at 08:43:22AM +0200, Niels Thykier wrote:
 On 2013-05-09 07:56, Paul Wise wrote:
  On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:
  
  I just noticed that we have the first amd64 package in the archive that
  has dependencies on :i386 qualified libraries:
 
  Package: teamspeak-client
  
  It appears that will block it from reaching testing:
  
 
 Indeed, Britney does not support those annotations (at the moment?).  To
 avoid issues with this kind of thing, we made her consider such
 dependencies for unsatisfiable[1].
   So for now anything using that form in Depends or Pre-Depends will not
 reach testing (without manual intervention from the Release team and I
 am not sure how likely we are to do that).
 
  http://packages.qa.debian.org/t/teamspeak-client.html
  
  The proper thing to do would be to remove the amd64 package entirely
  and have users install the i386 version.
  
 
 Indeed, I believe that should work.

It is the indended solution. If it doesn't work then that is a bug and
needs to be fixed.
 
 ~Niels
 
 [1] Though she ignores them in Recommends/Suggests and possibly also in
 Breaks/Conflicts.

A Depends like in this case is never right since it mixes biarch
(libc6-i386) packages with multiarch (libfoo:i386).

I would say that a foreign dependency on a library is never right. If
the source compiles binaries for the foreign arch then the package
should be build on the foreign arch directly. Period.

Also, iirc, the use of foreign dependencies is only supposed to be on
packages with Multi-Arch: allowed. This is for interpreters and
plugins/lib bindings where the normal automatic method can't work. So
maybe DAK could be made more restrictive here.

MfG
Goswin


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130509093918.GA31432@frosties



Re: Depends: libfoo:foreign ???

2013-05-09 Thread Wookey
+++ Goswin von Brederlow [2013-05-09 11:39 +0200]:
 On Thu, May 09, 2013 at 08:43:22AM +0200, Niels Thykier wrote:
  On 2013-05-09 07:56, Paul Wise wrote:
   On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:
   
   I just noticed that we have the first amd64 package in the archive that
   has dependencies on :i386 qualified libraries:
  
   Package: teamspeak-client
 
 A Depends like in this case is never right since it mixes biarch
 (libc6-i386) packages with multiarch (libfoo:i386).

This does seem wrong, especially in this case. I can't think of a case
where it makes sense offhand, but there might be one.

 I would say that a foreign dependency on a library is never right.

That's too strong. It can make sense for cross-tools, or maybe
emulators, which genuinely need a foreign-arch library to operate. But
I'm not aware of other sensible usages.

 If
 the source compiles binaries for the foreign arch then the package
 should be build on the foreign arch directly. Period.

Apart from the above exceptions, I agree.

We haven't yet formulated any policy on what is/isn't going to be
allowed/deemed sensible. 

 Also, iirc, the use of foreign dependencies is only supposed to be on
 packages with Multi-Arch: allowed. 

I don't think that's relevant/correct. A foreign-arch dep is
appropriate when the binary is linked against/uses said library, and a
same-arch libfoo-arch-cross isn't used instead. Said library could be a
perfectly normal M-A:same package.

I guess it's time to have a think about this stuff and write down some
guidelines/policy.

Wookey
-- 
Principal hats:  Linaro, Emdebian, Wookware, Balloonboard, ARM
http://wookware.org/


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20130509155927.gv2...@stoneboat.aleph1.co.uk



Re: Depends: libfoo:foreign ???

2013-05-09 Thread Steve Langasek
On Thu, May 09, 2013 at 08:43:22AM +0200, Niels Thykier wrote:
 On 2013-05-09 07:56, Paul Wise wrote:
  On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:

  I just noticed that we have the first amd64 package in the archive that
  has dependencies on :i386 qualified libraries:

  Package: teamspeak-client

  It appears that will block it from reaching testing:

 Indeed, Britney does not support those annotations (at the moment?).  To
 avoid issues with this kind of thing, we made her consider such
 dependencies for unsatisfiable[1].
   So for now anything using that form in Depends or Pre-Depends will not
 reach testing (without manual intervention from the Release team and I
 am not sure how likely we are to do that).

Sorry for not knowing the answer to this, but does britney support :any
dependencies?  These don't require any cross-architecture dependency
resolution, but should be satisfiable within each architecture; britney just
needs to support them.

This would let us finally make use of Multi-Arch: allowed in the archive.

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developerhttp://www.debian.org/
slanga...@ubuntu.com vor...@debian.org


signature.asc
Description: Digital signature


Re: Depends: libfoo:foreign ???

2013-05-09 Thread Niels Thykier
On 2013-05-09 21:00, Steve Langasek wrote:
 [...]
 
 Sorry for not knowing the answer to this, but does britney support :any
 dependencies?  These don't require any cross-architecture dependency
 resolution, but should be satisfiable within each architecture; britney just
 needs to support them.
 
 This would let us finally make use of Multi-Arch: allowed in the archive.
 

At the moment, no.  We had her treat pkg:arch as a package name
causing it to always fail (as no package can have colon in their name).
  But feel free to file bugs for it (bonus points if they include tests[1]).

~Niels

[1]
http://anonscm.debian.org/gitweb/?p=collab-maint/britney2-tests.git;a=summary



-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/518bffcf.6060...@thykier.net



Re: Depends: libfoo:foreign ???

2013-05-08 Thread Paul Wise
On Thu, May 9, 2013 at 1:08 PM, Andreas Beckmann wrote:

 I just noticed that we have the first amd64 package in the archive that
 has dependencies on :i386 qualified libraries:

 Package: teamspeak-client

It appears that will block it from reaching testing:

http://packages.qa.debian.org/t/teamspeak-client.html

The proper thing to do would be to remove the amd64 package entirely
and have users install the i386 version.

-- 
bye,
pabs

http://wiki.debian.org/PaulWise


-- 
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
http://lists.debian.org/CAKTje6GeFuc6usA7r=jbznhp2fkugupwv6-fywuvxj9k2uc...@mail.gmail.com