Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32on amd64)

2006-02-24 Thread Andreas Jochens
Matthias Klose wrote:
> Bdale Garbee writes:
> > On Fri, 2006-02-24 at 01:12 +0100, Aurelien Jarno wrote:
> > 
> > > The only change planned is to make libc6-dev-i386 and libc6-i386 provide 
> > > a glibc on amd64 instead of ia32-libs. It will be in /emul/ia32-linux (I 
> > > still have to find how to do that cleanly in the debhelper files).
> > > 
> > > Bdale, do you agree with such a change?
> > > Yes, I think we can handle that.  It means some small work on ia32-libs
> > to stop delivering any conflicting files, but I'm sure we can work that
> > out easily enough.  If you want to provide me a patch for ia32-libs that
> > does what you want it to do, that would be welcome.
> 
> thanks.  with this setup we are able to build our toolchain without
> build dependencies on ia32-libs or with packages conflicting with
> future multiarch packages (maybe additionally building lib32z1 from
> zlib).

Hello,

please consider to install the 32-bit files from libc6(-dev)-i386, 
lib32gcc1, lib32stdc++ and lib32z1 in /usr/lib32 instead of 
/emul/ia32-linux/usr/lib.

This way the amd64 case would be handled in a similar way as the
other 32/64-bit "biarch" architectures.

I think that a future migration to multiarch will be easier if the amd64 
case needs no special handling. Also, with /usr/lib32 there will be no 
need for ugly glibc debhelper file hacks as it would be for 
/emul/ia32-linux/usr/lib.


I suggest the following setup for 32-bit libraries on amd64:

1. The ia32-libs package continues to install the 32-bit libraries in 
/emul/ia32-linux/usr/lib but it stops to provide the 32-bit libc6(-dev) 
packages.

2. The ia32-libs package does no longer provide a symlink from 
/usr/lib32 to /emul/ia32-linux/usr/lib.

3. The 32-bit libraries from libc6(-dev-)-i386, lib32gcc1, lib32stdc++, 
lib32z1 and other "_amd64.deb" packages are installed in 
/usr/lib32 which is not a symlink but a real directory.

4. The (/usr)/lib/i486-linux-gnu directories are reserved for future 
multiarch installations.


These changes could be implemented by simple patches without breaking
existing installations.

Regards
Andreas Jochens


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32on amd64)

2006-02-24 Thread Aurelien Jarno

Andreas Jochens a écrit :

Matthias Klose wrote:


Bdale Garbee writes:


On Fri, 2006-02-24 at 01:12 +0100, Aurelien Jarno wrote:


The only change planned is to make libc6-dev-i386 and libc6-i386 provide 
a glibc on amd64 instead of ia32-libs. It will be in /emul/ia32-linux (I 
still have to find how to do that cleanly in the debhelper files).


Bdale, do you agree with such a change?
Yes, I think we can handle that.  It means some small work on ia32-libs


to stop delivering any conflicting files, but I'm sure we can work that
out easily enough.  If you want to provide me a patch for ia32-libs that
does what you want it to do, that would be welcome.


thanks.  with this setup we are able to build our toolchain without
build dependencies on ia32-libs or with packages conflicting with
future multiarch packages (maybe additionally building lib32z1 from
zlib).



Hello,

please consider to install the 32-bit files from libc6(-dev)-i386, 
lib32gcc1, lib32stdc++ and lib32z1 in /usr/lib32 instead of 
/emul/ia32-linux/usr/lib.


This way the amd64 case would be handled in a similar way as the
other 32/64-bit "biarch" architectures.


IMHO, I think it would be better to use (/usr)/lib32. But I won't do any 
change without having a mail from Steve Langasek, Matthias Klose and 
Bdale Garbee telling that they are ok with this change.


I think that a future migration to multiarch will be easier if the amd64 
case needs no special handling. Also, with /usr/lib32 there will be no 
need for ugly glibc debhelper file hacks as it would be for 
/emul/ia32-linux/usr/lib.


Here is my opinion:
Advantages
- Coherency between ports. MIPS will use /usr/lib32 when the tri-arch 
patch will be finished, the unofficial ppc64 pot uses /usr/lib32. Also 
this is the counterpart of /usr/lib64 on other arches.
- Easier for biarch package maintainers, as they don't need to do 
special things for amd64. This is essentially true for the glibc.
- /usr/lib32 is a search path for gcc /emul/ia32-linux/usr/lib is not, 
that's why we currently have a symlink.


Drawbacks:
- We have to change.


I suggest the following setup for 32-bit libraries on amd64:

1. The ia32-libs package continues to install the 32-bit libraries in 
/emul/ia32-linux/usr/lib but it stops to provide the 32-bit libc6(-dev) 
packages.


That was the plan.

2. The ia32-libs package does no longer provide a symlink from 
/usr/lib32 to /emul/ia32-linux/usr/lib.


Removing this link render the ia32-libs-dev package unusable as 
/emul/ia32-linux/usr/lib is not a search path when linking libraries.


3. The 32-bit libraries from libc6(-dev-)-i386, lib32gcc1, lib32stdc++, 
lib32z1 and other "_amd64.deb" packages are installed in 
/usr/lib32 which is not a symlink but a real directory.


Personally I feel we have to remove as much as possible libraries from 
ia32-libs replacing them by biarch packages, as it has been done for 
amd64-libs.


This package is not build from sources, but uses the binaries from 
i386.deb files. Yes the sources are also provided in the source package, 
but that doesn't really help more. Imagine you want to fix something, 
you can't simply apply a patch to ia32-libs sources and rebuild. That's 
bad, and at the limit of your policy manual.


Bdale, please don't take that as a personal attack. This package is 
really useful and also it exists! But I think we could do better.


4. The (/usr)/lib/i486-linux-gnu directories are reserved for future 
multiarch installations.



These changes could be implemented by simple patches without breaking
existing installations.


Yes, they are all on http://people.debian.org/~aurel32/amd64-lib32/ for 
a while.


Bye,
Aurelien

--
  .''`.  Aurelien Jarno | GPG: 1024D/F1BCDB73
 : :' :  Debian developer   | Electrical Engineer
 `. `'   [EMAIL PROTECTED] | [EMAIL PROTECTED]
   `-people.debian.org/~aurel32 | www.aurel32.net


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32on amd64)

2006-02-24 Thread Andreas Jochens
On 06-Feb-24 12:06, Aurelien Jarno wrote:
> Andreas Jochens a écrit :
> >I suggest the following setup for 32-bit libraries on amd64:
> >
> >1. The ia32-libs package continues to install the 32-bit libraries in 
> >/emul/ia32-linux/usr/lib but it stops to provide the 32-bit libc6(-dev) 
> >packages.

> >2. The ia32-libs package does no longer provide a symlink from 
> >/usr/lib32 to /emul/ia32-linux/usr/lib.
> 
> Removing this link render the ia32-libs-dev package unusable as 
> /emul/ia32-linux/usr/lib is not a search path when linking libraries.

/emul/ia32-linux/usr/lib _is_ in the search path of the dynamic linker
because /emul/ia32-linux/usr/lib is added to /etc/ld.so.conf by
ia32-libs.postinst. Consequently, the symlink to /usr/lib32 is not 
necessary to run 32-bit binaries that use libraries from ia32-libs.

As far as I remember, the /usr/lib32 symlink was introduced in ia32-libs
because without it 'gcc -m32' did not work correctly because it expects
its own 32-bit libraries (e.g. libgcc*) to be in /usr/lib32. This 
problem with gcc will no occur in my suggested setup because of:

> >3. The 32-bit libraries from libc6(-dev-)-i386, lib32gcc1, lib32stdc++,
> >lib32z1 and other "_amd64.deb" packages are installed in
> >/usr/lib32 which is not a symlink but a real directory.

Regards
Andreas Jochens


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32on amd64)

2006-02-24 Thread Aurelien Jarno

Andreas Jochens a écrit :

On 06-Feb-24 12:06, Aurelien Jarno wrote:


Andreas Jochens a écrit :


I suggest the following setup for 32-bit libraries on amd64:

1. The ia32-libs package continues to install the 32-bit libraries in 
/emul/ia32-linux/usr/lib but it stops to provide the 32-bit libc6(-dev) 
packages.



2. The ia32-libs package does no longer provide a symlink from 
/usr/lib32 to /emul/ia32-linux/usr/lib.


Removing this link render the ia32-libs-dev package unusable as 
/emul/ia32-linux/usr/lib is not a search path when linking libraries.



/emul/ia32-linux/usr/lib _is_ in the search path of the dynamic linker


When I say linking, I don't speak about the dynamic linking, but the 
linking that occurs when building a package with gcc.



because /emul/ia32-linux/usr/lib is added to /etc/ld.so.conf by
ia32-libs.postinst. Consequently, the symlink to /usr/lib32 is not 
necessary to run 32-bit binaries that use libraries from ia32-libs.


Agreed that part works. Note that I spoke about ia32-libs-dev.


As far as I remember, the /usr/lib32 symlink was introduced in ia32-libs
because without it 'gcc -m32' did not work correctly because it expects
its own 32-bit libraries (e.g. libgcc*) to be in /usr/lib32. This 
problem with gcc will no occur in my suggested setup because of:


It expects _all_ libraires to be there or (in /lib), not only the gcc ones:

[EMAIL PROTECTED]:/# echo 'main() {}' > test.c
[EMAIL PROTECTED]:/# gcc -m32 -o test test.c -ljpeg
/usr/bin/ld: skipping incompatible 
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../../libjpeg.so when searching 
for -ljpeg
/usr/bin/ld: skipping incompatible 
/usr/lib/gcc/x86_64-linux-gnu/4.0.3/../../../libjpeg.a when searching 
for -ljpeg
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libjpeg.so when 
searching for -ljpeg
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libjpeg.a when 
searching for -ljpeg
/usr/bin/ld: skipping incompatible /usr/lib/libjpeg.so when searching 
for -ljpeg
/usr/bin/ld: skipping incompatible /usr/lib/libjpeg.a when searching for 
-ljpeg

/usr/bin/ld: cannot find -ljpeg
collect2: ld returned 1 exit status
[EMAIL PROTECTED]:/# ls /emul/ia32-linux/usr/lib/libjpe*
/emul/ia32-linux/usr/lib/libjpeg.so.62 
/emul/ia32-linux/usr/lib/libjpeg.so.62.0.0


So that does not work.

Aurelien

--
  .''`.  Aurelien Jarno | GPG: 1024D/F1BCDB73
 : :' :  Debian developer   | Electrical Engineer
 `. `'   [EMAIL PROTECTED] | [EMAIL PROTECTED]
   `-people.debian.org/~aurel32 | www.aurel32.net


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32on amd64)

2006-02-24 Thread Andreas Jochens
Hello,

On 06-Feb-24 14:04, Aurelien Jarno wrote:
> Andreas Jochens a écrit :
> When I say linking, I don't speak about the dynamic linking, but the 
> linking that occurs when building a package with gcc.
> 
> >because /emul/ia32-linux/usr/lib is added to /etc/ld.so.conf by
> >ia32-libs.postinst. Consequently, the symlink to /usr/lib32 is not 
> >necessary to run 32-bit binaries that use libraries from ia32-libs.
> 
> Agreed that part works. Note that I spoke about ia32-libs-dev.

The current ia32-libs-dev package contains basically only the 32-bit 
files from the i386 libc6-dev package, i.e. it will be completely 
replaced by the new libc6-dev-i386 package.

> >As far as I remember, the /usr/lib32 symlink was introduced in ia32-libs
> >because without it 'gcc -m32' did not work correctly because it expects
> >its own 32-bit libraries (e.g. libgcc*) to be in /usr/lib32. This 
> >problem with gcc will no occur in my suggested setup because of:
> 
> It expects _all_ libraires to be there or (in /lib), not only the gcc ones:

Yes, you are right. However, the current ia32-libs-dev package does not 
contain any development libraries besides libc6-dev anyway, so no 
functionality will be lost by removing the symlink from ia32-libs, 
provided that all other _amd64.deb packages install their 32-bit 
development libraries in /usr/lib32.

> [EMAIL PROTECTED]:/# echo 'main() {}' > test.c
> [EMAIL PROTECTED]:/# gcc -m32 -o test test.c -ljpeg
> /usr/bin/ld: cannot find -ljpeg

You will get the same result with or without the symlink, simply because
ia32-libs-dev does not contain the necessary libjpeg.so at all.


In any case, there are other reasons why the ia32-libs-dev package 
setup does not allow for any serious 32-bit development (e.g. problems 
with architecture specific include files). 32-bit development in the 
sense of package building will require either an i386 chroot environment
or maybe in the future a full multiarch environment.

Regards
Andreas Jochens


P.S. Thank you for all your recent work on the glibc package and 
especially for the recent upload of version 2.3.6-2. This new version
will make many things a lot easier, especially for amd64, 
regardless which of the discussed directory setups will be chosen 
finally.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#350688: Patch

2006-02-24 Thread Matt Kraai
tag 350688 patch
thanks

The attached patch integrates Daniel's patch into the build system.
It fixes the problem on PowerPC.

-- 
Matt
diff -Nru gcc-2.95-2.95.4.ds15-orig/debian/patches/p-make-lang.dpatch 
gcc-2.95-2.95.4.ds15/debian/patches/p-make-lang.dpatch
--- gcc-2.95-2.95.4.ds15-orig/debian/patches/p-make-lang.dpatch 1969-12-31 
16:00:00.0 -0800
+++ gcc-2.95-2.95.4.ds15/debian/patches/p-make-lang.dpatch  2006-02-22 
12:55:05.0 -0800
@@ -0,0 +1,56 @@
+#! /bin/sh -e
+
+# DP: Quote the arguments to sed in the Pascal Make-lang.in.
+
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+pdir="-d $3"
+elif [ $# -ne 1 ]; then
+echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+exit 1
+fi
+case "$1" in
+-patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0;;
+-unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0;;
+*)
+   echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+   exit 1
+esac
+exit 0
+
+--- gcc/p/Make-lang.in.old 2006-01-31 12:15:09.0 +
 gcc/p/Make-lang.in 2006-01-31 12:16:05.0 +
+@@ -570,20 +570,20 @@
+ # Exclude patched files from language-independent object file list.
+ # Not necessary for gcc-3 since for a library (libbackend.a), the linker does 
this automatically.
+ p/stamp-gbe: stamp-objlist Makefile
+-  sed -e 's: ../: :g;\
+-   s: convert.o::g;\
+-   s: dbxout.o::g;\
+-   s: dwarf2out.o::g;\
+-   s: emit-rtl.o::g;\
+-   s: expr.o::g;\
+-   s: fold-const.o::g;\
+-   s: function.o::g;\
+-   s: integrate.o::g;\
+-   s: optabs.o::g;\
+-   s: stmt.o::g;\
+-   s: stor-layout.o::g;\
+-   s: toplev.o::g;\
+-   s: tree.o::g' "$<" > "$@" || { rm -f "$@"; false; }
++  sed -e 's: ../: :g;'\
++'  s: convert.o::g;'\
++'  s: dbxout.o::g;'\
++'  s: dwarf2out.o::g;'\
++'  s: emit-rtl.o::g;'\
++'  s: expr.o::g;'\
++'  s: fold-const.o::g;'\
++'  s: function.o::g;'\
++'  s: integrate.o::g;'\
++'  s: optabs.o::g;'\
++'  s: stmt.o::g;'\
++'  s: stor-layout.o::g;'\
++'  s: toplev.o::g;'\
++'  s: tree.o::g' "$<" > "$@" || { rm -f "$@"; false; }
+ 
+ gpc1$(exeext): $(P) $(GPC_GCC_VERSION_DEPS) $(GPC_OBJS) $(LIBDEPS)
+   @grep "@@ PATCHED FOR GPC 20030218 @@" $(srcdir)/stor-layout.c > 
/dev/null || \
diff -Nru gcc-2.95-2.95.4.ds15-orig/debian/rules 
gcc-2.95-2.95.4.ds15/debian/rules
--- gcc-2.95-2.95.4.ds15-orig/debian/rules  2006-02-22 12:51:16.0 
-0800
+++ gcc-2.95-2.95.4.ds15/debian/rules   2006-02-22 12:56:09.0 -0800
@@ -36,7 +36,7 @@
$(MAKE) -f debian/rules.conf control
touch $(control_stamp)
 
-configure: control $(configure_stamps)
+configure: patch $(configure_stamps)
 $(configure_stamp)-%:
$(MAKE) -f debian/rules2  TARGET=$* $@
 
diff -Nru gcc-2.95-2.95.4.ds15-orig/debian/rules.patch 
gcc-2.95-2.95.4.ds15/debian/rules.patch
--- gcc-2.95-2.95.4.ds15-orig/debian/rules.patch2006-02-22 
12:51:16.0 -0800
+++ gcc-2.95-2.95.4.ds15/debian/rules.patch 2006-02-22 14:47:58.0 
-0800
@@ -182,6 +182,8 @@
 # conflicts with gcc-core-2.95.2-avr-1.1
 #all_patches += gcc-s390
 
+debian_patches += p-make-lang
+
 # testing only
 #debian_patches := $(all_patches)
 #debian_patches := $(min_patches)


signature.asc
Description: Digital signature


Processed: Patch

2006-02-24 Thread Debian Bug Tracking System
Processing commands for [EMAIL PROTECTED]:

> tag 350688 patch
Bug#350688: gcc-2.95: FTBFS with new make
There were no tags set.
Tags added: patch

> thanks
Stopping processing here.

Please contact me if you need assistance.

Debian bug tracking system administrator
(administrator, Debian Bugs database)


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32 on amd64)

2006-02-24 Thread Steve Langasek
On Fri, Feb 24, 2006 at 07:45:16AM +0100, Christian Perrier wrote:

> > After a discussion on IRC, it seems there is no consensus about how 
> > multiarch should be done. Therefore I stop working on that (patches are 
> > still welcome for glibc).

> Is this really the best thing to do?

> Even though there is no consensus (I overread the thread and anyway
> most parts of it fly in the stratosphere from my point of view), I'm
> not sure that abandoning the work is really the answer in this
> situation.

I didn't interpret this as "abandoning" the work.  I think this is the right
point to stop at on glibc right now -- we really need to have support for
multiarch in dpkg an apt before usefully proceeding further.

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
[EMAIL PROTECTED]   http://www.debian.org/


signature.asc
Description: Digital signature


Re: Multiarch support (was Moving 32-bit libraries to (/usr)/lib32 on amd64)

2006-02-24 Thread Christian Perrier
(restricting the CC list to real lists)

Quoting Steve Langasek ([EMAIL PROTECTED]):
> On Fri, Feb 24, 2006 at 07:45:16AM +0100, Christian Perrier wrote:
> 
> > > After a discussion on IRC, it seems there is no consensus about how 
> > > multiarch should be done. Therefore I stop working on that (patches are 
> > > still welcome for glibc).
> 
> > Is this really the best thing to do?
> 
> > Even though there is no consensus (I overread the thread and anyway
> > most parts of it fly in the stratosphere from my point of view), I'm
> > not sure that abandoning the work is really the answer in this
> > situation.
> 
> I didn't interpret this as "abandoning" the work.  I think this is the right
> point to stop at on glibc right now -- we really need to have support for
> multiarch in dpkg an apt before usefully proceeding further.


OK, sorry for the confusion but I really didn't want to see Aurélien
just stop this work which I'm pretty sure he's doing well.

For dpkg, I think I've seen some discussion but Guillem Jover and/or
Frank Lichtenheld have probably a better picture. Anyway, the dpkg
development model is now pretty much opened so anyone with
ideas/skills/patches can probably come up and discuss in debian-dpkg...

For apt, ahem.Michael is pretty much alone doing visible
development work. Some help here would probably be welcomedat
least from my very far point of view. Please show up on the devel list
([EMAIL PROTECTED])




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]