fix: use hardlink package-import-method so the Docker build works on ZFS (#7342) (#7533)

pnpm's default \`auto\` package-import-method eventually falls through
to \`copyfile\`, which uses \`copy_file_range\`. That syscall fails on
ZFS with \`EAGAIN: resource temporarily unavailable\` (see
https://github.com/pnpm/pnpm/issues/7024), so \`docker compose build\`
aborts inside the \`RUN pnpm install\` step on any host with a ZFS
root. Operators had to hand-patch every pnpm invocation in the
Dockerfile and install scripts.

Force \`package-import-method=hardlink\` in \`.npmrc\` so all pnpm
invocations (Docker build, \`bin/installDeps.sh\`,
\`bin/installLocalPlugins.sh\`, \`bin/updatePlugins.sh\`) pick up the
setting automatically. Hardlinks are fast, save disk, and work on
every filesystem Etherpad supports.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
John McLear 2026-04-17 12:03:21 +01:00 committed by GitHub
parent 706dd4bc4c
commit aed5424e82
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

6
.npmrc
View File

@ -1 +1,7 @@
strict-dep-builds=false
# Use hardlinks when populating node_modules instead of clone/copyfile.
# pnpm's default "auto" mode ends up using copy_file_range which fails on
# ZFS (https://github.com/pnpm/pnpm/issues/7024) and breaks `docker
# compose build` on hosts with a ZFS root (#7342). Hardlinks are fast,
# save disk, and work on every filesystem Etherpad supports.
package-import-method=hardlink