-
Notifications
You must be signed in to change notification settings - Fork 0
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
Update to Bob v0.2.0 among other fixes #48
Draft
obiwac
wants to merge
21
commits into
main
Choose a base branch
from
feature/new-bob
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.
Draft
Conversation
This file contains 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 was referenced Dec 25, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
To do:
aquarium create
or whatever./usr/src
headers for ZFS stuff instead of manually maintaining a copy here (checks inbuild.fl
, Bob utilities for logging? LikeFs.assert_access(SRC_PATH + "/include/whatever", "Is /usr/src populated?")
, or maybe this should be built in toassert
likeassert Fs.access(SRC_PATH + "/include/whatever"), "Is /usr/src populated?"
).Update CI to latest version of FreeBSD.I'm disabling CI for now. I'd like to do this more smartly, by having a cache for the OpenZFS sources as well as the templates.Make aquarium files symlinks instead of weird "manual" symlinks.Let's not worry about changing this right now, it doesn't impact all that much./usr/local/etc/aquariums
instead of/etc/aquariums
and clean up the directory structure for this a bit.Move away fromActually they're fine. I still want fsutil at some point but for now this is fine.libcopyfile
andlibmkfs_msdos
and simply issue commands (bring outfsutil
andcmd
from Bob for this?).Automatic code formatting.There are too many ugly macros that autoformatting kind of fucks up, so no.doas chown root:wheel .bob/prefix/bin/aquarium && doas chmod +s .bob/prefix/bin/aquarium
manually after each build. (Maybe also a warning for if we dynamically link a setuid binary, or is that hard to do?). I'm thinking the ability to hook to different parts of the build process and to execute arbitrary commands (e.g.pre()
andpost()
callback functions).TRY_FREE
with justfree
(free
is guaranteed to do nothing if passedNULL
, so there's no need for this).Personal notes:
The first two steps are obviously the most important, as after this I'll be able to restart AnaNAS and port the creation script over from there. Maybe this is also the opportunity to support aquarium definitions in
build.fl
files. This would require multiline strings in Flamingo to be ergonomic, and actually I could do one cooler and have Markdown-like code strings which Tree-sitter could highlight in the right language:Or maybe just use
"""
like in Python, so code examples aren't annoying to write in Markdown.The other big thing is how do we do installing 3rd party software to an aquarium? Do we use the dependency system? If so, should these be built in their own little aquariums to target the one we're generating? I'm guessing a pretty elegant solution would be to have the install map install to the aquarium when one is set up, but then that precludes having multiple aquariums at once.
The only thing I need to prevent is having to build inside the target aquarium, because then you need all the build dependencies and that's a lot of bloat for nothing. And it also means you can't cache stuff run-to-run.
Maybe there's also an external-to-bob solution to all of this. Maybe we just build normally with all the dependencies we want (optionally inside a build aquarium) and install to an aquarium instead of a regular prefix. This would certainly allow us to generate multiple aquariums at least. We could also also have a main
build.fl
file for the aquarium, which can shell out anotherbuild.fl
to build the stuff in that aquarium which itself runs in a temporary aquarium that can be cached.Say, in
build.fl
: