summaryrefslogtreecommitdiff
blob: de71502d068b2aa5c1f3cc5ba863e611808f5061 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

PYTHON_COMPAT=( python{2_7,3_{5,6}} pypy{,3} )
QTB_PV="5.5.1"
QTB_P="qtbase-opensource-src-${QTB_PV}"
QTW_PV="5.7.1"
QTW_P="qtwebkit-opensource-src-${QTW_PV}"

DESCRIPTION="A headless WebKit scriptable with a JavaScript API"
HOMEPAGE="http://phantomjs.org/"
SRC_URI="https://github.com/ariya/phantomjs/archive/${PV}.tar.gz -> ${P}.tar.gz
	 https://download.qt.io/archive/qt/${QTB_PV%.*}/${QTB_PV}/submodules/${QTB_P}.tar.xz
	 https://download.qt.io/community_releases/${QTW_PV%.*}/${QTW_PV}/${QTW_P}.tar.xz
	 mirror://gentoo/gentoo-${PN}-patchset-0.02.tar.bz2"

inherit eutils toolchain-funcs pax-utils multiprocessing

LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="examples fontconfig libressl truetype"
RESTRICT="mirror"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"

EPATCH_SUFFIX="patch"
PATCHES=( "${WORKDIR}/${PN}-patchset" )

RDEPEND="dev-libs/icu:=
	fontconfig? ( media-libs/fontconfig )
	!libressl? ( dev-libs/openssl:0 )
	libressl? ( dev-libs/libressl )
	truetype? ( media-libs/freetype )
	dev-db/sqlite:3"
DEPEND="${RDEPEND}
	net-misc/openssh[-bindist]
	app-arch/unzip
	dev-lang/ruby
	virtual/pkgconfig"

src_prepare() {
	ebegin "Moving third-party libraries into position for build"
	mv -T "${WORKDIR}/${QTB_P}" "${S}/src/qt/qtbase/" || die "QT base ${QTB_PV} failed"
	mv -T "${WORKDIR}/${QTW_P}" "${S}/src/qt/qtwebkit/" || die "QT webkit ${QTW_PV} failed"
	eend "$?"

	ebegin "Instilling C/CXX/LDFLAGS respect in main source"
	# Respect CC, CXX, {C,CXX,LD}FLAGS in .qmake.cache
	sed -i \
		-e "/^SYSTEM_VARIABLES=/i \
		CC='$(tc-getCC)'\n\
		CXX='$(tc-getCXX)'\n\
		CFLAGS='${CFLAGS}'\n\
		CXXFLAGS='${CXXFLAGS}'\n\
		LDFLAGS='${LDFLAGS}'\n\
		QMakeVar set QMAKE_CFLAGS_RELEASE\n\
		QMakeVar set QMAKE_CFLAGS_DEBUG\n\
		QMakeVar set QMAKE_CXXFLAGS_RELEASE\n\
		QMakeVar set QMAKE_CXXFLAGS_DEBUG\n\
		QMakeVar set QMAKE_LFLAGS_RELEASE\n\
		QMakeVar set QMAKE_LFLAGS_DEBUG\n"\
		src/qt/qtbase/configure \
		|| die
	eend $?

	ebegin "Instilling C/CXX/LDFLAGS respect in test suite"
	# Respect CC, CXX, LINK and *FLAGS in config.tests
	find src/qt/qtbase/config.tests/unix -name '*.test' -type f -exec \
		sed -i -e "/bin\/qmake/ s: \"\$SRCDIR/: \
			'QMAKE_CC=$(tc-getCC)'    'QMAKE_CXX=$(tc-getCXX)'      'QMAKE_LINK=$(tc-getCXX)' \
			'QMAKE_CFLAGS+=${CFLAGS}' 'QMAKE_CXXFLAGS+=${CXXFLAGS}' 'QMAKE_LFLAGS+=${LDFLAGS}'&:" \
		{} + || die
	eend $?

	default
}

src_compile() {
	./build.py \
		--confirm \
		--jobs $(makeopts_jobs) \
		|| die
}

src_test() {
	./bin/phantomjs test/run-tests.js || die
}

src_install() {
	pax-mark m bin/phantomjs || die
	dobin bin/phantomjs
	dodoc ChangeLog README.md
	if use examples ; then
		docinto examples
		dodoc examples/*
	fi
}