Skip to content

Commit

Permalink
gnustep-base/gnustep-make: better message on missing objc support
Browse files Browse the repository at this point in the history
Also update for EAPI6
Bug #561728 by Toralf Förster <[email protected]>

Package-Manager: portage-2.2.27
  • Loading branch information
voyageur committed Mar 10, 2016
1 parent 30d9b2e commit 11f0e53
Showing 1 changed file with 142 additions and 0 deletions.
142 changes: 142 additions & 0 deletions gnustep-base/gnustep-make/gnustep-make-2.6.7-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=6
inherit gnustep-base eutils prefix toolchain-funcs

DESCRIPTION="GNUstep Makefile Package"
HOMEPAGE="http://www.gnustep.org"
SRC_URI="ftp://ftp.gnustep.org/pub/gnustep/core/${P}.tar.gz"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~sparc-solaris ~x86-solaris"
IUSE="libobjc2 native-exceptions"

DEPEND="${GNUSTEP_CORE_DEPEND}
>=sys-devel/make-3.75
libobjc2? ( gnustep-base/libobjc2
sys-devel/clang )
!libobjc2? ( !!gnustep-base/libobjc2
|| (
>=sys-devel/gcc-3.3:=[objc]
sys-devel/clang
) )"
RDEPEND="${DEPEND}"

pkg_setup() {
# Determine libobjc.so to use
if use libobjc2; then
libobjc_version=libobjc.so.4
else
# Find version in active gcc
for ver in {2..5};
do
if $(tc-getCC) -Werror -Wl,-l:libobjc.so.${ver} \
"${FILESDIR}"/testlibobjc.m -o /dev/null 2> /dev/null;
then
libobjc_version=libobjc.so.${ver}
fi
done
fi

# Stop if we could not get libobjc.so
if [[ -z ${libobjc_version} ]]; then
eerror "${P} requires a working Objective-C runtime and a compiler with"
eerror "Objective-C support. Your current settings lack these requirements"
if ! use libobjc2;
then
eerror "Please switch your active compiler to gcc with USE=objc, or clang"
fi
die "Could not find Objective-C runtime"
fi

# For existing installations, determine if we will use another libobjc.so
if has_version gnustep-base/gnustep-make; then
local current_libobjc="$(awk -F: '/^OBJC_LIB_FLAG/ {print $2}' ${EPREFIX}/usr/share/GNUstep/Makefiles/config.make)"
# Old installations did not set this explicitely
: ${current_libobjc:=libobjc.so.2}

if [[ ${current_libobjc} != ${libobjc_version} ]]; then
ewarn "Warning: changed libobjc.so version!!"
ewarn "The libobjc.so version used for gnustep-make has changed"
ewarn "(either by the libojbc2 use-flag or a GCC upgrade)"
ewarn "You must rebuild all gnustep packages installed."
ewarn ""
ewarn "To do so, please emerge gnustep-base/gnustep-updater and run:"
ewarn "# gnustep-updater -l"
fi
fi

if use libobjc2; then
export CC=clang
fi
}

src_prepare() {
# Multilib-strict
sed -e "s#/lib#/$(get_libdir)#" -i FilesystemLayouts/fhs-system || die "sed failed"
cp "${FILESDIR}"/gnustep-5.{csh,sh} "${T}"/
eprefixify "${T}"/gnustep-5.{csh,sh}

default
}

src_configure() {
#--enable-objc-nonfragile-abi: only working in clang for now
econf \
INSTALL="${EPREFIX}"/usr/bin/install \
--with-layout=fhs-system \
--with-config-file="${EPREFIX}"/etc/GNUstep/GNUstep.conf \
--with-objc-lib-flag=-l:${libobjc_version} \
$(use_enable libobjc2 objc-nonfragile-abi) \
$(use_enable native-exceptions native-objc-exceptions)
}

src_compile() {
emake
# Prepare doc here (needed when no gnustep-make is already installed)
if use doc ; then
# If a gnustep-1 environment is set
unset GNUSTEP_MAKEFILES
pushd Documentation &> /dev/null
emake -j1 all install
popd &> /dev/null
fi
}

src_install() {
# Get GNUSTEP_* variables
. ./GNUstep.conf

local make_eval
use debug || make_eval="${make_eval} debug=no"
make_eval="${make_eval} verbose=yes"

emake ${make_eval} DESTDIR="${D}" install

# Copy the documentation
if use doc ; then
dodir ${GNUSTEP_SYSTEM_DOC}
cp -r Documentation/tmp-installation/System/Library/Documentation/* \
"${ED}"${GNUSTEP_SYSTEM_DOC=}
fi

dodoc FAQ README RELEASENOTES

exeinto /etc/profile.d
doexe "${T}"/gnustep-?.sh
doexe "${T}"/gnustep-?.csh
}

pkg_postinst() {
# Warn about new layout if old GNUstep directory is still here
if [ -e /usr/GNUstep/System ]; then
ewarn "Old layout directory detected (/usr/GNUstep/System)"
ewarn "Gentoo has switched to FHS layout for GNUstep packages"
ewarn "You must first update the configuration files from this package,"
ewarn "then remerge all packages still installed with the old layout"
ewarn "You can use gnustep-base/gnustep-updater for this task"
fi
}

0 comments on commit 11f0e53

Please sign in to comment.