Joplin build error ENOSPC - no space left

Hello,

I am trying to build Joplin on a Linux Mint 19.3 (Ubuntu 18.04 based) system.
I followed the build instructions - no space in path, successfully enabled corepack, successfully installed all mentioned Linux dependencies and used Node 16+ (actually tried first with Node 16.15.0 and then 17.9.1).
I tried several times, and it fails each time with similar errors - ENOSPC: no space left on device (cf. this sample log).
However, when monitoring the available space during the build process, it does not seem to be fully consumed (even though being very large):

  • I increased /tmp up to 5go for testing purposes (no more than 18% is used during the build process). This folder is located on RAM if it matters.
  • yarn puts about 500mb cache on /home (which has a total of 1.2gb available)
  • yarn puts about 500mb cache in the project directory (which has a total of approx 5gb available)

Would it evoke something to one of you ?

The size of the project after yarn install is just about 4.0gb on the nose.

Otherwise it seems that you might have to increase fs.inotify.max_user_watches on your system.

Thank you for the clues.

So for today's attempt, i freed up more space in the project folder (total of approx. 7gb available). I could not increase in home folder (in which project folder is only symlinked), so ran the following command HOME=$(pwd) yarn install (I had tried that command yesterday with no more success though). Due to OS restart amount of RAM space available (i.e. /tmp) was also larger than yesterday. I have been monitoring the disk and RAM usage, and there has always been a few gb unused during the process.

For some reasons (maybe because I used this time Node v.16.15.1 LTS ?) I've got different error messages today (most of the log output lines are warnings, the errors being those labelled YN0009)

yarn install log
➤ YN0000: ┌ Resolution step
➤ YN0002: │ @aws-sdk/client-s3@npm:3.44.0 doesn't provide @aws-sdk/signature-v4-crt (p6155d), requested by @aws-sdk/middleware-sdk-s3
➤ YN0002: │ @aws-sdk/s3-request-presigner@npm:3.44.0 doesn't provide @aws-sdk/signature-v4-crt (pf5946), requested by @aws-sdk/middleware-sdk-s3
➤ YN0060: │ @joplin/app-desktop@workspace:packages/app-desktop provides react (p420ff) with version 16.13.1, which doesn't satisfy what react-test-renderer requests
➤ YN0060: │ @joplin/app-desktop@workspace:packages/app-desktop provides react-dom (p2e5b2) with version 16.9.0, which doesn't satisfy what re-resizable requests
➤ YN0002: │ @joplin/app-desktop@workspace:packages/app-desktop doesn't provide react-is (p0cdf0), requested by styled-components
➤ YN0060: │ @joplin/app-mobile@workspace:packages/app-mobile provides react (pb7acb) with version 17.0.2, which doesn't satisfy what react-redux requests
➤ YN0060: │ @joplin/app-mobile@workspace:packages/app-mobile provides react-native (pbf89e) with version 0.66.1, which doesn't satisfy what react-native-webview requests
➤ YN0002: │ @joplin/app-mobile@workspace:packages/app-mobile doesn't provide react-native-windows (pb66a5), requested by react-native-fs
➤ YN0002: │ @joplin/app-mobile@workspace:packages/app-mobile doesn't provide tslib (p1cc78), requested by @rollup/plugin-typescript
➤ YN0060: │ @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2 provides eslint (p4ecde) with version 6.8.0, which doesn't satisfy what @typescript-eslint/eslint-plugin and some of its descendants request
➤ YN0060: │ @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2 provides eslint (p83f76) with version 6.8.0, which doesn't satisfy what @typescript-eslint/parser requests
➤ YN0060: │ @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2 provides jest (pa940f) with version 26.6.3, which doesn't satisfy what ts-jest requests
➤ YN0060: │ @joplin/server@workspace:packages/server provides sqlite3 (p9ac44) with version 4.2.0, which doesn't satisfy what @rmp135/sql-ts and some of its descendants request
➤ YN0060: │ @joplin/server@workspace:packages/server provides sqlite3 (p05a2d) with version 4.2.0, which doesn't satisfy what knex requests
➤ YN0002: │ @octokit/rest@npm:16.43.2 doesn't provide @octokit/core (p84523), requested by @octokit/plugin-request-log
➤ YN0002: │ react-native-codegen@npm:0.0.7 doesn't provide @babel/preset-env (pe4ee6), requested by jscodeshift
➤ YN0060: │ root@workspace:. provides eslint (p2edfe) with version 7.32.0, which doesn't satisfy what eslint-plugin-react-hooks requests
➤ YN0000: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code
➤ YN0000: └ Completed in 0s 397ms
➤ YN0000: ┌ Fetch step
➤ YN0013: │ yeoman-generator@npm:4.13.0 can't be found in the cache and will be
➤ YN0013: │ ylru@npm:1.2.1 can't be found in the cache and will be fetched from
➤ YN0013: │ yocto-queue@npm:0.1.0 can't be found in the cache and will be fetch
➤ YN0013: │ yosay@npm:2.0.2 can't be found in the cache and will be fetched fro
➤ YN0013: │ zxcvbn@npm:4.4.2 can't be found in the cache and will be fetched fr
➤ YN0000: └ Completed in 2m 52s
➤ YN0000: ┌ Link step
➤ YN0076: │ fsevents@patch:fsevents@npm%3A1.2.13#~builtin<compat/fsevents>::version=1.2.13&hash=18f3a7 The linux-x64 architecture is incompatible with this module, link skipped.
➤ YN0076: │ fsevents@patch:fsevents@npm%3A2.3.2#~builtin<compat/fsevents>::version=2.3.2&hash=18f3a7 The linux-x64 architecture is incompatible with this module, link skipped.
➤ YN0076: │ 7zip-bin-mac@npm:1.0.1 The linux-x64 architecture is incompatible with this module, link skipped.
➤ YN0076: │ 7zip-bin-win@npm:2.2.0 The linux-x64 architecture is incompatible with this module, link skipped.
➤ YN0076: │ dmg-license@npm:1.0.11 The linux-x64 architecture is incompatible with this module, link skipped.
➤ YN0076: │ iconv-corefoundation@npm:1.1.7 The linux-x64 architecture is incompatible with this module, link skipped.
➤ YN0007: │ @joplin/app-clipper@workspace:packages/app-clipper must be built because it never has been before or the last one failed
➤ YN0007: │ husky@npm:3.1.0 must be built because it never has been before or the last one failed
➤ YN0007: │ nodemon@npm:2.0.15 must be built because it never has been before or the last one failed
➤ YN0007: │ keytar@npm:7.7.0 must be built because it never has been before or the last one failed
➤ YN0007: │ sharp@npm:0.26.3 must be built because it never has been before or the last one failed
➤ YN0007: │ sqlite3@npm:5.0.2 [ea905] must be built because it never has been before or the last one failed
➤ YN0007: │ core-js@npm:2.6.12 must be built because it never has been before or the last one failed
➤ YN0007: │ sharp@npm:0.25.4 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-free@npm:5.15.4 must be built because it never has been before or the last one failed
➤ YN0007: │ electron@npm:18.2.0 must be built because it never has been before or the last one failed
➤ YN0007: │ lzma-native@npm:8.0.6 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-common-types@npm:0.2.36 must be built because it never has been before or the last one failed
➤ YN0007: │ ejs@npm:2.7.4 must be built because it never has been before or the last one failed
➤ YN0007: │ sqlite3@npm:4.2.0 must be built because it never has been before or the last one failed
➤ YN0009: │ @joplin/app-clipper@workspace:packages/app-clipper couldn't be built successfully (exit code 228, logs can be found here: /tmp/xfs-b73b9f05/build.log)
➤ YN0009: │ electron@npm:18.2.0 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-3d2e5679/build.log)
➤ YN0009: │ sqlite3@npm:4.2.0 couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-61bcebc9/build.log)
➤ YN0007: │ root@workspace:. must be built because it never has been before or the last one failed
➤ YN0007: │ @joplin/app-desktop@workspace:packages/app-desktop must be built because it never has been before or the last one failed
➤ YN0007: │ @joplin/app-mobile@workspace:packages/app-mobile must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/fontawesome-svg-core@npm:1.2.36 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/free-regular-svg-icons@npm:5.15.4 must be built because it never has been before or the last one failed
➤ YN0007: │ @fortawesome/free-solid-svg-icons@npm:5.15.4 must be built because it never has been before or the last one failed
➤ YN0009: │ @joplin/app-desktop@workspace:packages/app-desktop couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-5ab171ec/build.log)
➤ YN0009: │ @joplin/app-mobile@workspace:packages/app-mobile couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-7e276413/build.log)
➤ YN0009: │ root@workspace:. couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-2db8506a/build.log)
➤ YN0000: └ Completed in 2m 7s
➤ YN0000: Failed with errors in 4m 59s

