Skip to content

Conversation

@landerweit-phytec
Copy link
Collaborator

@landerweit-phytec landerweit-phytec commented Aug 2, 2023

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-phytec landerweit-phytec added the enhancement New feature or request label Aug 2, 2023
@landerweit-phytec landerweit-phytec added this to the v1.0.0 milestone Aug 2, 2023
@landerweit-phytec landerweit-phytec self-assigned this Aug 2, 2023
@landerweit-phytec landerweit-phytec force-pushed the wip-validate-command branch 4 times, most recently from 812ecaa to 92ddeb8 Compare August 14, 2023 15:03
@landerweit-phytec landerweit-phytec force-pushed the wip-validate-command branch 10 times, most recently from 418f8e1 to 2458213 Compare August 17, 2023 09:47
@landerweit-phytec landerweit-phytec marked this pull request as ready for review August 17, 2023 11:02
@landerweit-phytec landerweit-phytec force-pushed the wip-validate-command branch 5 times, most recently from 319aac1 to ad3f15f Compare September 8, 2023 09:13
Copy link
Collaborator

@mschwan-phytec mschwan-phytec left a 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...

@mschwan-phytec
Copy link
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.

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

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" },
Copy link
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.

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>
@mschwan-phytec mschwan-phytec force-pushed the main branch 9 times, most recently from a97a710 to ed48627 Compare September 25, 2025 11:30
@mschwan-phytec mschwan-phytec force-pushed the main branch 2 times, most recently from 9ab6f72 to 41bf69f Compare January 15, 2026 08:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants