Skip to content

Instantly share code, notes, and snippets.

@JanMarvin
Last active June 10, 2019 07:15
Show Gist options
  • Save JanMarvin/61ee142b21c394f5c67a55df4f960adc to your computer and use it in GitHub Desktop.
Save JanMarvin/61ee142b21c394f5c67a55df4f960adc to your computer and use it in GitHub Desktop.
v8
# Maintainer: Marco Pompili <aur (at) mg.odd.red>
# Contributor: Anatol Pomozov <anatol.pomozov@gmail.com>
# Contributor: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
# Contributor: Kaiting Chen <kaitocracy@gmail.com>
# Contributor: tocer <tocer.deng@gmail.com>
# Contributor: David Flemström <david.flemstrom@gmail.com>
# Contributor: Jan Marvin Garbuszus <jan.garbuszus@rub.de>
pkgname=v8
pkgver=7.6.100
pkgrel=1
pkgdesc="Fast and modern Javascript engine used in Google Chrome."
arch=('x86_64')
url="https://v8.dev"
license=('BSD')
depends=('icu')
optional=('rlwrap')
makedepends=('clang' 'clang-tools-extra' 'python2' 'python2-colorama' 'python2-pylint' 'python2-lazy-object-proxy' 'python2-singledispatch' 'python2-wrapt' 'ninja' 'git' 'wget')
conflicts=('v8-3.14' 'v8-3.15' 'v8-3.20' 'v8-static-gyp' 'v8-static-gyp-5.4')
source=("depot_tools::git+https://chromium.googlesource.com/chromium/tools/depot_tools.git"
"v8.pc"
"v8_libbase.pc"
"v8_libplatform.pc"
"d8")
sha256sums=('SKIP'
'3616bcfb15af7cd5a39bc0f223b2a52f15883a4bc8cfcfb291837c7421363d75'
'efb37bd706e6535abfa20c77bb16597253391619dae275627312d00ee7332fa3'
'ae23d543f655b4d8449f98828d0aff6858a777429b9ebdd2e23541f89645d4eb'
'6abb07ab1cf593067d19028f385bd7ee52196fc644e315c388f08294d82ceff0')
case "$CARCH" in
x86_64) V8_ARCH="x64" ;;
esac
OUTFLD=out.gn/Release
prepare() {
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
# Switching to python2 system environment
mkdir -p bin
ln -sf /usr/bin/python2 ./bin/python
ln -sf /usr/bin/python2-config ./bin/python-config
msg2 "Using: `which python`"
export PATH=${srcdir}/bin:`pwd`/depot_tools:"$PATH"
export GYP_GENERATORS=ninja
if [ ! -d "v8" ]; then
msg2 "Fetching V8 code"
yes | fetch v8
fi
cd $srcdir/v8
msg2 "Reset repository"
git reset --hard
if [ -f third_party/icu/BUILD.gn.orig ]
then
msg2 "Restoring bundled ICU build files for syncing"
python2 $srcdir/v8/build/linux/unbundle/replace_gn_files.py --undo --system-libraries icu
fi
msg2 "Syncing, this can take a while..."
$srcdir/depot_tools/gclient sync -D --force --reset
$srcdir/depot_tools/gclient sync --revision ${pkgver}
msg2 "Using system libraries for ICU"
$srcdir/v8/build/linux/unbundle/replace_gn_files.py --system-libraries icu
sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/v8.pc"
sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/v8_libbase.pc"
sed "s/@VERSION@/${pkgver}/g" -i "${srcdir}/v8_libplatform.pc"
msg2 "Running GN..."
$srcdir/depot_tools/gn gen $OUTFLD \
-vv --fail-on-unused-args \
--args='clang_base_path="/usr/"
is_clang=true
is_asan=false
clang_use_chrome_plugins=false
is_component_build=true
is_debug=false
is_official_build=false
treat_warnings_as_errors=false
v8_enable_i18n_support=true
v8_use_external_startup_data=false
use_custom_libcxx=false
linux_use_bundled_binutils=false
use_sysroot=false'
}
build() {
cd $srcdir/v8
# Fixes bug in generate_shim_headers.py that fails to create these dirs
msg2 "Adding icu missing folders"
mkdir -p "$OUTFLD/gen/shim_headers/icuuc_shim/third_party/icu/source/common/unicode/"
mkdir -p "$OUTFLD/gen/shim_headers/icui18n_shim/third_party/icu/source/i18n/unicode/"
msg2 "Building, this will take a while..."
ninja -C $OUTFLD
}
# check() {
# cd $srcdir/v8
#
# msg2 "Testing, this will also take a while..."
# tools/run-tests.py --no-presubmit \
# --outdir=out.gn \
# --buildbot \
# --arch=$V8_ARCH \
# --mode=Release
# }
package() {
cd $srcdir/v8
install -d ${pkgdir}/usr/lib/v8
install -Dm755 $OUTFLD/cctest ${pkgdir}/usr/lib/v8/cctest
install -Dm755 $OUTFLD/d8 ${pkgdir}/usr/lib/v8/d8
# install -Dm755 $OUTFLD/libv8_for_testing.so ${pkgdir}/usr/lib/libv8_for_testing.so
install -Dm755 $OUTFLD/libv8_libbase.so ${pkgdir}/usr/lib/libv8_libbase.so
install -Dm755 $OUTFLD/libv8_libplatform.so ${pkgdir}/usr/lib/libv8_libplatform.so
install -Dm755 $OUTFLD/libv8.so ${pkgdir}/usr/lib/libv8.so
install -Dm755 ${srcdir}/d8 ${pkgdir}/usr/bin/d8
# V8 has several header files and ideally if it had its own folder in /usr/include
# But doing it here will break all users. Ideally if they use provided pkgconfig file.
install -d ${pkgdir}/usr/include
install -Dm644 include/*.h ${pkgdir}/usr/include
install -d ${pkgdir}/usr/include/libplatform
install -Dm644 include/libplatform/*.h ${pkgdir}/usr/include/libplatform
install -d ${pkgdir}/usr/lib/pkgconfig
install -m644 $srcdir/v8.pc ${pkgdir}/usr/lib/pkgconfig
install -m644 $srcdir/v8_libbase.pc ${pkgdir}/usr/lib/pkgconfig
install -m644 $srcdir/v8_libplatform.pc ${pkgdir}/usr/lib/pkgconfig
install -d ${pkgdir}/usr/share/licenses/v8
install -m644 LICENSE* ${pkgdir}/usr/share/licenses/v8
}
# vim:set ts=2 sw=2 et:
@JanMarvin
Copy link
Author

V8 from the stable chrome/chromium builds
https://omahaproxy.appspot.com/

@izahn
Copy link

izahn commented May 31, 2019

this pkgbuild depends (makedepends?) on lld

@JanMarvin
Copy link
Author

Hey @izahn, thanks for your comment (somehow I was not notified by github). The issue with lld was fixed after moving this PKGBUILD to a repo. Have a look here: https://github.com/JanMarvin/v8-R
A repo is easier to maintain for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment