5 years agolibvintf: deprecate ro.build.system_root_image android-o-mr1-iot-release-smart-display-r3
libvintf: deprecate ro.build.system_root_image
If default_fstab does not have "/", then it should have "/system",
there is no need to check the ro.build.system_root_image property.
Test: compile
Bug: 109821005
Change-Id: If6419b08f79b30800d13fbb9b320e48f435243f3
If default_fstab does not have "/", then it should have "/system",
there is no need to check the ro.build.system_root_image property.
Test: compile
Bug: 109821005
Change-Id: If6419b08f79b30800d13fbb9b320e48f435243f3
Merge "<kernel> compat check can be split"
Add test for HalManifest::getHalNamesAndVersions
Change-Id: I1f1c287d3b30f4e158b515e3794293da8a263594
Fixes: 116259705
Test: libvintf_test
Change-Id: I1f1c287d3b30f4e158b515e3794293da8a263594
Fixes: 116259705
Test: libvintf_test
<kernel> compat check can be split
Split <kernel> check into its own check flag so that we
can check only the compatibility between <kernel> tag
in fwk compat matrix and runtime kernel.
Test: Vts Treble Vintf Test
Test: libvintf_test
Test: vintf_object_test
Bug: 64301876
Change-Id: Ia5891ef46be1dd6e69123ab6cbeeb5d5d4868c56
Split <kernel> check into its own check flag so that we
can check only the compatibility between <kernel> tag
in fwk compat matrix and runtime kernel.
Test: Vts Treble Vintf Test
Test: libvintf_test
Test: vintf_object_test
Bug: 64301876
Change-Id: Ia5891ef46be1dd6e69123ab6cbeeb5d5d4868c56
5 years agoAdd noexcept to move constructors and assignment operators. android-o-mr1-iot-release-1.0.5
Add noexcept to move constructors and assignment operators.
Bug: 116614593
Test: build with WITH_TIDY=1
Change-Id: Ibbc62b8122db952614b927df13002dde388ebef7
Bug: 116614593
Test: build with WITH_TIDY=1
Change-Id: Ibbc62b8122db952614b927df13002dde388ebef7
Merge "Add test for multiple device matrices"
Add test for multiple device matrices
Test: libvintf_test
Bug: 116062715
Change-Id: Id3aa32511111bf58d0c847b9683526825c9793a7
Test: libvintf_test
Bug: 116062715
Change-Id: Id3aa32511111bf58d0c847b9683526825c9793a7
getHalNamesAndVersions fix
The bug is introduced in P, but P vintf device info
collection also reports "target_fcm_version", so
we don't have to apply the fix in P branches.
Test: run *TS device info collection
Change-Id: Ie04e28cd67be5c11d3993de7fb99269b1b5701ef
The bug is introduced in P, but P vintf device info
collection also reports "target_fcm_version", so
we don't have to apply the fix in P branches.
Test: run *TS device info collection
Change-Id: Ie04e28cd67be5c11d3993de7fb99269b1b5701ef
Merge "System always contains root dir."
require quotes on kconfig string values
When parsing the Android kernel config fragments, require (and remove)
quotes around string values.
This change also fails the parsing if the string does not conform to one
of the possible types of string, integer, or tristate.
Change-Id: I2723f341ce086a39ace541ea98eec402b994448d
When parsing the Android kernel config fragments, require (and remove)
quotes around string values.
This change also fails the parsing if the string does not conform to one
of the possible types of string, integer, or tristate.
Change-Id: I2723f341ce086a39ace541ea98eec402b994448d
System always contains root dir.
In recovery, system image is mounted to /mnt/system. After the work of
first stage ramdisk, system image always contains the root dir, no
matter what value of ro.build.system_root_image is.
Test: do compat check in recovery
Bug: 112586588
Change-Id: I3890c9c1335b23fd22a8910bca07e59d631bac71
In recovery, system image is mounted to /mnt/system. After the work of
first stage ramdisk, system image always contains the root dir, no
matter what value of ro.build.system_root_image is.
Test: do compat check in recovery
Bug: 112586588
Change-Id: I3890c9c1335b23fd22a8910bca07e59d631bac71
Allow OTA package to contain fake AVB version
The system_matrix.xml in compatibility.zip can contain a fake
AVB version as specified by BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE.
This allows OTA to pass compatibility check when the AVB version is
updated *during* the OTA.
Bug: 112291283
Test: specify BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE.
and manual test.
Change-Id: I250bf3b547eb6edfdcdcee4dff64405f97e74b15
The system_matrix.xml in compatibility.zip can contain a fake
AVB version as specified by BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE.
This allows OTA to pass compatibility check when the AVB version is
updated *during* the OTA.
Bug: 112291283
Test: specify BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE.
and manual test.
Change-Id: I250bf3b547eb6edfdcdcee4dff64405f97e74b15
SerializeFlags is a namespace.
The SerializeFlags becomes a namespace that contains
the original class definition under type SerializeFlags::Type
and static constants.
Consequently, all SeralizeFlags methods can
now be constexpr.
Also added static tests.
Test: libvintf_test
Test: vintf_object_test
Bug: 110711640
Change-Id: I786a1f77e19defc2ab2d025de3ed7cfe48f4fbce
The SerializeFlags becomes a namespace that contains
the original class definition under type SerializeFlags::Type
and static constants.
Consequently, all SeralizeFlags methods can
now be constexpr.
Also added static tests.
Test: libvintf_test
Test: vintf_object_test
Bug: 110711640
Change-Id: I786a1f77e19defc2ab2d025de3ed7cfe48f4fbce
DisabledChecks -> CheckFlags namespace
Switch from negative flags to positive flags using
the dedicated CheckFlags::Type class.
Bug: 110711640
Test: libvintf_test
Test: vintf_object_test
Change-Id: I13f741b64520bd58349dbbf6c874dd1559d79ad8
Switch from negative flags to positive flags using
the dedicated CheckFlags::Type class.
Bug: 110711640
Test: libvintf_test
Test: vintf_object_test
Change-Id: I13f741b64520bd58349dbbf6c874dd1559d79ad8
AssembleVintf: fix error message for unsupported tags/attrs for additional manifests
The error message used to contain extraneous values like:
<manifest version="1.0" type="device" target-level="1">
<sepolicy>
<version>0.0</version>
</sepolicy>
</manifest>
Fix it so that it becomes:
<manifest target-level="1" />
Test: manual with additional manifest, then
`m device_manifest.xml`
Bug: 78943004
Change-Id: I2d66c4db5a5c2136907ac2dc814262909c73b9e0
The error message used to contain extraneous values like:
<manifest version="1.0" type="device" target-level="1">
<sepolicy>
<version>0.0</version>
</sepolicy>
</manifest>
Fix it so that it becomes:
<manifest target-level="1" />
Test: manual with additional manifest, then
`m device_manifest.xml`
Bug: 78943004
Change-Id: I2d66c4db5a5c2136907ac2dc814262909c73b9e0
SerializeFlags: Remove legacy APIs
Remove legacy bitwise operators and boolean conversions
that are meant to be compatible with the old negative flags
usage. Also fix all such usages.
Bug: 110711640
Test: libvintf_test
Change-Id: Ic69a7066dd3ae320aeb0a1848eb7719f67da29d3
Remove legacy bitwise operators and boolean conversions
that are meant to be compatible with the old negative flags
usage. Also fix all such usages.
Bug: 110711640
Test: libvintf_test
Change-Id: Ic69a7066dd3ae320aeb0a1848eb7719f67da29d3
assemble_vintf: fix error message for -n -l conflict
There is no error message when -n and -l is specified together.
Add error message.
Also fix flag handling logic to use new SerializeFlags API.
Bug: 110711640
Test: libvintf_test
Change-Id: I78203f20a2cff16a497894243c6c1a519ca59661
There is no error message when -n and -l is specified together.
Add error message.
Also fix flag handling logic to use new SerializeFlags API.
Bug: 110711640
Test: libvintf_test
Change-Id: I78203f20a2cff16a497894243c6c1a519ca59661
SerializeFlags: remove legacyValue() API
Remove constructor with legacyValue (which contains NOT bits) and
getter to legacyValue. Instead, SerializeFlags objects are constructed
with positive flags.
Bug: 110711640
Test: libvintf_test
Change-Id: I41e2b913822b9e75b17a1f2336e5a35236e9671e
Remove constructor with legacyValue (which contains NOT bits) and
getter to legacyValue. Instead, SerializeFlags objects are constructed
with positive flags.
Bug: 110711640
Test: libvintf_test
Change-Id: I41e2b913822b9e75b17a1f2336e5a35236e9671e
SerializeFlag => SerializeFlags
This is a straightforward refactoring to remove the SerializeFlag enum.
They are combined into one class because SerializeFlag is the old
negative bitfields and is confusing. SerializeFlags will contain
positive bitfields.
Bug: 110711640
Test: libvintf_test
Change-Id: I46070db674955add4971b0dc5736a43436f54ddf
This is a straightforward refactoring to remove the SerializeFlag enum.
They are combined into one class because SerializeFlag is the old
negative bitfields and is confusing. SerializeFlags will contain
positive bitfields.
Bug: 110711640
Test: libvintf_test
Change-Id: I46070db674955add4971b0dc5736a43436f54ddf
Add SerializeFlags class.
Bug: 110711640
Test: libvintf_test
Change-Id: I2a2c98d2965a4a79df24525b7ef5e4fff903066e
Bug: 110711640
Test: libvintf_test
Change-Id: I2a2c98d2965a4a79df24525b7ef5e4fff903066e
Merge "Make libvintf recovery_available"
Make libvintf recovery_available
Bug: 110380063
Test: Compiles, recovery works
Change-Id: I89b4f7c25f457659d3a4b20fc44786691266126a
Bug: 110380063
Test: Compiles, recovery works
Change-Id: I89b4f7c25f457659d3a4b20fc44786691266126a
assemble_vintf: add --no-kernel-requirements option
am: 86678e40bc
Change-Id: I7a4d7a80bf9ae013f33911dd33682af079d098ff
am: 86678e40bc
Change-Id: I7a4d7a80bf9ae013f33911dd33682af079d098ff
assemble_vintf: add --no-kernel-requirements option
When specified, <config> under <kernel> will not be written to the
output matrix, and kernel minor revision will be set to zero.
These requirements are added in P but is verified against the running
kernel (instead of the incoming kernel). This incorrect behavior
in recovery forces us to drop these requirements during OTA.
These requirements are still checked by VTS.
Bug: 111840577
Test: libvintf_test
Change-Id: Id0d7851f5cc11fbd8e6e2928ce377769855445db
When specified, <config> under <kernel> will not be written to the
output matrix, and kernel minor revision will be set to zero.
These requirements are added in P but is verified against the running
kernel (instead of the incoming kernel). This incorrect behavior
in recovery forces us to drop these requirements during OTA.
These requirements are still checked by VTS.
Bug: 111840577
Test: libvintf_test
Change-Id: Id0d7851f5cc11fbd8e6e2928ce377769855445db
update kernel config suffix to .config
am: ad6aa914d5
Change-Id: I33b7caa239d355fb0a9be5e0574b59465598093e
am: ad6aa914d5
Change-Id: I33b7caa239d355fb0a9be5e0574b59465598093e
update kernel config suffix to .config
The kernel configs are changing their naming scheme to use
a suffix of ".config" rather than ".cfg".
Test: build and boot
Bug: 111762107
Change-Id: I590bccb6150d07795d84b12b588faa5e51138605
The kernel configs are changing their naming scheme to use
a suffix of ".config" rather than ".cfg".
Test: build and boot
Bug: 111762107
Change-Id: I590bccb6150d07795d84b12b588faa5e51138605
libvintf: recovery_available: true
am: 3dc4584b1a
Change-Id: Idac1cea3287ffde4a6ab5e270dfb9fa44be6242a
am: 3dc4584b1a
Change-Id: Idac1cea3287ffde4a6ab5e270dfb9fa44be6242a
libvintf: recovery_available: true
Test: recovery mode test getService
Bug: 111507946
Bug: 80132328
Change-Id: Id971983cfeb800332f84876cc1bb619e39ade6ee
Test: recovery mode test getService
Bug: 111507946
Bug: 80132328
Change-Id: Id971983cfeb800332f84876cc1bb619e39ade6ee
Add -Wextra-semi.
The headers fail to compile when included
in libhidl, because libhidl has -Wextra-semi.
I decided to clean them up and add -Wextra-semi
for all files for libvintf.
Test: builds
Change-Id: Ida1ed6d3855e582a5c09bc60128dd8c4cfd4210a
The headers fail to compile when included
in libhidl, because libhidl has -Wextra-semi.
I decided to clean them up and add -Wextra-semi
for all files for libvintf.
Test: builds
Change-Id: Ida1ed6d3855e582a5c09bc60128dd8c4cfd4210a
VintfObjectRecovery: partitions are mounted to /mnt
am: 91c1b2703b
Change-Id: I325389aa9bf007f200d2255a836cc41444ce4687
am: 91c1b2703b
Change-Id: I325389aa9bf007f200d2255a836cc41444ce4687
HostFileSystem -> FileSystemUnderPath
am: db3084356a
Change-Id: I79a2ba680b0b8ab4eeba432be6fb7f94fb86a971
am: db3084356a
Change-Id: I79a2ba680b0b8ab4eeba432be6fb7f94fb86a971
VintfObject::checkCompatibility: better error message.
am: 878556ed52
Change-Id: Ic1b8b32feb33223771d0bceb0356d3d6aeb7eb62
am: 878556ed52
Change-Id: Ic1b8b32feb33223771d0bceb0356d3d6aeb7eb62
VintfObjectRecovery: partitions are mounted to /mnt
Recovery now mounts system and vendor partition under /mnt. Update
VintfObjectRecovery to reflect this, so that during OTA, the partitions
are correctly mounted and checked.
During OTA, access to /vendor will always be redirected to /mnt/vendor.
Access to /system will be redirected to
- /mnt/system if ro.build.system_root_image is false
- /mnt/system/system otherwise.
Test: manual by calling CheckCompatibility in "Run graphics test"
Change-Id: I4c4448e526b2a1f14c6a77b14ac72915256b85cb
Fixes: 111372832
Recovery now mounts system and vendor partition under /mnt. Update
VintfObjectRecovery to reflect this, so that during OTA, the partitions
are correctly mounted and checked.
During OTA, access to /vendor will always be redirected to /mnt/vendor.
Access to /system will be redirected to
- /mnt/system if ro.build.system_root_image is false
- /mnt/system/system otherwise.
Test: manual by calling CheckCompatibility in "Run graphics test"
Change-Id: I4c4448e526b2a1f14c6a77b14ac72915256b85cb
Fixes: 111372832
HostFileSystem -> FileSystemUnderPath
The class is also used by recovery, so moving it to libvintf.
Test: pass
Change-Id: I735212b5ce53a0ba440686ced02feebc51a14841
The class is also used by recovery, so moving it to libvintf.
Test: pass
Change-Id: I735212b5ce53a0ba440686ced02feebc51a14841
VintfObject::checkCompatibility: better error message.
Don't fail so fast.
Test: vintf_object_test
Change-Id: I5fe86410eea601a46abf5817ecf9fe527707cd22
Don't fail so fast.
Test: vintf_object_test
Change-Id: I5fe86410eea601a46abf5817ecf9fe527707cd22
VintfObject now provides instance methods.
am: 9f78c180ff
Change-Id: Idac69cbf04fa0b5339cf9c9d0bca5dddd05646b4
am: 9f78c180ff
Change-Id: Idac69cbf04fa0b5339cf9c9d0bca5dddd05646b4
VintfObject now provides instance methods.
VintfObject used to only contain static methods. It now
contains instance methods, and the static methods are
delegates to the instance methods. For example:
GetDeviceHalManifest calls GetInstance()->getDeviceHalManifest()
getDeviceHalManifest does the actual job.
The static dependencies (FileSystem, PropertyFetcher, PartitionMounter,
ObjectFactory<RuntimeInfo> are also moved from utils.cpp to the
static VintfObject instance.
Tests are updated to create a test VintfObject instance with
the mocked dependencies, and run test on the test object.
As a result, utils.cpp is now empty and removed, and
libvintf_common is the same as libvintf. Hence libvintf_common is also
removed.
This allows:
- Allows better mocking in tests. Tests are now independent of
each other because a new VintfObject is created for every test.
(Previously this is done very badly by clearing the global states,
which is error prone)
- A bug in VintfObjectTest.FrameworkCompatibilityMatrixCombine
is discovered because it depends on setting global states in
previous test cases. This is also fixed in this CL.
- In recovery, two VintfObject is required; one for XMLs in the
recovery image (under /) and one for XMLs in system/vendor image
(under /mnt). HIDL HAL getService in recovery depends on the former,
and OTA depends on the latter. This CL prepares recovery to work.
(A follow-up CL is needed to update VintfObjectRecovery to use
/mnt for getService).
Some other notable changes in the CL:
- CompatibilityMatrix/HalManifest fetchAllInformation now takes
a FileSystem argument to fetch files correctly, because the global
FileSystem object is removed.
- Globals in utils.cpp / utils-fake.cpp is removed
- DevicePropertyFetcher is moved from utils.cpp to PropertyFetcher.cpp
and is always built (for both host and target); but host VintfObject
uses dummy PropertyFetcher by default. (See
createDefaultPropertyFetcher in VintfObject.cpp).
Bug: 110855270
Bug: 80132328
Bug: 111372832
Test: vintf_object_test
Test: livintf_test
Change-Id: I24320662191b977c0e562129e49b33e80de727cc
VintfObject used to only contain static methods. It now
contains instance methods, and the static methods are
delegates to the instance methods. For example:
GetDeviceHalManifest calls GetInstance()->getDeviceHalManifest()
getDeviceHalManifest does the actual job.
The static dependencies (FileSystem, PropertyFetcher, PartitionMounter,
ObjectFactory<RuntimeInfo> are also moved from utils.cpp to the
static VintfObject instance.
Tests are updated to create a test VintfObject instance with
the mocked dependencies, and run test on the test object.
As a result, utils.cpp is now empty and removed, and
libvintf_common is the same as libvintf. Hence libvintf_common is also
removed.
This allows:
- Allows better mocking in tests. Tests are now independent of
each other because a new VintfObject is created for every test.
(Previously this is done very badly by clearing the global states,
which is error prone)
- A bug in VintfObjectTest.FrameworkCompatibilityMatrixCombine
is discovered because it depends on setting global states in
previous test cases. This is also fixed in this CL.
- In recovery, two VintfObject is required; one for XMLs in the
recovery image (under /) and one for XMLs in system/vendor image
(under /mnt). HIDL HAL getService in recovery depends on the former,
and OTA depends on the latter. This CL prepares recovery to work.
(A follow-up CL is needed to update VintfObjectRecovery to use
/mnt for getService).
Some other notable changes in the CL:
- CompatibilityMatrix/HalManifest fetchAllInformation now takes
a FileSystem argument to fetch files correctly, because the global
FileSystem object is removed.
- Globals in utils.cpp / utils-fake.cpp is removed
- DevicePropertyFetcher is moved from utils.cpp to PropertyFetcher.cpp
and is always built (for both host and target); but host VintfObject
uses dummy PropertyFetcher by default. (See
createDefaultPropertyFetcher in VintfObject.cpp).
Bug: 110855270
Bug: 80132328
Bug: 111372832
Test: vintf_object_test
Test: livintf_test
Change-Id: I24320662191b977c0e562129e49b33e80de727cc
Merge "Allow multiple DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILEs."
am: f3378017ea
Change-Id: Id582f2c34e9dc61235a58fa2d4ffc4bc65395643
am: f3378017ea
Change-Id: Id582f2c34e9dc61235a58fa2d4ffc4bc65395643
5 years agoMerge "Allow multiple DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILEs." android-o-mr1-iot-release-1.0.2 android-p-preview-5
Merge "Allow multiple DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILEs."
Allow multiple DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILEs.
Test: multiple DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE is specified, and built
Bug: 68291320
Change-Id: I60358a8b678bc43ced4eec15505c09b245c9764a
Test: multiple DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE is specified, and built
Bug: 68291320
Change-Id: I60358a8b678bc43ced4eec15505c09b245c9764a
assemble_vintf: first arg cannot contain extra things
am: 0a35ab16fe
Change-Id: I561412bc64c89f670b9f2800569d44c9556f386e
am: 0a35ab16fe
Change-Id: I561412bc64c89f670b9f2800569d44c9556f386e
assemble_vintf: first arg cannot contain extra things
... other than <hal> and type attribute.
Bug: 78943004
Test: build vintf stuff
Test: add extra device manifest and the following fails:
- specify "level"
- specify <sepolicy>
Change-Id: I1b0bbae5727dc8a0de1ff043ccf126d9e7c65e9b
... other than <hal> and type attribute.
Bug: 78943004
Test: build vintf stuff
Test: add extra device manifest and the following fails:
- specify "level"
- specify <sepolicy>
Change-Id: I1b0bbae5727dc8a0de1ff043ccf126d9e7c65e9b
[automerger skipped] Remove shared lib dependencies of checkvintf
am: 13ebc4c20d -s ours
Change-Id: I7bff60005e5ccd543fe5fa463b3e0405003fee82
am: 13ebc4c20d -s ours
Change-Id: I7bff60005e5ccd543fe5fa463b3e0405003fee82
Remove shared lib dependencies of checkvintf
checkvintf is used to check the compatibility between system
and vendor in mixed build targets. Because inter branch build
targets need to be hosted on new manifest branches, checkvintf
was added to the dist package and should not have extra shared
library dependencies.
Test: m -j checkvintf; check that checkvintf is executable on its
own
Bug: 74214049
Merged-In: Iabf1c2477d163be6060d493a2f4b85e37fc339df
Change-Id: Iabf1c2477d163be6060d493a2f4b85e37fc339df
(cherry picked from commit e448ccc3c752877411396b445080c85fee8fba62)
checkvintf is used to check the compatibility between system
and vendor in mixed build targets. Because inter branch build
targets need to be hosted on new manifest branches, checkvintf
was added to the dist package and should not have extra shared
library dependencies.
Test: m -j checkvintf; check that checkvintf is executable on its
own
Bug: 74214049
Merged-In: Iabf1c2477d163be6060d493a2f4b85e37fc339df
Change-Id: Iabf1c2477d163be6060d493a2f4b85e37fc339df
(cherry picked from commit e448ccc3c752877411396b445080c85fee8fba62)
Merge pi-dev-plus-aosp-without-vendor into stage-aosp-master
Bug: 79597307
Change-Id: I74b5318764006ad4272e0dc685cfcb556f77236a
Bug: 79597307
Change-Id: I74b5318764006ad4272e0dc685cfcb556f77236a
[automerger skipped] libvintf: always use -DLIBVINTF_TARGET for target. am: 8eb7bc56a4
am: a1887e2b28 -s ours
Change-Id: I24cc9a3c06db0a63f2e1e2c19572a154162879ac
am: a1887e2b28 -s ours
Change-Id: I24cc9a3c06db0a63f2e1e2c19572a154162879ac
libvintf: always use -DLIBVINTF_TARGET for target.
am: 8eb7bc56a4
Change-Id: Iadbbdd798fbfabb36f4670a94f2d711f8586cecc
am: 8eb7bc56a4
Change-Id: Iadbbdd798fbfabb36f4670a94f2d711f8586cecc
Remove shared lib dependencies of checkvintf
am: e448ccc3c7
Change-Id: Idafe234a63ebb4de05fd08f32faa612aa9c409cc
am: e448ccc3c7
Change-Id: Idafe234a63ebb4de05fd08f32faa612aa9c409cc
Remove shared lib dependencies of checkvintf
checkvintf is used to check the compatibility between system
and vendor in mixed build targets. Because inter branch build
targets need to be hosted on new manifest branches, checkvintf
was added to the dist package and should not have extra shared
library dependencies.
Test: m -j checkvintf; check that checkvintf is executable on its
own
Bug: 74214049
Change-Id: Iabf1c2477d163be6060d493a2f4b85e37fc339df
checkvintf is used to check the compatibility between system
and vendor in mixed build targets. Because inter branch build
targets need to be hosted on new manifest branches, checkvintf
was added to the dist package and should not have extra shared
library dependencies.
Test: m -j checkvintf; check that checkvintf is executable on its
own
Bug: 74214049
Change-Id: Iabf1c2477d163be6060d493a2f4b85e37fc339df
libvintf: always use -DLIBVINTF_TARGET for target.
This was missing from libvintf and only applied to
libvintf_common, but libvintf also has utils.cpp which
depends on LIBVINTF_TARGET being defined. This caused
all property reads that libvintf made to return the
default value.
Bug: 91735839
Test: add an odm manifest for SE conditional on
a system property (ro.boot.product.hardware.sku)
and make sure it is read into the manifest (using
the vintf tool) and also that a client can get the
service:
$ lshal | grep secure
Y android.hardware.secure_element@1.0::ISecureElement/SIM1 0/2 881 2262 567
Test: `adb shell vintf` shows the manifest as parsing and the HAL as
being on the device:
DM android.hardware.secure_element@1.0::IDevice/SIM1
FCM android.hardware.secure_element@1.0::ISecureElement/SIM[1-9][0-9]*
FCM android.hardware.secure_element@1.0::ISecureElement/eSE[1-9][0-9]*
Change-Id: Ibdfdcfce8d17b964015fc05983c99573c7f060a1
Merged-In: Ibdfdcfce8d17b964015fc05983c99573c7f060a1
This was missing from libvintf and only applied to
libvintf_common, but libvintf also has utils.cpp which
depends on LIBVINTF_TARGET being defined. This caused
all property reads that libvintf made to return the
default value.
Bug: 91735839
Test: add an odm manifest for SE conditional on
a system property (ro.boot.product.hardware.sku)
and make sure it is read into the manifest (using
the vintf tool) and also that a client can get the
service:
$ lshal | grep secure
Y android.hardware.secure_element@1.0::ISecureElement/SIM1 0/2 881 2262 567
Test: `adb shell vintf` shows the manifest as parsing and the HAL as
being on the device:
DM android.hardware.secure_element@1.0::IDevice/SIM1
FCM android.hardware.secure_element@1.0::ISecureElement/SIM[1-9][0-9]*
FCM android.hardware.secure_element@1.0::ISecureElement/eSE[1-9][0-9]*
Change-Id: Ibdfdcfce8d17b964015fc05983c99573c7f060a1
Merged-In: Ibdfdcfce8d17b964015fc05983c99573c7f060a1
libvintf: always use -DLIBVINTF_TARGET for target.
am: 16a15a748f
Change-Id: I3624f10450481624f2ed868ef5c10187a718fcc8
am: 16a15a748f
Change-Id: I3624f10450481624f2ed868ef5c10187a718fcc8
libvintf: always use -DLIBVINTF_TARGET for target.
This was missing from libvintf and only applied to
libvintf_common, but libvintf also has utils.cpp which
depends on LIBVINTF_TARGET being defined. This caused
all property reads that libvintf made to return the
default value.
Bug: 91735839
Test: add an odm manifest for SE conditional on
a system property (ro.boot.product.hardware.sku)
and make sure it is read into the manifest (using
the vintf tool) and also that a client can get the
service:
$ lshal | grep secure
Y android.hardware.secure_element@1.0::ISecureElement/SIM1 0/2 881 2262 567
Test: `adb shell vintf` shows the manifest as parsing and the HAL as
being on the device:
DM android.hardware.secure_element@1.0::IDevice/SIM1
FCM android.hardware.secure_element@1.0::ISecureElement/SIM[1-9][0-9]*
FCM android.hardware.secure_element@1.0::ISecureElement/eSE[1-9][0-9]*
Change-Id: Ibdfdcfce8d17b964015fc05983c99573c7f060a1
This was missing from libvintf and only applied to
libvintf_common, but libvintf also has utils.cpp which
depends on LIBVINTF_TARGET being defined. This caused
all property reads that libvintf made to return the
default value.
Bug: 91735839
Test: add an odm manifest for SE conditional on
a system property (ro.boot.product.hardware.sku)
and make sure it is read into the manifest (using
the vintf tool) and also that a client can get the
service:
$ lshal | grep secure
Y android.hardware.secure_element@1.0::ISecureElement/SIM1 0/2 881 2262 567
Test: `adb shell vintf` shows the manifest as parsing and the HAL as
being on the device:
DM android.hardware.secure_element@1.0::IDevice/SIM1
FCM android.hardware.secure_element@1.0::ISecureElement/SIM[1-9][0-9]*
FCM android.hardware.secure_element@1.0::ISecureElement/eSE[1-9][0-9]*
Change-Id: Ibdfdcfce8d17b964015fc05983c99573c7f060a1
resolve merge conflicts of ddb8069159acc545713533e8745b8250c63dc8e8 to pi-dev-plus-aosp
BUG: None
Test: I solemnly swear I tested this conflict resolution.
Change-Id: I46c6d4a6bd63abd3d75d41e632966fd3f2a59526
BUG: None
Test: I solemnly swear I tested this conflict resolution.
Change-Id: I46c6d4a6bd63abd3d75d41e632966fd3f2a59526
Add checkvintf to dist for inter branch build targets am: 32b2052088
am: 24bbf7dd08
Change-Id: I672869bff55e7c801ed646c04e8e6c4e87799dca
am: 24bbf7dd08
Change-Id: I672869bff55e7c801ed646c04e8e6c4e87799dca
Add checkvintf to dist for inter branch build targets
am: 32b2052088
Change-Id: If18503d54dfe09039831da47db0136b6e2bee966
am: 32b2052088
Change-Id: If18503d54dfe09039831da47db0136b6e2bee966
Add checkvintf to dist for inter branch build targets
checkvintf is used to check the compatibility between system and
vendor for mixed build targets such as P GSI + O-MR1 vendor.
These inter branch build targets will be built from a new manifest
branch, as mandated by the guideline in go/build_chaining. Adding
checkvintf to dist allows us to get this tool from the parent
target instead of having to build in the lightweight manifest
branch.
Bug: 74214049
Test: lunch aosp_arm64_ab-userdebug; make -j dist; confirm that
checkvintf is outputed under DIST_DIR
Change-Id: I2b2a72225772b40096363e70374e441f7f9e756d
Merged-In: I2b2a72225772b40096363e70374e441f7f9e756d
checkvintf is used to check the compatibility between system and
vendor for mixed build targets such as P GSI + O-MR1 vendor.
These inter branch build targets will be built from a new manifest
branch, as mandated by the guideline in go/build_chaining. Adding
checkvintf to dist allows us to get this tool from the parent
target instead of having to build in the lightweight manifest
branch.
Bug: 74214049
Test: lunch aosp_arm64_ab-userdebug; make -j dist; confirm that
checkvintf is outputed under DIST_DIR
Change-Id: I2b2a72225772b40096363e70374e441f7f9e756d
Merged-In: I2b2a72225772b40096363e70374e441f7f9e756d
Add contains(Arch, Arch) am: 0773e13046
am: 5c214db00a
Change-Id: I364efa71aff9fb31908f7b8a236451db0779851f
am: 5c214db00a
Change-Id: I364efa71aff9fb31908f7b8a236451db0779851f
Add contains(Arch, Arch)
... that returns true if the second value
is a subset of the first value.
Test: builds (static_asserts)
Change-Id: Ifc739b114521771862d967cada812f3e319f5109
... that returns true if the second value
is a subset of the first value.
Test: builds (static_asserts)
Change-Id: Ifc739b114521771862d967cada812f3e319f5109
Add checkvintf to dist for inter branch build targets
checkvintf is used to check the compatibility between system and
vendor for mixed build targets such as P GSI + O-MR1 vendor.
These inter branch build targets will be built from a new manifest
branch, as mandated by the guideline in go/build_chaining. Adding
checkvintf to dist allows us to get this tool from the parent
target instead of having to build in the lightweight manifest
branch.
Bug: 74214049
Test: lunch aosp_arm64_ab-userdebug; make -j dist; confirm that
checkvintf is outputed under DIST_DIR
Change-Id: Iac3ecc7127c351000b36710f8adf06c61ae51799
Merged-In: I2b2a72225772b40096363e70374e441f7f9e756d
checkvintf is used to check the compatibility between system and
vendor for mixed build targets such as P GSI + O-MR1 vendor.
These inter branch build targets will be built from a new manifest
branch, as mandated by the guideline in go/build_chaining. Adding
checkvintf to dist allows us to get this tool from the parent
target instead of having to build in the lightweight manifest
branch.
Bug: 74214049
Test: lunch aosp_arm64_ab-userdebug; make -j dist; confirm that
checkvintf is outputed under DIST_DIR
Change-Id: Iac3ecc7127c351000b36710f8adf06c61ae51799
Merged-In: I2b2a72225772b40096363e70374e441f7f9e756d
Allow to get <vendor-ndk><version> from matrix am: 52b7faece3
am: a76a101c97
Change-Id: Id4b430633d40162b62be34355a7c34398e8d8b37
am: a76a101c97
Change-Id: Id4b430633d40162b62be34355a7c34398e8d8b37
Allow to get <vendor-ndk><version> from matrix
am: 52b7faece3
Change-Id: I514a5632aaa95acda3d7ad3ef19ee57307254653
am: 52b7faece3
Change-Id: I514a5632aaa95acda3d7ad3ef19ee57307254653
Allow to get <vendor-ndk><version> from matrix
Test: vts_treble_vintf_vendor_test
Test: libvintf_test
Bug: 78117402
Change-Id: I4da7d23a354a59aaa27d0b61f8fd98a54f0fb1ec
Test: vts_treble_vintf_vendor_test
Test: libvintf_test
Bug: 78117402
Change-Id: I4da7d23a354a59aaa27d0b61f8fd98a54f0fb1ec
Hide HalGroup::getHals am: 2eb2cb4900
am: 686493f8b9
Change-Id: I8475b110bf33d21348c1a49a883d44c7b9f4651f
am: 686493f8b9
Change-Id: I8475b110bf33d21348c1a49a883d44c7b9f4651f
Hide HalGroup::getHals
Test: builds
Test: libvintf_test
Fixes: 74247301
Change-Id: Ie3b58ab42e66fab2f9d2e5d490461476d5c84d5d
Test: builds
Test: libvintf_test
Fixes: 74247301
Change-Id: Ie3b58ab42e66fab2f9d2e5d490461476d5c84d5d
Merge changes from topic "lshal_fqname" am: 588955a06e
am: ca984683bc
Change-Id: I61b83c76c88702831cce34f8090cef1bc5a8dbfc
am: ca984683bc
Change-Id: I61b83c76c88702831cce34f8090cef1bc5a8dbfc
Merge changes from topic "lshal_fqname"
am: 588955a06e
Change-Id: I16f1cb0b0dd1488fc2b11f09e5ac6abb0e273c5f
am: 588955a06e
Change-Id: I16f1cb0b0dd1488fc2b11f09e5ac6abb0e273c5f
5 years agoMerge changes from topic "lshal_fqname" android-o-mr1-iot-release-1.0.0 android-wear-p-preview-2
Merge changes from topic "lshal_fqname"
* changes:
Add HalManifest::insertInstance
Remove unused ManfiestHal::insertLegacyInstance
Add ManifestHal::insertInstance
Add more types to MapValueIterator.
Add TransportArch constructors.
* changes:
Add HalManifest::insertInstance
Remove unused ManfiestHal::insertLegacyInstance
Add ManifestHal::insertInstance
Add more types to MapValueIterator.
Add TransportArch constructors.
Merge "Don't override BOARD_SEPOLICY_VERS if already set." am: eea41348e1
am: 6cff9397de
Change-Id: Ib78cadc18ec60c85c7b9d40a8d490a9b4abbbe90
am: 6cff9397de
Change-Id: Ib78cadc18ec60c85c7b9d40a8d490a9b4abbbe90
Merge "Don't override BOARD_SEPOLICY_VERS if already set."
am: eea41348e1
Change-Id: Ided0fb928214b3795f0d232c9e5c58c844ae7a07
am: eea41348e1
Change-Id: Ided0fb928214b3795f0d232c9e5c58c844ae7a07
Merge "Don't override BOARD_SEPOLICY_VERS if already set."
Add HalManifest::insertInstance
This is an API to add the new <fqname> tags. This helps,
for example, lshal.
Bug:74247301
Test: libvintf_test
Change-Id: Iae3f9bae7120e430b376171c4e23b7d1d0798c06
This is an API to add the new <fqname> tags. This helps,
for example, lshal.
Bug:74247301
Test: libvintf_test
Change-Id: Iae3f9bae7120e430b376171c4e23b7d1d0798c06
Remove unused ManfiestHal::insertLegacyInstance
This API was used by lshal to insert <interface>
<instance> tags. Now lshal insert <fqname> tags
via insertInstance.
Test: builds
Bug: 74247301
Change-Id: Ia5bf158d7d05df6c80f90f915705be7e87ea6ee8
This API was used by lshal to insert <interface>
<instance> tags. Now lshal insert <fqname> tags
via insertInstance.
Test: builds
Bug: 74247301
Change-Id: Ia5bf158d7d05df6c80f90f915705be7e87ea6ee8
Add ManifestHal::insertInstance
... that allows to add <fqname> to ManifestHal object from code.
This helps, for example, lshal.
Bug: 74247301
Test: pass
Change-Id: I28b5bb1240e24f1762d2df4cb1ded242fabea99e
... that allows to add <fqname> to ManifestHal object from code.
This helps, for example, lshal.
Bug: 74247301
Test: pass
Change-Id: I28b5bb1240e24f1762d2df4cb1ded242fabea99e
Add more types to MapValueIterator.
iterateValues() accept non-const maps.
Test: pass
Bug: 74247301
Change-Id: Ib565c326570e62d7232a417a0dd58e59061d6265
iterateValues() accept non-const maps.
Test: pass
Bug: 74247301
Change-Id: Ib565c326570e62d7232a417a0dd58e59061d6265
Add TransportArch constructors.
Test: pass
Bug: 74247301
Change-Id: Ie3c744c364b79ea87f6100f09bd019e86c24bea1
Test: pass
Bug: 74247301
Change-Id: Ie3c744c364b79ea87f6100f09bd019e86c24bea1
Don't override BOARD_SEPOLICY_VERS if already set.
Allow the input manifest to already contain BOARD_SEPOLICY_VERS.
Bug: 78943004 # for full combine
Test: m assembled_framework_manifest.xml produces correct manifest w/o
warning + w/o overriding sepolicy vers.
Change-Id: Ieb98d8a650fb8f5791f08e378514d3f8f04f131f
Allow the input manifest to already contain BOARD_SEPOLICY_VERS.
Bug: 78943004 # for full combine
Test: m assembled_framework_manifest.xml produces correct manifest w/o
warning + w/o overriding sepolicy vers.
Change-Id: Ieb98d8a650fb8f5791f08e378514d3f8f04f131f
Merge "assemble_vintf: Update -c help message." am: 731c36aff1
am: b0886dd106
Change-Id: Iacf54c2f01a59bc71812e926979185f3e51b20a3
am: b0886dd106
Change-Id: Iacf54c2f01a59bc71812e926979185f3e51b20a3
Merge "assemble_vintf: Update -c help message."
am: 731c36aff1
Change-Id: Ib674bd903cf59cd3a1e9e8c19316ffb90f8ea271
am: 731c36aff1
Change-Id: Ib674bd903cf59cd3a1e9e8c19316ffb90f8ea271
Merge "assemble_vintf: Update -c help message."
assemble_vintf: Update -c help message.
Test: assemble_vintf --help
Change-Id: I17a928f106a1a886f98d4893cd75da843857f1c5
Fixes: 78895849
Test: assemble_vintf --help
Change-Id: I17a928f106a1a886f98d4893cd75da843857f1c5
Fixes: 78895849
[automerger skipped] CompatibilityMatrix::combine add <kernel> from new matrices am: d6de7f696c
am: 55c2afa2fd -s ours
Change-Id: I5ed71d51b5ee58ab3b0713bc934fac96275a5ce7
am: 55c2afa2fd -s ours
Change-Id: I5ed71d51b5ee58ab3b0713bc934fac96275a5ce7
CompatibilityMatrix::combine add <kernel> from new matrices
am: d6de7f696c
Change-Id: Ie9cb06b9fdfb0d60cbe9d84bf4d6429e7f2dae45
am: d6de7f696c
Change-Id: Ie9cb06b9fdfb0d60cbe9d84bf4d6429e7f2dae45
CompatibilityMatrix::combine add <kernel> from new matrices
Just as <hal> and <xmlfile> are added from new matrices
to old matrices as optional, so are <kernel> tags as well.
This avoids the hack that new <kernel> versions are added
retroactively. Specifically, we don't want to add 4.14 to
every matrix, but rather let libvintf do this automagically.
Bug: 78576469
Test: vintf_object_test
Test: libvintf_test
Test: manually inspect built matrices
Change-Id: Ia779c5e25c7c3db218007d23e4c887e8cd44e730
Merged-In: Ia779c5e25c7c3db218007d23e4c887e8cd44e730
Just as <hal> and <xmlfile> are added from new matrices
to old matrices as optional, so are <kernel> tags as well.
This avoids the hack that new <kernel> versions are added
retroactively. Specifically, we don't want to add 4.14 to
every matrix, but rather let libvintf do this automagically.
Bug: 78576469
Test: vintf_object_test
Test: libvintf_test
Test: manually inspect built matrices
Change-Id: Ia779c5e25c7c3db218007d23e4c887e8cd44e730
Merged-In: Ia779c5e25c7c3db218007d23e4c887e8cd44e730
CompatibilityMatrix::combine add <kernel> from new matrices
am: 29aa7f5903
Change-Id: Icb81031b50671069b546c9bac7c3c1a0d01d4515
am: 29aa7f5903
Change-Id: Icb81031b50671069b546c9bac7c3c1a0d01d4515
CompatibilityMatrix::combine add <kernel> from new matrices
Just as <hal> and <xmlfile> are added from new matrices
to old matrices as optional, so are <kernel> tags as well.
This avoids the hack that new <kernel> versions are added
retroactively. Specifically, we don't want to add 4.14 to
every matrix, but rather let libvintf do this automagically.
Bug: 78576469
Test: vintf_object_test
Test: libvintf_test
Test: manually inspect built matrices
Change-Id: Ia779c5e25c7c3db218007d23e4c887e8cd44e730
Just as <hal> and <xmlfile> are added from new matrices
to old matrices as optional, so are <kernel> tags as well.
This avoids the hack that new <kernel> versions are added
retroactively. Specifically, we don't want to add 4.14 to
every matrix, but rather let libvintf do this automagically.
Bug: 78576469
Test: vintf_object_test
Test: libvintf_test
Test: manually inspect built matrices
Change-Id: Ia779c5e25c7c3db218007d23e4c887e8cd44e730
6 years ago[automerger skipped] Merge "Compat if POLICYVERS <= security_policyvers()" am: 1dd79d71f5
[automerger skipped] Merge "Compat if POLICYVERS <= security_policyvers()" am: 1dd79d71f5
am: 3845d35b4d -s ours
Change-Id: If03169a6f3bb5d24716c4a01348b7fcf55386b62
am: 3845d35b4d -s ours
Change-Id: If03169a6f3bb5d24716c4a01348b7fcf55386b62
Merge "Compat if POLICYVERS <= security_policyvers()"
am: 1dd79d71f5
Change-Id: Ibd201b1701df5073b82916b092fa5497ea1e8e6f
am: 1dd79d71f5
Change-Id: Ibd201b1701df5073b82916b092fa5497ea1e8e6f
Merge "Compat if POLICYVERS <= security_policyvers()"
Compat if POLICYVERS <= security_policyvers()
am: 9893552f43
Change-Id: I7b0048f26d472ba650018e711369e4279c7c2c25
am: 9893552f43
Change-Id: I7b0048f26d472ba650018e711369e4279c7c2c25
Compat if POLICYVERS <= security_policyvers()
POLICYVERS in the build system specifies the
policydb version that the policy is compiled with.
security_policyvers() specifies the maximum
policy version that the kernel is compatible with.
Allow POLICYVERS <= security_policyvers() to be considered
compatible.
This changes compatibility check logic for RuntimeInfo,
hence this does not affect OTA, except the following
case:
* device kernel reports 30
* new images are built with POLICYVERS=31
* fwk matrix has 31
* device do OTA with these images
* OTA will fail
Right now, since there are no plans to bump POLICYVERS
in build system (and it stays 30), OTA won't break.
Bug: 77886167
Test: vts_treble_vintf_test
Change-Id: I91fb631b291d17e26ad1a9befb669aac6b7ed654
Merged-In: I91fb631b291d17e26ad1a9befb669aac6b7ed654
POLICYVERS in the build system specifies the
policydb version that the policy is compiled with.
security_policyvers() specifies the maximum
policy version that the kernel is compatible with.
Allow POLICYVERS <= security_policyvers() to be considered
compatible.
This changes compatibility check logic for RuntimeInfo,
hence this does not affect OTA, except the following
case:
* device kernel reports 30
* new images are built with POLICYVERS=31
* fwk matrix has 31
* device do OTA with these images
* OTA will fail
Right now, since there are no plans to bump POLICYVERS
in build system (and it stays 30), OTA won't break.
Bug: 77886167
Test: vts_treble_vintf_test
Change-Id: I91fb631b291d17e26ad1a9befb669aac6b7ed654
Merged-In: I91fb631b291d17e26ad1a9befb669aac6b7ed654
Compat if POLICYVERS <= security_policyvers()
POLICYVERS in the build system specifies the
policydb version that the policy is compiled with.
security_policyvers() specifies the maximum
policy version that the kernel is compatible with.
Allow POLICYVERS <= security_policyvers() to be considered
compatible.
This changes compatibility check logic for RuntimeInfo,
hence this does not affect OTA, except the following
case:
* device kernel reports 30
* new images are built with POLICYVERS=31
* fwk matrix has 31
* device do OTA with these images
* OTA will fail
Right now, since there are no plans to bump POLICYVERS
in build system (and it stays 30), OTA won't break.
Bug: 77886167
Test: vts_treble_vintf_test
Change-Id: I91fb631b291d17e26ad1a9befb669aac6b7ed654
Merged-In: I91fb631b291d17e26ad1a9befb669aac6b7ed654
POLICYVERS in the build system specifies the
policydb version that the policy is compiled with.
security_policyvers() specifies the maximum
policy version that the kernel is compatible with.
Allow POLICYVERS <= security_policyvers() to be considered
compatible.
This changes compatibility check logic for RuntimeInfo,
hence this does not affect OTA, except the following
case:
* device kernel reports 30
* new images are built with POLICYVERS=31
* fwk matrix has 31
* device do OTA with these images
* OTA will fail
Right now, since there are no plans to bump POLICYVERS
in build system (and it stays 30), OTA won't break.
Bug: 77886167
Test: vts_treble_vintf_test
Change-Id: I91fb631b291d17e26ad1a9befb669aac6b7ed654
Merged-In: I91fb631b291d17e26ad1a9befb669aac6b7ed654
Cleanup global FileFetcher am: 10d862283d
am: 37e129c359
Change-Id: Id6b0fa2fe92f7501a8801da42d0fc183f996410f
am: 37e129c359
Change-Id: Id6b0fa2fe92f7501a8801da42d0fc183f996410f
Cleanup global FileFetcher
This global instance is modifiable everywhere and
is hard to maintain. It also contains references as
out-variables, which is not the standard.
Clean it up by refactoring it into a public (i.e.
not in details namespace) class, FileSystem.
Introduce VintfObject::InitFileSystem that allows
the behavior to be changed before any files are read.
Bug: 37999212
Test: host and target libvintf_test, vintf_object_test
Change-Id: I1c64b31fd37119450be89dfd1d2bfe76a71ccf3d
Merged-In: I1c64b31fd37119450be89dfd1d2bfe76a71ccf3d
This global instance is modifiable everywhere and
is hard to maintain. It also contains references as
out-variables, which is not the standard.
Clean it up by refactoring it into a public (i.e.
not in details namespace) class, FileSystem.
Introduce VintfObject::InitFileSystem that allows
the behavior to be changed before any files are read.
Bug: 37999212
Test: host and target libvintf_test, vintf_object_test
Change-Id: I1c64b31fd37119450be89dfd1d2bfe76a71ccf3d
Merged-In: I1c64b31fd37119450be89dfd1d2bfe76a71ccf3d
libvintf_recovery: to Soong am: 00611d5483
am: 7555b2aa30
Change-Id: I0bd45ec580d75f04f3044e222217e88d41e4789f
am: 7555b2aa30
Change-Id: I0bd45ec580d75f04f3044e222217e88d41e4789f
libvintf_recovery: to Soong
Now that libfs_mgr is in Soong, this can be in Soong
too.
Test: builds
Test: boot to recovery
Change-Id: I3e7751505052731ada97845a66cbf3fa1434ed7a
Now that libfs_mgr is in Soong, this can be in Soong
too.
Test: builds
Test: boot to recovery
Change-Id: I3e7751505052731ada97845a66cbf3fa1434ed7a