Skip to content

Add package validation command - #64

Open
landerweit-phytec wants to merge 19 commits into
phytec:mainfrom
landerweit-phytec:wip-validate-command
Open

Add package validation command#64
landerweit-phytec wants to merge 19 commits into
phytec:mainfrom
landerweit-phytec:wip-validate-command

Conversation

@landerweit-phytec

@landerweit-phyteclanderweit-phytec commented Aug 2, 2023

Copy link
Copy Markdown
Collaborator

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:

  • Check if URI points into archive
  • Size calculation for uncompressed archives
  • Option to use validate without passing a device (maybe use a loop device and pass eMMC size as argument)
  • Ensure the partitions fit the device
  • Test validate command
  • Add commit messages

@landerweit-phyteclanderweit-phytec added the enhancement New feature or request label Aug 2, 2023
@landerweit-phyteclanderweit-phytec added this to the v1.0.0 milestone Aug 2, 2023
@landerweit-phyteclanderweit-phytec self-assigned this Aug 2, 2023
@landerweit-phytec
landerweit-phytecforce-pushed the wip-validate-command branch 4 times, most recently from 812ecaa to 92ddeb8CompareAugust 14, 2023 15:03
@landerweit-phytec
landerweit-phytecforce-pushed the wip-validate-command branch 10 times, most recently from 418f8e1 to 2458213CompareAugust 17, 2023 09:47
@landerweit-phytec
landerweit-phytec marked this pull request as ready for review August 17, 2023 11:02
@landerweit-phytec
landerweit-phytecforce-pushed the wip-validate-command branch 5 times, most recently from 319aac1 to ad3f15fCompareSeptember 8, 2023 09:13
Comment threadsrc/pu-utils.c

@mschwan-phytecmschwan-phytec left a comment

Copy link
Copy Markdown
Collaborator

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...

Comment threadsrc/pu-utils.c Outdated
Comment threadtests/emmc.c
Comment threadsrc/pu-input.c
Comment threadsrc/pu-input.c Outdated
Comment threadsrc/pu-input.c Outdated
Comment threadsrc/pu-input.c Outdated
Comment threadsrc/pu-input.h Outdated
Comment threadsrc/pu-emmc.c Outdated
@mschwan-phytec

Copy link
Copy Markdown
Collaborator

You may want to consider squashing some commit fixing earlier stuff of your PR, e.g.:

Check file size and raw overlap only in validate

There is code in src/pu-emmc.c:pu_emmc_new that gets added earlier and then removed. Maybe you can squash/rearrange your commits, so changes are correct in the first place.

Comment threaddoc/usage.rst Outdated
Comment threaddoc/usage.rst Outdated
Comment on lines +54 to +56
-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

Copy link
Copy Markdown
Collaborator

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.

Comment threadsrc/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" },

Copy link
Copy Markdown
Collaborator

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.

Comment threadsrc/pu-main.c
Only append the source filename in case the destination is a directory.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Add functions to create and remove loop devices.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
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 <l.anderweit@phytec.de>
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
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 <l.anderweit@phytec.de>
Add a new function for config validation. For now only verifies
checksums.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
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 <l.anderweit@phytec.de>
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 <l.anderweit@phytec.de>
Add an additional validation step to check if the input files of each
partition fit into the corresponding partition.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Check if the fixed size partitions fit into the device. This does not
check expanding partitions.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
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 <l.anderweit@phytec.de>
The new command 'validate' validates a package either against a provided
device or a new loop device.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
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 <l.anderweit@phytec.de>
The generated image can be written with dd.
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementNew feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@landerweit-phytec@mschwan-phytec