| # Copyright 1999-2014 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| |
| inherit bsdmk freebsd flag-o-matic pam multilib multibuild multilib-build |
| |
| DESCRIPTION="FreeBSD's base system source for /usr/bin" |
| SLOT="0" |
| KEYWORDS="~amd64-fbsd ~sparc-fbsd ~x86-fbsd" |
| IUSE="ar atm audit bluetooth ipv6 kerberos netware nis ssl usb build zfs" |
| LICENSE="BSD zfs? ( CDDL )" |
| |
| SRC_URI="mirror://gentoo/${UBIN}.tar.bz2 |
| mirror://gentoo/${CONTRIB}.tar.bz2 |
| mirror://gentoo/${LIB}.tar.bz2 |
| mirror://gentoo/${ETC}.tar.bz2 |
| mirror://gentoo/${BIN}.tar.bz2 |
| mirror://gentoo/${INCLUDE}.tar.bz2 |
| zfs? ( mirror://gentoo/${CDDL}.tar.bz2 ) |
| build? ( mirror://gentoo/${SYS}.tar.bz2 )" |
| |
| RDEPEND="=sys-freebsd/freebsd-lib-${RV}*[usb?,bluetooth?,${MULTILIB_USEDEP}] |
| ssl? ( dev-libs/openssl ) |
| kerberos? ( virtual/krb5 ) |
| ar? ( >=app-arch/libarchive-3 ) |
| virtual/pam |
| sys-libs/zlib |
| >=sys-libs/ncurses-5.9 |
| !sys-process/fuser-bsd |
| !dev-util/csup" |
| |
| DEPEND="${RDEPEND} |
| sys-devel/flex |
| !build? ( =sys-freebsd/freebsd-sources-${RV}* ) |
| =sys-freebsd/freebsd-mk-defs-${RV}*" |
| |
| RDEPEND="${RDEPEND} |
| >=sys-auth/pambase-20080219.1 |
| sys-process/cronbase" |
| |
| S="${WORKDIR}/usr.bin" |
| |
| PATCHES=( "${FILESDIR}/${PN}-6.0-bsdcmp.patch" |
| "${FILESDIR}/${PN}-9.0-fixmakefiles.patch" |
| "${FILESDIR}/${PN}-setXid.patch" |
| "${FILESDIR}/${PN}-lint-stdarg.patch" |
| "${FILESDIR}/${PN}-9.1-kdump-ioctl.patch" |
| "${FILESDIR}/${PN}-8.0-xinstall.patch" |
| "${FILESDIR}/${PN}-9.1-bsdar.patch" |
| "${FILESDIR}/${PN}-9.1-minigzip.patch" |
| "${FILESDIR}/${PN}-9.1-grep.patch" |
| "${FILESDIR}/${PN}-9.1-ar-libarchive3.patch" ) |
| |
| # Here we remove some sources we don't need because they are already |
| # provided by portage's packages or similar. In order: |
| # - Archiving tools, provided by their own ebuilds |
| # - ncurses stuff |
| # - less stuff |
| # - bind utils |
| # - rsh stuff |
| # - binutils gprof |
| # - dc stuff |
| # and the rest are misc utils we already provide somewhere else. |
| REMOVE_SUBDIRS="bzip2 bzip2recover tar cpio |
| gzip gprof |
| lzmainfo xz xzdec |
| unzip |
| tput tset tabs |
| less lessecho lesskey |
| dig hesinfo nslookup nsupdate host |
| rsh rlogin rusers rwho ruptime |
| compile_et lex vi smbutil file vacation nc ftp telnet |
| c99 c89 |
| bc dc |
| whois tftp man catman" |
| |
| pkg_setup() { |
| use atm || mymakeopts="${mymakeopts} WITHOUT_ATM= " |
| use audit || mymakeopts="${mymakeopts} WITHOUT_AUDIT= " |
| use bluetooth || mymakeopts="${mymakeopts} WITHOUT_BLUETOOTH= " |
| use ipv6 || mymakeopts="${mymakeopts} WITHOUT_INET6= WITHOUT_INET6_SUPPORT= " |
| use kerberos || mymakeopts="${mymakeopts} WITHOUT_KERBEROS_SUPPORT= " |
| use netware || mymakeopts="${mymakeopts} WITHOUT_IPX= WITHOUT_IPX_SUPPORT= WITHOUT_NCP= " |
| use nis || mymakeopts="${mymakeopts} WITHOUT_NIS= " |
| use ssl || mymakeopts="${mymakeopts} WITHOUT_OPENSSL= " |
| use usb || mymakeopts="${mymakeopts} WITHOUT_USB= " |
| use zfs || mymakeopts="${mymakeopts} WITHOUT_CDDL= " |
| mymakeopts="${mymakeopts} WITHOUT_CLANG= " |
| } |
| |
| pkg_preinst() { |
| # bison installs a /usr/bin/yacc symlink ... |
| # we need to remove it to avoid triggering |
| # collision-protect errors |
| if [[ -L ${ROOT}/usr/bin/yacc ]] ; then |
| rm -f "${ROOT}"/usr/bin/yacc |
| fi |
| } |
| |
| src_prepare() { |
| use build || ln -s "/usr/src/sys-${RV}" "${WORKDIR}/sys" |
| |
| # Rename manpage for renamed cmp |
| mv "${S}"/cmp/cmp.1 "${S}"/cmp/bsdcmp.1 || die |
| # Rename manpage for renamed ar |
| mv "${S}"/ar/ar.1 "${S}"/ar/freebsd-ar.1 || die |
| # Fix whereis(1) manpath search. |
| sed -i -e 's:"manpath -q":"manpath":' "${S}/whereis/pathnames.h" |
| |
| # Build a dynamic make |
| sed -i -e '/^NO_SHARED/ s/^/#/' "${S}"/make/Makefile || die |
| |
| # Disable it here otherwise our patch wont apply |
| use ar || dummy_mk ar |
| } |
| |
| setup_multilib_vars() { |
| if ! multilib_is_native_abi ; then |
| cd "${WORKDIR}/usr.bin/ldd" || die |
| export mymakeopts="${mymakeopts} PROG=ldd32 WITHOUT_MAN=" |
| else |
| cd "${S}" |
| fi |
| "$@" |
| } |
| |
| src_compile() { |
| local MULTIBUILD_VARIANTS=( $(multilib_get_enabled_abis) ) |
| multibuild_foreach_variant freebsd_multilib_multibuild_wrapper setup_multilib_vars freebsd_src_compile |
| } |
| |
| src_install() { |
| local MULTIBUILD_VARIANTS=( $(multilib_get_enabled_abis) ) |
| multibuild_foreach_variant freebsd_multilib_multibuild_wrapper setup_multilib_vars freebsd_src_install |
| |
| # baselayout requires these in /bin |
| dodir /bin |
| for bin in sed printf fuser; do |
| mv "${D}/usr/bin/${bin}" "${D}/bin/" || die "mv ${bin} failed" |
| dosym /bin/${bin} /usr/bin/${bin} || die "dosym ${bin} failed" |
| done |
| |
| for pamdfile in login passwd su; do |
| newpamd "${FILESDIR}/${pamdfile}.1.pamd" ${pamdfile} || die |
| done |
| |
| cd "${WORKDIR}/etc" |
| insinto /etc |
| doins remote phones opieaccess fbtab || die |
| |
| exeinto /etc/cron.daily |
| newexe "${FILESDIR}/locate-updatedb-cron" locate.updatedb || die |
| |
| # tip requires /var/spool/lock/, bug #200700 |
| keepdir /var/spool/lock |
| |
| # create locate database #472468 |
| local f=/var/db/locate.database |
| mkdir "${ED}${f%/*}" || die |
| touch "${ED}${f}" || die |
| fowners nobody:nobody ${f} |
| } |
| |
| pkg_postinst() { |
| # We need to ensure that login.conf.db is up-to-date. |
| if [[ -e "${ROOT}"etc/login.conf ]] ; then |
| einfo "Updating ${ROOT}etc/login.conf.db" |
| "${ROOT}"usr/bin/cap_mkdb -f "${ROOT}"etc/login.conf "${ROOT}"etc/login.conf |
| elog "Remember to run cap_mkdb /etc/login.conf after making changes to it" |
| fi |
| } |
| |
| pkg_postrm() { |
| # and if we uninstall yacc but keep bison, |
| # lets restore the /usr/bin/yacc symlink |
| if [[ ! -e ${ROOT}/usr/bin/yacc ]] && [[ -e ${ROOT}/usr/bin/yacc.bison ]] ; then |
| ln -s yacc.bison "${ROOT}"/usr/bin/yacc |
| fi |
| } |