-
Notifications
You must be signed in to change notification settings - Fork 2
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
Add package validation command #64
base: main
Are you sure you want to change the base?
Add package validation command #64
Conversation
812ecaa
to
92ddeb8
Compare
418f8e1
to
2458213
Compare
2458213
to
5cc4bbc
Compare
319aac1
to
ad3f15f
Compare
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.
A first glimpse on your PR...
You may want to consider squashing some commit fixing earlier stuff of your PR, e.g.:
There is code in |
doc/usage.rst
Outdated
-s, --skip-checksums Skip checksum verification for all input files | ||
-w, --write-file Install the package to a file as an additional validation step | ||
-k, --keep-file-as=FILENAME Keep the file. Implies --write-file |
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.
From a user perspective I think it is not clear, what you mean exactly with "file" in the options --write-file
and --keep-file-as
as the term collides with the input files.
src/pu-main.c
Outdated
{ "skip-checksums", 's', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, | ||
&arg_validate_skip_checksums, "Skip checksum verification for all input files", NULL }, | ||
{ "size", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, | ||
&arg_validate_file_size, "Size of loop device. Default is 1G", "SIZE" }, |
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.
Again, a user may not be familiar with loop devices, so this description is not easy to understand without looking at the inner workings of partup.
ad3f15f
to
794acc2
Compare
61ff635
to
64e332a
Compare
64e332a
to
2289bdc
Compare
2289bdc
to
e6dfcc1
Compare
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.
Please rebase your changes, just in case.
e6dfcc1
to
8cc250f
Compare
I tried running partup with the validate command and somehow my RAM got clogged up. I guess there is a memory leak or similar in your code? I checked for leftover mounted loop device but that does not seem to be the issue on first sight. When running partup I get the following generic error message:
However, running anything that requires RAM then throws a similar error message, e.g. GCC:
The commands I ran before are something like this:
Maybe partup must return with an error code before this issue appears. Should happen if there are no checksums in the layout config and we do not provide the |
Add a new function pu_spwan_command_line_sync_result() which returns the output of stdout. Also, add a corresponding unit test. Signed-off-by: Leonard Anderweit <[email protected]>
Only append the source filename in case the destination is a directory. Signed-off-by: Leonard Anderweit <[email protected]>
Add functions to create and remove loop devices. Signed-off-by: Leonard Anderweit <[email protected]>
Signed-off-by: Leonard Anderweit <[email protected]>
Separate input files from flash specific information as they only contain general information like filename, checksums and size on target. Signed-off-by: Leonard Anderweit <[email protected]>
Signed-off-by: Leonard Anderweit <[email protected]>
Add a list for all input files regardless of their destination. Use it to get the absolute path and size of all input files at once after config parsing instead of during writing. Signed-off-by: Leonard Anderweit <[email protected]>
Add a new function for config validation. For now only verifies checksums. Signed-off-by: Leonard Anderweit <[email protected]>
Checksum verification is done with the validate command. So remove it from the install command to save time when writing to a device. Update the docs accordingly. Signed-off-by: Leonard Anderweit <[email protected]>
These steps are not necessary for package installation so execute them only when validating a package. Also, update the tests accordingly. Signed-off-by: Leonard Anderweit <[email protected]>
Add an additional validation step to check if the input files of each partition fit into the corresponding partition. Signed-off-by: Leonard Anderweit <[email protected]>
Check if the fixed size partitions fit into the device. This does not check expanding partitions. Signed-off-by: Leonard Anderweit <[email protected]>
Signed-off-by: Leonard Anderweit <[email protected]>
Add a new function pu_parse_size() which accepts a size string and returns the size in bytes. Accepts strings with the same format as ped_parse_unit, but only with absolute units. Also, add a corresponding unit test. Signed-off-by: Leonard Anderweit <[email protected]>
The new command 'validate' validates a package either against a provided device or a new loop device. Signed-off-by: Leonard Anderweit <[email protected]>
Writing the package to the loop device is an additional validation step. This is similar to installing the package to a real device. Signed-off-by: Leonard Anderweit <[email protected]>
The generated image can be written with dd. Signed-off-by: Leonard Anderweit <[email protected]>
Signed-off-by: Leonard Anderweit <[email protected]>
Signed-off-by: Leonard Anderweit <[email protected]>
8cc250f
to
b056f7f
Compare
Add a new command for package validation
validate
.The goal of package validation is to make sure a package can be written to a device without writing to the device. Additionally, remove most validation steps from the
install
command to reduce the time i takes to write to the device.Open tasks:
validate
without passing a device (maybe use a loop device and pass eMMC size as argument)