Bug#637232: [patch] provide a libc6-dev-compat package
On Fri, Nov 02, 2012 at 11:43:21AM +0100, Matthias Klose wrote:
> this is a patch I'm proposing to apply to the Ubuntu eglibc builds
> for precise, quantal and raring.
>
> - it adds symlinks for .a, .so and .o files
> - adds a symlink for the asm header dir
> - depends on the libc-dev-<multilib> packages, which provide
> more needed header files/symlinks in /usr/include.
I am not sure using the biarch package for providing compat symlinks is
the way to go. Especially on architectures without biarch packages where
it even doesn't work.
> diff -Nru eglibc-2.16/debian/changelog eglibc-2.16/debian/changelog
> --- eglibc-2.16/debian/changelog 2012-10-28 00:24:42.000000000 +0200
> +++ eglibc-2.16/debian/changelog 2012-11-02 10:57:32.000000000 +0100
> @@ -1,3 +1,9 @@
> +eglibc (2.16-0ubuntu4) raring; urgency=low
> +
> + * Build a libc-compat-dev package. Closes: #637232.
> +
> + -- Matthias Klose <doko@ubuntu.com> Thu, 01 Nov 2012 18:16:32 +0200
> +
> eglibc (2.16-0ubuntu3) raring; urgency=low
>
> * Regenerate the control file.
> diff -Nru eglibc-2.16/debian/control eglibc-2.16/debian/control
> --- eglibc-2.16/debian/control 2012-10-28 00:23:38.000000000 +0200
> +++ eglibc-2.16/debian/control 2012-11-02 10:40:56.000000000 +0100
> @@ -175,6 +175,17 @@
> Contains the symlinks, headers, and object files needed to compile
> and link programs which use the standard C library.
>
> +Package: libc6-dev-compat
> +Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x sh4 x32
> +Section: libdevel
> +Priority: extra
> +Depends: libc6-dev (= ${binary:Version}), ${multilibdev}
> +Provides: libc-dev-compat
> +Conflicts: libc6-dev (<< 2.13-0ubuntu7)
> +Description: Embedded GNU C Library: Non-Multiarch compatibility symlinks
> + Contains the symlinks for headers, libraries and object files in
> + non-multiarch locations.
> +
> Package: libc6-dbg
> Architecture: amd64 arm arm64 armel armhf hppa i386 m68k mips mipsel powerpc powerpcspe ppc64 sparc sparc64 s390 s390x sh4 x32
> Section: debug
> @@ -265,6 +276,17 @@
> Contains the symlinks, headers, and object files needed to compile
> and link programs which use the standard C library.
>
> +Package: libc6.1-dev-compat
> +Architecture: alpha ia64
> +Section: libdevel
> +Priority: extra
> +Depends: libc6.1-dev (= ${binary:Version}), ${multilibdev}
> +Provides: libc-dev-compat
> +Conflicts: libc6.1-dev (<< 2.13-0ubuntu7)
> +Description: Embedded GNU C Library: Non-Multiarch compatibility symlinks
> + Contains the symlinks for headers, libraries and object files in
> + non-multiarch locations.
> +
> Package: libc6.1-dbg
> Architecture: alpha ia64
> Section: debug
> @@ -355,6 +377,17 @@
> Contains the symlinks, headers, and object files needed to compile
> and link programs which use the standard C library.
>
> +Package: libc0.3-dev-compat
> +Architecture: hurd-i386
> +Section: libdevel
> +Priority: extra
> +Depends: libc0.3-dev (= ${binary:Version}), ${multilibdev}
> +Provides: libc-dev-compat
> +Conflicts: libc0.3-dev (<< 2.13-0ubuntu7)
> +Description: Embedded GNU C Library: Non-Multiarch compatibility symlinks
> + Contains the symlinks for headers, libraries and object files in
> + non-multiarch locations.
> +
> Package: libc0.3-dbg
> Architecture: hurd-i386
> Section: debug
> @@ -445,6 +478,17 @@
> Contains the symlinks, headers, and object files needed to compile
> and link programs which use the standard C library.
>
> +Package: libc0.1-dev-compat
> +Architecture: kfreebsd-amd64 kfreebsd-i386
> +Section: libdevel
> +Priority: extra
> +Depends: libc0.1-dev (= ${binary:Version}), ${multilibdev}
> +Provides: libc-dev-compat
> +Conflicts: libc0.1-dev (<< 2.13-0ubuntu7)
> +Description: Embedded GNU C Library: Non-Multiarch compatibility symlinks
> + Contains the symlinks for headers, libraries and object files in
> + non-multiarch locations.
> +
> Package: libc0.1-dbg
> Architecture: kfreebsd-amd64 kfreebsd-i386
> Section: debug
> diff -Nru eglibc-2.16/debian/control.in/libc eglibc-2.16/debian/control.in/libc
> --- eglibc-2.16/debian/control.in/libc 2012-10-26 17:50:39.000000000 +0200
> +++ eglibc-2.16/debian/control.in/libc 2012-11-02 10:16:38.000000000 +0100
> @@ -39,6 +39,17 @@
> Contains the symlinks, headers, and object files needed to compile
> and link programs which use the standard C library.
>
> +Package: @libc@-dev-compat
> +Architecture: @archs@
> +Section: libdevel
> +Priority: extra
> +Depends: @libc@-dev (= ${binary:Version}), ${multilibdev}
> +Provides: libc-dev-compat
> +Conflicts: @libc@-dev (<< 2.13-0ubuntu7)
> +Description: Embedded GNU C Library: Non-Multiarch compatibility symlinks
> + Contains the symlinks for headers, libraries and object files in
> + non-multiarch locations.
> +
> Package: @libc@-dbg
> Architecture: @archs@
> Section: debug
> diff -Nru eglibc-2.16/debian/rules eglibc-2.16/debian/rules
> --- eglibc-2.16/debian/rules 2012-10-26 12:47:57.000000000 +0200
> +++ eglibc-2.16/debian/rules 2012-11-02 09:35:16.000000000 +0100
> @@ -143,7 +143,7 @@
> DEB_INDEP_REGULAR_PACKAGES =
> DEB_UDEB_PACKAGES =
> else
> - DEB_ARCH_REGULAR_PACKAGES = $(libc) $(libc)-dev $(libc)-dbg $(libc)-prof $(libc)-pic libc-bin libc-dev-bin multiarch-support
> + DEB_ARCH_REGULAR_PACKAGES = $(libc) $(libc)-dev $(libc)-dbg $(libc)-prof $(libc)-pic libc-bin libc-dev-bin multiarch-support $(libc)-dev-compat
> DEB_INDEP_REGULAR_PACKAGES = glibc-doc eglibc-source
> DEB_UDEB_PACKAGES = $(libc)-udeb libnss-dns-udeb libnss-files-udeb
> endif
> diff -Nru eglibc-2.16/debian/rules.d/debhelper.mk eglibc-2.16/debian/rules.d/debhelper.mk
> --- eglibc-2.16/debian/rules.d/debhelper.mk 2012-10-26 03:53:59.000000000 +0200
> +++ eglibc-2.16/debian/rules.d/debhelper.mk 2012-11-02 11:29:37.000000000 +0100
> @@ -95,6 +95,16 @@
> fi
> endif
>
> + if test "$(curpass)" = "$(libc)-dev-compat"; then \
> + mkdir -p debian/$(libc)-dev-compat/usr/lib; \
> + links=`cd debian/$(libc)-dev/usr/lib/$(DEB_HOST_MULTIARCH) && ls *.[ao] *.so`; \
> + for l in $$links; do \
> + ln -sf $(DEB_HOST_MULTIARCH)/$$l debian/$(libc)-dev-compat/usr/lib/$$l; \
> + done; \
> + mkdir -p debian/$(libc)-dev-compat/usr/include; \
> + ln -sf $(DEB_HOST_MULTIARCH)/asm debian/$(libc)-dev-compat/usr/include/asm; \
> + fi
> +
> dh_compress -p$(curpass)
> dh_fixperms -p$(curpass) -Xpt_chown
> # Use this instead of -X to dh_fixperms so that we can use
> @@ -112,7 +122,7 @@
>
> dh_installdeb -p$(curpass)
> dh_shlibdeps -p$(curpass)
> - dh_gencontrol -p$(curpass)
> + dh_gencontrol -p$(curpass) -- '-Vmultilibdev=$(multilibdev)'
> if [ $(curpass) = nscd ] ; then \
> sed -i -e "s/\(Depends:.*libc[0-9.]\+\)-[a-z0-9]\+/\1/" debian/nscd/DEBIAN/control ; \
> fi
> diff -Nru eglibc-2.16/debian/sysdeps/amd64.mk eglibc-2.16/debian/sysdeps/amd64.mk
> --- eglibc-2.16/debian/sysdeps/amd64.mk 2012-10-27 13:13:34.000000000 +0200
> +++ eglibc-2.16/debian/sysdeps/amd64.mk 2012-11-02 11:27:53.000000000 +0100
> @@ -1,6 +1,7 @@
> libc_rtlddir = /lib64
> libc_extra_cflags = -O3
> extra_config_options = --enable-multi-arch
> +multilibdev = libc6-dev-i386 (= $${binary:Version}), libc6-dev-x32 (= $${binary:Version})
>
> # build 32-bit (i386) alternative library
> EGLIBC_PASSES += i386
> diff -Nru eglibc-2.16/debian/sysdeps/armel.mk eglibc-2.16/debian/sysdeps/armel.mk
> --- eglibc-2.16/debian/sysdeps/armel.mk 2012-10-26 04:45:50.000000000 +0200
> +++ eglibc-2.16/debian/sysdeps/armel.mk 2012-11-02 11:28:17.000000000 +0100
> @@ -1,4 +1,5 @@
> libc_add-ons = ports nptl $(add-ons)
> +multilibdev = libc6-dev-armhf (= $${binary:Version})
>
> EGLIBC_PASSES += armhf
> DEB_ARCH_REGULAR_PACKAGES += libc6-armhf libc6-dev-armhf
> diff -Nru eglibc-2.16/debian/sysdeps/armhf.mk eglibc-2.16/debian/sysdeps/armhf.mk
> --- eglibc-2.16/debian/sysdeps/armhf.mk 2012-10-26 04:44:05.000000000 +0200
> +++ eglibc-2.16/debian/sysdeps/armhf.mk 2012-11-02 11:28:23.000000000 +0100
> @@ -1,4 +1,5 @@
> libc_add-ons = ports nptl $(add-ons)
> +multilibdev = libc6-dev-armel (= $${binary:Version})
>
> # Install a compat symlink so old binaries keep working:
> define libc6_extra_pkg_install
> diff -Nru eglibc-2.16/debian/sysdeps/i386.mk eglibc-2.16/debian/sysdeps/i386.mk
> --- eglibc-2.16/debian/sysdeps/i386.mk 2012-10-27 13:14:05.000000000 +0200
> +++ eglibc-2.16/debian/sysdeps/i386.mk 2012-11-02 11:27:59.000000000 +0100
> @@ -1,5 +1,6 @@
> extra_config_options = --enable-multi-arch
> libc_extra_cflags = -mno-tls-direct-seg-refs
> +multilibdev = libc6-dev-amd64 (= $${binary:Version}), libc6-dev-x32 (= $${binary:Version})
>
> ## We use -march=i686 and glibc's i686 routines use cmov, so require it.
> ## A Debian-local glibc patch adds cmov to the search path.
> diff -Nru eglibc-2.16/debian/sysdeps/powerpc.mk eglibc-2.16/debian/sysdeps/powerpc.mk
> --- eglibc-2.16/debian/sysdeps/powerpc.mk 2011-08-04 08:44:37.000000000 +0200
> +++ eglibc-2.16/debian/sysdeps/powerpc.mk 2012-11-02 11:28:30.000000000 +0100
> @@ -1,4 +1,5 @@
> extra_config_options = --enable-multi-arch
> +multilibdev = libc6-dev-ppc64 (= $${binary:Version})
>
> # build 64-bit (ppc64) alternative library
> EGLIBC_PASSES += ppc64
> diff -Nru eglibc-2.16/debian/sysdeps/ppc64.mk eglibc-2.16/debian/sysdeps/ppc64.mk
> --- eglibc-2.16/debian/sysdeps/ppc64.mk 2012-10-26 04:55:31.000000000 +0200
> +++ eglibc-2.16/debian/sysdeps/ppc64.mk 2012-11-02 11:28:39.000000000 +0100
> @@ -1,6 +1,7 @@
> libc_rtlddir = /lib64
> extra_config_options = --enable-multi-arch
> extra_cflags = -O3 -fno-tree-vectorize
> +multilibdev = libc6-dev-powerpc (= $${binary:Version})
>
> # build 32-bit (powerpc) alternative library
> EGLIBC_PASSES += powerpc
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
Reply to: