# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/freebsd.eclass,v 1.23 2012/05/24 11:19:53 aballier Exp $ # # Diego Pettenò inherit versionator eutils flag-o-matic bsdmk LICENSE="BSD" HOMEPAGE="http://www.freebsd.org/" # Define global package names LIB="freebsd-lib-${PV}" BIN="freebsd-bin-${PV}" CONTRIB="freebsd-contrib-${PV}" SHARE="freebsd-share-${PV}" UBIN="freebsd-ubin-${PV}" USBIN="freebsd-usbin-${PV}" CRYPTO="freebsd-crypto-${PV}" LIBEXEC="freebsd-libexec-${PV}" SBIN="freebsd-sbin-${PV}" GNU="freebsd-gnu-${PV}" ETC="freebsd-etc-${PV}" SYS="freebsd-sys-${PV}" INCLUDE="freebsd-include-${PV}" RESCUE="freebsd-rescue-${PV}" CDDL="freebsd-cddl-${PV}" # Release version (5.3, 5.4, 6.0, etc) RV="$(get_version_component_range 1-2)" if [[ ${PN} != "freebsd-share" ]] && [[ ${PN} != freebsd-sources ]]; then IUSE="profile" fi #unalias -a alias install-info='/usr/bin/bsdinstall-info' EXPORT_FUNCTIONS src_compile src_install src_unpack # doperiodic ... doperiodic() { local kind=$1 shift ( # dont want to pollute calling env insinto /etc/periodic/${kind} insopts -m 0755 doins "$@" ) } freebsd_get_bmake() { local bmake bmake=$(get_bmake) [[ ${CBUILD} == *-freebsd* ]] || bmake="${bmake} -m /usr/share/mk/freebsd" echo "${bmake}" } freebsd_do_patches() { if [[ ${#PATCHES[@]} -gt 1 ]] ; then for x in "${PATCHES[@]}"; do epatch "${x}" done else for x in ${PATCHES} ; do epatch "${x}" done fi } freebsd_rename_libraries() { ebegin "Renaming libraries" # We don't use libtermcap, we use libncurses find "${S}" -name Makefile -print0 | xargs -0 \ sed -i -e 's:-ltermcap:-lncurses:g; s:{LIBTERMCAP}:{LIBNCURSES}:g' # flex provides libfl, not libl find "${S}" -name Makefile -print0 | xargs -0 \ sed -i -e 's:-ll$:-lfl:g; s:-ll :-lfl :g; s:{LIBL}:{LIBFL}:g' # ncurses provides libncursesw not libcursesw find "${S}" -name Makefile -print0 | xargs -0 \ sed -i -e 's:-lcursesw:-lncursesw:g' # we use expat instead of bsdxml find "${S}" -name Makefile -print0 | xargs -0 \ sed -i -e 's:-lbsdxml:-lexpat:g' eend $? } freebsd_src_unpack() { unpack ${A} cd "${S}" dummy_mk ${REMOVE_SUBDIRS} freebsd_do_patches freebsd_rename_libraries } freebsd_src_compile() { use profile && filter-flags "-fomit-frame-pointer" use profile || mymakeopts="${mymakeopts} NO_PROFILE= " mymakeopts="${mymakeopts} NO_MANCOMPRESS= NO_INFOCOMPRESS= NO_FSCHG=" # Many things breaks when using ricer flags here [[ -z "${NOFLAGSTRIP}" ]] && strip-flags # Make sure to use FreeBSD definitions while crosscompiling [[ -z "${BMAKE}" ]] && BMAKE="$(freebsd_get_bmake)" # Create objdir if MAKEOBJDIRPREFIX is defined, so that we can make out of # tree builds easily. if [[ -n "${MAKEOBJDIRPREFIX}" ]] ; then mkmake obj || die fi bsdmk_src_compile } freebsd_src_install() { use profile || mymakeopts="${mymakeopts} NO_PROFILE= " mymakeopts="${mymakeopts} NO_MANCOMPRESS= NO_INFOCOMPRESS= NO_FSCHG=" [[ -z "${BMAKE}" ]] && BMAKE="$(freebsd_get_bmake)" bsdmk_src_install }