sys-freebsd: bump to 11.1
[gentoo.git] / sys-freebsd / freebsd-ubin / freebsd-ubin-11.1.ebuild
1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=5
5
6 inherit bsdmk freebsd flag-o-matic pam multilib multibuild multilib-build
7
8 DESCRIPTION="FreeBSD's base system source for /usr/bin"
9 SLOT="0"
10 IUSE="ar atm audit bluetooth ipv6 kerberos netware nis ssl usb build zfs"
11 LICENSE="BSD zfs? ( CDDL )"
12
13 # Security Advisory and Errata patches.
14 # UPSTREAM_PATCHES=()
15
16 if [[ ${PV} != *9999* ]]; then
17         KEYWORDS="~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
18         SRC_URI="${SRC_URI}
19                 $(freebsd_upstream_patches)"
20 fi
21
22 EXTRACTONLY="
23         usr.bin/
24         contrib/
25         lib/
26         etc/
27         bin/
28         include/
29 "
30
31 RDEPEND="=sys-freebsd/freebsd-lib-${RV}*[usb?,bluetooth?,${MULTILIB_USEDEP}]
32         ssl? ( dev-libs/openssl:0= )
33         kerberos? ( virtual/krb5 )
34         ar? ( >=app-arch/libarchive-3 )
35         virtual/pam
36         sys-libs/zlib
37         >=sys-libs/ncurses-5.9:0=
38         !sys-process/fuser-bsd
39         !dev-util/csup
40         !dev-libs/libiconv
41         !sys-freebsd/freebsd-contrib"
42
43 DEPEND="${RDEPEND}
44         sys-devel/flex
45         !build? ( =sys-freebsd/freebsd-sources-${RV}* )
46         =sys-freebsd/freebsd-sbin-${RV}*
47         =sys-freebsd/freebsd-mk-defs-${RV}*"
48
49 RDEPEND="${RDEPEND}
50         >=sys-auth/pambase-20080219.1
51         sys-process/cronbase"
52
53 S="${WORKDIR}/usr.bin"
54
55 PATCHES=( "${FILESDIR}/${PN}-6.0-bsdcmp.patch"
56         "${FILESDIR}/${PN}-11.1-fixmakefiles.patch"
57         "${FILESDIR}/${PN}-11.0-setXid.patch"
58         "${FILESDIR}/${PN}-lint-stdarg.patch"
59         "${FILESDIR}/${PN}-9.1-bsdar.patch"
60         "${FILESDIR}/${PN}-10.2-talk-workaround.patch"
61         "${FILESDIR}/${PN}-10.2-bsdxml.patch" )
62
63 # Here we remove some sources we don't need because they are already
64 # provided by portage's packages or similar. In order:
65 # - Archiving tools, provided by their own ebuilds
66 # - ncurses stuff
67 # - less stuff
68 # - bind utils
69 # - rsh stuff
70 # - binutils gprof
71 # - dc stuff
72 # and the rest are misc utils we already provide somewhere else.
73 REMOVE_SUBDIRS="bzip2 bzip2recover tar cpio
74         gzip gprof minigzip
75         lzmainfo xz xzdec
76         unzip
77         tput tset tabs
78         less lessecho lesskey
79         hesinfo host
80         rsh rlogin rusers rwho ruptime
81         compile_et lex vi smbutil file vacation nc ftp telnet
82         c99 c89
83         bc dc
84         whois tftp man
85         addr2line bsdcat cxxfilt cxxfilt elfcopy nm readelf sdiff size soelim strings"
86
87 pkg_setup() {
88         # Add the required source files.
89         use zfs && EXTRACTONLY+="cddl/ "
90         use build && EXTRACTONLY+="sys/ "
91         use nis && EXTRACTONLY+="usr.sbin/ypserv/ "
92
93         use atm || mymakeopts="${mymakeopts} WITHOUT_ATM= "
94         use audit || mymakeopts="${mymakeopts} WITHOUT_AUDIT= "
95         use bluetooth || mymakeopts="${mymakeopts} WITHOUT_BLUETOOTH= "
96         use ipv6 || mymakeopts="${mymakeopts} WITHOUT_INET6= WITHOUT_INET6_SUPPORT= "
97         use kerberos || mymakeopts="${mymakeopts} WITHOUT_KERBEROS_SUPPORT= "
98         use netware || mymakeopts="${mymakeopts} WITHOUT_IPX= WITHOUT_IPX_SUPPORT= WITHOUT_NCP= "
99         use nis || mymakeopts="${mymakeopts} WITHOUT_NIS= "
100         use ssl || mymakeopts="${mymakeopts} WITHOUT_OPENSSL= "
101         use usb || mymakeopts="${mymakeopts} WITHOUT_USB= "
102         use zfs || mymakeopts="${mymakeopts} WITHOUT_CDDL= "
103         mymakeopts="${mymakeopts} WITHOUT_CLANG= WITHOUT_LZMA_SUPPORT= WITHOUT_SVN= WITHOUT_SVNLITE= WITHOUT_OPENSSH= WITHOUT_LDNS_UTILS= WITHOUT_MANDOCDB= WITHOUT_GPL_DTC= "
104 }
105
106 pkg_preinst() {
107         # bison installs a /usr/bin/yacc symlink ...
108         # we need to remove it to avoid triggering
109         # collision-protect errors
110         if [[ -L ${ROOT}/usr/bin/yacc ]] ; then
111                 rm -f "${ROOT}"/usr/bin/yacc
112         fi
113 }
114
115 src_prepare() {
116         if [[ ! -e "${WORKDIR}/sys" ]]; then
117                 use build || ln -s "/usr/src/sys" "${WORKDIR}/sys"
118         fi
119
120         # Rename manpage for renamed cmp
121         mv "${S}"/cmp/cmp.1 "${S}"/cmp/bsdcmp.1 || die
122         # Rename manpage for renamed ar
123         mv "${S}"/ar/ar.1 "${S}"/ar/freebsd-ar.1 || die
124         # Fix whereis(1) manpath search.
125         sed -i -e 's:"manpath -q":"manpath":' "${S}/whereis/pathnames.h"
126
127         # Build a dynamic make
128         sed -i -e '/^NO_SHARED/ s/^/#/' "${S}"/bmake/Makefile.inc || die
129
130         # Disable it here otherwise our patch wont apply
131         use ar || dummy_mk ar
132
133         # Preparing to build xlint
134         export LINT=xlint
135 }
136
137 setup_multilib_vars() {
138         if ! multilib_is_native_abi ; then
139                 cd "${WORKDIR}/usr.bin/ldd" || die
140                 export mymakeopts="${mymakeopts} PROG=ldd32 WITHOUT_MAN="
141         else
142                 cd "${S}" || die
143         fi
144         "$@"
145 }
146
147 src_compile() {
148         local MULTIBUILD_VARIANTS="${DEFAULT_ABI}"
149         # Preparing to build addr2line, elfcopy, m4, getaddrinfo
150         for dir in libelftc libpe libopenbsd libnetbsd; do
151                 cd "${WORKDIR}/lib/${dir}" || die
152                 multibuild_foreach_variant freebsd_multilib_multibuild_wrapper freebsd_src_compile -j1
153         done
154
155         MULTIBUILD_VARIANTS=( $(multilib_get_enabled_abis) )
156         multibuild_foreach_variant freebsd_multilib_multibuild_wrapper setup_multilib_vars freebsd_src_compile -j1
157 }
158
159 src_install() {
160         cd "${S}"/calendar/calendars || die
161         for dir in $(find . -type d ! -name "." ) ; do
162                 dodir /usr/share/calendar/"$(basename ${dir})"
163         done
164
165         local MULTIBUILD_VARIANTS=( $(multilib_get_enabled_abis) )
166         multibuild_foreach_variant freebsd_multilib_multibuild_wrapper setup_multilib_vars freebsd_src_install
167
168         # baselayout requires these in /bin
169         dodir /bin
170         for bin in sed printf ; do
171                 mv "${D}/usr/bin/${bin}" "${D}/bin/" || die "mv ${bin} failed"
172                 dosym /bin/${bin} /usr/bin/${bin} || die "dosym ${bin} failed"
173         done
174
175         for pamdfile in login passwd su; do
176                 newpamd "${FILESDIR}/${pamdfile}.1.pamd" ${pamdfile} || die
177         done
178
179         cd "${WORKDIR}/etc" || die
180         insinto /etc
181         doins remote phones opieaccess fbtab || die
182
183         exeinto /etc/cron.daily
184         newexe "${FILESDIR}/locate-updatedb-cron" locate.updatedb || die
185
186         # tip requires /var/spool/lock/, bug #200700
187         keepdir /var/spool/lock
188
189         # create locate database #472468
190         local f=/var/db/locate.database
191         mkdir "${ED}${f%/*}" || die
192         touch "${ED}${f}" || die
193         fowners nobody:nobody ${f}
194 }
195
196 pkg_postinst() {
197         # We need to ensure that login.conf.db is up-to-date.
198         if [[ -e "${ROOT}"etc/login.conf ]] ; then
199                 einfo "Updating ${ROOT}etc/login.conf.db"
200                 "${ROOT}"usr/bin/cap_mkdb       -f "${ROOT}"etc/login.conf "${ROOT}"etc/login.conf
201                 elog "Remember to run cap_mkdb /etc/login.conf after making changes to it"
202         fi
203 }
204
205 pkg_postrm() {
206         # and if we uninstall yacc but keep bison,
207         # lets restore the /usr/bin/yacc symlink
208         if [[ ! -e ${ROOT}/usr/bin/yacc ]] && [[ -e ${ROOT}/usr/bin/yacc.bison ]] ; then
209                 ln -s yacc.bison "${ROOT}"/usr/bin/yacc
210         fi
211 }