Add support for new APX optimization level. Change increases the
maximim potential optimization level but does not yet allow the files
to be used (installed). get_opt_level_mask still needs to be updated
to account for system supporting the new optimization level (and
adding APX_SKIP_FILE support) before the APX files can be installed.
This change is being done at this time to allow mixer to create these
files without swupd error messages during updates.
Signed-off-by: William Douglas <william.douglas@intel.com>
Allow the usage of non-SSE files from manifests. This involves testing
what the currently running system supports for optimized content and
installing the best matching available binary the manifest provides.
There is an exception for operations where the prefix is set to
something other than the rootfs where SSE binaries will be used in all
cases.
Signed-off-by: William Douglas <william.douglas@intel.com>
mixer-tools populates the optimized mask based on a matrix of values
where the mask includes both the optimization of the file on the line
but also the combined masks of all matching files.
This means a file mask needs to be translaed from the mask to what its
actual optimization level is and what other optimizations levels are
available to be useful. This change adds 2 new elements to the file
struct. The opt_level stores a files optimization level and
available_levels stores a bitwise or of the different optimization
levels that can be found in the file list for the same file.
For instance an AVX2_3 mask indicates the file is AVX2 with both SSE
and AVX512 files also available (SSE | AVX2 | AVX512 == 3).
Signed-off-by: William Douglas <william.douglas@intel.com>
Remove duplicate '9' in string for generating OPTIMIZED_BITMASKS array
and regenerate. This also requires an additional element is added to
the array to get to the 64 characters usable in the map.
Signed-off-by: William Douglas <william.douglas@intel.com>
The modifier field will be a character that translates roughly into a
base64 encoded bitmask. The first 3 bytes are the optimization level
and the last three are the max optimization level any files with that
same filename can have.
For now though skip all lines that don't match SSE_OPT (the previous
values the modifier field would have: 'b', 's' and 'C' all map to
the SSE_OPT bitmask).
Also rework the manifest unit tests a bit more. Noticed the exported
flag was wrong in the data and the X flag for the 3rd field was
completely unchecked for in swupd code. Added testing for the ignored
'b', 's' and 'C' values of the modifier field and checked the non-sse
is in fact skipped as a file for now.
Signed-off-by: William Douglas <william.douglas@intel.com>
The logic is testing a flag that mixer does not set and would like
to change the purpose of in a new version. Remove the test (needs a
format bump before mixer can use the flag) for the flag.
Signed-off-by: William Douglas <william.douglas@intel.com>
Instead of saving it in a global string, just use a list of strings to
return the current mounted directories. Also moving function to sys.c
Also fixes hashdump command to correctly print the warning if file is a
mounted directory.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
src/
src/3rd-party/ # Everything that is 3rd-party related
src/cmds/ # All sub-commands from swupd (except 3rd-party ones)
src/lib/ # Modules that implement functions not dependent on swupd
behavior (i.e. system interations, logging)
src/swupd_lib/ # Modules that implement functions dependent on swupd
behavior (i.e. hash calculation, signature verification,
manifest/bundle handlers)
On several points on swupd we need to free a pointer and then set it to
NULL. This is made in some areas using the free_and_clear_pointer(). But
most places free_and_clear_pointer() is used, this is not really necessary.
On the other hand it's hard to make sure that we are really setting to NULL
every pointer that we need, so we're adding a more conservative approach on
setting every pointer to NULL after free using a wrapper.
The greatest advantage of this wrapper over free_and_clear_pointer() is that
it's not type dependent and we don't need to call it with a pointer of a pointer,
so calls look more to calls to a standard free.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
This commit introduces a function to build a path from multiple string
variables and at the same time it removes all duplicated slashes in the
path.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
- Better documentation on header file
- Renaming all functions that requires the list to be sorted to add
a prefix list_sorted_
- Make sure all functions are calling list_head() and list_tail()
when needed
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
All files that are written by tests should be written in the directory
where the tests were executed and not the directory where code is.
Make distcheck now works fine
Fixes#343
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Last parameter was missing on a run_command() call and tests were breaking for some specific configurations.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
This commit adds the ability to the manifest parser to recognize the
"optional" manifest header and to add those optional bundles in the
manifest to the manifest struct.
Signed-off-by: Castulo Martinez <castulo.martinez@intel.com>
Test if certificates with Authority Information Access property set as critical
aren't used to validate swupd content.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>
Adding a unit test for string functions on string.h module.
Unit tests will help us to test functions that are hard to test
with function tests. String conversions, for example would be extremely
hard to test using functional tests.
Signed-off-by: Otavio Pontes <otavio.pontes@intel.com>