## ## phantomjs.spec -- OpenPKG RPM Package Specification ## Copyright (c) 2000-2022 OpenPKG Project ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## # package version %define V_base 2.1.1 %define V_snap 20170304 # package information Name: phantomjs Summary: Head-Less Web Browser URL: http://phantomjs.org/ Vendor: Ariya Hidayat Packager: OpenPKG Project Distribution: OpenPKG Community Class: EVAL Group: Web License: BSD Version: %{V_base} Release: 20170304 # list of sources Source0: http://download.openpkg.org/components/versioned/phantomjs/phantomjs-%{V_snap}.tar.xz Patch0: phantomjs.patch # build information BuildPreReq: OpenPKG, openpkg >= 20160101, make, gcc, gcc::with_cxx = yes, ruby, python, gperf PreReq: OpenPKG, openpkg >= 20160101 BuildPreReq: fontconfig, freetype, icu, zlib, expat, libxml, libexecinfo, openssl PreReq: fontconfig, freetype, icu, zlib, expat, libxml, libexecinfo, openssl %description PhantomJS is a headless WebKit (based on Qt 5.5's QtWebKit which is based on Chromium 40), scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG. PhantomJS is an optimal solution for Headless Website Testing, Screen Capturing, Page Automation and Network Monitoring. %track prog phantomjs = { version = %{V_base} url = https://github.com/ariya/phantomjs/releases regex = phantomjs-(__VER__)\.tar\.gz } %prep %setup -q -n phantomjs %patch -p0 # workaround: ensure the configuration system does not skip important steps mkdir src/qt/qtbase/.git mkdir src/qt/qtwebkit/.git # remove useless file rm -f src/qt/qtwebkit/Source/WebCore/DerivedSources.cpp %build # provide compiler wrappers mkdir tool libs="-lexpat -lz -lm" case "%{l_platform -t}" in *-linux* ) libs="$libs -ldl" ;; esac ( echo "#!/bin/sh" echo "%{l_cc} %{l_cflags -O} %{l_cppflags icu .} %{l_ldflags} \${1+\"\$@\"} $libs" ) >tool/gcc chmod a+x tool/gcc ( echo "#!/bin/sh" echo "%{l_cxx} %{l_cxxflags -O} %{l_cppflags icu .} %{l_ldflags} \${1+\"\$@\"} $libs" ) >tool/g++ chmod a+x tool/g++ PATH=`pwd`/tool:$PATH # pass configuration flags export CC="gcc" export CXX="g++" export CFLAGS="%{l_cflags -O}" export CXXFLAGS="%{l_cxxflags -O} -Wno-unused-parameter" export CPPFLAGS="%{l_cppflags}" export LDFLAGS="%{l_ldflags}" # build program %{l_prefix}/bin/python ./build.py \ --confirm \ --jobs 8 \ --skip-git \ --qt-config "%{l_cppflags icu .} %{l_ldflags}" %install # create installation hierarchy %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/bin # install program %{l_shtool} install -c -s -m 755 \ bin/phantomjs $RPM_BUILD_ROOT%{l_prefix}/bin/ # determine installation files %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} %files -f files %clean