src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

src,win: add support for fetching arm64 node.lib - #1875

Closed
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib
Closed

src,win: add support for fetching arm64 node.lib#1875
richard-townsend-arm wants to merge 3 commits into
nodejs:masterfrom
richard-townsend-arm:arm64-node-lib

Conversation

@richard-townsend-arm

Copy link
Copy Markdown
Contributor
Checklist
  • npm install && npm test passes
  • tests are included
  • commit message follows commit guidelines
Description of change

Windows on Arm support is available in some versions of Node.js v12 and Electron v6. This update allows node-gyp to fetch the appropriate node.lib to build native modules. If an arm64 binary is not available for the target node version, it's logged but ignored.

arm64 is not expected to work in very old node.lib distribution formats, the test URLs in these cases are added to be consistent with x64.

@joaocgreis

Copy link
Copy Markdown
Member

@richard-townsend-arm thanks for opening this PR! This has been on my backlog for a while, because some more changes are needed. Now it's almost done:

  • The Unofficial Builds server needs to have node.lib for ARM64. I've made the changes and I'm using https://unofficial-builds.nodejs.org/download/release/v12.8.0/ to test.
  • I'd rather avoid having x86 and x64 binaries in that server to avoid confusion, so node-gyp needs to ignore failures downloading those as well. I've pushed a commit here to address this, but I can take it back if you prefer that I don't change this PR. A better solution would be to download only the file needed for the target architecture, but that's a much less simple change. I believe this is good for now.
  • The Unofficial Builds server needs to have a copy of the headers and a RELEASE_URLBASE pointing to it: change RELEASE_URLBASE to the Unofficial Builds server unofficial-builds#9. When that lands, I'll test this and make a release of the latest Node version. It'll be a while before a node-gyp with this change will be included in a Node release, but we can always update manually.

@richard-townsend-arm

Copy link
Copy Markdown
ContributorAuthor

Cool, thanks for that @joaocgreis: I'm happy for your fixups to go into into this PR.

Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
joaocgreis pushed a commit that referenced this pull request Sep 30, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@joaocgreis

Copy link
Copy Markdown
Member

Tested with v12.8.0 from unofficial builds.

CI: https://ci.nodejs.org/view/All/job/nodegyp-test-pull-request/156/

Landed in 2441932

@joaocgreisjoaocgreis mentioned this pull request Sep 30, 2019
@joaocgreis

joaocgreis commented Sep 30, 2019

Copy link
Copy Markdown
Member

Published ARM64 release of v12.10.0: https://unofficial-builds.nodejs.org/download/release/v12.10.0/ (v12.11.0 has an issue with unofficial builds, fix in nodejs/unofficial-builds#10).

To use node-gyp directly from the master branch, including this PR:

npm i -g https://github.com/nodejs/node-gyp
for /f "delims=" %P in ('npm prefix -g') do npm config set node_gyp "%P\node_modules\node-gyp\bin\node-gyp.js"

rvagg pushed a commit that referenced this pull request Oct 2, 2019
Windows on Arm support is available in some versions of Node.js v12 and
Electron v6. This update allows node-gyp to fetch the appropriate
node.lib to build native modules. If an arm64 binary is not available
for the target node version, it's logged but ignored.
arm64 is not expected to work in very old node.lib distribution formats,
the test URLs in these cases are added to be consistent with x64.
PR-URL: #1875
Reviewed-By: João Reis <reis@janeasystems.com>
@rvaggrvagg mentioned this pull request Oct 3, 2019
@MehediH

Copy link
Copy Markdown

Hi, I am trying to build my Electron app for Windows 10 on ARM, but this issue is preventing me from doing so.

Firstly, I don't have a node-gyp folder in my %APPDATA/Local% directory, and the node.lib file download link meant for ARM64 leads to a 404 on this page.

Could you please point me towards the right file for ARM64 and where it should be placed for the ARM64 compilation to work as expected?

@tommyvct

tommyvct commented Jan 19, 2021

Copy link
Copy Markdown

They are way too lazy to document things down.
here is the lib.
https://unofficial-builds.nodejs.org/download/release/v15.5.1/win-arm64/

@EwoutH

EwoutH commented Jan 22, 2021

Copy link
Copy Markdown

I keep getting an 404 using node-gyp:

gyp http 404 https://nodejs.org/download/release/v12.15.0/win-arm64/node.lib

How can I instruct gyp to use the unofficial-builds?
(https://unofficial-builds.nodejs.org/download/release/v12.15.0/win-arm64/node.lib in this case)

@richardlau

Copy link
Copy Markdown
Member

Try setting --dist-url?

@richardlau

Copy link
Copy Markdown
Member

(As an aside https://github.com/EwoutH/Signal-Desktop/runs/1749166864?check_suite_focus=true#step:9:44 shows that the x64 version of Node.js is being run which is why it's looking in https://nodejs.org/download/release as the default place to look is relative to process.release.headersUrl.)

@namoen0301

Copy link
Copy Markdown

NodeJS now officially support Windows ARM64 platform, can we reconsider this issue?
nodejs/build#2540

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@richard-townsend-arm@joaocgreis@MehediH@tommyvct@EwoutH@richardlau@namoen0301@cclauss