Skip to content

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rzhao271@cclauss@DeeDeeG@lukekarrys
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat(gyp): update gyp to v0.16.1 by rzhao271 · Pull Request #2909 · nodejs/node-gyp · GitHub
Skip to content

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rzhao271@cclauss@DeeDeeG@lukekarrys
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(gyp): update gyp to v0.16.1 by rzhao271 · Pull Request #2909 · nodejs/node-gyp · GitHub
Skip to content

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rzhao271@cclauss@DeeDeeG@lukekarrys
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(gyp): update gyp to v0.16.1 by rzhao271 · Pull Request #2909 · nodejs/node-gyp · GitHub
Skip to content

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rzhao271@cclauss@DeeDeeG@lukekarrys
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(gyp): update gyp to v0.16.1 by rzhao271 · Pull Request #2909 · nodejs/node-gyp · GitHub
Skip to content

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

feat(gyp): update gyp to v0.16.1 - #2909

Closed
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1
Closed

feat(gyp): update gyp to v0.16.1#2909
rzhao271 wants to merge 11 commits into
nodejs:mainfrom
rzhao271:rzhao271/upgrade-gyp-15-1

Conversation

@rzhao271

@rzhao271rzhao271 commented Oct 4, 2023

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

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclauss one issue I have with this PR is that the Python portion of node-gyp actually requires a package now. I'm wondering whether we could change the install script to set up the Python package for the user, or will users have to install the required Python packages themselves?

I'll also have to take a look at the VS tests tomorrow.

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

the Python portion of node-gyp actually requires a package now

We vendor in this code into the node-gyp repo so that users do need to pip install it. We post gyp-next to PyPI but statistics show that this is not how most users access it. I do not see how anything in this release changes that vendoring process.

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Do the 2016 and 2019 Visual Studio tests still make sense?
When I expand the Environment Information tab, the only IDE listed is VS 2022.

The failing tests also emit the following output:

gyp verb find VS msvs_version not set from command line or npm config
+ gyp verb find VS VCINSTALLDIR not set, not running in VS Command Prompt
+ gyp verb find VS checking VS2022 (17.7.34031.279) found at:
+ gyp verb find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
+ gyp verb find VS - found "Visual Studio C++ core features"
+ gyp verb find VS - found VC++ toolset: v143
+ gyp verb find VS - found Windows SDK: 10.0.22621.0
+ gyp info find VS using VS2022 (17.7.34031.279) found at:
+ gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"

Edit: when node-gyp actually picks up the msvs-version it gives the following error

Message: Could not find any Visual Studio installation to use

So I think the 2016 and 2019 tests can be removed.

@cclauss

Copy link
Copy Markdown
Contributor

You are saying that this environment variable trick no longer works?

echo 'GYP_MSVS_VERSION=${{ matrix.msvs-version }}' >> $Env:GITHUB_ENV

@rzhao271

rzhao271 commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

I think that the trick works, but that node-gyp doesn't listen to it.
When I pass in the variable so that node-gyp listens to it, it fails the test because it couldn't find VS 2016 or 2019. I changed the visual-studio test matrix a bit so that it tries running the pairs (VS 2019, msvs-version 2019), (VS 2022, msvs-version 2022).

@cclauss

Copy link
Copy Markdown
Contributor

% npm config list -l

npm recently got rid of lots of config options including msvs-version

@cclauss

cclauss commented Oct 5, 2023

Copy link
Copy Markdown
Contributor

Does setting the environment variables GYP_MSVS_VERSION or VCINSTALLDIR work locally?

@rzhao271

rzhao271 commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

VCINSTALLDIR works locally
GYP_MSVS_VERSION does not

Edit: It turns out the Python tests still need the GYP environment variables.

@rzhao271
rzhao271 marked this pull request as ready for review October 6, 2023 21:41
@DeeDeeG

DeeDeeG commented Oct 16, 2023

Copy link
Copy Markdown
Contributor
Reviewing what was said about requiring external packages, vs vendoring (click to expand):

one issue I have with this PR is that the Python portion of node-gyp actually requires a package now.

This refers to the packaging (https://pypi.org/project/packaging/) dependency, right?

We vendor in this code into the node-gyp repo so that users do need to pip install it.

This refers to gyp-next itself, right?

...

Just to clarify, there is a new requirement (a Python package called packaging) that is needed to run this, and which users won't have on their system by default?

I don't think gyp-next has vendored in the packaging dependency... So, this updated gyp-next wouldn't run out-of-the-box on a system with just Python, right? Is it an option to vendor in a copy of packaging into gyp-next repo? That would solve the problem, if I've understood the problem correctly in the first place.

How to vendor a python dependency, per StackOverflow: https://stackoverflow.com/a/65470764

@cclauss

Copy link
Copy Markdown
Contributor

Is packaging a runtime requirement or just a test-time requirement?

Comment threadgyp/pylib/gyp/input.py
@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@cclausspackaging is now a runtime requirement for node-gyp, but I have no experience with vendoring. Would it make sense for the repository to include a copy of the packaging package's source?

@DeeDeeG

DeeDeeG commented Oct 25, 2023

Copy link
Copy Markdown
Contributor

I think this PR is obsolete and can be superseded by a bump directly to gyp-next 0.16.0.

If someone who actually worked hard on these changes in gyp-next wants to open a PR bumping straight to gyp-next 0.16.0, I'll let you do that. Since it will show the commits here with the author as whoever performs the gyp-next bump.

Otherwise, I would want to open such a PR bumping straight to gyp-next 0.16.0 myself soon.

Thanks for the hard work on this, folks! It will be both exciting and a relief to have node-gyp working on Python 3.12.

EDIT: On closer look, there's more work here than just a gyp-next bump, the CI workflow files are reworked a bit. So, maybe just bump gyp-next again on this branch and update the PR title to match?

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

@DeeDeeG go ahead with the bump to v0.16.0
There is a script you can run in this repository to help create the commit
After that, you can copy over the CI changes from this commit.

@cclauss

cclauss commented Oct 27, 2023

Copy link
Copy Markdown
Contributor

Where are we at on this? Let's try to get Py3.12 compatibility into @lukekarrys imminent releases. #2860 (comment)

@lukekarrys

Copy link
Copy Markdown
Member

There will be an automated release PR for v10.0.0 where we can discuss waiting for any open PRs to land first. I won't release v10 without waiting a few days to make sure we get everything in.

@lukekarryslukekarrys added this to the v10.0.0 milestone Oct 27, 2023
Comment thread.github/workflows/tests.yml Outdated
@rzhao271rzhao271 changed the title feat(gyp): update gyp to v0.15.1feat(gyp): update gyp to v0.16.1Oct 27, 2023
@DeeDeeGDeeDeeG mentioned this pull request Oct 27, 2023
5 tasks
@rzhao271

rzhao271 commented Oct 27, 2023

Copy link
Copy Markdown
ContributorAuthor

I forgot to update my status.
I was busy with work yesterday but had some time today, so ended up updating my PR two minutes before @DeeDeeG created the same bump. Sorry.

@rzhao271

Copy link
Copy Markdown
ContributorAuthor

Closing in favour of #2923 because it has a better description

@rzhao271
rzhao271 deleted the rzhao271/upgrade-gyp-15-1 branch October 27, 2023 22:15
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rzhao271@cclauss@DeeDeeG@lukekarrys