GithubHelp home page GithubHelp logo

node-build's Introduction

node-build

Tests Latest Homebrew Release Latest GitHub Release Latest npm Release

node-build is a command-line tool that simplifies installation of any Node version from source or precompiled binary on Unix-like systems.

It is available as a plugin for nodenv as the nodenv install command, or as a standalone program as the node-build command.

Installation

Homebrew package manager

brew install node-build

Upgrade with:

brew upgrade node-build

Clone as nodenv plugin using git

git clone https://github.com/nodenv/node-build.git "$(nodenv root)"/plugins/node-build

Upgrade with:

git -C "$(nodenv root)"/plugins/node-build pull

Install manually as a standalone program

First, download a tarball from https://github.com/nodenv/node-build/releases/latest. Then:

tar -xzf node-build-*.tar.gz
PREFIX=/usr/local ./node-build-*/install.sh

Usage

Basic Usage

# As a nodenv plugin
$ nodenv install --list                    # lists all available versions of Node
$ nodenv install 10.13.0                   # installs Node 10.13.0 to ~/.nodenv/versions

# As a standalone program
$ node-build --definitions                 # lists all available versions of Node
$ node-build 10.13.0 ~/local/node-10.13.0  # installs Node 10.13.0 to ~/local/node-10.13.0

Warning node-build mostly does not verify that system dependencies are present before downloading and attempting to compile Node from source. Please ensure that all requisite libraries such as build tools and development headers are already present on your system.

Firstly, if a precompiled binary exists for your platform, node-build downloads and installs it. Otherwise it will build node from source. Basically, what node-build does when installing a Node version is this:

  • Downloads an official tarball of Node source code;
  • Extracts the archive into a temporary directory on your system;
  • Executes ./configure --prefix=/path/to/destination in the source code;
  • Runs make install to compile Node;
  • Verifies that the installed Node is functional.

Advanced Usage

Binaries

By default, node-build will attempt to match one of the precompiled binaries to your platform. If there is a binary for your platform, it will install it instead of compiling from source. To force compilation, pass the -c or --compile flag.

Custom Build Definitions

To install a version of Node that is not recognized by node-build, you can specify the path to a custom build definition file in place of a Node version number.

Check out default build definitions as examples on how to write definition files.

Generating Latest-Release Build Definitions

Additionally, check out the node-build-update-defs plugin. It generates the standard build definitions for releases available from nodejs.org. This allows you to install node versions as soon as they are available from nodejs.org, without waiting for node-build itself to provide them. Once installed:

nodenv update-version-defs

Custom Build Configuration

The build process may be configured through the following environment variables:

Variable Function
TMPDIR Where temporary files are stored.
NODE_BUILD_BUILD_PATH Where sources are downloaded and built. (Default: a timestamped subdirectory of TMPDIR)
NODE_BUILD_CACHE_PATH Where to cache downloaded package files. (Default: ~/.nodenv/cache if invoked as nodenv plugin)
NODE_BUILD_HTTP_CLIENT One of aria2c, curl, or wget to use for downloading. (Default: first one found in PATH)
NODE_BUILD_ARIA2_OPTS Additional options to pass to aria2c for downloading.
NODE_BUILD_CURL_OPTS Additional options to pass to curl for downloading.
NODE_BUILD_WGET_OPTS Additional options to pass to wget for downloading.
NODE_BUILD_MIRROR_CMD A command to construct the package mirror URL.
NODE_BUILD_MIRROR_URL Custom mirror URL root.
NODE_BUILD_MIRROR_PACKAGE_URL Custom complete mirror URL (e.g. http://mirror.example.com/package-1.0.0.tar.gz).
NODE_BUILD_SKIP_MIRROR Bypass the download mirror and fetch all package files from their original URLs.
NODE_BUILD_ROOT Custom build definition directory. (Default: share/node-build)
NODE_BUILD_DEFINITIONS Additional paths to search for build definitions. (Colon-separated list)
CC Path to the C compiler.
NODE_CFLAGS Additional CFLAGS options (e.g., to override -O3).
CONFIGURE_OPTS Additional ./configure options.
MAKE Custom make command (e.g., gmake).
MAKE_OPTS / MAKEOPTS Additional make options.
MAKE_INSTALL_OPTS Additional make install options.
NODE_CONFIGURE_OPTS Additional ./configure options (applies only to Node source).
NODE_MAKE_OPTS Additional make options (applies only to Node source).
NODE_MAKE_INSTALL_OPTS Additional make install options (applies only to Node source).

Applying Patches

Both nodenv install and node-build commands support the -p/--patch flag to apply a patch to the Node source code before building. Patches are read from standard input:

# applying a single patch
$ nodenv install --patch 11.1.0 < /path/to/node.patch

# applying a patch from HTTP
$ nodenv install --patch 11.1.0 < <(curl -sSL http://git.io/node.patch)

# applying multiple patches
$ cat fix1.patch fix2.patch | nodenv install --patch 11.1.0

Checksum Verification

All Node definition files bundled with node-build include checksums for packages, meaning that all externally downloaded packages are automatically checked for integrity after fetching.

See the next section for more information on how to author checksums.

Package Mirrors

To speed up downloads, node-build can fetch package files from a mirror. To benefit from this, the packages must specify their checksum:

 # example:
 install_package "node-v12.0.0" "https://nodejs.org/dist/v12.0.0/node-v12.0.0.tar.gz#<SHA2>"

node-build will first try to fetch this package from $NODE_BUILD_MIRROR_URL/<SHA2> (note: this is the complete URL), where <SHA2> is the checksum for the file. It will fall back to downloading the package from the original location if:

  • the package was not found on the mirror;
  • the mirror is down;
  • the download is corrupt, i.e. the file's checksum doesn't match;
  • no tool is available to calculate the checksum; or
  • NODE_BUILD_SKIP_MIRROR is enabled.

You may specify a custom mirror by setting NODE_BUILD_MIRROR_URL.

If a mirror site doesn't conform to the above URL format, you can specify the complete URL by setting NODE_BUILD_MIRROR_PACKAGE_URL. It behaves the same as NODE_BUILD_MIRROR_URL except being a complete URL.

For more control over the construction of the mirror url, you can specify a command by setting NODE_BUILD_MIRROR_CMD. node-build will invoke NODE_BUILD_MIRROR_CMD with two arguments: package_url and checksum. The provided command should print the desired mirror's complete package URL to STDOUT.

Keeping the build directory after installation

Both node-build and nodenv install accept the -k or --keep flag, which tells node-build to keep the downloaded source after installation. This can be useful if you need to use gdb and memprof with Node.

Source code will be kept in a parallel directory tree $(nodenv root)/sources when using --keep with the nodenv install command. You should specify the location of the source code with the NODE_BUILD_BUILD_PATH environment variable when using --keep with node-build.

Retry installation without v/node-/node-v prefix

The nodenv-install plugin can attempt a retry if the installation failed due to a missing definition file. If the given node version name begins with 'v', 'node', or 'node-v', the retry will drop the prefix and try again. For instance, if nodenv install node-v11.0.0 fails because a definition file does not exist by the name "node-v11.0.0", it will retry as "11.0.0". For this retry to be attempted, the environment variable NODENV_PREFIX_RETRY must be non-empty.

Getting Help

Please see the node-build wiki for solutions to common problems. Also, check out the ruby-build wiki.

If you can't find an answer on the wiki, open an issue on the issue tracker. Be sure to include the full build log for build failures.

Credits

Forked from Sam Stephenson's ruby-build by Will McKenzie and modified for node.

node-build's People

Contributors

byroot avatar chrisseaton avatar deepj avatar dependabot[bot] avatar depfu[bot] avatar eregon avatar github-actions[bot] avatar guilleiguaran avatar headius avatar hsbt avatar jasonkarns avatar jeremy avatar jnozsc avatar josh avatar koic avatar metalefty avatar minimum2scp avatar mislav avatar miyucy avatar msp-greg avatar nirvdrum avatar noahgibbs avatar nodenv-bot avatar oinutter avatar reedloden avatar sferik avatar sstephenson avatar web-flow avatar yuichiro-naito avatar yyuu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

node-build's Issues

4.2.0 and 4.2.1 errors out on ubuntu 12.04

g++ '-DV8_TARGET_ARCH_X64' '-DENABLE_DISASSEMBLER' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC' -I../deps/v8 -pthread -Wa
ll -Wextra -Wno-unused-parameter -m64 -B/tmp/node-build.20151022160705.24506/node-v4.2.1/third_party/binutils/Linux_x64/Release/bin -fno-strict-aliasing -m64 -O3 -ffunction-sections -fdata-sections -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++0x -MMD -MF /tmp/node-build.20151022160705.24506/node-v4.2.1/out/Release/.deps//tmp/node-build.20151022160705.24506/node-v4.2.1/out/Release/obj.target/v8_base/deps/v8/src/accessors.o.d.raw -c -o /tmp/node-build.20151022160705.24506/node-v4.2.1/out/Release/obj.target/v8_base/deps/v8/src/accessors.o ../deps/v8/src/accessors.cc
In file included from ../deps/v8/src/v8.h:29:0,
from ../deps/v8/src/accessors.cc:5:
../deps/v8/include/v8.h:469:1: error: expected unqualified-id before 'using'
../deps/v8/include/v8.h:852:1: error: expected unqualified-id before 'using'
In file included from ../deps/v8/src/base/platform/platform.h:29:0,
from ../deps/v8/src/utils.h:18,
from ../deps/v8/src/v8.h:34,
from ../deps/v8/src/accessors.cc:5:
../deps/v8/src/base/platform/mutex.h:36:13: error: variable 'v8::base::Mutex v8::base::final' has initializer but incomplete type
../deps/v8/src/base/platform/mutex.h:37:2: error: expected primary-expression before 'public'
../deps/v8/src/base/platform/mutex.h:37:2: error: expected '}' before 'public'
../deps/v8/src/base/platform/mutex.h:37:2: error: expected ',' or ';' before 'public'
../deps/v8/src/base/platform/mutex.h:39:11: error: expected constructor, destructor, or type conversion before ';' token
../deps/v8/src/base/platform/mutex.h: In function 'v8::base::NativeHandle& v8::base::native_handle()':
../deps/v8/src/base/platform/mutex.h:63:12: error: 'native_handle_' was not declared in this scope
../deps/v8/src/base/platform/mutex.h: At global scope:
../deps/v8/src/base/platform/mutex.h:65:39: error: non-member function 'const NativeHandle& v8::base::native_handle()' cannot have cv-qualifier
../deps/v8/src/base/platform/mutex.h: In function 'const NativeHandle& v8::base::native_handle()':
../deps/v8/src/base/platform/mutex.h:65:39: error: new declaration 'const NativeHandle& v8::base::native_handle()'
../deps/v8/src/base/platform/mutex.h:62:17: error: ambiguates old declaration 'v8::base::NativeHandle& v8::base::native_handle()'
../deps/v8/src/base/platform/mutex.h:66:12: error: 'native_handle_' was not declared in this scope
../deps/v8/src/base/platform/mutex.h: At global scope:
../deps/v8/src/base/platform/mutex.h:69:2: error: expected unqualified-id before 'private'
../deps/v8/src/base/platform/mutex.h:89:3: error: 'friend' used outside of class
../deps/v8/src/base/platform/mutex.h:91:3: error: expected unqualified-id before 'const'
../deps/v8/src/base/platform/mutex.h:91:3: error: expected ')' before 'const'
../deps/v8/src/base/platform/mutex.h:91:3: error: 'void v8::base::operator=(const v8::base::Mutex&)' must be a nonstatic member function
../deps/v8/src/base/platform/mutex.h:104:9: error: 'LazyStaticInstance' does not name a type
../deps/v8/src/base/platform/mutex.h:130:22: error: variable 'v8::RecursiveMutex v8::final' has initializer but incomplete type
../deps/v8/src/base/platform/mutex.h:131:2: error: expected primary-expression before 'public'
../deps/v8/src/base/platform/mutex.h:131:2: error: expected '}' before 'public'
../deps/v8/src/base/platform/mutex.h:131:2: error: expected ',' or ';' before 'public'
../deps/v8/src/base/platform/mutex.h:133:20: error: expected constructor, destructor, or type conversion before ';' token
../deps/v8/src/base/platform/mutex.h:155:11: error: 'Mutex' does not name a type
../deps/v8/src/base/platform/mutex.h:157:3: error: 'NativeHandle' does not name a type
../deps/v8/src/base/platform/mutex.h:160:9: error: 'NativeHandle' does not name a type
../deps/v8/src/base/platform/mutex.h:164:2: error: expected unqualified-id before 'private'
../deps/v8/src/base/platform/mutex.h:170:3: error: expected unqualified-id before 'const'
../deps/v8/src/base/platform/mutex.h:170:3: error: expected ')' before 'const'
../deps/v8/src/base/platform/mutex.h:170:3: error: 'void v8::operator=(const v8::RecursiveMutex&)' must be a nonstatic member function
../deps/v8/src/base/platform/mutex.h:184:9: error: 'LazyStaticInstance' does not name a type
../deps/v8/src/base/platform/mutex.h:202:17: error: template declaration of 'LockGuard final'
../deps/v8/src/base/platform/mutex.h:203:2: error: expected primary-expression before 'public'
../deps/v8/src/base/platform/mutex.h:203:2: error: expected '}' before 'public'
../deps/v8/src/base/platform/mutex.h:205:14: error: declaration of '~LockGuard' as non-member
../deps/v8/src/base/platform/mutex.h:207:2: error: expected unqualified-id before 'private'
../deps/v8/src/base/platform/mutex.h:210:3: error: expected unqualified-id before 'const'
../deps/v8/src/base/platform/mutex.h:210:3: error: expected ')' before 'const'
../deps/v8/src/base/platform/mutex.h:210:3: error: 'void operator=(const LockGuard&)' must be a nonstatic member function
../deps/v8/src/base/platform/mutex.h:211:1: error: expected declaration before '}' token
../deps/v8/src/base/platform/mutex.h: In function 'const NativeHandle& v8::base::native_handle()':
../deps/v8/src/base/platform/mutex.h:67:3: warning: control reaches end of non-void function [-Wreturn-type]
../deps/v8/src/base/platform/mutex.h: In function 'v8::base::NativeHandle& v8::base::native_handle()':
../deps/v8/src/base/platform/mutex.h:64:3: warning: control reaches end of non-void function [-Wreturn-type]
make[1]: *** [/tmp/node-build.20151022160705.24506/node-v4.2.1/out/Release/obj.target/v8_base/deps/v8/src/accessors.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/tmp/node-build.20151022160705.24506/node-v4.2.1/out'
make: *** [node] Error 2

add subcommand to run the scraper as a user

The scraper is really helpful for adding node definitions to node-build directly. But it would be more awesome if the scraper could be invoked by a user through a subcommand so that users could get latest definitions even before they are in master.

Concerns:

  • scraper requires node, so the command may fail if run on certain (older) versions of node
  • scraper would fail if the command is run on a system without any nodes installed
  • any new definitions would appear as new (untracked) files in node-build/share; this could prevent simple git pull from succeeding when those same definitions become available in master (breaking nodenv-update); this might impact homebrew installs as well. Solution? Write user-generated definitions to the custom-definition directory.

Remove jxcore build definitions

jxcore development has ceased and none of the packages are available on amazon any longer, so the builds no longer function.

how do I force node-build to use homebrew openssl?

originally from nodenv/nodenv#78

for example, in ruby:

RUBY_CONFIGURE_OPTS=--with-openssl-dir=/usr/local/opt/openssl rbenv install -s "$ruby_version"

in python:

CFLAGS=-I/usr/local/opt/openssl/include LDFLAGS=-L/usr/local/opt/openssl/lib pyenv install -s "$python_version"

trying to figure out how to do this with nodenv. thanks!

Include node-build version number in help output

To help with issues like #102 , we need to be able to see the node-build version number.

Presently, the version number only prints when invoking node-build directly (ie, outside of nodenv).

Need to:

  • add --version flag to nodenv-install command
  • include version in nodenv-install (and nodenv-uninstall?) help output

We should also consider how to unify the help output between the node-build command itself, and the nodenv-install/nodenv-uninstall commands.

Display a progress-bar when downloading prebuilt Nodes

When I execute nodenv install 8.1.4, I get something like this:

Downloading node-v8.1.4-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v8.1.4/node-v8.1.4-darwin-x64.tar.gz

When on a slow WiFi or VPN, it can sit there for โ€ฆ quite a while. Exposing aria2c's progress bar or something like that would really improve the UX!

'latest' build definitions

Should we have some 'latest' build definitions that are always pointing to latest releases? The nodejs distributions list includes:

image

We could just have some build definitions that point to those locations, though that would mean the local install name of those nodes would be node-latest or node-latest-v5.x; since the version name would be taken from the build definition and not "updated" after installation to reflect the actual version number.

Alternatively, we could try some kind of after-install hook to rename the version once it's installed.

Is this a good or bad idea? It seems the rbenv team have avoided this for a long time. Presumably they have reason? nvm has similar aliases like node which points to latest release and 5.0 which is latest 5.x release.

Support prefix moving

We would like to have definitions like latest, nightly, lts, current, etc which pull down the "latest" respective version. Ideally, we would like the installed version to be named precisely per the version number as having an installed version named latest is hardly useful after a few days.

  • perhaps attempt to mv the version in after_install_package hook, accounting for PREFIX_PATH (see #236 )
  • perhaps attempt to modify the PREFIX_PATH as part of the definitions "main" run, rather than in hooks?
  • perhaps we need to expose a hook in node-build that a definition can invoke to force/override the installed package name?

Questions to resolve:

  1. What to do when a given architecture is not included in the specified "latest" build? Should it build latest from source? Or get a slightly older version that does have a binary build? This would require checking platform in the build definition itself.
  2. What to do when the "latest" is already installed? The pre-install check that node-build performs is based on the build definition filename. This will be insufficient if the version name isn't known until the definition is run.

closes #145

compilation flags (readline? yaml? openssl?)

ruby-build has an awful lot of code for enabling certain common ./configure flags; specifically, readline, yaml, and openssl. There's even more code for using homebrew's variants by default, if available. However, I'm not very familiar with which flags would be relevant for node. Are any of these flags relevant for node? Are there any others that we should be handling specially?

Yank jxcore build defs

I'd like to yank the jxcore build defs. (I don't believe they even build successfully anymore with most assets having gone offline.)

Before we do that, I'd like to create a separate nodenv plugin as a repository of "archived" build definitions. That way people who would like access to the old build defs (for whatever reason) can do so through the extra plugin.

Feature: Add test to screen definitions for acceptable domains

Would be nice to confirm that definition files are pulling from "trusted" domains to more quickly approve PRs.

Probably don't want an untrusted domain to fail the test. Since it doesn't necessarily mean it won't be merged. But a warning at the minimum.

Unable to install 4.x-dev or 4.x-next

$ nodenv install 4.x-dev
Cloning https://github.com/nodejs/node.git...
Installing 4.x-dev...

BUILD FAILED (OS X 10.11.4 using node-build 2.2.6)

Inspect or clean up the working tree at /var/folders/cg/tn3c27yx4mv4c06p9gh19yzh0000gn/T/node-build.20160406120148.7277
Results logged to /var/folders/cg/tn3c27yx4mv4c06p9gh19yzh0000gn/T/node-build.20160406120148.7277.log

Last 10 log lines:
                 'v8_enable_i18n_support': 0,
                 'v8_no_strict_aliasing': 1,
                 'v8_optimized_debug': 0,
                 'v8_random_seed': 0,
                 'v8_use_snapshot': 'true',
                 'want_separate_host_toolset': 0,
                 'xcode_version': '7.3'}}
creating  ./config.gypi
creating  ./config.mk
make: *** empty string invalid as file name.  Stop.

I get the same errors for both, using nodenv v1.0.0 - please let me know if I can provide any other information. I have eval "$(nodenv init -)" in my ~/.bash_profile, and I've restarted my terminal and seen no errors in its execution, so I'm not sure what's going on.

Update Homebrew version

The version on Homebrew is outdated. I can still install the most recent with brew [re]install --HEAD node-build but I think node-build should be properly re-published to the Homebrew directory when new build definitions are available.

SHA256 mismatch

On brew upgrade node-build from node-build v2.6.7 brew returns the following error:

Error: SHA256 mismatch
Expected: c98f7de6a749520fb7155c1b315f01804eb6554f8edb0d45bd7514f9e9a1dc44
Actual: 6c636ae7bcead1186ee392cd9974e764cb0ba82165396366d502987f0d3c466f

NODE_BUILD_MIRROR_URL not working?

Hi there. I installed nodenv 1.1.1 and then installed node-build

git clone https://github.com/nodenv/node-build.git
cd node-build
./install.sh

But when I try using a mirror, it still reaches out to https://nodejs.org

~ # export NODE_BUILD_MIRROR_URL=http://internal-artifactory.com:8081/artifactory/nodejs/dist/
~ # nodenv install 4.2.1
sha256sum: unrecognized option: quiet
BusyBox v1.24.2 (2017-01-18 14:13:46 GMT) multi-call binary.

Usage: sha256sum [-c[sw]] [FILE]...

Print or check SHA256 checksums

	-c	Check sums against list in FILEs
	-s	Don't output anything, status code shows success
	-w	Warn about improperly formatted checksum lines
Downloading node-v4.2.1-linux-x64.tar.gz...
-> https://nodejs.org/dist/v4.2.1/node-v4.2.1-linux-x64.tar.gz
error: failed to download node-v4.2.1-linux-x64.tar.gz

Did I miss a step? Thanks!

gcc compiler

ruby is well known for having issues compiling on different c compilers. Older versions of ruby would only build on the official gcc compiler (not apple's llvm); and lately ruby-build defaults many builds to clang.

Do any specific node versions have issues with certain c compilers?

Help maintaining repo?

Would you like some help maintaining this project? I would be willing to help test/merge PRs

Merge upstream ruby-build changes

Howdy,

I have several branches lined up for the recent iojs releases (1.0.0 through 1.1.0) that I want to eventually get merged in. However, they fail to build because the current implementation of checksum verification assumes sha1 which is incompatible with the sha256 backed checksums being used for iojs releases. As such, I would need to do some tweaking beyond the typical one-liners I've been adding to share/node-build in order to get the iojs releases to properly build.

Before I embark on any changes that would cause us to further divert from ruby-build, however, I thought it might be worthwhile to pull in the compatible upstream changes/features that have been made in ruby-build. Considering the difference in build versions (201300310 vs 20150130), I think a few things have changed ๐Ÿ˜›.

What are your thoughts? I'm more than happy to see this process through and make a PR for it, but I just wanted to make sure that you would be receptive to these changes before I spend the time making them. It might also be worth discussing how to handle future upstream changes.

Thanks!

nodenv install not working

Hi, I tried installing nodenv for node version 10.8.0 with command
$nodenv install 10.8.0

It gave message downloading then nothing happened after.
Downloading node-v10.8.0-linux-x64.tar.gz...
-> https://nodejs.org/dist/v10.8.0/node-v10.8.0-linux-x64.tar.gz

Handle "binary-only" releases

Many Release Candidates and virtually every Nightly node release doesn't include every single platform. The way the current binary support works, anything missing just falls back to a from-source compile. However, there are also rare instances where a nightly or release candidate doesn't include a source package.

I'm not exactly sure how the 'nightly' definition handles this right now (I believe it just skips it entirely, falling back to a previous nightly). However, now that the node-build definition scraper supports published Release Candidates; we should probably handle these rare instances where a build definition is only binaries.

Deprecate jxcore functions

JXcore has been abandoned. The builds no longer work and are to be removed ( #175 ). The build functions shouldn't be removed abruptly, as there may be people still relying on them, even with custom build definitions.

First step is to add warning messages to all the to-be-deprecated functions. That would be released as a minor version.

Then in the next major version bump, the functions could be removed entirely.

Nightly build(s) fail

$ nodenv install nightly 
Downloading node-v8.0.0-nightly20170210b471392f8c-darwin-x64.tar.gz...
-> https://nodejs.org/download/nightly/v8.0.0-nightly20170210b471392f8c/node-v8.0.0-nightly20170210b471392f8c-darwin-x64.tar.gz
Installing node-v8.0.0-nightly20170210b471392f8c-darwin-x64...
find: /usr/local/var/nodenv/versions/nightly: No such file or directory

BUILD FAILED (OS X 10.12.3 using node-build 2.5.4)

Binary installation failed; try compiling from source with `--compile` flag

Inspect or clean up the working tree at /var/folders/sv/3941ksds4v18r9y1kyptw1jw0000gn/T/node-build.20170210213852.81278
Results logged to /var/folders/sv/3941ksds4v18r9y1kyptw1jw0000gn/T/node-build.20170210213852.81278.log

Last 10 log lines:
/var/folders/sv/3941ksds4v18r9y1kyptw1jw0000gn/T/node-build.20170210213852.81278 ~/Projects/node-build
/var/folders/sv/3941ksds4v18r9y1kyptw1jw0000gn/T/node-build.20170210213852.81278/node-v8.0.0-nightly20170210b471392f8c-darwin-x64 /var/folders/sv/3941ksds4v18r9y1kyptw1jw0000gn/T/node-build.20170210213852.81278 ~/Projects/node-build

The directory permissions fixing (

fix_directory_permissions
) is throwing an error at
find "$PREFIX_PATH" -type d \( -perm -020 -o -perm -002 \) -exec chmod go-w {} \;
because the after_install hook has run which has moved the new node.

Push first release

Are you ready to push an initial release? I'm setting up a custom Homebrew tap for this and nodenv, and it would be helpful to provide a formula that's not head-only.

Tag Node releases for Homebrew

For homebrew tags are used to identify a build. Because of that, I'd like to ask you to tag every Node release, so node-build's formula can be updated. The latest tag only gives access to Node 5.1.0, but I'd like to use later versions.

New checksums released today?

Hi there,

As part of our CI process we use node-build to install whatever node is listed in a repo's .node-version file. Today our builds started failing because the checksum for node v6.9.2 was not matching.

I see that in the latest node-build, the expected checksum for linux-x64 is cbf6a35b035c56f991c2e6a4aedbcd9f09555234ac0dd5b2c15128e2b5f4eb50, but the official nodejs checksum is c8acada3301857ddb650bc9d4383eaba4b90ebd4d89740729297bffb630a3531 (from https://nodejs.org/dist/v6.9.2/SHASUMS256.txt.asc).

If you gpg --verify that checksum file, you'll see that the signature was created today, suggesting to me that the checksums were changed today.

I'd love to contribute by updating the checksums in node-build to match the latest ones published from the node team -- is there any kind of automation around this process that you guys have built?

Thanks a lot, we really love nodenv and all its plugins!

script for getting iojs builds from github tags

I didn't notice there were already scrapers in the repo for getting iojs versions.

This is the shell script I used to get the ones I submitted yesterday:

curl https://api.github.com/repos/iojs/io.js/tags | jq -r '.[].name' | {
while read iojstag; do 
  iojsversion=${iojstag#v}
  echo "install_git \"iojs-$iojsversion\" \"https://github.com/iojs/io.js.git\" \"$iojstag\" standard" > share/node-build/iojs-$iojsversion
done
}

thought it might be helpful

Accept version with 'v' prefix

I should be able to install node versions with the 'v' prefix. e.g.

$ node-build v8.5.0 ~/local/node-8.5.0

This allows my .node-version file to have v8.5.0 in it. This is consistent with the output of

$ node --version
v8.5.0

Error installing node since 2.2.0

I keep seeing this in the terminal grep: /usr/local/Cellar/node-build/2.2.0/bin/../package.json: No such file or directory whenever i run node-build --version.

Also tried on a different machine we started getting failures in installing node 5.6.0.

Whenever we ran the nodenv install 5.6.0 or node-build equivalent command we got the message again (grep: /usr/local/Cellar/node-build/2.2.0/bin/../package.json: No such file or directory) and it said could not copy binary file, try installing from source (-c).

Tried that too and it didn't work, so we switched back to 2.1.5 and everything worked fine.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.