You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now there is no guarantee that the most recent incremental build of a given Theseus crate will actually be used in the ISO image. It's quite likely, but not guaranteed (except for the hacky way that it's ensured for the captain).
The cause of this was that initially I wasn't sure how to accommodate the legal possibility that multiple versions of the same crate (e.g, log v.0.3.7 and log v4.0.0) can simultaneously exist in the compiled OS image. This must be allowed, since different crates (third-party crates) might depend on different versions of a given crate.
You can observe this when editing an application and rebuilding Theseus incrementally (without doing a clean) -- sometimes the new version of the application will not make it into the ISO image, but the older
Solution
ALL first-party Theseus crates (our crates implemented in kernel/, applications/, and perhaps libs/ must be singletons. There is no valid case in which there are multiple "versions" of one of our own crates existing in the final ISO image.
Third-party crates (our dependencies from crates.io or Github, etc) are not required to be singletons in the ISO image.
This probably also requires changes to the grub_cg_generation tool as well.
The text was updated successfully, but these errors were encountered:
* Incremental builds now work properly regardless of what versions are checked out or what configuration options may change in between builds.
* Create new build tool `copy_latest_crate_objects` which determines singleton kernel/app crates from cargo's target build directory, and copies them over to the OS image
modules folder.
* Remove `check_captain` target from Makefile, which is no longer necessary.
* Clear out `OBJECT_FILES_BUILD_DIR` (the `modules` folder) on each build to avoid bloat in OS image.
Problem
Right now there is no guarantee that the most recent incremental build of a given Theseus crate will actually be used in the ISO image. It's quite likely, but not guaranteed (except for the hacky way that it's ensured for the
captain
).The cause of this was that initially I wasn't sure how to accommodate the legal possibility that multiple versions of the same crate (e.g,
log v.0.3.7
andlog v4.0.0
) can simultaneously exist in the compiled OS image. This must be allowed, since different crates (third-party crates) might depend on different versions of a given crate.You can observe this when editing an application and rebuilding Theseus incrementally (without doing a clean) -- sometimes the new version of the application will not make it into the ISO image, but the older
Solution
ALL first-party Theseus crates (our crates implemented in
kernel/
,applications/
, and perhapslibs/
must be singletons. There is no valid case in which there are multiple "versions" of one of our own crates existing in the final ISO image.Third-party crates (our dependencies from crates.io or Github, etc) are not required to be singletons in the ISO image.
This probably also requires changes to the
grub_cg_generation
tool as well.The text was updated successfully, but these errors were encountered: