dev-lang/spidermonkey: [QA] Fix MissingTestRestrict
[gentoo.git] / dev-lang / spidermonkey / spidermonkey-38.3.0.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 toolchain-funcs pax-utils mozcoreconf-v4
7
8 MY_PN="mozjs"
9 MY_P="${MY_PN}-${PV/_/.}sfink2"
10 DESCRIPTION="Stand-alone JavaScript C library"
11 HOMEPAGE="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
12 SRC_URI="https://archive.mozilla.org/pub/${PN}/releases/${PV}/${MY_P}.tar.bz2
13         https://dev.gentoo.org/~axs/distfiles/${PN}-slot38-patches-01.tar.xz"
14
15 LICENSE="NPL-1.1"
16 SLOT="38"
17 KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~s390 ~sh ~sparc x86"
18 IUSE="debug +jit minimal static-libs +system-icu test"
19
20 RESTRICT="!test? ( test ) ia64? ( test )"
21
22 #S="${WORKDIR}/${MY_P%.rc*}"
23 S="${WORKDIR}/${MY_P}"
24 BUILDDIR="${S}/js/src"
25
26 RDEPEND=">=dev-libs/nspr-4.10.10
27         virtual/libffi
28         sys-libs/readline:0=
29         >=sys-libs/zlib-1.2.3
30         system-icu? ( >=dev-libs/icu-51.1:= )"
31 DEPEND="${RDEPEND}"
32
33 pkg_setup(){
34         if [[ ${MERGE_TYPE} != "binary" ]]; then
35                 moz_pkgsetup
36         fi
37 }
38
39 src_prepare() {
40         eapply "${WORKDIR}"/sm38/${PN}-38-jsapi-tests.patch \
41                 "${WORKDIR}"/sm38/mozjs38-1269317.patch \
42                 "${WORKDIR}"/sm38/mozjs38-fix-tracelogger.patch \
43                 "${WORKDIR}"/sm38/mozjs38-copy-headers.patch \
44                 "${WORKDIR}"/sm38/mozjs38-pkg-config-version.patch \
45                 "${WORKDIR}"/sm38/mozilla_configure_regexp_esr38.patch \
46                 "${FILESDIR}"/moz38-dont-hardcode-libc-soname.patch
47
48         eapply_user
49
50         if [[ ${CHOST} == *-freebsd* ]]; then
51                 # Don't try to be smart, this does not work in cross-compile anyway
52                 ln -sfn "${BUILDDIR}/config/Linux_All.mk" "${S}/config/$(uname -s)$(uname -r).mk" || die
53         fi
54
55         cd "${BUILDDIR}" || die
56         eautoconf
57 }
58
59 src_configure() {
60         export SHELL="${SHELL:-${EPREFIX%/}/bin/bash}"
61
62         cd "${BUILDDIR}" || die
63
64         econf \
65                 --enable-jemalloc \
66                 --enable-readline \
67                 --enable-threadsafe \
68                 --with-system-nspr \
69                 --enable-system-ffi \
70                 --disable-optimize \
71                 --with-intl-api \
72                 $(use_with system-icu) \
73                 $(use_enable debug) \
74                 $(use_enable jit yarr-jit) \
75                 $(use_enable jit ion) \
76                 $(use_enable static-libs static) \
77                 $(use_enable test tests)
78 }
79
80 cross_make() {
81         emake \
82                 CFLAGS="${BUILD_CFLAGS}" \
83                 CXXFLAGS="${BUILD_CXXFLAGS}" \
84                 AR="${BUILD_AR}" \
85                 CC="${BUILD_CC}" \
86                 CXX="${BUILD_CXX}" \
87                 RANLIB="${BUILD_RANLIB}" \
88                 "$@"
89 }
90 src_compile() {
91         cd "${BUILDDIR}" || die
92         if tc-is-cross-compiler; then
93                 tc-export_build_env BUILD_{AR,CC,CXX,RANLIB}
94                 cross_make \
95                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
96                         HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
97                         MOZ_PGO_OPTIMIZE_FLAGS="" \
98                         host_jsoplengen host_jskwgen
99                 cross_make \
100                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" HOST_OPTIMIZE_FLAGS="" \
101                         -C config nsinstall
102                 mv {,native-}host_jskwgen || die
103                 mv {,native-}host_jsoplengen || die
104                 mv config/{,native-}nsinstall || die
105                 sed -i \
106                         -e 's@./host_jskwgen@./native-host_jskwgen@' \
107                         -e 's@./host_jsoplengen@./native-host_jsoplengen@' \
108                         Makefile || die
109                 sed -i -e 's@/nsinstall@/native-nsinstall@' config/config.mk || die
110                 rm -f config/host_nsinstall.o \
111                         config/host_pathsub.o \
112                         host_jskwgen.o \
113                         host_jsoplengen.o || die
114         fi
115
116         MOZ_MAKE_FLAGS="${MAKEOPTS}"
117         emake \
118                 MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
119                 HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
120                 MOZ_PGO_OPTIMIZE_FLAGS=""
121 }
122
123 src_test() {
124         cd "${BUILDDIR}/js/src/jsapi-tests" || die
125         ./jsapi-tests || die
126 }
127
128 src_install() {
129         cd "${BUILDDIR}" || die
130         emake DESTDIR="${D}" install
131
132         mv "${ED}"usr/bin/js-config{,${SLOT}} || die
133         mv "${ED}"usr/bin/js{,${SLOT}} || die
134         if ! use minimal; then
135                 if use jit; then
136                         pax-mark m "${ED}"usr/bin/js${SLOT}
137                 fi
138         else
139                 rm -f "${ED}"/usr/bin/js${SLOT}
140         fi
141
142         if ! use static-libs; then
143                 # We can't actually disable building of static libraries
144                 # They're used by the tests and in a few other places
145                 find "${D}" -iname '*.a' -o -iname '*.ajs' -delete || die
146         fi
147 }