cleanup oldschool ebuild
authorMike Frysinger <vapier@gentoo.org>
Sat, 15 Jan 2005 03:03:36 +0000 (03:03 +0000)
committerMike Frysinger <vapier@gentoo.org>
Sat, 15 Jan 2005 03:03:36 +0000 (03:03 +0000)
Package-Manager: portage-2.0.51-r12

sys-devel/gcc/Manifest
sys-devel/gcc/files/digest-gcc-2.95.3-r8
sys-devel/gcc/gcc-2.95.3-r8.ebuild

index f5a94e5ceacae4c355899fa01b3e5d60f793cea0..40fed212ee5384adc2358db343bdd99ffabc4e74 100644 (file)
@@ -2,7 +2,7 @@
 Hash: SHA1
 
 MD5 00201f5a52464447ca7b5c3a2ca8fa9d ChangeLog 77598
-MD5 197f9713e4529bbfe6ef20b7633bf437 gcc-2.95.3-r8.ebuild 8541
+MD5 aa7f9fb82c023a1343426871e52d4a7d gcc-2.95.3-r8.ebuild 7442
 MD5 f95107278e3a6306068d0f9ef63fc5de gcc-3.2.3-r4.ebuild 19890
 MD5 56c1cbd04a9101da0f0ea0c6b0fdc491 gcc-3.3.2-r2.ebuild 18040
 MD5 86682b4c98aa21f0132b1d9cbc0bde2c gcc-3.3.2-r5.ebuild 21364
@@ -21,7 +21,6 @@ MD5 567094e03359ffc1c95af7356395228d metadata.xml 162
 MD5 87ff3720447f20ff12321c1fed5ea2d8 gcc-3.4.3.20050110.ebuild 5290
 MD5 f7e7042c2ddf66e344b30cbc66ebaf73 files/cc 24
 MD5 80d122265d3062847a4a1b161abe1d26 files/cpp 24
-MD5 3213bd50acdbbd71ce7dd3e40710e30e files/digest-gcc-2.95.3-r8 64
 MD5 5a9db19cd5ad6ad16b0f838d525d842a files/digest-gcc-3.3.3-r3 522
 MD5 9b68e03bb1a6a1494399c8a6537bb766 files/digest-gcc-3.4.3-r1 527
 MD5 a3edf5e9d8bb500178f8dd29c1f9eadd files/digest-gcc-3.3.5-r1 442
@@ -33,6 +32,7 @@ MD5 6df16eb92245a931ecfc4cbcc73c84cf files/digest-gcc-3.3.4-r1 442
 MD5 cf81ae4b2da79c34a005da1182c40134 files/digest-gcc-3.3.2 130
 MD5 9bb4a999eb75c9e3eadab9aa71e91879 files/fix_libtool_files.sh 1731
 MD5 f48105f24e5c714530e66a94aa56d615 files/digest-gcc-3.3.2-r2 361
+MD5 47eeaf2ebd915e107081602b157b4e45 files/digest-gcc-2.95.3-r8 137
 MD5 60e02a7ee2f579ac72ab223679d81e7a files/gcc-spec-env.patch 819
 MD5 ea2cf3df0d89a26d5fdc1a531176e395 files/pro-police-docs.patch 3287
 MD5 8baffb486c75efe253bd2daa88daa7d6 files/gcc331_use_multilib.amd64.patch 352
@@ -116,7 +116,7 @@ MD5 4edccdf0b4f6dbbc9f7bc9370c255e0c files/3.4.0/gcc34-reiser4-fix.patch 587
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.9.14 (GNU/Linux)
 
-iD8DBQFB6HSRroRuSHgZdywRAkDpAJ4uemhcptnSVEpDlF1W3d6FAQc7BQCeJbVO
-aSsIPr+M2PHMS9QZ5WRrYDI=
-=DrZM
+iD8DBQFB6Ig2roRuSHgZdywRAs97AJ44NokebrnlJjXLaqrCrRJja9SENwCfa2sX
+mxTG0AxmgoqWnGv/MuG2yUg=
+=GBMs
 -----END PGP SIGNATURE-----
index c6940932e4ef73f23c529b63935b76d0c45281eb..2c0c7ea1127f227ca2d0e8b4c3a5c2b6d1433840 100644 (file)
@@ -1 +1,2 @@
 MD5 f3ad4f32c2296fad758ed051b5ac8e28 gcc-2.95.3.tar.gz 12911721
+MD5 eb0d9b6fe90b5198ed8645215c12c8cb gcc-2.95.3-patches-1.0.tar.bz2 9215
index e1ace96f675654b1db422200539bb06e78d99a0e..3c75f53bc5af96211828e7d62f463b8b97a91430 100644 (file)
@@ -1,8 +1,8 @@
 # Copyright 1999-2005 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-2.95.3-r8.ebuild,v 1.38 2005/01/11 08:58:54 eradicator Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-2.95.3-r8.ebuild,v 1.39 2005/01/15 03:03:36 vapier Exp $
 
-inherit eutils flag-o-matic gcc versionator fixheadtails
+inherit eutils flag-o-matic toolchain-funcs versionator fixheadtails
 
 # The next command strips most flags from CFLAGS/CXXFLAGS.  If you do 
 # not like it, comment it out, but do not file bugreports if you run into
@@ -21,78 +21,64 @@ do_filter_flags() {
        gcc2-flags
 }
 
-# Theoretical cross compiler support
-[ ! -n "${CCHOST}" ] && export CCHOST="${CHOST}"
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} = ${CHOST} ]] ; then
+       if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
+               export CTARGET=${CATEGORY/cross-}
+       fi
+fi
 
 LOC="/usr"
-#GCC_BRANCH_VER="`echo ${PV} | awk -F. '{ gsub(/_pre.*|_alpha.*/, ""); print $1 "." $2 }'`"
-#GCC_RELEASE_VER="`echo ${PV} | awk '{ gsub(/_pre.*|_alpha.*/, ""); print $0 }'`"
 GCC_BRANCH_VER="$(get_version_component_range 1-2)"
 GCC_RELEASE_VER="$(get_version_component_range 1-3)"
 
-LIBPATH="${LOC}/lib/gcc-lib/${CCHOST}/${GCC_RELEASE_VER}"
-BINPATH="${LOC}/${CCHOST}/gcc-bin/${GCC_BRANCH_VER}"
-DATAPATH="${LOC}/share/gcc-data/${CCHOST}/${GCC_BRANCH_VER}"
+LIBPATH="${LOC}/lib/gcc-lib/${CTARGET}/${GCC_RELEASE_VER}"
+BINPATH="${LOC}/${CTARGET}/gcc-bin/${GCC_BRANCH_VER}"
+DATAPATH="${LOC}/share/gcc-data/${CTARGET}/${GCC_BRANCH_VER}"
 # Dont install in /usr/include/g++/, but in gcc internal directory.
 # We will handle /usr/include/g++/ with gcc-config ...
 STDCXX_INCDIR="${LIBPATH}/include/g++"
 
+PATCH_VER=1.0
 DESCRIPTION="Modern C/C++ compiler written by the GNU people"
 HOMEPAGE="http://www.gnu.org/software/gcc/gcc.html"
-SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${P}/${P}.tar.gz"
+SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${P}/${P}.tar.gz
+       mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
 
 LICENSE="GPL-2 LGPL-2.1"
 KEYWORDS="x86 ppc sparc alpha"
-IUSE="static nls bootstrap java build"
-
-# Ok, this is a hairy one again, but lets assume that we
-# are not cross compiling, than we want SLOT to only contain
-# $PV, as people upgrading to new gcc layout will not have
-# their old gcc unmerged ...
-SLOT="${GCC_BRANCH_VER}"
-
-DEPEND="virtual/libc
-       >=sys-devel/gcc-config-1.2
-       !build? ( >=sys-libs/ncurses-5.2-r2
-               nls? ( sys-devel/gettext ) )"
+IUSE="static nls build multislot nocxx fortran"
+
+if use multislot ; then
+       SLOT="${CTARGET}-${GCC_CONFIG_VER}"
+elif [[ ${CTARGET} != ${CHOST} ]] ; then
+       SLOT="${CTARGET}-${GCC_BRANCH_VER}"
+else
+       SLOT="${GCC_BRANCH_VER}"
+fi
+
 RDEPEND="virtual/libc
        >=sys-devel/gcc-config-1.2.3
        >=sys-libs/zlib-1.1.4
        >=sys-apps/texinfo-4.2-r4
        !build? ( >=sys-libs/ncurses-5.2-r2 )"
+DEPEND="${RDEPEND}
+       !build? ( nls? ( sys-devel/gettext ) )"
 
 # Hack used to patch Makefiles to install into the build dir
 FAKE_ROOT=""
 
 src_unpack() {
        unpack ${P}.tar.gz
-
        cd ${S}
+
        # Fixup libtool to correctly generate .la files with portage
-       libtoolize --copy --force &> /dev/null
-
-       # This new patch for the atexit problem occured with glibc-2.2.3 should
-       # work with glibc-2.2.4.  This closes bug #3987 and #4004.
-       #
-       # Azarah - 29 Jun 2002
-       #
-       # http://archive.linuxfromscratch.org/mail-archives/lfs-dev/2001/08/0476.html
-       # http://archive.linuxfromscratch.org/mail-archives/lfs-dev/2001/08/0589.html
-       #
-       #
-       # Something to note, is that this patch makes gcc crash if its given
-       # the "-mno-ieee-fp" flag ... libvorbis is an good example of this.
-       # This however is on of those which one we want fixed most cases :/
-       #
-       # Azarah - 30 Jun 2002
-       #
-       if ! use alpha ; then
-               epatch ${FILESDIR}/2.95.3/${P}-new-atexit.diff
-       else
-               epatch ${FILESDIR}/2.95.3/${P}-alpha.diff
-       fi
+       libtoolize --copy --force
 
-       cd ${S}
+       unpack ${P}-patches-${PATCH_VER}.tar.bz2
+       [[ $(tc-arch ${CTARGET}) == "alpha" ]] \
+               && epatch 2.95.3/${P}-alpha.diff \
+               || epatch 2.95.3/${P}-new-atexit.diff
 
        # Fix outdated head/tails format #65668
        ht_fix_file configure gcc/Makefile.in
@@ -101,100 +87,82 @@ src_unpack() {
        # installing into ${D}.  We should not patch it in src_install() with
        # absolute paths, as some modules then gets rebuild with the wrong
        # paths.  Thus we use $FAKE_ROOT.
-       for x in $(find . -name Makefile.in)
-       do
-               # Fix --datadir=
-               cp ${x} ${x}.orig
-               sed -e 's:datadir = @datadir@:datadir = $(FAKE_ROOT)@datadir@:' \
-                       ${x}.orig > ${x}
-
-               # Fix --bindir=
-               cp ${x} ${x}.orig
-               sed -e 's:bindir = @bindir@:bindir = $(FAKE_ROOT)@bindir@:' \
-                       ${x}.orig > ${x}
-
-               # Fix --with-gxx-include-dir=
-               cp ${x} ${x}.orig
-               sed -e 's:gxx_include_dir=${includedir}:gxx_include_dir=$(FAKE_ROOT)${includedir}:' \
-                       ${x}.orig > ${x}
-
-               rm -f ${x}.orig
+       for x in $(find . -name Makefile.in) ; do
+               sed -i \
+                       -e 's:datadir = @datadir@:datadir = $(FAKE_ROOT)@datadir@:' \
+                       -e 's:bindir = @bindir@:bindir = $(FAKE_ROOT)@bindir@:' \
+                       -e 's:gxx_include_dir=${includedir}:gxx_include_dir=$(FAKE_ROOT)${includedir}:' \
+                       ${x} || die "could not sed $x"
        done
 }
 
 src_compile() {
-       local myconf=""
-       use build \
-               && myconf="${myconf} --enable-languages=c" \
-               || myconf="${myconf} --enable-shared"
-       if ! use nls || use build
-       then
-               myconf="${myconf} --disable-nls"
-       else
-               myconf="${myconf} --enable-nls --without-included-gettext"
-       fi
-
        # Make sure we have sane CFLAGS
        do_filter_flags
 
        # Build in a separate build tree
-       mkdir -p ${WORKDIR}/build
-       cd ${WORKDIR}/build
+       mkdir -p "${WORKDIR}"/build
+       cd "${WORKDIR}"/build
 
-       einfo "Configuring GCC..."
-       addwrite "/dev/zero"
-       ${S}/configure --prefix=${LOC} \
+       local gcclangs="c"
+       local myconf=""
+       if use build ; then
+               myconf="--disable-nls"
+       else
+               myconf=""
+               use !nocxx && gcclangs="${gcclangs},c++"
+               use fortran && gcclangs="${gcclangs},f77"
+               use nls && myconf="${myconf} --enable-nls --without-included-gettext"
+       fi
+       [[ -n ${CBUILD} ]] && myconf="${myconf} --build=${CBUILD}"
+       myconf="--prefix=${LOC} \
                --bindir=${BINPATH} \
                --datadir=${DATAPATH} \
                --mandir=${DATAPATH}/man \
                --infodir=${DATAPATH}/info \
                --enable-shared \
                --host=${CHOST} \
-               --target=${CCHOST} \
+               --target=${CTARGET} \
                --with-system-zlib \
                --enable-threads=posix \
                --enable-long-long \
                --enable-version-specific-runtime-libs \
                --with-local-prefix=${LOC}/local \
-               ${myconf} || die
+               --enable-languages=${gcclangs} \
+               ${myconf} \
+               ${EXTRA_ECONF}"
+       echo ${S}/configure ${myconf}
+       addwrite "/dev/zero"
+       ${S}/configure ${myconf} || die "configure failed"
 
        touch ${S}/gcc/c-gperf.h
 
-       # Setup -j in MAKEOPTS
-       get_number_of_jobs
-
-       einfo "Building GCC..."
-       if ! use static
-       then
+       if ! use static ; then
                # Fix for our libtool-portage.patch
                S="${WORKDIR}/build" \
                emake bootstrap-lean \
-                       LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die
+                       LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die "make failed"
                # Above FLAGS optimize and speedup build, thanks
                # to Jeff Garzik <jgarzik@mandrakesoft.com>
        else
                S="${WORKDIR}/build" \
                emake LDFLAGS=-static bootstrap \
-                       LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die
+                       LIBPATH="${LIBPATH}" STAGE1_CFLAGS="-O" || die "make static failed"
        fi
 }
 
 src_install() {
        # Do allow symlinks in ${LOC}/lib/gcc-lib/${CHOST}/${PV}/include as
        # this can break the build.
-       for x in cd ${WORKDIR}/build/gcc/include/*
-       do
-               if [ -L ${x} ]
-               then
-                       rm -f ${x}
-               fi
+       for x in ${WORKDIR}/build/gcc/include/* ; do
+               [[ -L ${x} ]] && rm -f "${x}"
        done
 
-       einfo "Installing GCC..."
        # Do the 'make install' from the build directory
        cd ${WORKDIR}/build
        S="${WORKDIR}/build" \
-       make prefix=${D}${LOC} \
+       make \
+               prefix=${D}${LOC} \
                bindir=${D}${BINPATH} \
                datadir=${D}${DATAPATH} \
                mandir=${D}${DATAPATH}/man \
@@ -203,67 +171,58 @@ src_install() {
                FAKE_ROOT="${D}" \
                install || die
 
-       [ -r ${D}${BINPATH}/gcc ] || die "gcc not found in ${D}"
+       [[ -r ${D}${BINPATH}/gcc ]] || die "gcc not found in ${D}"
 
        dodir /lib /usr/bin
        dodir /etc/env.d/gcc
-       echo "PATH=\"${BINPATH}\"" > ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       echo "ROOTPATH=\"${BINPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       echo "LDPATH=\"${LIBPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       echo "MANPATH=\"${DATAPATH}/man\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       echo "INFOPATH=\"${DATAPATH}/info\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       echo "STDCXX_INCDIR=\"${STDCXX_INCDIR##*/}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       # Also set CC and CXX
-       echo "CC=\"gcc\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-       echo "CXX=\"g++\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-
-       # Install wrappers
-       exeinto /lib
-       doexe ${FILESDIR}/cpp
-       exeinto /usr/bin
-       doexe ${FILESDIR}/cc
+       cat << EOF > ${D}/etc/env.d/gcc/${CTARGET}-${GCC_RELEASE_VER}
+PATH="${BINPATH}"
+ROOTPATH="${BINPATH}"
+LDPATH="${LIBPATH}"
+MANPATH="${DATAPATH}/man"
+INFOPATH="${DATAPATH}/info"
+STDCXX_INCDIR="${STDCXX_INCDIR##*/}"
+EOF
 
        # Make sure we dont have stuff lying around that
        # can nuke multiple versions of gcc
-       if ! use build
-       then
-               cd ${D}${LIBPATH}
+       if ! use build ; then
+               cd "${D}"${LIBPATH}
 
                # Tell libtool files where real libraries are
-               for LA in ${D}${LOC}/lib/*.la ${D}${LIBPATH}/../*.la
-               do
-                       if [ -f ${LA} ]
-                       then
-                               sed -e "s:/usr/lib:${LIBPATH}:" ${LA} > ${LA}.hacked
-                               mv ${LA}.hacked ${LA}
-                               mv ${LA} ${D}${LIBPATH}
+               for LA in ${D}${LOC}/lib/*.la ${D}${LIBPATH}/../*.la ; do
+                       if [[ -f ${LA} ]] ; then
+                               sed -i -e "s:/usr/lib:${LIBPATH}:" "${LA}"
+                               mv "${LA}" "${D}"${LIBPATH}
                        fi
                done
 
                # Move all the libraries to version specific libdir.
-               for x in ${D}${LOC}/lib/*.{so,a}* ${D}${LIBPATH}/../*.{so,a}*
-               do
-                       [ -f ${x} ] && mv -f ${x} ${D}${LIBPATH}
+               for x in ${D}${LOC}/lib/*.{so,a}* ${D}${LIBPATH}/../*.{so,a}* ; do
+                       [[ -f ${x} ]] && mv -f "${x}" "${D}"${LIBPATH}
                done
 
                # These should be symlinks
-               cd ${D}${BINPATH}
-               rm -f ${CCHOST}-{gcc,g++,c++,g77}
-               [ -f gcc ] && ln -sf gcc ${CCHOST}-gcc
-               [ -f g++ ] && ln -sf g++ ${CCHOST}-g++
-               [ -f g++ ] && ln -sf g++ ${CCHOST}-c++
-               [ -f g77 ] && ln -sf g77 ${CCHOST}-g77
+               cd "${D}"${BINPATH}
+               for x in gcc g++ c++ g77 gcj ; do
+                       # For some reason, g77 gets made instead of ${CTARGET}-g77... this makes it safe
+                       [[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
+
+                       if [[ ${CHOST} == ${CTARGET} ]] && [[ -f ${CTARGET}-${x} ]] ; then
+                               [[ ! -f ${x} ]] && mv ${CTARGET}-${x} ${x}
+                               ln -sf ${x} ${CTARGET}-${x}
+                       fi
+               done
        fi
 
        # This one comes with binutils
-       if [ -f ${D}${LOC}/lib/libiberty.a ]
-       then
-               rm -f ${D}${LOC}/lib/libiberty.a
-       fi
+       rm -f ${D}${LOC}/lib/libiberty.a
 
        cd ${S}
-       if ! use build
-       then
+       if use build ; then
+               rm -r "${D}"/usr/share/{man,info}
+               rm -r "${D}"/${DATAPATH}/{man,info}
+       elif ! has nodoc ${FEATURES} ; then
                cd ${S}
                docinto /
                dodoc README* FAQ MAINTAINERS
@@ -293,14 +252,12 @@ src_install() {
                cd ${S}/libstdc++
                docinto libstdc++
                dodoc ChangeLog NEWS
-       else
-               rm -rf ${D}/usr/share/{man,info}
        fi
+       has noman ${FEATURES} && rm -r "${D}"/${DATAPATH}/man
+       has noinfo ${FEATURES} && rm -r "${D}"/${DATAPATH}/info
 }
 
 pkg_postinst() {
-       if [ "${ROOT}" = "/" -a "${CHOST}" == "${CCHOST}" ]
-       then
-               gcc-config --use-portage-chost ${CCHOST}-${GCC_RELEASE_VER}
-       fi
+       [[ ${ROOT} != "/" ]] && return 0
+       gcc-config --use-portage-chost ${CTARGET}-${GCC_RELEASE_VER}
 }