This patch extracts the [STATUS] field from our bundle information
metadata, and stores it in groups.ini. From there we put the contents
of this string verbatim into the manifest.
We don't interpret, encode or convert the contents of the [STATUS]
field in the manifest. Instead, we just strip non-alphanumeric
characters and pass the contents on. This leaves it entirely to the
client to parse and interpret the value of this field in the manifest.
If the bundle file, or the groups.ini file omits any status, nothing
is output to the Manifest file.
This release introduces a change to the hashing scheme regarding delta names,
and directory hashes, as well as minor fixes to support the new hashing.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
There is an issue when two different files in a newer release have same hash:
This is, when swupd updates a file by applying a delta, it takes the HASH2 to
know the file where delta must be applyed. If files are different in current
release (before updating), there must be 2 deltas, one for each file but as
the two files have same hash in new release delta's name are the same:
FROM-TO-HASH2 and it is when issue arises due to just the last delta file is
kept when swupd server creates files and packs. So when swupd client tries to
apply the delta to one of the file that does not corresponds it will fail and
generates an error. At the first look it will seem like delta file is corrupted
however the issue is that delta file was created for another file.
To solve this issue we include the hash for the original file in the delta's
name so that swupd client can take the correct delta and apply it:
FROM-TO-HASH1-HASH2.
Signed-off-by: Jose R Guzman <jose.r.guzman.mosqueda@intel.com>
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
Calculate the hash for directories is desiderable to be independent
on the dirname due to the subsequent calculation on the staged/HASH
file. Here is used const "DIRECTORY" string for input name for
all folders.
Signed-off-by: Jose R Guzman <jose.r.guzman.mosqueda@intel.com>
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
This release includes a fix to replace system calls by local system_argv
functions, cleanup patches for error output and code style, adding delta
manifests to delta packs, consistency changes for tar and string allocation,
and removes creation of delta manifests out of create_update.
This is a re-roll of release 3.2.4 to fix a time skew issue that caused some
build failures.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
This release includes a fix to replace system calls by local system_argv
functions, cleanup patches for error output and code style, adding delta
manifests to delta packs, consistency changes for tar and string allocation,
and removes creation of delta manifests out of create_update.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
Delta manifests are handled by the pack creation step, and should not be
part of the plain manifest/update content creation step. This reduces the time
swupd_create_update takes to run significantly.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
This reverts commit 7f3b760430 and commit
74f4afa655. The code introduced parallel manifest
creation, and removed delta manifests from being created, but needs some more
rigorous testing and refactoring to ensure all test suites pass.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
I had neglected to rebase to the latest revision of #21, so this commit
incorporates the additional changes.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
The code previously created all the bundle manifests and delta manifests
synchronously in 1 thread. While this worked, it was not optimal considering
the manifests can be created at the same time since they are unique. This
patch creates a threadpool that processes each bundle manifest in its own
thread. Delta manifest creation was removed from create_update because it
can already be handled by our delta pack creation process, and it is a huge
time-sink for create_update as it also runs single threaded.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
The delta manifests were being staged correctly but were not being added
to the delta packs.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
There are new functions that replace system() calls: system_argv(), system_argv_fd and system_argv_pipe().
They are based on execvp() function and they can manage any argument including filenames with characters
that could be interpreted as meta-characters in a regular system() function.
So no escape for the arguments needed and is less prone to errors.
Signed-off-by: Jose R Guzman <jose.r.guzman.mosqueda@intel.com>
Since delta pack creation is very much tied to a DevOps workflow, it
makes more sense for the pack_maker.sh to live outside of swupd-server.
This script will move to the clearlinux/mixer-tools repo, since the
Clear mixer is a DevOps-oriented tool.
Also, update the code comment in versions.c to describe another action
to be taken that is DevOps-specific, namely that the value of
WEBDIR/version/formatN/latest file should be set at release time.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
This release fixes a bug with adding invalid bundle manifest hashes to
the Manifest.MoM and optimizes swupd_create_update to remove the
unnecessary rsync from the full chroot back to bundle chroots.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Just in case we encounter a bundle manifest that does not exist anymore,
or the last_change is 0, which is an invalid version to create, make
sure we add the deleted entry in the MoM and do not attempt to untar
that manifest.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
The bundle manifest hashes were calculated from the STATE_DIR Manifest.bundle
files, which caused a problem when they the permissions/owner were changed. The
hashes should be calculated by untarring the Manifest.BUNDLE.tar files
referenced in the Manifest.MoM.
Signed-off-by: Tudor Marcu <tudor.marcu@intel.com>
This release includes a trivial improvement for reporting paths that
contain blacklisted characters.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
To better track which files are excluded from manifests because they
contain blacklisted characters, the full path is more useful to log
rather than the file basename.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Since the source files for entry points to the other two binaries are
named after the binaries, do the same for swupd_create_update.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
To more easily implement tests, analyze test results, etc, store each
test in a separate directory and dump all logs and the web-dir content
there as well.
The test suite can be run with 'make check', as before, but now tests
can be run individually by directly invoking the appropriate test.bats
file (at toplevel, or within the test directory).
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
This release fixes a sorting issue with bundle manifests: they should be
version sorted, not filename sorted.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
This release adds support for a bundle includes feature, which allows
bundles that "include" other bundles to depend on each other. This
change reduces duplication of files in manifests and improves build
times for larger bundle sets that contain many includes.
The two other functional changes are:
- The --format option to swupd_create_update is now mandatory.
- The value passed to --format must now be a positive integer.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
Since removing of all of the matching deleted files between a build with
an older manifest format and current needs to happen *after*
match_manifests() finishes accounting for new and deleted entries in the
manifests, simply move the logic into a separate function to be called
after match_manifests().
Because one or more file deletions should trigger a fresh bundle manifest
creation, account for the return value of this new function in addition
to the result of manifest pruning and whether any bundle includes were
changed. Since "os-core" is treated specially, and it's expected to
contain changed files for every build, only the non-"os-core" bundle
manifests need the trigger.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
For the new full manifest and new bundle manifests, the format member
was not being initialized.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
For swupd_create_update, the required -F option needed to be added for
several tests, and the option parsing order changed.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
To decrease chances of specifying an incorrect format number, since the
default is a hardcoded value "3", always require the user to pass the -F
option to swupd_create_update.
In the future, it would be nice to read the default value from a config
file, with the -F option overriding the value.
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>