| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Header: /var/cvsroot/gentoo-x86/sys-devel/gdb/gdb-7.7.1.ebuild,v 1.2 2014/05/09 07:02:46 grobian Exp $ |
| |
| EAPI="4" |
| PYTHON_COMPAT=( python{2_7,3_3,3_4} ) |
| |
| inherit cros-constants flag-o-matic eutils python-single-r1 |
| |
| export CTARGET=${CTARGET:-${CHOST}} |
| if [[ ${CTARGET} == ${CHOST} ]] ; then |
| if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then |
| export CTARGET=${CATEGORY/cross-} |
| fi |
| fi |
| is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; } |
| |
| RPM= |
| MY_PV=${PV} |
| case ${PV} in |
| *.*.*.*.*.*) |
| # fedora version: gdb-6.8.50.20090302-8.fc11.src.rpm |
| inherit versionator rpm |
| gvcr() { get_version_component_range "$@"; } |
| MY_PV=$(gvcr 1-4) |
| RPM="${PN}-${MY_PV}-$(gvcr 5).fc$(gvcr 6).src.rpm" |
| SRC_URI="mirror://fedora/development/source/SRPMS/${RPM}" |
| ;; |
| *.*.50.*) |
| # weekly snapshots |
| SRC_URI="ftp://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-${PV}.tar.bz2" |
| ;; |
| 7.7.1 | 9999*) |
| # live git tree |
| EGIT_REPO_URI="${CROS_GIT_HOST_URL}/chromiumos/third_party/gdb.git" |
| EGIT_BRANCH="master" |
| EGIT_COMMIT=e02ddb0f2eea465662e99fee14e9c41f23769624 |
| inherit git-2 |
| SRC_URI="" |
| ;; |
| *) |
| # Normal upstream release |
| SRC_URI="mirror://gnu/gdb/${P}.tar.bz2 |
| ftp://sourceware.org/pub/gdb/releases/${P}.tar.bz2" |
| ;; |
| esac |
| |
| PATCH_VER="1" |
| DESCRIPTION="GNU debugger" |
| HOMEPAGE="http://sourceware.org/gdb/" |
| SRC_URI="${SRC_URI} ${PATCH_VER:+mirror://gentoo/${P}-patches-${PATCH_VER}.tar.xz}" |
| |
| LICENSE="GPL-2 LGPL-2" |
| SLOT="0" |
| if [[ ${PV} != 9999* ]] ; then |
| KEYWORDS="*" |
| fi |
| IUSE="+client expat lzma -mounted_sources multitarget nls +python +server test vanilla zlib" |
| REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" |
| |
| RDEPEND="!dev-util/gdbserver |
| >=sys-libs/ncurses-5.2-r2 |
| sys-libs/readline |
| expat? ( dev-libs/expat ) |
| lzma? ( app-arch/xz-utils ) |
| python? ( ${PYTHON_DEPS} ) |
| zlib? ( sys-libs/zlib )" |
| DEPEND="${RDEPEND} |
| app-arch/xz-utils |
| virtual/yacc |
| test? ( dev-util/dejagnu ) |
| nls? ( sys-devel/gettext )" |
| |
| S=${WORKDIR}/${PN}-${MY_PV} |
| |
| pkg_setup() { |
| use python && python-single-r1_pkg_setup |
| } |
| |
| src_unpack () { |
| if use mounted_sources ; then |
| ${GDBDIR:=/usr/local/toolchain_root/gdb} |
| if [[ ! -d ${GDBDIR} ]] ; then |
| die "gdb dir not mounted/present at: ${GDBDIR}" |
| fi |
| cp -R ${GDBDIR} ${S} |
| else |
| git-2_src_unpack |
| fi |
| } |
| |
| src_prepare() { |
| [[ -n ${RPM} ]] && rpm_spec_epatch "${WORKDIR}"/gdb.spec |
| use vanilla || [[ -n ${PATCH_VER} ]] && EPATCH_SUFFIX="patch" epatch "${WORKDIR}"/patch |
| epatch_user |
| strip-linguas -u bfd/po opcodes/po |
| if [[ ${CHOST} == *-darwin* ]] ; then |
| # make sure we have a python-config that matches our install, |
| # such that the python check doesn't fail just because the |
| # gdb-provided copy isn't quite what our python installed |
| # version is |
| rm -f "${S}"/gdb/python/python-config.py || die |
| pushd "${S}"/gdb/python > /dev/null || die |
| ln -s "${T}"/${EPYTHON}/bin/python-config python-config.py || die |
| popd > /dev/null || die |
| fi |
| } |
| |
| gdb_branding() { |
| printf "Gentoo ${PV} " |
| if ! use vanilla && [[ -n ${PATCH_VER} ]] ; then |
| printf "p${PATCH_VER}" |
| else |
| printf "vanilla" |
| fi |
| [[ -n ${EGIT_COMMIT} ]] && printf " ${EGIT_COMMIT}" |
| } |
| |
| src_configure() { |
| strip-unsupported-flags |
| |
| local myconf=( |
| --with-pkgversion="$(gdb_branding)" |
| --with-bugurl='http://bugs.gentoo.org/' |
| --disable-werror |
| # Disable modules that are in a combined binutils/gdb tree. #490566 |
| --disable-{binutils,etc,gas,gold,gprof,ld} |
| ) |
| local sysroot="${EPREFIX}/usr/${CTARGET}" |
| is_cross && myconf+=( |
| --with-sysroot="${sysroot}" |
| --includedir="${sysroot}/usr/include" |
| --with-gdb-datadir="\${datadir}/gdb/${CTARGET}" |
| ) |
| |
| if use server && ! use client ; then |
| # just configure+build in the gdbserver subdir to speed things up |
| cd gdb/gdbserver |
| myconf+=( --program-transform-name='' ) |
| else |
| # gdbserver only works for native targets (CHOST==CTARGET). |
| # it also doesn't support all targets, so rather than duplicate |
| # the target list (which changes between versions), use the |
| # "auto" value when things are turned on. |
| is_cross \ |
| && myconf+=( --disable-gdbserver ) \ |
| || myconf+=( $(use_enable server gdbserver auto) ) |
| fi |
| |
| if ! ( use server && ! use client ) ; then |
| # if we are configuring in the top level, then use all |
| # the additional global options |
| myconf+=( |
| --enable-64-bit-bfd |
| --disable-install-libbfd |
| --disable-install-libiberty |
| # This only disables building in the readline subdir. |
| # For gdb itself, it'll use the system version. |
| --disable-readline |
| --with-system-readline |
| --with-separate-debug-dir="${EPREFIX}"/usr/lib/debug |
| $(use_with expat) |
| $(use_with lzma) |
| $(use_enable nls) |
| $(use multitarget && echo --enable-targets=all) |
| $(use_with python python "${EPYTHON}") |
| $(use_with zlib) |
| ) |
| fi |
| |
| econf "${myconf[@]}" |
| } |
| |
| src_test() { |
| nonfatal emake check || ewarn "tests failed" |
| } |
| |
| src_install() { |
| use server && ! use client && cd gdb/gdbserver |
| default |
| use client && find "${ED}"/usr -name libiberty.a -delete |
| cd "${S}" |
| |
| # Don't install docs when building a cross-gdb |
| if [[ ${CTARGET} != ${CHOST} ]] ; then |
| rm -r "${ED}"/usr/share/{doc,info,locale} |
| local f |
| for f in "${ED}"/usr/share/man/*/* ; do |
| if [[ ${f##*/} != ${CTARGET}-* ]] ; then |
| mv "${f}" "${f%/*}/${CTARGET}-${f##*/}" || die |
| fi |
| done |
| return 0 |
| fi |
| # Install it by hand for now: |
| # http://sourceware.org/ml/gdb-patches/2011-12/msg00915.html |
| # Only install if it exists due to the twisted behavior (see |
| # notes in src_configure above). |
| [[ -e gdb/gdbserver/gdbreplay ]] && dobin gdb/gdbserver/gdbreplay |
| |
| if use client ; then |
| docinto gdb |
| dodoc gdb/CONTRIBUTE gdb/README gdb/MAINTAINERS \ |
| gdb/NEWS gdb/ChangeLog gdb/PROBLEMS |
| fi |
| docinto sim |
| dodoc sim/{ChangeLog,MAINTAINERS,README-HACKING} |
| if use server ; then |
| docinto gdbserver |
| dodoc gdb/gdbserver/{ChangeLog,README} |
| fi |
| |
| if [[ -n ${PATCH_VER} ]] ; then |
| dodoc "${WORKDIR}"/extra/gdbinit.sample |
| fi |
| |
| # Remove shared info pages |
| rm -f "${ED}"/usr/share/info/{annotate,bfd,configure,standards}.info* |
| } |
| |
| pkg_postinst() { |
| # portage sucks and doesnt unmerge files in /etc |
| rm -vf "${EROOT}"/etc/skel/.gdbinit |
| |
| if use prefix && [[ ${CHOST} == *-darwin* ]] ; then |
| ewarn "gdb is unable to get a mach task port when installed by Prefix" |
| ewarn "Portage, unprivileged. To make gdb fully functional you'll" |
| ewarn "have to perform the following steps:" |
| ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb" |
| ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb" |
| fi |
| } |