-
Notifications
You must be signed in to change notification settings - Fork 73
sysext: turn vim to a sysext image #2502
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
base: main
Are you sure you want to change the base?
Conversation
dosym /var/kubernetes/kubelet-plugins/volume/exec /usr/libexec/kubernetes/kubelet-plugins/volume/exec | ||
|
||
insinto "/etc/flatcar" | ||
doins "${FILESDIR}/flatcar/enabled-sysext.conf" |
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.
This should go into /usr/share/flatcar/enabled-sysext.conf
build_library/extra_sysexts.sh
Outdated
zfs:sys-fs/zfs | ||
podman:app-containers/podman,net-misc/passt | ||
python:dev-lang/python,dev-python/pip | ||
vim:app-editors/vim |
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.
I would like to avoid having too many extensions and treat it like packages. We can rather bundle similar things into a feature set, and give it an appropriate name (E.g., we wanted a dev
extension with gcc, gdb and other stuff). Here we could call it tools
and later on we also add an optional extra-tools
extension for anything else we want to add that wasn't part of the base image (E.g., htop
, rg
?).
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.
Sounds good to me.
a029ec8
to
fc6ac52
Compare
app-crypt/gnupg | ||
app-crypt/go-tspi | ||
app-crypt/tpmpolicy | ||
app-editors/vim |
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.
To state what was written elsewhere: We might want to still include an emergency editor in the base image. Something like nano
is good because it's common, user friendly, and minimal (and many distros have it as default editor).
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.
Unrelated comment: I think it would be nice to have mksquashfs and mkfs.erofs available to build sysext images on Flatcar itself, maybe they could also directly go to a tools extension instead of the base image. Not sure if tools
or optional extra-tools
would be better - in doubt extra-tools
to keep the default small?
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.
I am just worried about the confusion that tools
and extra-tools
can add. What is extra
? Maybe dev-tools
(and this could be part of the sysext devcontainer flatcar/Flatcar#1125)
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.
With "extra" thought we can communicate that these are additional/optional. In the dev extension that would replace the dev container we would have even less common things because most people won't need a compiler and debugger. I think three layers somehow make sense in the long run and should give enough room for package inclusion requests so that we don't add a bunch of other extensions where it's maybe difficult to know how they are compatible with each other once dynamic libraries are involved. For the three layers "tools", "extra(-tools)" and "dev" we should build/generate them stacked so that extra and dev can depend on the contents of "tools" (and "extra") to avoid file conflicts.
This dependency can be documented and we can also add "tools"/"extra" implicitly when parsing the extension config file.
Signed-off-by: Mathieu Tortuyaux <[email protected]>
This enables regular Vim installation ('huge') Signed-off-by: Mathieu Tortuyaux <[email protected]>
This provides an initial 'tools' sysext Signed-off-by: Mathieu Tortuyaux <[email protected]>
Signed-off-by: Mathieu Tortuyaux <[email protected]>
e731f47
to
54f88be
Compare
I've just realized that this might break all tests in Github Actions because we don't push the assets on |
To avoid the download we should pre-populate it on the rootfs. The file has to be placed under |
Build action triggered: https://github.com/flatcar/scripts/actions/runs/17490975553 |
In this case, I think we should seize the opportunity to start unify
With those three sysexts populated on the rootfs. All the sysext will be controlled in the same way and no need to symlink the docker / containerd sysext to remove them: https://www.flatcar.org/docs/latest/provisioning/sysext/#remove-docker-and--or-containerd-from-flatcar |
Yes :) I think in a follow-up PR after testing that it works with the "tools" extension (Is nightly enough or would we need to test it with an Alpha release? Not sure if we need to wait that long.) |
In this PR, we propose to turn
vim
to a sysext image built withoutminimal
compiling option. The sysext will be enabled by default to not break existing Vim usage.This sysext is called
tools
and can handle more software inside, see:One could drop Vim from Flatcar with the current configuration:
Note: In case of emergency, a
nano
editor is now shipped on the generic image and will be always available (even iftools
sysext is unmerged)How to use
Use
vim
as usual:changelog/
directory (user-facing change, bug fix, security fix, update)/boot
and/usr
size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc. (Total size difference: decreased by 9833049 bytes (9602 kbytes, 9 mbytes)
)Note
Related to:
Footnotes
https://github.com/flatcar/scripts/pull/2502#discussion_r2314870321 ↩