-
Notifications
You must be signed in to change notification settings - Fork 7
Add OCI image support: pull, unpack, run, prune, status, policy #34
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
Max042004
wants to merge
61
commits into
sysprog21:main
Choose a base branch
from
Max042004:oci-image
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
61 commits
Select commit
Hold shift + click to select a range
086a3e1
Scaffold elfuse oci subcommand and image reference parser
Max042004 43a3d38
Add OCI content-addressable blob store and SHA-256 digester
Max042004 9bf7141
Add OCI manifest, image-index, and image-config parsers
Max042004 cc97d97
Add OCI registry HTTPS client (anonymous + bearer token challenge)
Max042004 c8e1e97
Add OCI registry private-registry options (basic auth, custom CA, ins…
Max042004 08a2f4e
Add OCI local store and elfuse oci pull pipeline
Max042004 0ec6b84
Add OCI offline manifest tree renderer for elfuse oci inspect
Max042004 209a338
Vendor zstd v1.5.6 decode-only for OCI layer unpack
Max042004 0004508
Add OCI tar reader for ustar and GNU long-name entries
Max042004 81078f4
Add OCI decompression dispatch for gzip and zstd layer blobs
Max042004 ffae40a
Add OCI sidecar metadata table for unpacked layers
Max042004 9545c2e
Add OCI layer applier with whiteout, symlink-escape, hardlink semantics
Max042004 c59640f
Add OCI sysroot volume provisioning over sparse case-sensitive APFS
Max042004 f317c81
Add clonefile-based per-run rootfs for OCI image clones
Max042004 ed7bb61
Wire OCI unpack pipeline and add oci unpack / clone subcommands
Max042004 56f327b
Silence hdiutil stdout in sysroot detach and create
Max042004 1d7bb30
Add image-config runtime block to elfuse oci inspect
Max042004 0ad590d
Add OCI runspec resolver for image runtime + CLI override merge
Max042004 5ad5e20
Add OCI guest PATH resolver with sysroot containment
Max042004 9c2779b
Extract elfuse_launch from main for Phase 3 oci run reuse
Max042004 5938c82
Add elfuse oci run subcommand and orchestrator
Max042004 1c0ccf7
Add OCI compat shell smoke and fixture-builder for Phase 3 closeout
Max042004 9fc3adb
Add OCI image-layout 1.0.0 marker to store root
Max042004 c954a83
Move OCI store pins from refs/ flat-file to index.json
Max042004 5cd7a82
Auto-migrate OCI store refs/ flat-files to index.json on open
Max042004 f2e0494
Add OCI origin sidecar to unpacked image trees
Max042004 3b99337
Add OCI root-set walker for store garbage collection
Max042004 5ad07e5
Add OCI image prune mark-and-sweep
Max042004 e6cb907
Add OCI prune filters: --older-than and --keep-bytes
Max042004 9259014
Lift OCI unpack per-layer step into public oci_unpack_layer helper
Max042004 34ec1fe
Add OCI per-layer unpack snapshot cache via APFS clonefile
Max042004 bb42fd6
Add OCI raw-tar layer apply mode for Plan 3 C3.3 cache populate
Max042004 8e254c8
Add OCI layers schema marker and v1 cache auto-migration
Max042004 d521aa2
Add OCI ChainID helper and stack cache APIs for Plan 3 C3.3c
Max042004 946caaf
Rewrite OCI unpack orchestrator on raw + ChainID stack cache
Max042004 345448b
Add OCI cross-image dedup metrics for oci inspect
Max042004 4df17b1
Add OCI rebuild-cache for back-filling stack snapshots
Max042004 920d61c
Add OCI layer and stack prune sweep
Max042004 be475a1
Add OCI store-wide status command
Max042004 28ce75b
Add OCI pull --refresh manifest revalidation
Max042004 d01b703
Add OCI policy.json schema and loader
Max042004 4da7e9c
Plumb OCI policy.json into fetch and pull CLI
Max042004 537e855
Add OCI policy registries.d overlay
Max042004 10f2c57
Add OCI parallel blob fetch via curl_multi
Max042004 e30adfc
Add OCI HTTP Range resume for partial blob fetches
Max042004 7a5d1e1
Add OCI per-blob progress callback and TTY/non-TTY renderer
Max042004 b72e866
Add OCI clone-rootfs writable-fs DoD coverage
Max042004 095db72
Add OCI runtime files injection for resolv.conf / hosts / hostname
Max042004 5bf4639
Add OCI runtime /dev/full and /dev/console emulation
Max042004 0b13164
Add OCI runtime /proc surface for cgroup hostname comm statm
Max042004 64a223d
Add OCI image-config User symbolic resolution via /etc/passwd
Max042004 ce066b9
Document OCI Phase 4 runtime surface and libc-adjacent envelope
Max042004 76303c2
Add OCI image index walk to oci run subcommand
Max042004 575707c
Add OCI_FETCH_ONLINE=1 alpine:3 end-to-end smoke
Max042004 45380d9
Fix OCI layer-apply rejecting root tar entry
Max042004 60a3c5d
Use OCI unpack copyfile fallback for cross-volume stage
Max042004 17babd0
Add OCI tar PAX path linkpath support
Max042004 6cd07c2
Add OCI compat heavy mode sparsebundle + alpine-shaped fixture
Max042004 b2f64b8
Add OCI compat heavy mode busybox-shaped fixture
Max042004 c4a1110
Add OCI compat heavy mode two-layer-whiteout fixture
Max042004 700ac9d
Add ELFUSE_OCI_PROGRESS=plain to opt out of pull in-place redraw
Max042004 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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,12 @@ | ||
| build/ | ||
| archive/ | ||
| externals/ | ||
| # externals/ holds downloaded fixtures (kernel, rootfs, packages) that are | ||
| # fetched on demand; tracking them in git would balloon the repo. The | ||
| # vendored cJSON and zstd trees are exceptions: they ship with the source | ||
| # so the OCI parser and layer unpacker build out of the box. | ||
| externals/* | ||
| !externals/cjson/ | ||
| !externals/zstd/ | ||
| lib/modules/ | ||
| *.o | ||
| *.bin |
Large diffs are not rendered by default.
Oops, something went wrong.
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,20 @@ | ||
| Copyright (c) 2009-2017 Dave Gamble and cJSON contributors | ||
|
|
||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
|
|
||
| The above copyright notice and this permission notice shall be included in | ||
| all copies or substantial portions of the Software. | ||
|
|
||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| THE SOFTWARE. | ||
|
|
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,35 @@ | ||
| # Vendored cJSON | ||
|
|
||
| This directory contains a vendored copy of [cJSON](https://github.com/DaveGamble/cJSON), | ||
| the ultralightweight JSON parser written in ANSI C. cJSON ships as a single | ||
| `.c` / `.h` pair and is dual-licensed under the MIT license (see `LICENSE`). | ||
|
|
||
| ## Why vendored | ||
|
|
||
| `oci-roadmap.md` Q9 commits Phase 1 to hand-rolled C alongside the existing | ||
| elfuse codebase: no Go, no Rust, no `cargo` / `go` in the build matrix. cJSON | ||
| is the smallest credible JSON dependency that fits that contract; it is | ||
| self-contained, has no external dependencies, and compiles cleanly with | ||
| `clang` and `gcc` on macOS and Linux. | ||
|
|
||
| ## Version | ||
|
|
||
| Pinned to upstream tag `v1.7.18` (2024-07-30). Fetched with: | ||
|
|
||
| ``` | ||
| curl -fsSL -o cJSON.h https://raw.githubusercontent.com/DaveGamble/cJSON/v1.7.18/cJSON.h | ||
| curl -fsSL -o cJSON.c https://raw.githubusercontent.com/DaveGamble/cJSON/v1.7.18/cJSON.c | ||
| curl -fsSL -o LICENSE https://raw.githubusercontent.com/DaveGamble/cJSON/v1.7.18/LICENSE | ||
| ``` | ||
|
|
||
| ## Local modifications | ||
|
|
||
| None. The files are byte-identical to the upstream tag so future security | ||
| updates can be applied by re-running the curl commands above. | ||
|
|
||
| ## Build integration | ||
|
|
||
| The Makefile compiles `cJSON.c` with project warning flags relaxed: cJSON is | ||
| third-party code and its style does not match elfuse's `-Wpedantic | ||
| -Wmissing-prototypes -Wshadow` posture. Only `src/oci/` translation units | ||
| include `externals/cjson/cJSON.h`; the rest of the codebase never sees it. |
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.
P2: Contradictory documentation for
--user. The options table describes it as 'numeric only', but the User and WorkingDir section immediately below describes detailed symbolic-name resolution (accepting symbolicname,name:group, reading /etc/passwd and /etc/group). These cannot both be correct.Prompt for AI agents