dev-lang/spidermonkey: [QA] Fix MissingTestRestrict
[gentoo.git] / dev-lang / spidermonkey / spidermonkey-60.5.2_p0-r3.ebuild
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5 WANT_AUTOCONF="2.1"
6 inherit autotools check-reqs toolchain-funcs pax-utils mozcoreconf-v5
7
8 MY_PN="mozjs"
9 MY_P="${MY_PN}-${PV/_rc/.rc}"
10 MY_P="${MY_P/_pre/pre}"
11 MY_P="${MY_P%_p[0-9]*}"
12 DESCRIPTION="Stand-alone JavaScript C++ library"
13 HOMEPAGE="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
14 #SRC_URI="https://archive.mozilla.org/pub/spidermonkey/prereleases/60/pre3/${MY_P}.tar.bz2
15 SRC_URI="https://dev.gentoo.org/~axs/distfiles/${MY_P}.tar.bz2
16         https://dev.gentoo.org/~anarchy/mozilla/patchsets/${PN}-60.0-patches-04.tar.xz"
17
18 LICENSE="NPL-1.1"
19 SLOT="60"
20 KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
21 IUSE="debug +jit minimal +system-icu test"
22
23 RESTRICT="!test? ( test ) ia64? ( test )"
24
25 S="${WORKDIR}/${MY_P%.rc*}"
26
27 BUILDDIR="${S}/jsobj"
28
29 RDEPEND=">=dev-libs/nspr-4.13.1
30         virtual/libffi
31         sys-libs/readline:0=
32         >=sys-libs/zlib-1.2.3:=
33         system-icu? ( >=dev-libs/icu-59.1:= )"
34 DEPEND="${RDEPEND}"
35
36 pkg_pretend() {
37         CHECKREQS_DISK_BUILD="2G"
38
39         check-reqs_pkg_setup
40 }
41 pkg_setup(){
42         [[ ${MERGE_TYPE} == "binary" ]] || \
43                 moz_pkgsetup
44         export SHELL="${EPREFIX}/bin/bash"
45 }
46
47 src_prepare() {
48         eapply "${WORKDIR}/${PN}"
49         eapply "${FILESDIR}/${PN}-60.5.2-ia64-support.patch"
50
51         eapply_user
52
53         if [[ ${CHOST} == *-freebsd* ]]; then
54                 # Don't try to be smart, this does not work in cross-compile anyway
55                 ln -sfn "${BUILDDIR}/config/Linux_All.mk" "${S}/config/$(uname -s)$(uname -r).mk" || die
56         fi
57
58         cd "${S}/js/src" || die
59         eautoconf old-configure.in
60         eautoconf
61
62         # remove options that are not correct from js-config
63         sed '/lib-filenames/d' -i "${S}"/js/src/build/js-config.in || die "failed to remove invalid option from js-config"
64
65         # there is a default config.cache that messes everything up
66         rm -f "${S}/js/src"/config.cache || die
67
68         mkdir -p "${BUILDDIR}" || die
69 }
70
71 src_configure() {
72         cd "${BUILDDIR}" || die
73
74         ECONF_SOURCE="${S}/js/src" \
75         econf \
76                 --disable-jemalloc \
77                 --enable-readline \
78                 --with-system-nspr \
79                 --with-system-zlib \
80                 --disable-optimize \
81                 --with-intl-api \
82                 $(use_with system-icu) \
83                 $(use_enable debug) \
84                 $(use_enable jit ion) \
85                 $(use_enable test tests) \
86                 XARGS="/usr/bin/xargs" \
87                 CONFIG_SHELL="${EPREFIX}/bin/bash" \
88                 CC="${CC}" CXX="${CXX}" LD="${LD}" AR="${AR}" RANLIB="${RANLIB}"
89 }
90
91 cross_make() {
92         emake \
93                 CFLAGS="${BUILD_CFLAGS}" \
94                 CXXFLAGS="${BUILD_CXXFLAGS}" \
95                 AR="${BUILD_AR}" \
96                 CC="${BUILD_CC}" \
97                 CXX="${BUILD_CXX}" \
98                 RANLIB="${BUILD_RANLIB}" \
99                 "$@"
100 }
101 src_compile() {
102         cd "${BUILDDIR}" || die
103         if tc-is-cross-compiler; then
104                 tc-export_build_env BUILD_{AR,CC,CXX,RANLIB}
105                 cross_make \
106                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
107                         HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
108                         MOZ_PGO_OPTIMIZE_FLAGS="" \
109                         host_jsoplengen host_jskwgen
110                 cross_make \
111                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" HOST_OPTIMIZE_FLAGS="" \
112                         -C config nsinstall
113                 mv {,native-}host_jskwgen || die
114                 mv {,native-}host_jsoplengen || die
115                 mv config/{,native-}nsinstall || die
116                 sed -i \
117                         -e 's@./host_jskwgen@./native-host_jskwgen@' \
118                         -e 's@./host_jsoplengen@./native-host_jsoplengen@' \
119                         Makefile || die
120                 sed -i -e 's@/nsinstall@/native-nsinstall@' config/config.mk || die
121                 rm -f config/host_nsinstall.o \
122                         config/host_pathsub.o \
123                         host_jskwgen.o \
124                         host_jsoplengen.o || die
125         fi
126
127         MOZ_MAKE_FLAGS="${MAKEOPTS}" \
128         emake \
129                 MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
130                 HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
131                 MOZ_PGO_OPTIMIZE_FLAGS=""
132 }
133
134 src_test() {
135         cd "${BUILDDIR}/js/src/jsapi-tests" || die
136         ./jsapi-tests || die
137 }
138
139 src_install() {
140         cd "${BUILDDIR}" || die
141         emake DESTDIR="${D}" install
142
143         if ! use minimal; then
144                 if use jit; then
145                         pax-mark m "${ED}"usr/bin/js${SLOT}
146                 fi
147         else
148                 rm -f "${ED}"usr/bin/js${SLOT}
149         fi
150
151         # We can't actually disable building of static libraries
152         # They're used by the tests and in a few other places
153         find "${D}" -iname '*.a' -o -iname '*.ajs' -delete || die
154 }