Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-06-03 Thread Raphael Hertzog
Hi,

On Mon, 02 Jun 2014, Aurelien Jarno wrote:
  Alternatively, we can create an empty package called for example
  multiarch-no-foreign, which is arch:any and Multi-arch: none. That way
  all packages which should not be installed as foreign architecture can
  depend on this one.
  
  What do you think?
 
 Well it won't work, because installing libc6-amd64:i386 will pull
 multiarch-no-foreign:i386, and thus the whole set will be installable.

This can be solved by ensuring that it's installed in sync with dpkg, eg
by letting dpkg depends on multiarch-no-foreign, no?

This would be a supplementary hassle to cross-grade a system from one arch
to another though.

Or maybe we don't need the dependency but we can just get it installed
during debootstrap?

Cheers,
-- 
Raphaël Hertzog ◈ Debian Developer

Discover the Debian Administrator's Handbook:
→ http://debian-handbook.info/get/


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: 
https://lists.debian.org/20140603070038.gb29...@x230-buxy.home.ouaza.com



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-06-03 Thread Guillem Jover
Hi!

On Mon, 2014-05-19 at 15:56:14 +0200, Aurelien Jarno wrote:
 On Mon, May 19, 2014 at 02:01:15PM +0200, Jakub Wilk wrote:
  * Aurelien Jarno aurel...@aurel32.net, 2014-05-19, 13:28:
   So following your way, it would be exactly the same for libc6:sparc.
  
   libc6-i386 also provides /lib/ld-linux.so.2. It should be
   co-installable with libc6:i386, but libc6:sparc should not be
   co-installable with libc6:i386 or libc6-i386.
  
  Oh, right. Couldn't the biarch packages die already? :)
 
 Unfortunately, as long as we keep GCC, we will need them, even if they
 are a pain.

Actually, why? I guess I might be missing something obvious, but even
if GCC wants to preserve the bi/triarch stuff (which I think is a bad
idea), why does glibc need to keep them in the current form as well?
Couldn't they be switched to empty packages depending on the actual
packages from the other arch, using either cross-arch dependencies or
the arch-annotated provides or similar? Or alternatively be switched
to native packages, or be simply provided by the native package,
similar to how the ia32-libs stuff got transitioned?

Thanks,
Guillem


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140603112113.ga...@gaara.hadrons.org



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-06-03 Thread Aurelien Jarno
On Tue, Jun 03, 2014 at 09:00:38AM +0200, Raphael Hertzog wrote:
 Hi,
 
 On Mon, 02 Jun 2014, Aurelien Jarno wrote:
   Alternatively, we can create an empty package called for example
   multiarch-no-foreign, which is arch:any and Multi-arch: none. That way
   all packages which should not be installed as foreign architecture can
   depend on this one.
   
   What do you think?
  
  Well it won't work, because installing libc6-amd64:i386 will pull
  multiarch-no-foreign:i386, and thus the whole set will be installable.
 
 This can be solved by ensuring that it's installed in sync with dpkg, eg
 by letting dpkg depends on multiarch-no-foreign, no?

That indeed would do it.

 This would be a supplementary hassle to cross-grade a system from one arch
 to another though.

That's true. This point to the question: how is the main architecture of
a system determined, and how is happening the switch between the main
and the foreign architecture in a cross-grade procedure?

This might be a problem even if we choose to update the multiarch
specification to disallow foreign packages.

 Or maybe we don't need the dependency but we can just get it installed
 during debootstrap?

If it only installed during deboostrap with nothing depending on it, it
can be reinstalled for another architecture. apt might even be smart
enough to suggest that.

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140603183939.gj5...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-06-03 Thread Aurelien Jarno
On Tue, Jun 03, 2014 at 01:21:13PM +0200, Guillem Jover wrote:
 Hi!
 
 On Mon, 2014-05-19 at 15:56:14 +0200, Aurelien Jarno wrote:
  On Mon, May 19, 2014 at 02:01:15PM +0200, Jakub Wilk wrote:
   * Aurelien Jarno aurel...@aurel32.net, 2014-05-19, 13:28:
