anonymous added on 2018-05-17 18:28:39:
Quick glance at fossil code suggests they ensure entries are created for parent directories of all files, but that's not the case with either the sqlar or "sqlite3 -A" tools.
I'm suggesting this is a sqlarfs bug, since both the sqlar and "sqlite3 -A" tools seem to have code for handling this during extraction.
* Create an SQlite Archive with a single file in it from some directory:
$ mkdir -p dummy mntpt
$ echo "foo" > dummy/bar
$ sqlar sample.sar dummy/bar
$ sqlar -l sample.sar
$ sqlarfs ./sample.sar./mntpt
(this runs in the foreground, so execute the following from a different shell)
$ ls ./mntpt
$ # should have shown 'dummy', with 'bar' in it!
If instead the archive is created as so:
$ sqlar works.sar dummy
An entry for 'dummy' is created, and the file can be accessed when the archive is mounted with sqlarfs.
As an aside, is there a reason to not require entries for all "intermediate" directories in the sqlite archive file "tree"? Just curious :). Doing so would resolve this (of course) but also provides an answer for what permissions such directories should have (consider dummy/a and dummy/b with different permissions, etc.). But since omitting these seems to be supported (or by design?), and since existing tooling makes it easy to craft archives without them, hopefully this can be resolved in sqlarfs.
Thanks, LMK if there's anything else I can do to clarify or help with this!