From cc3d0d6ee4cc4d5a73dd017708932a3e794b7c27 Mon Sep 17 00:00:00 2001 From: ormorph Date: Thu, 11 Feb 2021 04:09:19 +0300 Subject: [PATCH] Deprecated broken nodejs ebuilds removed (#31) --- net-libs/nodejs/Manifest | 1 - .../files/gentoo-global-npm-config.patch | 40 ---- .../nodejs-10.3.0-global-npm-config.patch | 20 -- .../nodejs/files/nodejs-99999999-llhttp.patch | 20 -- net-libs/nodejs/metadata.xml | 13 -- net-libs/nodejs/nodejs-9.11.2-r2.ebuild | 208 ----------------- net-libs/nodejs/nodejs-9.11.2-r4.ebuild | 210 ----------------- net-libs/nodejs/nodejs-9.11.2-r6.ebuild | 212 ------------------ 8 files changed, 724 deletions(-) delete mode 100644 net-libs/nodejs/Manifest delete mode 100644 net-libs/nodejs/files/gentoo-global-npm-config.patch delete mode 100644 net-libs/nodejs/files/nodejs-10.3.0-global-npm-config.patch delete mode 100644 net-libs/nodejs/files/nodejs-99999999-llhttp.patch delete mode 100644 net-libs/nodejs/metadata.xml delete mode 100644 net-libs/nodejs/nodejs-9.11.2-r2.ebuild delete mode 100644 net-libs/nodejs/nodejs-9.11.2-r4.ebuild delete mode 100644 net-libs/nodejs/nodejs-9.11.2-r6.ebuild diff --git a/net-libs/nodejs/Manifest b/net-libs/nodejs/Manifest deleted file mode 100644 index acf57ca6..00000000 --- a/net-libs/nodejs/Manifest +++ /dev/null @@ -1 +0,0 @@ -DIST node-v9.11.2.tar.xz 18507832 BLAKE2B f5ef210632065f2c99dbe3fd210fa832bdd09670dd8bd736dce2c7ab2fc87c3a717cda11c2a09c325b25a72d99431cbc79c0ee7c202ece5fc41786f1f0aa68e4 SHA512 ca49a1f3aaa8b25faa62c411a96551c8977bb43a22f8f171f27d3585306f379b6a12e55e60ddca04a6f2f8c62a1b3fed9e66c02898d80bf7ca59278536e04c13 diff --git a/net-libs/nodejs/files/gentoo-global-npm-config.patch b/net-libs/nodejs/files/gentoo-global-npm-config.patch deleted file mode 100644 index e7346b82..00000000 --- a/net-libs/nodejs/files/gentoo-global-npm-config.patch +++ /dev/null @@ -1,40 +0,0 @@ -commit 46ac7cd4229eac5e0182ab62b7ed844c24a8c52e -Author: Johan Bergström -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 () { diff --git a/net-libs/nodejs/files/nodejs-10.3.0-global-npm-config.patch b/net-libs/nodejs/files/nodejs-10.3.0-global-npm-config.patch deleted file mode 100644 index 9c7fe688..00000000 --- a/net-libs/nodejs/files/nodejs-10.3.0-global-npm-config.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/deps/npm/lib/config/core.js -+++ b/deps/npm/lib/config/core.js -@@ -153,11 +153,12 @@ - // 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') -- defaults.globalconfig = path.resolve(etc, 'npmrc') -- defaults.globalignorefile = path.resolve(etc, 'npmignore') -- } -+ // 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') -+ }) - - conf.addFile(conf.get('globalconfig'), 'global') - diff --git a/net-libs/nodejs/files/nodejs-99999999-llhttp.patch b/net-libs/nodejs/files/nodejs-99999999-llhttp.patch deleted file mode 100644 index 1b6eb9fb..00000000 --- a/net-libs/nodejs/files/nodejs-99999999-llhttp.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/node.gypi -+++ b/node.gypi -@@ -169,11 +169,15 @@ - - [ 'node_shared_http_parser=="false"', { - 'dependencies': [ -- 'deps/http_parser/http_parser.gyp:http_parser', -- 'deps/llhttp/llhttp.gyp:llhttp' -+ 'deps/http_parser/http_parser.gyp:http_parser' - ], - } ], - -+ [ '"true"', { 'dependencies': [ -+ 'deps/llhttp/llhttp.gyp:llhttp' -+ ], -+ }], -+ - [ 'node_shared_cares=="false"', { - 'dependencies': [ 'deps/cares/cares.gyp:cares' ], - }], diff --git a/net-libs/nodejs/metadata.xml b/net-libs/nodejs/metadata.xml deleted file mode 100644 index aaaba184..00000000 --- a/net-libs/nodejs/metadata.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - jer@gentoo.org - - - Enable V8 inspector - Enable NPM package manager - Enable snapshot creation for faster startup - Enable SystemTAP/DTrace tracing - - diff --git a/net-libs/nodejs/nodejs-9.11.2-r2.ebuild b/net-libs/nodejs/nodejs-9.11.2-r2.ebuild deleted file mode 100644 index 795c28bb..00000000 --- a/net-libs/nodejs/nodejs-9.11.2-r2.ebuild +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright 1999-2018 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python2_7 ) -PYTHON_REQ_USE="threads" - -inherit bash-completion-r1 eutils 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 ~ppc ~ppc64 ~x86 ~amd64-linux ~x64-macos" -IUSE="cpu_flags_x86_sse2 debug doc icu inspector +npm +snapshot +ssl systemtap test" -REQUIRED_USE=" - ${PYTHON_REQUIRED_USE} - inspector? ( icu ssl ) - npm? ( ssl ) -" - -RDEPEND=" - >=dev-libs/libuv-1.19.2:= - >=net-libs/http-parser-2.8.0:= - >=net-libs/nghttp2-1.32.0 - sys-libs/zlib - icu? ( >=dev-libs/icu-61.1:= ) - ssl? ( - || ( - ~dev-libs/openssl-1.0.2o:0= - ~dev-libs/openssl-1.0.2q:0= - >=dev-libs/openssl-1.1.0:0=[-bindist] - ) - ) - -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} - systemtap? ( dev-util/systemtap ) - test? ( net-misc/curl ) -" -S="${WORKDIR}/node-v${PV}" -PATCHES=( - "${FILESDIR}"/gentoo-global-npm-config.patch -) - -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 - 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/|| 'python2'/|| '${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 deps/npm/lib/npm.js || die - - # Avoid writing a depfile, not useful - sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die - - sed -i -e "/'-O3'/d" common.gypi deps/v8/gypfiles/toolchain.gypi || 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 - - default -} - -src_configure() { - local myconf=( --shared-http-parser --shared-libuv --shared-nghttp2 --shared-zlib ) - use debug && myconf+=( --debug ) - use icu && myconf+=( --with-intl=system-icu ) || myconf+=( --with-intl=none ) - use inspector || myconf+=( --without-inspector ) - use npm || myconf+=( --without-npm ) - use snapshot && myconf+=( --with-snapshot ) - use ssl && myconf+=( --shared-openssl ) || myconf+=( --without-ssl ) - - local myarch="" - case ${ABI} in - amd64) myarch="x64";; - arm) myarch="arm";; - arm64) myarch="arm64";; - ppc64) myarch="ppc64";; - x32) myarch="x32";; - x86) myarch="ia32";; - *) myarch="${ABI}";; - 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} \ - $(use_with systemtap 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="${D}" - pax-mark -m "${ED}"usr/bin/node - - # set up a symlink structure that node-gyp 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 - - if use doc; then - # Patch docs to make them offline readable - for i in `grep -rl 'fonts.googleapis.com' "${S}"/out/doc/api/*`; do - sed -i '/fonts.googleapis.com/ d' $i; - done - # Install docs! - dohtml -r "${S}"/doc/* - fi - - if use npm; then - dodir /etc/npm - - # Install bash completion for `npm` - # We need to temporarily replace default config path since - # npm otherwise tries to write outside of the sandbox - local npm_config="usr/$(get_libdir)/node_modules/npm/lib/config/core.js" - sed -i -e "s|'/etc'|'${ED}/etc'|g" "${ED}/${npm_config}" || die - local tmp_npm_completion_file="$(emktemp)" - "${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}" - newbashcomp "${tmp_npm_completion_file}" npm - sed -i -e "s|'${ED}/etc'|'/etc'|g" "${ED}/${npm_config}" || die - - # Move man pages - doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/* - - # Clean up - rm "${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile} || die - rm -rf "${LIBDIR}"/node_modules/npm/{doc,html,man} || die - - local find_exp="-or -name" - local find_name=() - for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \ - ".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \ - "*.md" "*.markdown" "*.bat" "*.cmd"; do - find_name+=( ${find_exp} "${match}" ) - done - - # Remove various development and/or inappropriate files and - # useless docs of dependend packages. - find "${LIBDIR}"/node_modules \ - \( -type d -name examples \) -or \( -type f \( \ - -iname "LICEN?E*" \ - "${find_name[@]}" \ - \) \) -exec rm -rf "{}" \; - fi -} - -src_test() { - out/${BUILDTYPE}/cctest || die - "${PYTHON}" tools/test.py --mode=${BUILDTYPE,,} -J message parallel sequential || die -} - -pkg_postinst() { - einfo "The global npm config lives in /etc/npm. This deviates slightly" - einfo "from upstream which otherwise would have it live in /usr/etc/." - einfo "" - einfo "Protip: When using node-gyp to install native modules, you can" - einfo "avoid having to download extras by doing the following:" - einfo "$ node-gyp --nodedir /usr/include/node " -} diff --git a/net-libs/nodejs/nodejs-9.11.2-r4.ebuild b/net-libs/nodejs/nodejs-9.11.2-r4.ebuild deleted file mode 100644 index 35706f9b..00000000 --- a/net-libs/nodejs/nodejs-9.11.2-r4.ebuild +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python2_7 ) -PYTHON_REQ_USE="threads" - -inherit bash-completion-r1 eutils 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 ~ppc ~ppc64 ~x86 ~amd64-linux ~x64-macos" -IUSE="cpu_flags_x86_sse2 debug doc icu inspector +npm +snapshot +ssl systemtap test" -REQUIRED_USE=" - ${PYTHON_REQUIRED_USE} - inspector? ( icu ssl ) - npm? ( ssl ) -" - -RDEPEND=" - >=dev-libs/libuv-1.19.2:= - >=net-libs/http-parser-2.8.0:= - >=net-libs/nghttp2-1.32.0 - sys-libs/zlib - icu? ( >=dev-libs/icu-61.1:= ) - ssl? ( - || ( - ~dev-libs/openssl-1.0.2o:0= - ~dev-libs/openssl-1.0.2q:0= - ~dev-libs/openssl-1.0.2r:0= - ~dev-libs/openssl-1.0.2s:0= - >=dev-libs/openssl-1.1.0:0=[-bindist] - ) - ) - -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} - systemtap? ( dev-util/systemtap ) - test? ( net-misc/curl ) -" -S="${WORKDIR}/node-v${PV}" -PATCHES=( - "${FILESDIR}"/gentoo-global-npm-config.patch -) - -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 - 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/|| 'python2'/|| '${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 deps/npm/lib/npm.js || die - - # Avoid writing a depfile, not useful - sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die - - sed -i -e "/'-O3'/d" common.gypi deps/v8/gypfiles/toolchain.gypi || 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 - - default -} - -src_configure() { - local myconf=( --shared-http-parser --shared-libuv --shared-nghttp2 --shared-zlib ) - use debug && myconf+=( --debug ) - use icu && myconf+=( --with-intl=system-icu ) || myconf+=( --with-intl=none ) - use inspector || myconf+=( --without-inspector ) - use npm || myconf+=( --without-npm ) - use snapshot && myconf+=( --with-snapshot ) - use ssl && myconf+=( --shared-openssl ) || myconf+=( --without-ssl ) - - local myarch="" - case ${ABI} in - amd64) myarch="x64";; - arm) myarch="arm";; - arm64) myarch="arm64";; - ppc64) myarch="ppc64";; - x32) myarch="x32";; - x86) myarch="ia32";; - *) myarch="${ABI}";; - 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} \ - $(use_with systemtap 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="${D}" - pax-mark -m "${ED}"usr/bin/node - - # set up a symlink structure that node-gyp 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 - - if use doc; then - # Patch docs to make them offline readable - for i in `grep -rl 'fonts.googleapis.com' "${S}"/out/doc/api/*`; do - sed -i '/fonts.googleapis.com/ d' $i; - done - # Install docs! - dohtml -r "${S}"/doc/* - fi - - if use npm; then - dodir /etc/npm - - # Install bash completion for `npm` - # We need to temporarily replace default config path since - # npm otherwise tries to write outside of the sandbox - local npm_config="usr/$(get_libdir)/node_modules/npm/lib/config/core.js" - sed -i -e "s|'/etc'|'${ED}/etc'|g" "${ED}/${npm_config}" || die - local tmp_npm_completion_file="$(emktemp)" - "${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}" - newbashcomp "${tmp_npm_completion_file}" npm - sed -i -e "s|'${ED}/etc'|'/etc'|g" "${ED}/${npm_config}" || die - - # Move man pages - doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/* - - # Clean up - rm "${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile} || die - rm -rf "${LIBDIR}"/node_modules/npm/{doc,html,man} || die - - local find_exp="-or -name" - local find_name=() - for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \ - ".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \ - "*.md" "*.markdown" "*.bat" "*.cmd"; do - find_name+=( ${find_exp} "${match}" ) - done - - # Remove various development and/or inappropriate files and - # useless docs of dependend packages. - find "${LIBDIR}"/node_modules \ - \( -type d -name examples \) -or \( -type f \( \ - -iname "LICEN?E*" \ - "${find_name[@]}" \ - \) \) -exec rm -rf "{}" \; - fi -} - -src_test() { - out/${BUILDTYPE}/cctest || die - "${PYTHON}" tools/test.py --mode=${BUILDTYPE,,} -J message parallel sequential || die -} - -pkg_postinst() { - einfo "The global npm config lives in /etc/npm. This deviates slightly" - einfo "from upstream which otherwise would have it live in /usr/etc/." - einfo "" - einfo "Protip: When using node-gyp to install native modules, you can" - einfo "avoid having to download extras by doing the following:" - einfo "$ node-gyp --nodedir /usr/include/node " -} diff --git a/net-libs/nodejs/nodejs-9.11.2-r6.ebuild b/net-libs/nodejs/nodejs-9.11.2-r6.ebuild deleted file mode 100644 index 9d8f1709..00000000 --- a/net-libs/nodejs/nodejs-9.11.2-r6.ebuild +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright 1999-2019 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python2_7 ) -PYTHON_REQ_USE="threads" - -inherit bash-completion-r1 eutils 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 ~ppc ~ppc64 ~x86 ~amd64-linux ~x64-macos" -IUSE="cpu_flags_x86_sse2 debug doc icu inspector +npm +snapshot +ssl systemtap test" -REQUIRED_USE=" - ${PYTHON_REQUIRED_USE} - inspector? ( icu ssl ) - npm? ( ssl ) -" - -RDEPEND=" - >=dev-libs/libuv-1.19.2:= - >=net-libs/http-parser-2.8.0:= - >=net-libs/nghttp2-1.32.0 - sys-libs/zlib - icu? ( >=dev-libs/icu-61.1:= ) - ssl? ( - || ( - ~dev-libs/openssl-1.0.2o:0= - ~dev-libs/openssl-1.0.2q:0= - ~dev-libs/openssl-1.0.2r:0= - ~dev-libs/openssl-1.0.2s:0= - ~dev-libs/openssl-1.0.2t:0= - ~dev-libs/openssl-1.0.2u:0= - >=dev-libs/openssl-1.1.0:0=[-bindist] - ) - ) - -" -DEPEND=" - ${RDEPEND} - ${PYTHON_DEPS} - systemtap? ( dev-util/systemtap ) - test? ( net-misc/curl ) -" -S="${WORKDIR}/node-v${PV}" -PATCHES=( - "${FILESDIR}"/gentoo-global-npm-config.patch -) - -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 - 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/|| 'python2'/|| '${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 deps/npm/lib/npm.js || die - - # Avoid writing a depfile, not useful - sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die - - sed -i -e "/'-O3'/d" common.gypi deps/v8/gypfiles/toolchain.gypi || 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 - - default -} - -src_configure() { - local myconf=( --shared-http-parser --shared-libuv --shared-nghttp2 --shared-zlib ) - use debug && myconf+=( --debug ) - use icu && myconf+=( --with-intl=system-icu ) || myconf+=( --with-intl=none ) - use inspector || myconf+=( --without-inspector ) - use npm || myconf+=( --without-npm ) - use snapshot && myconf+=( --with-snapshot ) - use ssl && myconf+=( --shared-openssl ) || myconf+=( --without-ssl ) - - local myarch="" - case ${ABI} in - amd64) myarch="x64";; - arm) myarch="arm";; - arm64) myarch="arm64";; - ppc64) myarch="ppc64";; - x32) myarch="x32";; - x86) myarch="ia32";; - *) myarch="${ABI}";; - 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} \ - $(use_with systemtap 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="${D}" - pax-mark -m "${ED}"usr/bin/node - - # set up a symlink structure that node-gyp 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 - - if use doc; then - # Patch docs to make them offline readable - for i in `grep -rl 'fonts.googleapis.com' "${S}"/out/doc/api/*`; do - sed -i '/fonts.googleapis.com/ d' $i; - done - # Install docs! - dohtml -r "${S}"/doc/* - fi - - if use npm; then - dodir /etc/npm - - # Install bash completion for `npm` - # We need to temporarily replace default config path since - # npm otherwise tries to write outside of the sandbox - local npm_config="usr/$(get_libdir)/node_modules/npm/lib/config/core.js" - sed -i -e "s|'/etc'|'${ED}/etc'|g" "${ED}/${npm_config}" || die - local tmp_npm_completion_file="$(emktemp)" - "${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}" - newbashcomp "${tmp_npm_completion_file}" npm - sed -i -e "s|'${ED}/etc'|'/etc'|g" "${ED}/${npm_config}" || die - - # Move man pages - doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/* - - # Clean up - rm "${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile} || die - rm -rf "${LIBDIR}"/node_modules/npm/{doc,html,man} || die - - local find_exp="-or -name" - local find_name=() - for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \ - ".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \ - "*.md" "*.markdown" "*.bat" "*.cmd"; do - find_name+=( ${find_exp} "${match}" ) - done - - # Remove various development and/or inappropriate files and - # useless docs of dependend packages. - find "${LIBDIR}"/node_modules \ - \( -type d -name examples \) -or \( -type f \( \ - -iname "LICEN?E*" \ - "${find_name[@]}" \ - \) \) -exec rm -rf "{}" \; - fi -} - -src_test() { - out/${BUILDTYPE}/cctest || die - "${PYTHON}" tools/test.py --mode=${BUILDTYPE,,} -J message parallel sequential || die -} - -pkg_postinst() { - einfo "The global npm config lives in /etc/npm. This deviates slightly" - einfo "from upstream which otherwise would have it live in /usr/etc/." - einfo "" - einfo "Protip: When using node-gyp to install native modules, you can" - einfo "avoid having to download extras by doing the following:" - einfo "$ node-gyp --nodedir /usr/include/node " -}