So following your way, it would be exactly the same for libc6:sparc.
   
libc6-i386 also provides /lib/ld-linux.so.2. It should be
co-installable with libc6:i386, but libc6:sparc should not be
co-installable with libc6:i386 or libc6-i386.
   
   Oh, right. Couldn't the biarch packages die already? :)
  
  Unfortunately, as long as we keep GCC, we will need them, even if they
  are a pain.
 
 Actually, why? I guess I might be missing something obvious, but even
 if GCC wants to preserve the bi/triarch stuff (which I think is a bad
 idea), why does glibc need to keep them in the current form as well?

GCC needs to the libc packages to build the bi/triarch support.

 Couldn't they be switched to empty packages depending on the actual
 packages from the other arch, using either cross-arch dependencies or
 the arch-annotated provides or similar? Or alternatively be switched
 to native packages, or be simply provided by the native package,
 similar to how the ia32-libs stuff got transitioned?

There are multiple problems with that:
- Currently gcc does not look in the multiarch path for the multilib
  case. This can probably be fixed though.
- Cross-architecture dependencies are not supported by the build
  infrastructure.
- We don't always have the equivalent bi/triarch architecture in debian.
  We basically have it for i386/amd64, but we don't have it for
  mipsn32, mipsn32el, mips64, mips64el, s390, ppc64, sparc64. There were
  some discussion about having a minimal set of packages for these
  architectures a few years ago, but it requires a lot of changes in the
  infrastructure and also at the packaging level.

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140603184600.gk5...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-06-02 Thread Aurelien Jarno
On Fri, May 30, 2014 at 08:42:53PM +0200, Aurelien Jarno wrote:
 On Wed, May 28, 2014 at 06:04:22PM +0200, Aurelien Jarno wrote:
  On Mon, May 19, 2014 at 12:09:28PM -0700, Jonathan Nieder wrote:
   Aurelien Jarno wrote:
   
As a subsidiary question, do you know how to prevent libc6-amd64:i386 to
be installed on a native amd64 system, but allow it on an i386 system,
even with libc6:amd64 already installed?
   
   Use Conflicts against dpkg:amd64, maybe. :(
  
  I have been looking at this issue a bit more in details. libc biarch
  packages have never been designed with multiarch in mind, and thus they
  are not tagged as multiarch packages (implicit Multi-arch: none). However
  since multiarch, as the Multi-arch: field only concerns dependencies, and
  that such packages do not have Depends: beside the libc6 one, they are
  suddenly installable as foreign packages.
  
  That's why we suddenly have for example conflicts issue between 
  libc6-dev-i386 and libc6-dev-mips64 (#702962) or libc6-dev-i386 and
  libc6-dev-mips64 (#702962), or why people are allowed to install
  libc6-amd64 on their amd64 system.
  
  I therefore wonder if we can add a new value for the Multi-arch: field
  like forbidden, to prevent a foreign package to be installed on a
  system.
  
  Otherwise it looks like we'll have to go with a long list of
  Conflicts...
 
 Alternatively, we can create an empty package called for example
 multiarch-no-foreign, which is arch:any and Multi-arch: none. That way
 all packages which should not be installed as foreign architecture can
 depend on this one.
 
 What do you think?
 

Well it won't work, because installing libc6-amd64:i386 will pull
multiarch-no-foreign:i386, and thus the whole set will be installable.

We definitely do want to forbid things like installing gdb64:i386 or
strace64:i386 on an amd64 system, or more horrible things like
trying to install libc6-dev-x32:am64 on an i386 system.

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140602180336.ga11...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-30 Thread Aurelien Jarno
On Wed, May 28, 2014 at 06:04:22PM +0200, Aurelien Jarno wrote:
 On Mon, May 19, 2014 at 12:09:28PM -0700, Jonathan Nieder wrote:
  Aurelien Jarno wrote:
  
   As a subsidiary question, do you know how to prevent libc6-amd64:i386 to
   be installed on a native amd64 system, but allow it on an i386 system,
   even with libc6:amd64 already installed?
  
  Use Conflicts against dpkg:amd64, maybe. :(
 
 I have been looking at this issue a bit more in details. libc biarch
 packages have never been designed with multiarch in mind, and thus they
 are not tagged as multiarch packages (implicit Multi-arch: none). However
 since multiarch, as the Multi-arch: field only concerns dependencies, and
 that such packages do not have Depends: beside the libc6 one, they are
 suddenly installable as foreign packages.
 
 That's why we suddenly have for example conflicts issue between 
 libc6-dev-i386 and libc6-dev-mips64 (#702962) or libc6-dev-i386 and
 libc6-dev-mips64 (#702962), or why people are allowed to install
 libc6-amd64 on their amd64 system.
 
 I therefore wonder if we can add a new value for the Multi-arch: field
 like forbidden, to prevent a foreign package to be installed on a
 system.
 
 Otherwise it looks like we'll have to go with a long list of
 Conflicts...

Alternatively, we can create an empty package called for example
multiarch-no-foreign, which is arch:any and Multi-arch: none. That way
all packages which should not be installed as foreign architecture can
depend on this one.

What do you think?

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140530184253.gf31...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-28 Thread Aurelien Jarno
On Mon, May 19, 2014 at 12:09:28PM -0700, Jonathan Nieder wrote:
 Aurelien Jarno wrote:
 
  As a subsidiary question, do you know how to prevent libc6-amd64:i386 to
  be installed on a native amd64 system, but allow it on an i386 system,
  even with libc6:amd64 already installed?
 
 Use Conflicts against dpkg:amd64, maybe. :(

I have been looking at this issue a bit more in details. libc biarch
packages have never been designed with multiarch in mind, and thus they
are not tagged as multiarch packages (implicit Multi-arch: none). However
since multiarch, as the Multi-arch: field only concerns dependencies, and
that such packages do not have Depends: beside the libc6 one, they are
suddenly installable as foreign packages.

That's why we suddenly have for example conflicts issue between 
libc6-dev-i386 and libc6-dev-mips64 (#702962) or libc6-dev-i386 and
libc6-dev-mips64 (#702962), or why people are allowed to install
libc6-amd64 on their amd64 system.

I therefore wonder if we can add a new value for the Multi-arch: field
like forbidden, to prevent a foreign package to be installed on a
system.

Otherwise it looks like we'll have to go with a long list of
Conflicts...

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140528160422.gi5...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-19 Thread Jakub Wilk

* Aurelien Jarno aurel...@aurel32.net, 2014-05-19, 12:25:
We currently have a problem with the libc{0.1,0.3,6,6.1} packages, 
which are marked as Multiarch:same, but are in practice not 
co-installable due to the ELF interpreter path being the same on 
various architectures. For example libc6:i386 and libc6:sparc are not 
co-installable, causing dpkg to exit complaining onifile overwrite.


Sounds like a job for Provides+Conflicts+Replaces.

Here is the list of the different ELF interpreters for the various 
architectures we have in Debian or floating around:


i386/lib/ld-linux.so.2


Provides: lib-ld-linux-so-2
Conflicts: lib-ld-linux-so-2
Replaces: lib-ld-linux-so-2


hppa/lib/ld.so.1
m68k/lib/ld.so.1
mips/lib/ld.so.1
s390/lib/ld.so.1


Provides: lib-ld-so-1
Conflicts: lib-ld-so-1
Replaces: lib-ld-so-1


amd64   /lib64/ld-linux-x86-64.so.2


Provides: lib64-ld-linux-x86-64-so-2
Conflicts: lib64-ld-linux-x86-64-so-2
Replaces: lib64-ld-linux-x86-64-so-2

... and so on.

--
Jakub Wilk


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140519111636.gb8...@jwilk.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-19 Thread Aurelien Jarno
On Mon, May 19, 2014 at 01:16:36PM +0200, Jakub Wilk wrote:
 * Aurelien Jarno aurel...@aurel32.net, 2014-05-19, 12:25:
 We currently have a problem with the libc{0.1,0.3,6,6.1} packages,
 which are marked as Multiarch:same, but are in practice not
 co-installable due to the ELF interpreter path being the same on
 various architectures. For example libc6:i386 and libc6:sparc are
 not co-installable, causing dpkg to exit complaining onifile
 overwrite.
 
 Sounds like a job for Provides+Conflicts+Replaces.
 
 Here is the list of the different ELF interpreters for the various
 architectures we have in Debian or floating around:
 
 i386/lib/ld-linux.so.2
 
 Provides: lib-ld-linux-so-2
 Conflicts: lib-ld-linux-so-2
 Replaces: lib-ld-linux-so-2

So following your way, it would be exactly the same for libc6:sparc.

libc6-i386 also provides /lib/ld-linux.so.2. It should be co-installable
with libc6:i386, but libc6:sparc should not be co-installable with
libc6:i386 or libc6-i386.

-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140519112813.gd5...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-19 Thread Jakub Wilk

* Aurelien Jarno aurel...@aurel32.net, 2014-05-19, 13:28:

i386/lib/ld-linux.so.2


Provides: lib-ld-linux-so-2
Conflicts: lib-ld-linux-so-2
Replaces: lib-ld-linux-so-2


So following your way, it would be exactly the same for libc6:sparc.

libc6-i386 also provides /lib/ld-linux.so.2. It should be 
co-installable with libc6:i386, but libc6:sparc should not be 
co-installable with libc6:i386 or libc6-i386.


Oh, right. Couldn't the biarch packages die already? :)

If they can't, I suppose you can implement cross-architecture conflicts 
with plain conflicts against virtual packages:


Package: libc6
Architecture: i386
Provides: libc6-on-i386
Conflicts: libc6-on-sparc, ...

Package: libc6-i386
Architecture: amd64
Conflicts: libc6-on-sparc, ...

Package: libc6
Architecture: sparc
Provides: libc6-on-sparc
Conflicts: libc6-on-i386, libc6-i386, ...

--
Jakub Wilk


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140519120115.ga2...@jwilk.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-19 Thread Aurelien Jarno
On Mon, May 19, 2014 at 02:01:15PM +0200, Jakub Wilk wrote:
 * Aurelien Jarno aurel...@aurel32.net, 2014-05-19, 13:28:
 i386/lib/ld-linux.so.2
 
 Provides: lib-ld-linux-so-2
 Conflicts: lib-ld-linux-so-2
 Replaces: lib-ld-linux-so-2
 
 So following your way, it would be exactly the same for libc6:sparc.
 
 libc6-i386 also provides /lib/ld-linux.so.2. It should be
 co-installable with libc6:i386, but libc6:sparc should not be
 co-installable with libc6:i386 or libc6-i386.
 
 Oh, right. Couldn't the biarch packages die already? :)

Unfortunately, as long as we keep GCC, we will need them, even if they
are a pain.

 If they can't, I suppose you can implement cross-architecture
 conflicts with plain conflicts against virtual packages:
 
 Package: libc6
 Architecture: i386
 Provides: libc6-on-i386
 Conflicts: libc6-on-sparc, ...
 
 Package: libc6-i386
 Architecture: amd64
 Conflicts: libc6-on-sparc, ...
 
 Package: libc6
 Architecture: sparc
 Provides: libc6-on-sparc
 Conflicts: libc6-on-i386, libc6-i386, ...

Indeed we can encode the architecture in the Provides:. I guess we'll
have script that...

As a subsidiary question, do you know how to prevent libc6-amd64:i386 to
be installed on a native amd64 system, but allow it on an i386 system,
even with libc6:amd64 already installed?


-- 
Aurelien Jarno  GPG: 4096R/1DDD8C9B
aurel...@aurel32.net http://www.aurel32.net


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140519135614.ge5...@hall.aurel32.net



Re: [Multiarch-devel] cross-architecture conflicts or equivalent for libc packages

2014-05-19 Thread Jonathan Nieder
Aurelien Jarno wrote:

 As a subsidiary question, do you know how to prevent libc6-amd64:i386 to
 be installed on a native amd64 system, but allow it on an i386 system,
 even with libc6:amd64 already installed?

Use Conflicts against dpkg:amd64, maybe. :(


-- 
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/20140519190928.go12...@google.com