Commit ce35ce48 authored by iv's avatar iv

Add NodeJS (more recent version).

parent d71cb8d0
......@@ -33,5 +33,9 @@ Original: https://gitweb.gentoo.org/repo/gentoo.git/plain/sys-fs/cryptsetup/cryp
## Existing ebuilds
Original: https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-python/virtualenv/virtualenv-13.1.2-r1.ebuild (modified)
# nodejs (more recent version than the one in Chromium OS overlay)
## Existing ebuilds
Original: https://gitweb.gentoo.org/repo/gentoo.git/plain/net-libs/nodejs/nodejs-4.4.1.ebuild
# TODO
- it could be nice to create our own portage overlay instead of adding to Chromium OS's one
DIST node-v4.4.1.tar.xz 13112424 SHA256 3a37c89a3ac965688f9e6557579993b73eee44195a5fd53fded03a667d3d6a0a SHA512 53b479085a6f43b5932c75729b21a3efa67534ce6c10445c2ba66492a0e3f12d8e5de8d75bd583239b68f3d5ac1b639d45fd43d631d8a5ef013e25bff0fdab22 WHIRLPOOL d9cee2193a0f94f17ab84722ffb9999f156014cbe0b83bd138d5404ec543a3398bb4d1b965940b19230cf069337dfb5e0159aae3e694137e09261133ae2e2fdd
commit 46ac7cd4229eac5e0182ab62b7ed844c24a8c52e
Author: Johan Bergström <bugs@bergstroem.nu>
Date: Wed Feb 10 22:45:59 2016 +1100
npm: set global config folder to /etc/npm
npm previously assumed that the global config path would be
based on $prefix/etc. Since gentoo installs nodejs into /usr,
this means we're also creating /usr/etc which is less desirable.
This patch will likely never go upstream.
diff --git a/deps/npm/lib/config/core.js b/deps/npm/lib/config/core.js
index d1306eb..bd2ef89 100644
--- a/deps/npm/lib/config/core.js
+++ b/deps/npm/lib/config/core.js
@@ -150,16 +150,14 @@ function load_ (builtin, rc, cli, cb) {
// Eg, `npm config get globalconfig --prefix ~/local` should
// return `~/local/etc/npmrc`
// annoying humans and their expectations!
- if (conf.get('prefix')) {
- var etc = path.resolve(conf.get('prefix'), 'etc')
- mkdirp(etc, function () {
- defaults.globalconfig = path.resolve(etc, 'npmrc')
- defaults.globalignorefile = path.resolve(etc, 'npmignore')
- afterUserContinuation()
- })
- } else {
+
+ // gentoo deviates wrt global config; store in /etc/npm
+ var globalconfig = path.resolve('/etc', 'npm')
+ mkdirp(globalconfig, function () {
+ defaults.globalconfig = path.resolve(globalconfig, 'npmrc')
+ defaults.globalignorefile = path.resolve(globalconfig, 'npmignore')
afterUserContinuation()
- }
+ })
}
function afterUserContinuation () {
--- src/node_buffer.cc 2011-10-25 08:45:00.665600749 +0200
+++ src/node_buffer.cc 2011-10-25 08:45:31.168622565 +0200
@@ -478,7 +478,7 @@
if (written > 0 && p[written-1] == '\0' && char_written == length) {
uint16_t last_char;
- s->Write(&last_char, length - 1, 1, String::NO_HINTS);
+ s->Write(&last_char, length - 1, 1, String::NO_OPTIONS);
if (last_char != 0 || written > s->Utf8Length()) {
written--;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>bugs@bergstroem.nu</email>
<name>Johan Bergstroem</name>
</maintainer>
<maintainer type="person">
<email>patrick@gentoo.org</email>
<name>Patrick Lauer</name>
</maintainer>
<maintainer type="project">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
<use>
<flag name="npm">Enable NPM package manager</flag>
<flag name="snapshot">Enable snapshot creation for faster startup</flag>
</use>
</pkgmetadata>
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="threads"
inherit flag-o-matic pax-utils python-single-r1 toolchain-funcs
DESCRIPTION="A JavaScript runtime built on Chrome's V8 JavaScript engine"
HOMEPAGE="https://nodejs.org/"
SRC_URI="https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz"
LICENSE="Apache-1.1 Apache-2.0 BSD BSD-2 MIT"
SLOT="0"
KEYWORDS="amd64 ~arm ~arm64 x86 ~x64-macos"
IUSE="cpu_flags_x86_sse2 debug icu +npm snapshot +ssl test"
RDEPEND="icu? ( >=dev-libs/icu-55:= )
npm? ( ${PYTHON_DEPS} )
>=net-libs/http-parser-2.5.2:=
>=dev-libs/libuv-1.8.0:=
>=dev-libs/openssl-1.0.2g:0=[-bindist]
sys-libs/zlib"
DEPEND="${RDEPEND}
${PYTHON_DEPS}
test? ( net-misc/curl )"
S="${WORKDIR}/node-v${PV}"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
pkg_pretend() {
(use x86 && ! use cpu_flags_x86_sse2) && \
die "Your CPU doesn't support the required SSE2 instruction."
( [[ ${MERGE_TYPE} != "binary" ]] && ! test-flag-CXX -std=c++11 ) && \
die "Your compiler doesn't support C++11. Use GCC 4.8, Clang 3.3 or newer."
}
src_prepare() {
tc-export CC CXX PKG_CONFIG
export V=1 # Verbose build
export BUILDTYPE=Release
# fix compilation on Darwin
# https://code.google.com/p/gyp/issues/detail?id=260
sed -i -e "/append('-arch/d" tools/gyp/pylib/gyp/xcode_emulation.py || die
# make sure we use python2.* while using gyp
sed -i -e "s/python/${EPYTHON}/" deps/npm/node_modules/node-gyp/gyp/gyp || die
sed -i -e "s/|| 'python'/|| '${EPYTHON}'/" deps/npm/node_modules/node-gyp/lib/configure.js || die
# less verbose install output (stating the same as portage, basically)
sed -i -e "/print/d" tools/install.py || die
# proper libdir, hat tip @ryanpcmcquen https://github.com/iojs/io.js/issues/504
local LIBDIR=$(get_libdir)
sed -i -e "s|lib/|${LIBDIR}/|g" tools/install.py || die
sed -i -e "s/'lib'/'${LIBDIR}'/" lib/module.js || die
sed -i -e "s|\"lib\"|\"${LIBDIR}\"|" deps/npm/lib/npm.js || die
# Avoid a test that I've only been able to reproduce from emerge. It doesnt
# seem sandbox related either (invoking it from a sandbox works fine).
# The issue is that no stdin handle is openened when asked for one.
# It doesn't really belong upstream , so it'll just be removed until someone
# with more gentoo-knowledge than me (jbergstroem) figures it out.
rm test/parallel/test-stdout-close-unref.js || die
# debug builds. change install path, remove optimisations and override buildtype
if use debug; then
sed -i -e "s|out/Release/|out/Debug/|g" tools/install.py || die
BUILDTYPE=Debug
fi
epatch_user
}
src_configure() {
local myarch=""
local myconf+=( --shared-openssl --shared-libuv --shared-http-parser --shared-zlib )
use npm || myconf+=( --without-npm )
use icu && myconf+=( --with-intl=system-icu )
use snapshot && myconf+=( --with-snapshot )
use ssl || myconf+=( --without-ssl )
use debug && myconf+=( --debug )
case ${ABI} in
x86) myarch="ia32";;
amd64) myarch="x64";;
x32) myarch="x32";;
arm) myarch="arm";;
arm64) myarch="arm64";;
*) die "Unrecognized ARCH ${ARCH}";;
esac
GYP_DEFINES="linux_use_gold_flags=0
linux_use_bundled_binutils=0
linux_use_bundled_gold=0" \
"${PYTHON}" configure \
--prefix="${EPREFIX}"/usr \
--dest-cpu=${myarch} \
--without-dtrace \
"${myconf[@]}" || die
}
src_compile() {
emake -C out mksnapshot
pax-mark m "out/${BUILDTYPE}/mksnapshot"
emake -C out
}
src_install() {
local LIBDIR="${ED}/usr/$(get_libdir)"
emake install DESTDIR="${ED}" PREFIX=/usr
if use npm; then
dodoc -r "${LIBDIR}"/node_modules/npm/html
rm -rf "${LIBDIR}"/node_modules/npm/{doc,html} || die
find "${LIBDIR}"/node_modules -type f -name "LICENSE*" -or -name "LICENCE*" -delete || die
fi
# set up a symlink structure that npm expects..
dodir /usr/include/node/deps/{v8,uv}
dosym . /usr/include/node/src
for var in deps/{uv,v8}/include; do
dosym ../.. /usr/include/node/${var}
done
pax-mark -m "${ED}"/usr/bin/node
}
src_test() {
out/${BUILDTYPE}/cctest || die
"${PYTHON}" tools/test.py --mode=${BUILDTYPE,,} -J message parallel sequential || die
}
pkg_postinst() {
einfo "When using node-gyp to install native modules, you can avoid"
einfo "having to download the full tarball by doing the following:"
einfo ""
einfo "node-gyp --nodedir /usr/include/node <command>"
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment