Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

node 17.0.1 #87602

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
File renamed without changes.
18 changes: 12 additions & 6 deletions Formula/bcoin.rb
Expand Up @@ -6,7 +6,7 @@ class Bcoin < Formula
url "https://github.com/bcoin-org/bcoin/archive/v2.1.2.tar.gz"
sha256 "b4c63598ee1efc17e4622ef88c1dff972692da1157e8daf7da5ea8abc3d234df"
license "MIT"
revision 4
revision 5
head "https://github.com/bcoin-org/bcoin.git", branch: "master"

bottle do
Expand All @@ -17,12 +17,18 @@ class Bcoin < Formula
sha256 cellar: :any_skip_relocation, x86_64_linux: "46f97e509af3ecc06af837d1f6d5987f3da8026cb280f9641736b840d7ad8b89"
end

depends_on "python@3.9" => :build
depends_on "node"
depends_on "python@3.10" => :build
depends_on "node@16"

def node
deps.reject(&:build?)
.map(&:to_formula)
.find { |f| f.name.match?(/^node(@\d+(\.\d+)*)?$/) }
end

def install
system "#{Formula["node"].libexec}/bin/npm", "install", *Language::Node.std_npm_install_args(libexec)
(bin/"bcoin").write_env_script libexec/"bin/bcoin", PATH: "#{Formula["node"].opt_bin}:$PATH"
system "npm", "install", *Language::Node.std_npm_install_args(libexec)
(bin/"bcoin").write_env_script libexec/"bin/bcoin", PATH: "#{node.opt_bin}:$PATH"
end

test do
Expand All @@ -39,7 +45,7 @@ def install
await node.ensure();
})();
EOS
system "#{Formula["node"].bin}/node", testpath/"script.js"
system "#{node.opt_bin}/node", testpath/"script.js"
assert File.directory?("#{testpath}/.bcoin")
end
end
20 changes: 16 additions & 4 deletions Formula/node.rb
@@ -1,8 +1,8 @@
class Node < Formula
desc "Platform built on V8 to build network applications"
homepage "https://nodejs.org/"
url "https://nodejs.org/dist/v16.12.0/node-v16.12.0.tar.xz"
sha256 "5f620a6a400901a6565aa0c07309cde3aab3dbaa765cecb934241de520d36bac"
url "https://nodejs.org/dist/v17.0.1/node-v17.0.1.tar.xz"
sha256 "6ec480f872cb7c34877044985e3d7bd89329ace5b8e2ad90b57980601786341c"
license "MIT"
head "https://github.com/nodejs/node.git", branch: "master"

Expand Down Expand Up @@ -30,13 +30,19 @@ class Node < Formula

uses_from_macos "zlib"

on_macos do
depends_on "llvm" => [:build, :test] if DevelopmentTools.clang_build_version <= 1100
end

on_linux do
depends_on "gcc"
end

fails_with :clang do
build 1099
cause "Node requires Xcode CLT 11+"
build 1100
cause <<~EOS
error: calling a private constructor of class 'v8::internal::(anonymous namespace)::RegExpParserImpl<uint8_t>'
EOS
end

fails_with gcc: "5"
Expand All @@ -60,6 +66,9 @@ class Node < Formula
end

def install
ENV.remove "HOMEBREW_LIBRARY_PATHS", Formula["llvm"].opt_lib
ENV.llvm_clang if OS.mac? && (DevelopmentTools.clang_build_version <= 1100)

# make sure subprocesses spawned by make are using our Python 3
ENV["PYTHON"] = Formula["python@3.9"].opt_bin/"python3"

Expand Down Expand Up @@ -140,6 +149,9 @@ def post_install
end

test do
# Make sure Mojave does not have `CC=llvm_clang`.
ENV.clang if OS.mac?

path = testpath/"test.js"
path.write "console.log('hello');"

Expand Down
111 changes: 111 additions & 0 deletions Formula/node@16.rb
@@ -0,0 +1,111 @@
class NodeAT16 < Formula
desc "Platform built on V8 to build network applications"
homepage "https://nodejs.org/"
url "https://nodejs.org/dist/v16.12.0/node-v16.12.0.tar.xz"
sha256 "5f620a6a400901a6565aa0c07309cde3aab3dbaa765cecb934241de520d36bac"
license "MIT"

livecheck do
url "https://nodejs.org/dist/"
regex(%r{href=["']?v?(16(?:\.\d+)+)/?["' >]}i)
end

keg_only :versioned_formula

depends_on "pkg-config" => :build
depends_on "brotli"
depends_on "c-ares"
depends_on "icu4c"
depends_on "libnghttp2"
depends_on "libuv"
depends_on "openssl@1.1"
depends_on "python@3.10"

uses_from_macos "zlib"

on_linux do
depends_on "gcc"
end

fails_with :clang do
build 1099
cause "Node requires Xcode CLT 11+"
end

fails_with gcc: "5"

# Fix build with brewed c-ares.
# https://github.com/nodejs/node/pull/39739
#
# Remove when the following lands in a *c-ares* release:
# https://github.com/c-ares/c-ares/commit/7712fcd17847998cf1ee3071284ec50c5b3c1978
# https://github.com/c-ares/c-ares/pull/417
patch do
url "https://github.com/nodejs/node/commit/8699aa501c4d4e1567ebe8901e5ec80cadaa9323.patch?full_index=1"
sha256 "678643c79258372d5054d3da16bc0c5db17130f151f0e72b6e4f20817987aac9"
end

def install
# make sure subprocesses spawned by make are using our Python 3
ENV["PYTHON"] = which("python3")

args = %W[
--prefix=#{prefix}
--with-intl=system-icu
--shared-libuv
--shared-nghttp2
--shared-openssl
--shared-zlib
--shared-brotli
--shared-cares
--shared-libuv-includes=#{Formula["libuv"].include}
--shared-libuv-libpath=#{Formula["libuv"].lib}
--shared-nghttp2-includes=#{Formula["libnghttp2"].include}
--shared-nghttp2-libpath=#{Formula["libnghttp2"].lib}
--shared-openssl-includes=#{Formula["openssl@1.1"].include}
--shared-openssl-libpath=#{Formula["openssl@1.1"].lib}
--shared-brotli-includes=#{Formula["brotli"].include}
--shared-brotli-libpath=#{Formula["brotli"].lib}
--shared-cares-includes=#{Formula["c-ares"].include}
--shared-cares-libpath=#{Formula["c-ares"].lib}
--openssl-use-def-ca-store
]
system "python3", "configure.py", *args
system "make", "install"

# Make sure that:
# - `node` can find our keg-only `python3`
# - npm and npx use our keg-only `node`
bin.env_script_all_files libexec, PATH: "#{which("python3").dirname}:#{bin}:${PATH}"
end

def post_install
(lib/"node_modules/npm/npmrc").atomic_write("prefix = #{HOMEBREW_PREFIX}\n")
end

test do
path = testpath/"test.js"
path.write "console.log('hello');"

output = shell_output("#{bin}/node #{path}").strip
assert_equal "hello", output
output = shell_output("#{bin}/node -e 'console.log(new Intl.NumberFormat(\"en-EN\").format(1234.56))'").strip
assert_equal "1,234.56", output

output = shell_output("#{bin}/node -e 'console.log(new Intl.NumberFormat(\"de-DE\").format(1234.56))'").strip
assert_equal "1.234,56", output

# make sure npm can find node
ENV.prepend_path "PATH", opt_bin
ENV.delete "NVM_NODEJS_ORG_MIRROR"
assert_equal which("node"), opt_bin/"node"
assert_predicate bin/"npm", :exist?, "npm must exist"
assert_predicate bin/"npm", :executable?, "npm must be executable"
npm_args = ["-ddd", "--cache=#{HOMEBREW_CACHE}/npm_cache", "--build-from-source"]
system "#{bin}/npm", *npm_args, "install", "npm@latest"
system "#{bin}/npm", *npm_args, "install", "ref-napi"
assert_predicate bin/"npx", :exist?, "npx must exist"
assert_predicate bin/"npx", :executable?, "npx must be executable"
assert_match "< hello >", shell_output("#{bin}/npx cowsay hello")
end
end