-
Notifications
You must be signed in to change notification settings - Fork 3.4k
[wasmfs] Add support for squashfs #24670
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
martenrichter
wants to merge
11
commits into
emscripten-core:main
Choose a base branch
from
martenrichter:squashfs
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
3e08632
[wasmfs] Add support for squashfs
martenrichter c046fac
[wasmfs] Fix settings references.rst for squashfs
martenrichter 0fa7e5a
Fix whitespaces
martenrichter 6d31440
Fix py linting
martenrichter fc57ae9
[wasmfs] Fix squashfs test
martenrichter 6218723
[wasmfs] Let squashfs constructor return null on failure
martenrichter e8a70c0
Move squashfs wasm to port
martenrichter 955d1a0
Fix lint and settings ref
martenrichter fdf0a5f
Fix lint again
martenrichter 39a8552
Add libsquashfs license and fix naming
martenrichter bd05fba
Fix lint
martenrichter File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
The example squash fs file is generate with the following command from libsquashfs-ng: | ||
|
||
gensquashfs -b 4096 -c gzip -D squashfs_example squashfs_example.sqshfs | ||
|
||
The block size is chosen to be as small as possible to support multiple blocks with a small | ||
example file. It is not a recommendation for usuage. |
Binary file not shown.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
What comes to my mind? Nothing special about text files? | ||
Maybe some latex: | ||
$H=\hbar \omega a^\dagger a $ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
What should we write! | ||
|
||
More interesting text? | ||
I just need to fill it. | ||
Exotic characters ÖÄÜß?aêéáà |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Lalala! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Just some text, nothing special! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
Traditional blind text exceeding 8Kbyte and thus two frames if frame size is 8KB | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. | ||
Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, | ||
dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper | ||
congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est | ||
eleifend mi, non fermentum diam nisl sit amet erat. | ||
---- | ||
End |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
testfile.txt |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
What should we write! | ||
|
||
More interesting text? | ||
I just need to fill it. | ||
Exotic characters ÖÄÜß?aêéáà |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/* | ||
* Copyright 2025 The Emscripten Authors. All rights reserved. | ||
* Emscripten is available under two separate licenses, the MIT license and the | ||
* University of Illinois/NCSA Open Source License. Both these licenses can be | ||
* found in the LICENSE file. | ||
*/ | ||
|
||
#include <assert.h> | ||
#include <dirent.h> | ||
#include <emscripten.h> | ||
#include <emscripten/wasmfs.h> | ||
#include <errno.h> | ||
#include <fcntl.h> | ||
#include <limits.h> | ||
#include <stdio.h> | ||
#include <string.h> | ||
#include <sys/stat.h> | ||
#include <sys/uio.h> | ||
#include <unistd.h> | ||
|
||
void printFile(const char* path) { | ||
FILE* file = fopen(path, "rb"); | ||
printf("Print file: %s\n", path); | ||
printf("------------\n"); | ||
char buf[4096]; | ||
size_t read = sizeof(buf); | ||
while (read == sizeof(buf)) { | ||
read = fread(buf, 1, sizeof(buf), file); | ||
if (read > 0) | ||
fwrite(buf, 1, read, stdout); | ||
} | ||
fclose(file); | ||
printf("\n------------\n"); | ||
} | ||
|
||
void iterateDirs(const char* oldPath) { | ||
printf("Enter directory: %s\n", oldPath); | ||
DIR* dir = opendir(oldPath); | ||
assert(dir != NULL); | ||
struct dirent* entry = readdir(dir); | ||
char newPath[PATH_MAX + 1]; | ||
while (entry) { | ||
if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) { | ||
printf("Process entry: %s\n", entry->d_name); | ||
snprintf(newPath, sizeof(newPath), "%s/%s", oldPath, entry->d_name); | ||
printf("New entry: %s\n", newPath); | ||
struct stat st; | ||
if (stat(newPath, &st) >= 0) { | ||
if (S_ISDIR(st.st_mode)) | ||
iterateDirs(newPath); | ||
else if (S_ISREG(st.st_mode)) | ||
printFile(newPath); | ||
} | ||
printf("Finish entry: %s\n", entry->d_name); | ||
} | ||
entry = readdir(dir); | ||
} | ||
closedir(dir); | ||
printf("Exit directory: %s\n", oldPath); | ||
} | ||
|
||
int main(int argc, char** argv) { | ||
printf("Create backend from /squashfs_example.sqsh..."); | ||
backend_t squashFSBackend = | ||
wasmfs_create_squashfs_backend("/squashfs_example.sqshfs"); | ||
assert(squashFSBackend != NULL); | ||
printf("allocation success!\n"); | ||
// now mount it in the file system | ||
int ret = wasmfs_create_directory( | ||
"/squashfs", S_IRUGO | S_IXUGO | S_IWUGO, squashFSBackend); | ||
assert(ret == 0); | ||
printf("mount done!\n"); | ||
printf("Now iterate over all files and print their contents\n"); | ||
iterateDirs("/squashfs"); | ||
printf("Iteration finished!\n"); | ||
return 0; | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For new port we don't add new settings like. Instead we just make them available via
--use-port
.