If I check app-desktop build.log (which is the package i am more specifically looking to build), it contains this time a more detailed ENOSPC error.

app-desktop's build.log
# This file contains the result of Yarn building a package (@joplin/app-desktop@workspace:packages/app-desktop)
# Script name: postinstall

[13:30:34] Using gulpfile /home/user/Documents/0-Gits/joplin/packages/app-desktop/gulpfile.js
[13:30:34] Starting 'build'...
[13:30:34] Starting 'compileScripts'...
[13:30:34] Starting 'compilePackageInfo'...
[13:30:34] Starting 'copyPluginAssets'...
[13:30:34] Starting 'copyApplicationAssets'...
[13:30:34] Starting 'updateIgnoredTypeScriptBuild'...
[13:30:34] Starting 'buildCommandIndex'...
[13:30:34] Starting 'compileSass'...
Compiling /home/user/Documents/0-Gits/joplin/packages/app-desktop/tools/../gui/ExtensionBadge.jsx...

Error: ENOSPC: no space left on device, open '/home/user/Documents/0-Gits/joplin/packages/app-desktop/tools/../gui/ExtensionBadge.min.js'
    at Object.openSync (node:fs:585:3)
    at Object.writeFileSync (node:fs:2170:35)
    at output (/home/user/Documents/0-Gits/joplin/packages/app-desktop/node_modules/babel-cli/lib/babel/file.js:90:10)
    at walk (/home/user/Documents/0-Gits/joplin/packages/app-desktop/node_modules/babel-cli/lib/babel/file.js:150:5)
    at files (/home/user/Documents/0-Gits/joplin/packages/app-desktop/node_modules/babel-cli/lib/babel/file.js:156:7)
    at module.exports (/home/user/Documents/0-Gits/joplin/packages/app-desktop/node_modules/babel-cli/lib/babel/file.js:184:5)
    at Object.<anonymous> (/home/user/Documents/0-Gits/joplin/packages/app-desktop/node_modules/babel-cli/lib/babel/index.js:129:1)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)

[13:30:35] The following tasks did not complete: build, compileScripts, compilePackageInfo, copyPluginAssets, copyApplicationAssets, updateIgnoredTypeScriptBuild, buildCommandIndex, compileSass
[13:30:35] Did you forget to signal async completion?

Eventually I increased fs.inotify.max_user_watches from defaukt 8192 to 524288 as suggested there, and ran the same command as above again. But I ended up to the same point.

Any other idea ?

It shouldn't be the node version, v16 LTS should work just fine.

I'm afraid the issue is beyond me, hope somebody else might be able to suggest something.

check the log here:

YN0009: │ @joplin/app-desktop@workspace:packages/app-desktop couldn't be built successfully (exit code 1, logs can be found here: /tmp/xfs-5ab171ec/build.log)

That log is the one already enclosed in the body of my previous message - cf. foldable section "app-desktop's build.log"

Thanks to both of you for getting interested in my issue. I eventually kind of got it - it seems to be related to Unix permissions.

Since today I have troubles with Firefox which has some read/write issue with the profile folder it is supposed to use. That set me on the track since that profile folder is located on the same partition as the Joplin project's folder I have been trying to build.
I don't think it makes sense to give the full detail here, but in short, all files on that partition were mounted as root:root although my setup allowed me to read/write them not being root.
That's strange since that system did not undergo any changes since yesterday apart from removing some old unused kernels to free up some space or installing one missing Linux dependency required to build Joplin. Before today's restart, I had no issue with my Firefox profile for instance, although Joplin's build was still failing with ENOSPC error (cf. the log mentioned in my first message).

So I didn't solve the permissions-related issue so far, but found a workaround to build Joplin - I copied the project folder on an external drive which was mounting with expected permissions (myuseraccount:myuseraccount), and simply ran yarn install from there and it worked as it is supposed to.

4 Likes