Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Confirm we're using Corepack in preinstall hook #9791

Merged
merged 2 commits into from
Dec 6, 2023
Merged

Conversation

sndrs
Copy link
Member

@sndrs sndrs commented Dec 5, 2023

What does this change?

  • adds a preinstall script (@cemms1's idea) to make sure the current installation is being done by a corepack-managed package manager
  • makes sure yarn runs the preinstall script from wherever you run yarn
  • advises users to remove their old yarn entirely

Why?

it turns out a lot of people manually run yarn from the root, rather than relying on the makefile to manage deps for them. this means simply checking in the makefile is not enough.

the preinstall hook will catch any yarn call, whatever its origin.

also, some earlier versions of yarn are not overridden by running corepack enable, which means that the current advice (to just enable corepack) does not help people with affected versions of yarn already globally installed.

addresses issue that arose after merging #9466...

Screenshots

image

@sndrs sndrs requested a review from a team as a code owner December 5, 2023 17:46
@sndrs sndrs self-assigned this Dec 5, 2023
@sndrs sndrs added this to the 👋 Yarn v1 milestone Dec 5, 2023
Copy link

github-actions bot commented Dec 5, 2023

Size Change: 0 B

Total Size: 730 kB

ℹ️ View Unchanged
Filename Size
dotcom-rendering/dist/100.web.********************.js 990 B
dotcom-rendering/dist/1024.web.********************.js 2.75 kB
dotcom-rendering/dist/1076.web.********************.js 3.08 kB
dotcom-rendering/dist/1136.web.********************.js 884 B
dotcom-rendering/dist/1178.web.********************.js 504 B
dotcom-rendering/dist/1406.web.********************.js 5.09 kB
dotcom-rendering/dist/1418.web.********************.js 9.98 kB
dotcom-rendering/dist/1465.web.********************.js 3.32 kB
dotcom-rendering/dist/1520.web.********************.js 492 B
dotcom-rendering/dist/1521.web.********************.js 5.48 kB
dotcom-rendering/dist/1659.web.********************.js 518 B
dotcom-rendering/dist/1714.web.********************.js 3.5 kB
dotcom-rendering/dist/1939.web.********************.js 3.59 kB
dotcom-rendering/dist/1987.web.********************.js 3.15 kB
dotcom-rendering/dist/2092.web.********************.js 849 B
dotcom-rendering/dist/2096.web.********************.js 13 kB
dotcom-rendering/dist/2186.web.********************.js 916 B
dotcom-rendering/dist/2323.web.********************.js 3.88 kB
dotcom-rendering/dist/2394.web.********************.js 6.24 kB
dotcom-rendering/dist/2510.web.********************.js 663 B
dotcom-rendering/dist/2511.web.********************.js 819 B
dotcom-rendering/dist/254.web.********************.js 638 B
dotcom-rendering/dist/279.web.********************.js 2.48 kB
dotcom-rendering/dist/2848.web.********************.js 16.2 kB
dotcom-rendering/dist/2879.web.********************.js 910 B
dotcom-rendering/dist/2919.web.********************.js 900 B
dotcom-rendering/dist/2923.web.********************.js 720 B
dotcom-rendering/dist/3030.web.********************.js 957 B
dotcom-rendering/dist/3111.web.********************.js 590 B
dotcom-rendering/dist/3149.web.********************.js 636 B
dotcom-rendering/dist/3265.web.********************.js 916 B
dotcom-rendering/dist/3302.web.********************.js 820 B
dotcom-rendering/dist/3389.web.********************.js 884 B
dotcom-rendering/dist/3662.web.********************.js 3.13 kB
dotcom-rendering/dist/3767.web.********************.js 2.84 kB
dotcom-rendering/dist/3795.web.********************.js 797 B
dotcom-rendering/dist/3968.web.********************.js 3.79 kB
dotcom-rendering/dist/4012.web.********************.js 783 B
dotcom-rendering/dist/4251.web.********************.js 8.9 kB
dotcom-rendering/dist/4349.web.********************.js 775 B
dotcom-rendering/dist/4591.web.********************.js 404 B
dotcom-rendering/dist/4593.web.********************.js 1.74 kB
dotcom-rendering/dist/4610.web.********************.js 3.48 kB
dotcom-rendering/dist/4627.web.********************.js 783 B
dotcom-rendering/dist/4797.web.********************.js 744 B
dotcom-rendering/dist/480.web.********************.js 524 B
dotcom-rendering/dist/489.web.********************.js 5.22 kB
dotcom-rendering/dist/5332.web.********************.js 820 B
dotcom-rendering/dist/5495.web.********************.js 676 B
dotcom-rendering/dist/5515.web.********************.js 30 kB
dotcom-rendering/dist/5688.web.********************.js 3.79 kB
dotcom-rendering/dist/5744.web.********************.js 720 B
dotcom-rendering/dist/5843.web.********************.js 4.69 kB
dotcom-rendering/dist/6068.web.********************.js 775 B
dotcom-rendering/dist/6126.web.********************.js 2.23 kB
dotcom-rendering/dist/6263.web.********************.js 3.98 kB
dotcom-rendering/dist/6295.web.********************.js 999 B
dotcom-rendering/dist/639.web.********************.js 951 B
dotcom-rendering/dist/6428.web.********************.js 741 B
dotcom-rendering/dist/657.web.********************.js 2.46 kB
dotcom-rendering/dist/6609.web.********************.js 872 B
dotcom-rendering/dist/6967.web.********************.js 850 B
dotcom-rendering/dist/721.web.********************.js 4.24 kB
dotcom-rendering/dist/7569.web.********************.js 4.83 kB
dotcom-rendering/dist/7650.web.********************.js 23 kB
dotcom-rendering/dist/7701.web.********************.js 647 B
dotcom-rendering/dist/7842.web.********************.js 2.36 kB
dotcom-rendering/dist/8085.web.********************.js 2.59 kB
dotcom-rendering/dist/8112.web.********************.js 3.37 kB
dotcom-rendering/dist/8268.web.********************.js 4.29 kB
dotcom-rendering/dist/8329.web.********************.js 5.32 kB
dotcom-rendering/dist/8395.web.********************.js 580 B
dotcom-rendering/dist/8401.web.********************.js 922 B
dotcom-rendering/dist/8414.web.********************.js 4.92 kB
dotcom-rendering/dist/8620.web.********************.js 5.78 kB
dotcom-rendering/dist/9196.web.********************.js 784 B
dotcom-rendering/dist/9390.web.********************.js 743 B
dotcom-rendering/dist/9422.web.********************.js 614 B
dotcom-rendering/dist/9457.web.********************.js 6.63 kB
dotcom-rendering/dist/9581.web.********************.js 797 B
dotcom-rendering/dist/9582.web.********************.js 710 B
dotcom-rendering/dist/9597.web.********************.js 3.25 kB
dotcom-rendering/dist/9617.web.********************.js 1 kB
dotcom-rendering/dist/9724.web.********************.js 5.01 kB
dotcom-rendering/dist/AdPortals-importable.web.********************.js 3.63 kB
dotcom-rendering/dist/AlreadyVisited-importable.web.********************.js 412 B
dotcom-rendering/dist/AppEmailSignUp-importable.web.********************.js 7.28 kB
dotcom-rendering/dist/AppsEpic-importable.web.********************.js 4 kB
dotcom-rendering/dist/AppsFooter-importable.web.********************.js 3.53 kB
dotcom-rendering/dist/AppsLightboxImage-importable.web.********************.js 2.92 kB
dotcom-rendering/dist/AppsLightboxImageStore-importable.web.********************.js 2.4 kB
dotcom-rendering/dist/AudioAtomWrapper-importable.web.********************.js 3.51 kB
dotcom-rendering/dist/AustralianTerritorySwitcher-importable.web.********************.js 4.6 kB
dotcom-rendering/dist/Branding-importable.web.********************.js 2.48 kB
dotcom-rendering/dist/braze-web-sdk-core.web.********************.js 36.9 kB
dotcom-rendering/dist/BrazeMessaging-importable.web.********************.js 5.28 kB
dotcom-rendering/dist/CalloutBlockComponent-importable.web.********************.js 6.79 kB
dotcom-rendering/dist/CalloutEmbedBlockComponent-importable.web.********************.js 6 kB
dotcom-rendering/dist/CardCommentCount-importable.web.********************.js 2.89 kB
dotcom-rendering/dist/Carousel-importable.web.********************.js 7.71 kB
dotcom-rendering/dist/CarouselForNewsletters-importable.web.********************.js 5.39 kB
dotcom-rendering/dist/ChartAtom-importable.web.********************.js 500 B
dotcom-rendering/dist/CommentCount-importable.web.********************.js 3.06 kB
dotcom-rendering/dist/DiscussionContainer-importable.web.********************.js 24.3 kB
dotcom-rendering/dist/DiscussionMeta-importable.web.********************.js 3.66 kB
dotcom-rendering/dist/DocumentBlockComponent-importable.web.********************.js 3.56 kB
dotcom-rendering/dist/EmbedBlockComponent-importable.web.********************.js 4.09 kB
dotcom-rendering/dist/EnhancePinnedPost-importable.web.********************.js 1.97 kB
dotcom-rendering/dist/FetchOnwardsData-importable.web.********************.js 2.5 kB
dotcom-rendering/dist/FilterKeyEventsToggle-importable.web.********************.js 3.32 kB
dotcom-rendering/dist/FocusStyles-importable.web.********************.js 607 B
dotcom-rendering/dist/FollowWrapper-importable.web.********************.js 3.07 kB
dotcom-rendering/dist/FooterLabel-importable.web.********************.js 336 B
dotcom-rendering/dist/frameworks.web.********************.js 20.8 kB
dotcom-rendering/dist/GetCricketScoreboard-importable.web.********************.js 3.49 kB
dotcom-rendering/dist/GetMatchNav-importable.web.********************.js 9.62 kB
dotcom-rendering/dist/GetMatchStats-importable.web.********************.js 1.52 kB
dotcom-rendering/dist/GetMatchTabs-importable.web.********************.js 2.77 kB
dotcom-rendering/dist/guardian-braze-components-banner.web.********************.js 13.4 kB
dotcom-rendering/dist/guardian-braze-components-end-of-article.web.********************.js 9 kB
dotcom-rendering/dist/GuideAtomWrapper-importable.web.********************.js 790 B
dotcom-rendering/dist/HeaderTopBar-importable.web.********************.js 10.8 kB
dotcom-rendering/dist/index.web.********************.js 45.2 kB
dotcom-rendering/dist/InstagramBlockComponent-importable.web.********************.js 3.64 kB
dotcom-rendering/dist/InteractiveBlockComponent-importable.web.********************.js 5.92 kB
dotcom-rendering/dist/InteractiveContentsBlockComponent-importable.web.********************.js 3.79 kB
dotcom-rendering/dist/InteractiveSupportButton-importable.web.********************.js 3.83 kB
dotcom-rendering/dist/KeyEventsCarousel-importable.web.********************.js 2.71 kB
dotcom-rendering/dist/KnowledgeQuizAtom-importable.web.********************.js 3.52 kB
dotcom-rendering/dist/LatestLinks-importable.web.********************.js 1.2 kB
dotcom-rendering/dist/LightboxHash-importable.web.********************.js 430 B
dotcom-rendering/dist/LightboxJavascript-importable.web.********************.js 4.64 kB
dotcom-rendering/dist/LiveBlogEpic-importable.web.********************.js 3.86 kB
dotcom-rendering/dist/Liveness-importable.web.********************.js 3.18 kB
dotcom-rendering/dist/ManyNewsletterSignUp-importable.web.********************.js 4.98 kB
dotcom-rendering/dist/MapEmbedBlockComponent-importable.web.********************.js 5.58 kB
dotcom-rendering/dist/Metrics-importable.web.********************.js 2.29 kB
dotcom-rendering/dist/MostViewedFooter-importable.web.********************.js 5.68 kB
dotcom-rendering/dist/MostViewedFooterData-importable.web.********************.js 8.35 kB
dotcom-rendering/dist/MostViewedRightWrapper-importable.web.********************.js 3.73 kB
dotcom-rendering/dist/OnwardsUpper-importable.web.********************.js 4.17 kB
dotcom-rendering/dist/PersonalityQuizAtom-importable.web.********************.js 3.65 kB
dotcom-rendering/dist/ProfileAtom-importable.web.********************.js 547 B
dotcom-rendering/dist/ProfileAtomWrapper-importable.web.********************.js 810 B
dotcom-rendering/dist/PulsingDot-importable.web.********************.js 744 B
dotcom-rendering/dist/QandaAtom-importable.web.********************.js 542 B
dotcom-rendering/dist/ReaderRevenueDev-importable.web.********************.js 466 B
dotcom-rendering/dist/readerRevenueDevUtils.web.********************.js 2.44 kB
dotcom-rendering/dist/ReaderRevenueLinks-importable.web.********************.js 6.18 kB
dotcom-rendering/dist/RelativeTime-importable.web.********************.js 1.92 kB
dotcom-rendering/dist/RichLinkComponent-importable.web.********************.js 6.4 kB
dotcom-rendering/dist/SecureSignupIframe-importable.web.********************.js 4.93 kB
dotcom-rendering/dist/SendAMessage-importable.web.********************.js 4.6 kB
dotcom-rendering/dist/SendTargetingParams-importable.web.********************.js 2.08 kB
dotcom-rendering/dist/sentry.web.********************.js 772 B
dotcom-rendering/dist/SetABTests-importable.web.********************.js 3.43 kB
dotcom-rendering/dist/SetAdTargeting-importable.web.********************.js 481 B
dotcom-rendering/dist/shimport.web.********************.js 2.78 kB
dotcom-rendering/dist/ShowHideContainers-importable.web.********************.js 642 B
dotcom-rendering/dist/ShowMore-importable.web.********************.js 5.68 kB
dotcom-rendering/dist/SignInGateMain.web.********************.js 3.86 kB
dotcom-rendering/dist/SignInGateMainCheckoutComplete.web.********************.js 4.94 kB
dotcom-rendering/dist/SignInGateSelector-importable.web.********************.js 5.55 kB
dotcom-rendering/dist/SlotBodyEnd-importable.web.********************.js 6.57 kB
dotcom-rendering/dist/SpotifyBlockComponent-importable.web.********************.js 5.43 kB
dotcom-rendering/dist/StickyBottomBanner-importable.web.********************.js 5.74 kB
dotcom-rendering/dist/SubNav-importable.web.********************.js 2.36 kB
dotcom-rendering/dist/SupportTheG-importable.web.********************.js 6.3 kB
dotcom-rendering/dist/TableOfContents-importable.web.********************.js 3.08 kB
dotcom-rendering/dist/TimelineAtom-importable.web.********************.js 1.22 kB
dotcom-rendering/dist/TweetBlockComponent-importable.web.********************.js 1.01 kB
dotcom-rendering/dist/UnsafeEmbedBlockComponent-importable.web.********************.js 3.65 kB
dotcom-rendering/dist/VideoFacebookBlockComponent-importable.web.********************.js 5.6 kB
dotcom-rendering/dist/VineBlockComponent-importable.web.********************.js 3.5 kB
dotcom-rendering/dist/WeatherWrapper-importable.web.********************.js 5.41 kB
dotcom-rendering/dist/YoutubeBlockComponent-importable.web.********************.js 3.99 kB

compressed-size-action

@JamieB-gu
Copy link
Contributor

Rebasing on/merging main/clicking "Update branch" may fix the failing cypress test. See #9782.

Copy link
Contributor

@mxdvl mxdvl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very elegant and helpful messages.

Could we make it clearer that the leading dash is not part of the command to run?

@sndrs
Copy link
Member Author

sndrs commented Dec 5, 2023

Could we make it clearer that the leading dash is not part of the command to run?

updated the logging, and added a screen shot to the description

@sndrs sndrs force-pushed the sndrs/detect-corepack branch 2 times, most recently from 8fcc54f to 5e4bb5b Compare December 5, 2023 22:52
and provide some guidance if not

Co-authored-by: Charlotte Emms <[email protected]>
@sndrs sndrs added the DevX label Dec 6, 2023
@sndrs sndrs merged commit 57e4967 into main Dec 6, 2023
34 checks passed
@sndrs sndrs deleted the sndrs/detect-corepack branch December 6, 2023 13:47
@prout-bot
Copy link

Seen on PROD (merged by @sndrs 13 minutes and 17 seconds ago) Please check your changes!

@sndrs sndrs mentioned this pull request Dec 6, 2023
@georgeblahblah
Copy link
Contributor

I'm not having much joy with this setup. Can anyone think what might be happening?

?1 dotcom-rendering/dotcom-rendering % npm uninstall -g npm                                     gb/mostviewed-scaling

up to date in 180ms
Reshimming asdf nodejs...
✔︎ dotcom-rendering/dotcom-rendering % corepack enable                                           gb/mostviewed-scaling
✔︎ dotcom-rendering/dotcom-rendering % make install                                              gb/mostviewed-scaling
Checking environment
Using Node 18.18.2
Refreshing dependencies
Corepack is not enabled
This project requires Corepack to automatically provide the correct Node package manager. To use it, remove npm and enable Corepack:

$ npm uninstall -g npm
$ corepack enable

It looks like you are using asdf, so you may also need to reshim Node:

$ asdf reshim nodejs

You will still be able to use npm in other projects, as before.
See https://github.com/nodejs/corepack for more information.
make: *** [install] Error 1
?2 dotcom-rendering/dotcom-rendering % asdf reshim nodejs                                       gb/mostviewed-scaling
✔︎ dotcom-rendering/dotcom-rendering % make install                                              gb/mostviewed-scaling
Checking environment
Using Node 18.18.2
Refreshing dependencies
Corepack is not enabled
This project requires Corepack to automatically provide the correct Node package manager. To use it, remove npm and enable Corepack:

$ npm uninstall -g npm
$ corepack enable

It looks like you are using asdf, so you may also need to reshim Node:

$ asdf reshim nodejs

You will still be able to use npm in other projects, as before.
See https://github.com/nodejs/corepack for more information.
make: *** [install] Error 1

@sndrs
Copy link
Member Author

sndrs commented Dec 7, 2023

Hi @georgeblahblah - I'll give you a shout

Comment on lines +40 to +43
if (process.env.npm_execpath?.includes('node_modules'))
command(`npm uninstall -g ${packageManager}`);
if (process.env.npm_execpath?.includes('brew'))
command(`brew uninstall ${packageManager}`);
Copy link
Member

@arelra arelra Dec 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this cause confusion for developers who work on other projects other than dotcom-rendering? If you uninstall the global package manager then it would be removed for other projects that the user might be relying on.

When I ran this on dotcom-rendering I then also had to run corepack enable in the commercial repo, I assume because it was on a different node version (?).

Perhaps some comms might help to explain that once you've removed the global package manager you (might) need to run corepack enable in all other repos that use the same package manager?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah you'd need to run it for each version of node you use. i'll raise a PR adding a note to that effect to the message.

ideally this would be in the recommendations repo too but i'd like to confirm it works well enough in DCR before getting to that next stage

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants