--- /usr/portage/dev-lang/tcl/tcl-8.4.6.ebuild.orig 2005-03-02 16:16:52.000000000 +0100 +++ /usr/portage/dev-lang/tcl/tcl-8.4.6.ebuild 2005-03-02 16:56:08.154598849 +0100 @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-lang/tcl/tcl-8.4.6.ebuild,v 1.17 2005/01/19 23:35:00 vapier Exp $ -inherit eutils +inherit eutils multilib DESCRIPTION="Tool Command Language" HOMEPAGE="http://dev.scriptics.com/software/tcltk/" @@ -13,7 +13,8 @@ KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sh sparc x86" IUSE="threads" -DEPEND="virtual/libc" +DEPEND="virtual/libc + !app-emulation/emul-linux-x86-baselibs" S=${WORKDIR}/${PN}${PV} @@ -31,7 +32,34 @@ fi } +src_unpack() { + unpack ${A} + if use amd64 && has_multilib_profile; then + cp -ar ${S} ${S}-x86 + mv ${S} ${S}-amd64 + fi +} + src_compile() { + if use amd64 && has_multilib_profile; then + local OABI=${ABI} + local OPWD=$PWD + ABI="x86" + cd ${S}-x86 + src_compile-multilib -x86 + ABI="amd64" + cd ${S}-amd64 + src_compile-multilib -amd64 + ABI=${OABI} + cd ${OPWD} + unset OABI + unset OPWD + else + src_compile-multilib + fi +} + +src_compile-multilib() { local local_config_use="" if use threads @@ -39,7 +67,7 @@ local_config_use="--enable-threads" fi - cd ${S}/unix + cd ${S}${1}/unix ./configure \ --host=${CHOST} \ --prefix=/usr \ @@ -51,27 +79,61 @@ } src_install() { + if use amd64 && has_multilib_profile; then + local OABI=${ABI} + local OPWD=$PWD + ABI="x86" + cd ${S}-x86 + src_install-multilib -x86 lib32 + # additional fix for /usr/lib to /usr/lib32 + sed -e "s,^TCL_LIB_SPEC='-L/usr/lib,TCL_LIB_SPEC='-L/usr/lib32," \ + -e "s,^TCL_PACKAGE_PATH='/usr/lib',TCL_PACKAGE_PATH='/usr/lib32'," \ + -e "s,^TCL_STUB_LIB_SPEC='-L/usr/lib,TCL_STUB_LIB_SPEC='-L/usr/lib32," \ + -e "s,^TCL_STUB_LIB_PATH='/usr/lib/,TCL_STUB_LIB_PATH='/usr/lib32/," \ + ${D}/usr/lib/tclConfig.sh > ${D}/usr/lib/tclConfig.sh.new + mv ${D}/usr/lib/tclConfig.sh.new ${D}/usr/lib/tclConfig.sh + # move x86 libraries + mv ${D}/usr/lib{,32} + # delete tcl${v1} directory and make a symlink + local v1 + v1=${PV%.*} + rm -rf ${D}/usr/lib32/tcl${v1} + ln -sf ../lib/tcl${v1} ${D}/usr/lib32/tcl${v1} + unset v1 + ABI="amd64" + cd ${S}-amd64 + src_install-multilib -amd64 lib + ABI=${OABI} + cd ${OPWD} + unset OABI + unset OPWD + else + src_install-multilib "" lib + fi +} + +src_install-multilib() { #short version number local v1 v1=${PV%.*} - cd ${S}/unix + cd ${S}${1}/unix S= make INSTALL_ROOT=${D} MAN_INSTALL_DIR=${D}/usr/share/man install || die # fix the tclConfig.sh to eliminate refs to the build directory - sed -e "s,^TCL_BUILD_LIB_SPEC='-L${S}/unix,TCL_BUILD_LIB_SPEC='-L/usr/lib," \ - -e "s,^TCL_SRC_DIR='${S}',TCL_SRC_DIR='/usr/lib/tcl${v1}/include'," \ - -e "s,^TCL_BUILD_STUB_LIB_SPEC='-L${S}/unix,TCL_BUILD_STUB_LIB_SPEC='-L/usr/lib," \ - -e "s,^TCL_BUILD_STUB_LIB_PATH='${S}/unix,TCL_BUILD_STUB_LIB_PATH='/usr/lib," \ + sed -e "s,^TCL_BUILD_LIB_SPEC='-L${S}${1}/unix,TCL_BUILD_LIB_SPEC='-L/usr/${2}," \ + -e "s,^TCL_SRC_DIR='${S}${1}',TCL_SRC_DIR='/usr/${2}/tcl${v1}/include'," \ + -e "s,^TCL_BUILD_STUB_LIB_SPEC='-L${S}${1}/unix,TCL_BUILD_STUB_LIB_SPEC='-L/usr/${2}," \ + -e "s,^TCL_BUILD_STUB_LIB_PATH='${S}${1}/unix,TCL_BUILD_STUB_LIB_PATH='/usr/${2}," \ -e "s,^TCL_LIB_FILE='libtcl8.4..TCL_DBGX..so',TCL_LIB_FILE=\"libtcl8.4\$\{TCL_DBGX\}.so\"," \ ${D}/usr/lib/tclConfig.sh > ${D}/usr/lib/tclConfig.sh.new mv ${D}/usr/lib/tclConfig.sh.new ${D}/usr/lib/tclConfig.sh # install private headers dodir /usr/lib/tcl${v1}/include/unix - install -c -m0644 ${S}/unix/*.h ${D}/usr/lib/tcl${v1}/include/unix + install -c -m0644 ${S}${1}/unix/*.h ${D}/usr/lib/tcl${v1}/include/unix dodir /usr/lib/tcl${v1}/include/generic - install -c -m0644 ${S}/generic/*.h ${D}/usr/lib/tcl${v1}/include/generic + install -c -m0644 ${S}${1}/generic/*.h ${D}/usr/lib/tcl${v1}/include/generic rm -f ${D}/usr/lib/tcl${v1}/include/generic/tcl.h rm -f ${D}/usr/lib/tcl${v1}/include/generic/tclDecls.h rm -f ${D}/usr/lib/tcl${v1}/include/generic/tclPlatDecls.h