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

Bug#274367: glibc: [amd64] New GLIBC pass to create 32bit libc6-i386 and libc6-dev-i386 packages



... and the patch.

-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net
diff -u glibc-2.3.6/debian/control glibc-2.3.6/debian/control
--- glibc-2.3.6/debian/control
+++ glibc-2.3.6/debian/control
@@ -1,7 +1,7 @@
 Source: glibc
 Section: libs
 Priority: required
-Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 1.13.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), linux-kernel-headers (>= 2.6.13+0rc3-2) [!hurd-i386], mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, file, gcc-4.0 [!powerpc !m68k !hppa !hurd-i386], gcc-3.4 (>= 3.4.4-6) [powerpc], gcc-3.4 [m68k hppa], gcc-3.3 [hurd-i386], autoconf, binutils (>= 2.16.1cvs20051109-1), sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), libc6-dev-amd64 [i386], libc6-dev-ppc64 [powerpc], quilt
+Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 1.13.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), linux-kernel-headers (>= 2.6.13+0rc3-2) [!hurd-i386], mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, file, gcc-4.0 [!powerpc !m68k !hppa !hurd-i386], gcc-3.4 (>= 3.4.4-6) [powerpc], gcc-3.4 [m68k hppa], gcc-3.3 [hurd-i386], autoconf, binutils (>= 2.16.1cvs20051109-1), sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), libc6-dev-amd64 [i386], libc6-dev-ppc64 [powerpc], libc6-dev-i386 [amd64] | ia32-libs-dev (<< 1.5) [amd64], quilt
 Build-Depends-Indep: perl, po-debconf, po4a
 Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
 Uploaders: Ben Collins <bcollins@debian.org>, GOTO Masanori <gotom@debian.org>, Philip Blundell <pb@nexus.co.uk>, Jeff Bailey <jbailey@raspberryginger.com>, Daniel Jacobowitz <dan@debian.org>, Clint Adams <schizo@debian.org>, Denis Barbier <barbier@debian.org>
@@ -337,6 +337,28 @@
  This package contains a minimal set of libraries needed for the Debian
  installer.  Do not install it on a normal system.
 
+Package: libc6-i386
+Architecture: amd64
+Section: libs
+Priority: extra
+Depends: libc6 (= ${Source-Version}), lib32gcc1
+Conflicts: ia32-libs (<< 1.5)
+Description: GNU C Library: 32bit shared libraries for amd64
+ This package includes shared versions of the standard C
+ library and the standard math library, as well as many others.
+ This is the 32bit version of the library, meant for amd64 systems.
+
+Package: libc6-dev-i386
+Architecture: amd64
+Section: libdevel
+Priority: standard
+Depends: libc6-i386 (= ${Source-Version}), libc6-dev (= ${Source-Version})
+Conflicts: ia32-libs (<< 1.5)
+Description: GNU C Library: 32bit development libraries for amd64
+ Contains the symlinks and object files needed to compile and link programs
+ which use the standard C library. This is the 32bit version of the
+ library, meant for amd64 systems.
+
 Package: libc6-sparc64
 Architecture: sparc
 Section: libs
diff -u glibc-2.3.6/debian/rules.d/control.mk glibc-2.3.6/debian/rules.d/control.mk
--- glibc-2.3.6/debian/rules.d/control.mk
+++ glibc-2.3.6/debian/rules.d/control.mk
@@ -23,6 +23,7 @@
 	cat debian/control.in/libc6.1		>> $@T
 	cat debian/control.in/libc0.3		>> $@T
 	cat debian/control.in/libc1		>> $@T
+	cat debian/control.in/amd64_i386	>> $@T
 	cat debian/control.in/sparc64		>> $@T
 	cat debian/control.in/s390x		>> $@T
 	cat debian/control.in/amd64		>> $@T
diff -u glibc-2.3.6/debian/rules.d/debhelper.mk glibc-2.3.6/debian/rules.d/debhelper.mk
--- glibc-2.3.6/debian/rules.d/debhelper.mk
+++ glibc-2.3.6/debian/rules.d/debhelper.mk
@@ -202,7 +202,7 @@
 	    sed -e "s#LIBC#$(libc)#" -i $$z; \
 	    sed -e "s#DESTLIBDIR#$$destdir#" -i $$zd; \
 	    sed -e "s/^#.*//" -i $$zd; \
-	  else \
+	  elif [ ! -e $$z ]; then \
 	    cp debian/debhelper.in/libc-otherbuild.install $$z; \
 	    cp debian/debhelper.in/libc-otherbuild.preinst debian/$(libc)-$$x.preinst ; \
 	    cp debian/debhelper.in/libc-otherbuild.postinst debian/$(libc)-$$x.postinst ; \
diff -u glibc-2.3.6/debian/debhelper.in/libc.preinst glibc-2.3.6/debian/debhelper.in/libc.preinst
--- glibc-2.3.6/debian/debhelper.in/libc.preinst
+++ glibc-2.3.6/debian/debhelper.in/libc.preinst
@@ -169,7 +169,12 @@
 
   dirs="/usr/local/lib /usr/local/lib32 /usr/local/lib64"
   if ! test -L /usr; then
-    dirs="$dirs /usr/lib /usr/lib32 /usr/lib64"
+    if [ `dpkg-architecture -qDEB_HOST_ARCH` = "amd64" ]; then
+      # the 32bit i386 libc may be installed in /usr/lib32 on amd64
+      dirs="$dirs /usr/lib /usr/lib64"
+    else
+      dirs="$dirs /usr/lib /usr/lib32 /usr/lib64"
+    fi
   fi
   if check_dirs $dirs; then
     echo
diff -u glibc-2.3.6/debian/sysdeps/amd64.mk glibc-2.3.6/debian/sysdeps/amd64.mk
--- glibc-2.3.6/debian/sysdeps/amd64.mk
+++ glibc-2.3.6/debian/sysdeps/amd64.mk
@@ -20,0 +21,17 @@
+
+# build 32-bit (i386) alternative library
+GLIBC_PASSES += i386
+DEB_ARCH_REGULAR_PACKAGES += libc6-i386 libc6-dev-i386
+libc6-i386_shlib_dep = libc6-i386 (>= $(shlib_dep_ver))
+
+i386_configure_target = i486-linux
+# __i386__ is defined here because Makeconfig uses -undef and the
+# /usr/include/asm wrappers need that symbol.
+i386_CC = $(CC) -m32 -D__i386__
+i386_add-ons = nptl $(add-ons)
+i386_extra_cflags = -O3 -fomit-frame-pointer -D__USE_STRING_INLINES
+i386_extra_cflags += -g0 -fno-unit-at-a-time
+i386_extra_config_options = $(extra_config_options) --with-tls --with-__thread \
+	--includedir=/usr/include/i386-linux --prefix=/emul/ia32-linux/usr 
+i386_MIN_KERNEL_SUPPORTED = 2.6.0
+
diff -u glibc-2.3.6/debian/control.in/main glibc-2.3.6/debian/control.in/main
--- glibc-2.3.6/debian/control.in/main
+++ glibc-2.3.6/debian/control.in/main
@@ -1,7 +1,7 @@
 Source: @glibc@
 Section: libs
 Priority: required
-Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 1.13.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), linux-kernel-headers (>= 2.6.13+0rc3-2) [!hurd-i386], mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, file, gcc-4.0 [!powerpc !m68k !hppa !hurd-i386], gcc-3.4 (>= 3.4.4-6) [powerpc], gcc-3.4 [m68k hppa], gcc-3.3 [hurd-i386], autoconf, binutils (>= 2.16.1cvs20051109-1), sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), libc6-dev-amd64 [i386], libc6-dev-ppc64 [powerpc], quilt
+Build-Depends: gettext (>= 0.10.37-1), make (>= 3.80-1), dpkg-dev (>= 1.13.5), debianutils (>= 1.13.1), tar (>= 1.13.11), bzip2, texinfo (>= 4.0), linux-kernel-headers (>= 2.6.13+0rc3-2) [!hurd-i386], mig (>= 1.3-2) [hurd-i386], hurd-dev (>= 20020608-1) [hurd-i386], gnumach-dev [hurd-i386], texi2html, file, gcc-4.0 [!powerpc !m68k !hppa !hurd-i386], gcc-3.4 (>= 3.4.4-6) [powerpc], gcc-3.4 [m68k hppa], gcc-3.3 [hurd-i386], autoconf, binutils (>= 2.16.1cvs20051109-1), sed (>= 4.0.5-4), gawk, debhelper (>= 4.1.76), libc6-dev-amd64 [i386], libc6-dev-ppc64 [powerpc], libc6-dev-i386 [amd64] | ia32-libs-dev (<= 1.5) [amd64], quilt
 Build-Depends-Indep: perl, po-debconf, po4a
 Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
 Uploaders: Ben Collins <bcollins@debian.org>, GOTO Masanori <gotom@debian.org>, Philip Blundell <pb@nexus.co.uk>, Jeff Bailey <jbailey@raspberryginger.com>, Daniel Jacobowitz <dan@debian.org>, Clint Adams <schizo@debian.org>, Denis Barbier <barbier@debian.org>
--- glibc-2.3.6.orig/debian/debhelper.in/libc-dev-i386.install
+++ glibc-2.3.6/debian/debhelper.in/libc-dev-i386.install
@@ -0,0 +1,20 @@
+debian/tmp-i386/emul/ia32-linux/usr/lib/libanl.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libBrokenLocale.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libbsd-compat.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libc.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libc_nonshared.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libcrypt.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libdl.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libg.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libieee.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libm.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libmcheck.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libnsl.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libpthread.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libpthread_nonshared.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libresolv.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/librt.a emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/libutil.a emul/ia32-linux/usr/lib
+
+debian/tmp-i386/emul/ia32-linux/usr/lib/*.o emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/*.so emul/ia32-linux/usr/lib
--- glibc-2.3.6.orig/debian/debhelper.in/libc-i386.install
+++ glibc-2.3.6/debian/debhelper.in/libc-i386.install
@@ -0,0 +1,2 @@
+debian/tmp-i386/emul/ia32-linux/usr/lib/*.so.* emul/ia32-linux/usr/lib
+debian/tmp-i386/emul/ia32-linux/usr/lib/gconv/*.so* emul/ia32-linux/usr/lib/gconv
--- glibc-2.3.6.orig/debian/debhelper.in/libc-i386.links
+++ glibc-2.3.6/debian/debhelper.in/libc-i386.links
@@ -0,0 +1,2 @@
+/emul/ia32-linux/usr/lib/ld-linux.so.2 /lib/ld-linux.so.2
+/emul/ia32-linux/usr/lib /usr/lib32
--- glibc-2.3.6.orig/debian/control.in/amd64_i386
+++ glibc-2.3.6/debian/control.in/amd64_i386
@@ -0,0 +1,22 @@
+Package: libc6-i386
+Architecture: amd64
+Section: libs
+Priority: extra
+Depends: libc6 (= ${Source-Version}), lib32gcc1
+Conflicts: ia32-libs (<< 1.5)
+Description: GNU C Library: 32bit shared libraries for amd64
+ This package includes shared versions of the standard C
+ library and the standard math library, as well as many others.
+ This is the 32bit version of the library, meant for amd64 systems.
+
+Package: libc6-dev-i386
+Architecture: amd64
+Section: libdevel
+Priority: standard
+Depends: libc6-i386 (= ${Source-Version}), libc6-dev (= ${Source-Version})
+Conflicts: ia32-libs (<< 1.5)
+Description: GNU C Library: 32bit development libraries for amd64
+ Contains the symlinks and object files needed to compile and link programs
+ which use the standard C library. This is the 32bit version of the
+ library, meant for amd64 systems.
+

Reply to: