# Maintainer: Felix Yan # Contributor Bartłomiej Piotrowski # Contributor: Thomas Dziedzic < gostrc at gmail > # Contributor: James Campos # Contributor: BlackEagle < ike DOT devolder AT gmail DOT com > # Contributor: Dongsheng Cai # Contributor: Masutu Subric # Contributor: TIanyi Cui # Contributor: Jason Plum pkgname=nodejs pkgver=0.12.1 _npmver=2.7.4 pkgrel=1 pkgdesc='Evented I/O for V8 javascript' arch=('i686' 'x86_64' 'arm') url='http://nodejs.org/' license=('MIT') provides=('nodejs-node-gyp') depends=('openssl' 'zlib') # 'libuv' 'v8' 'c-ares') makedepends=('python2' 'git' 'procps-ng') optdepends=('python2: for node-gyp') checkdepends=('curl') options=('!emptydirs' '!strip') source=("http://nodejs.org/dist/v$pkgver/node-v$pkgver.tar.gz" git+https://github.com/npm/npm.git#tag=v$_npmver) sha256sums=('30693376519c9736bcb22d44513252aee1d9463d78ac6c744ecb6d13fd91d680' 'SKIP') set_flags_for_arm() { if [ "$CARCH" == "arm" ]; then # CXXFLAGS is here to bash it over the head. It has a bad habit. EABI=soft CXXFLAGS="$CXXFLAGS -march=armv5t -mno-unaligned-access" ; GYPFLAGS="-Darmeabi=soft -Dv8_can_use_vfp_instructions=false -Dv8_can_use_unaligned_accesses=false -Darmv7=0" VFP3=off VFP2=off fi if [ "$CARCH" == "armv6h" ]; then EABI=hard GYPFLAGS="-Darmeabi=hard -Dv8_use_arm_eabi_hardfloat=true -Dv8_can_use_vfp3_instructions=false -Dv8_can_use_vfp2_instructions=true -Darm7=0 -Darm_vfp=vfp" VFP3=off VFP2=on fi if [ "$CARCH" == "armv7h" ]; then EABI=hard GYPFLAGS="-Darmeabi=hard -Dv8_use_arm_eabi_hardfloat=true -Dv8_can_use_vfp3_instructions=true -Dv8_can_use_vfp2_instructions=true -Darm7=1" VFP3=on VFP2=on fi export CXXFLAGS export GYPFLAGS } prepare() { cd node-v$pkgver # We need newer version of npm to fix bugs rm -r deps/npm ln -s "$srcdir/npm" deps rm -r "$srcdir/npm/.git" msg 'fixing for python2 name' find -type f -exec sed -e 's_^#!/usr/bin/env python$_&2_' -e 's_^\(#!/usr/bin/python2\).[45]$_\1_' -e 's_^#!/usr/bin/python$_&2_' -e "s_'python'_'python2'_" -i {} \; find test -type f -exec sed -e "s|python |python2 |" -i {} \; sed -i "s|python |python2 |" Makefile } build() { cd node-v$pkgver export PYTHON=python2 set_flags_for_arm # short-cutting python=python2 for GYP, as it will only be used here. export PYTHON=python2 if [ ! -f "${srcdir}/python" ]; then ln -s `which python2` ${srcdir}/python ; fi PATH="${srcdir}:$PATH"; export PATH ; # we're going to attept to make use of this example # https://github.com/joyent/node/issues/2131#issuecomment-3208846 # https://gist.github.com/1574158 ./configure \ --prefix=/usr \ --without-snapshot \ --with-arm-float-abi=$EABI \ --shared-openssl \ --shared-zlib # --shared-libuv # --shared-v8 \ # --shared-v8-libpath=/usr/lib \ # --shared-v8-includes=/usr/include make cd ../npm ../node-v$pkgver/node cli.js install ronn marked PATH="$srcdir/node-v$pkgver:$PATH" make ../node-v$pkgver/node cli.js uninstall ronn marked marked-man } check() { cd node-v${pkgver} make test || warning "Tests failed" } package() { cd node-v${pkgver} # suppress re-compile(with out customized flags) by 'make install'. set_flags_for_arm make DESTDIR=${pkgdir} install # install docs as per user request install -d ${pkgdir}/usr/share/doc/nodejs cp -r doc/api/{*.html,assets} \ ${pkgdir}/usr/share/doc/nodejs # compress man pages find "$pkgdir"/usr/lib/node_modules/npm/man -type f | xargs gzip -9 install -D -m644 LICENSE \ ${pkgdir}/usr/share/licenses/nodejs/LICENSE install -d "$pkgdir"/usr/share/man/{man1,man3,man5,man7} for _dir in man1 man3 man5 man7; do cd "$pkgdir"/usr/lib/node_modules/npm/man/$_dir for _file in *; do ln -s /usr/lib/node_modules/npm/man/$_dir/$_file "$pkgdir"/usr/share/man/$_dir/ done done ln -s /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js "$pkgdir"/usr/bin/node-gyp } # vim:set ts=2 sw=2 et: