Fixed
Created: Jan 9, 2014
Updated: Dec 3, 2018
Resolved Date: Feb 17, 2014
Previous ID: LIN4-20864
Found In Version: 6.0
Fix Version: 6.0.0.3
Severity: Severe
Applicable for: Wind River Linux 6
Component/s: Userspace
We have been looking for a way to more accurately verify the versions of files being installed on targets. It turns out that the LDAT source checksum is embedded in the rpm files and this can be extracted easily on the host and x86 targets. However, this fails on other architectures (PowerPC and MIPS tested here).
On the host you can enter something like this:
$ ./host-cross/bin/rpm -qp export/RPMS/<arch>/<rpm file> \
--queryformat="%{Ldatoverallsumsrc}\n"
and get the full source checksum like this:
6e6ac7401444af7313d9e578a29d8739
Take any standard 4.x target (I used 4.3 RCPL 1), you only need to specify board, rootfs and kernel to the configure line so something like this works:
$ configure \
--enable-board=wrs_sbc8548 \
--enable-rootfs=glibc_std \
--enable-kernel=standard
My tests were done with the exact config above, plus common_pc and qemu_mips32 targets. Once built, boot the target and run the following command:
# rpm -q $(rpm -qa|grep 'bash-') --queryformat="%{Ldatoverallsumsrc}\n" any-of-a-rpm-package-of-4.3-project
On the common_pc target you will see the checksum displayed as per the host example, something like this:
6e6ac7401444af7313d9e578a29d8739
But run the same command on a non-x86 target and you get:
(none)
The behavior of rpm should be the same no matter the target.