electron-userland / electron-builder

A complete solution to package and build a ready for distribution Electron app with “auto update” support out of the box
https://www.electron.build
MIT License
13.46k stars 1.71k forks source link

No space left on device (sparse files) #8223

Open chornns opened 1 month ago

chornns commented 1 month ago
Copying…
could not access /Volumes/thing/Contents/Resource/sparsefile - No space left on device
Finishing…

This is due to an upstream issue with hdiutil interaction with sparse files (apparently on macOS 14) that can be observed thus:

➜ mkdir sparse
➜ dd if=/dev/zero of=sparse/big bs=1 count=0 seek=10000000
0+0 records in
0+0 records out
0 bytes transferred in 0.000014 secs (0 bytes/sec)
➜  hdiutil create -srcFolder sparse sparse.dmg
....could not access /Volumes/sparse/big - No space left on device

hdiutil: create failed - No space left on device
➜  mkdir notsparse
➜  cp -S sparse/big notsparse
➜  hdiutil create -srcFolder notsparse notsparse.dmg
............................................................
created: /Users/camhorn/sparsetest/notsparse.dmg
➜  ls -ls sparse notsparse .
.:
total 56
 0 drwxr-xr-x  3 camhorn  staff     96 May 17 11:48 notsparse
56 -rw-r--r--@ 1 camhorn  staff  24914 May 17 11:48 notsparse.dmg
 0 drwxr-xr-x  3 camhorn  staff     96 May 17 11:47 sparse

notsparse:
total 19536
19536 -rw-r--r--  1 camhorn  staff  10000000 May 17 11:48 big

sparse:
total 0
0 -rw-r--r--  1 camhorn  staff  10000000 May 17 11:47 big

It would be nice if electron-builder could override with the correct -size for the initial hdiutil create: https://github.com/electron-userland/electron-builder/blob/088523652934b87419c15c068459627dcf9a0535/packages/dmg-builder/src/dmg.ts#L200

Or at least allow -size to be manually set.