pnpm / pnpm/action-setup

v6.0.9: false-positive "v10 installation layout" warning when self-updating from bootstrap 11.7.0 (still reproduces with pnpm 11.19.0)

Open
#281 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
1.3k
Forks
217
Avg merge
8h 42m
Merged PRs (30d)
1

Description

Summary

pnpm/action-setup@v6.0.9 (0ebf471) still emits a false-positive v10 layout warning whenever it self-updates from the action's bootstrap pnpm (11.7.0) to the project's packageManager pin.

This is the same report as #278 (closed as completed on 2026-07-17 with no comments and no release after v6.0.9). Re-opening as a new issue because the warning is still present when targeting pnpm 11.19.0.

Running self-installer...
    added 1 package in 3s
    Checking for updates...
    Switching pnpm from v11.7.0 to v11.19.0...
    [WARN] Detected a pnpm v10 installation layout at PNPM_HOME. The pnpm shims at PNPM_HOME have been refreshed so the new version is active, but pnpm v11 expects bins in PNPM_HOME/bin. Run "pnpm setup" to migrate your PATH to the v11 layout.
    Successfully updated pnpm to v11.19.0

No real v10 install is involved. The warning is noise in CI; the install still succeeds and the correct version is active.

Reproduction

package.json:

{ "packageManager": "pnpm@11.19.0" }
jobs:
  repro:
    runs-on: ubuntu-latest # also seen on self-hosted linux/arm64
    steps:
      - uses: actions/checkout@v6
      - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
        # version omitted → reads package.json#packageManager
      - uses: actions/setup-node@v6
        with:
          node-version: 24
Why it fires

The warning string is emitted by pnpm itself during self-update:

https://github.com/pnpm/pnpm/blob/main/pnpm11/engine/pm/commands/src/self-updater/selfUpdate.ts

// pnpm v10 setup linked bins directly into pnpmHomeDir ...
if (hasLegacyHomeDirShim(opts.pnpmHomeDir)) {
  // refresh legacy shims...
  globalWarn(
    'Detected a pnpm v10 installation layout at PNPM_HOME. ...'
  )
}

hasLegacyHomeDirShim treats a pnpm file directly under PNPM_HOME as a v10 marker. In this action, PNPM_HOME is pointed at the bootstrap's node_modules/.bin (see src/install-pnpm/run.ts in v6.0.9), which always contains a pnpm shim from npm ci / the action's own link step. So every self-update from bootstrap 11.7.0 → any other version false-positives by construction.

Notes
  • Pinning packageManager to exactly 11.7.0 makes self-update a no-op and the warning disappears (same observation as #278).
  • standalone: true does not avoid it on Linux.
  • Related genuine migration issue (different cause): pnpm/pnpm#11528 / pnpm/pnpm#11464.
Possible directions (from #278)
  1. Give the bootstrap a dedicated PNPM_HOME (e.g. <dest>/pnpm-home) separate from node_modules/.bin.
  2. Or teach pnpm's hasLegacyHomeDirShim to distinguish an npm-managed .bin from a real v10 setup layout.
Environment
  • pnpm/action-setup@v6.0.9 (0ebf47130e4866e96fce0953f49152a61190b271)
  • bootstrap pnpm 11.7.0 → target pnpm 11.19.0
  • Observed in GitHub Actions CI (linux/arm64 self-hosted runners and expected on ubuntu-latest)

Happy to help test a fix.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/install-pnpm/run.ts and reproduce the workflow with packageManager pinned to pnpm@11.19.0, comparing the bootstrap PNPM_HOME and self-update behavior described in the issue. Evaluate the two proposed directions and verify that self-updating no longer emits the false-positive warning while the target pnpm version remains active.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, nodejs, typescript
Domain
ci-cd, devops, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.