Wind River Support Network

HomeDefectsLIN5-19008
Fixed

LIN5-19008 : Twin projects have source file differences after freshly created/built on the same host

Created: Jun 30, 2014    Updated: Dec 19, 2017
Resolved Date: Jul 31, 2014
Found In Version: 5.0.1.14
Fix Version: 5.0.1.18
Severity: Standard
Applicable for: Wind River Linux 5
Component/s: Build & Config

Description

Customer created 2 twin (identical) projects and built them back-to-back on the same host.

Customer believes this is reproducible (CSE was able to repro discrepancies as well with a standard BSP):

"  A developer noticed the issue once.  Then he wanted to see if he could repeat it to know exactly what steps were done in order to reproduce.  He was able to successfully reproduce.  So we are 2 for 2 on reproducing this.
Here is the response that I got from our second developer who tested this out.  It looks like he also sees similar differences between the multiple workspaces.

The only packages that are different between the builds are:
wrlinux-image-glibc-core-1.0-r2
lsof-4.85-r1
perl-5.14.2-r9.5
perl-native-5.14.2-r3
gettext-0.16.1-r4

The disposition of each one:
wrlinux-image-glibc-core-1.0-r2
Some sort of generated code for Perl ->sysroots/.../usr/src/debug/perl-5.14.2-r9.5/perl-5.14.2/cpan/Devel-PPPort/RealPPPort.c

lsof-4.85-r1
Generated sources have dates.
-	machine.h - date in a comment
-	version.h - compilation date, also has lots of other “scary” information in strings like build host, username, build host uname output

perl-5.14.2-r9.5
perl-native-5.14.2-r3
Known problems (Same as other developer: see also Steps to Reproduce)

gettext-0.16.1-r4
All differences were Makefiles. Looked at a couple and the differences are like these:
291,292c291,292
< GMSGFMT = /prj/bitbake_build/tmp/sysroots/i686-linux/usr/bin/msgfmt
< GMSGFMT_015 = /prj/bitbake_build/tmp/sysroots/i686-linux/usr/bin/msgfmt
---
> GMSGFMT = /usr/bin/msgfmt
> GMSGFMT_015 = /usr/bin/msgfmt
386,388c386,388
< MSGFMT = /prj/bitbake_build/tmp/sysroots/i686-linux/usr/bin/msgfmt
< MSGFMT_015 = /prj/bitbake_build/tmp/sysroots/i686-linux/usr/bin/msgfmt
< MSGMERGE = /prj/bitbake_build/tmp/sysroots/i686-linux/usr/bin/msgmerge
---
> MSGFMT = /usr/bin/msgfmt
> MSGFMT_015 = /usr/bin/msgfmt
> MSGMERGE = /usr/bin/msgmerge
432c432
< XGETTEXT_015 = /prj/bitbake_build/tmp/sysroots/i686-linux/usr/bin/xgettext
---
> XGETTEXT_015 = /usr/bin/xgettext

This seems bad because it means that one of the builds used my arbitrary locally installed tools and the other used a known set of tools. Seems like this could be fixed by “just” adding a dependency on the msgfmt tools to the gettext recipe."

Steps to Reproduce

1. Create two identical workspaces (Clean, no Platform build files)
2. Build the platform projects at command line, for instance:
configure --enable-board=kontron-km2m806 --enable-parallel-pkgbuilds=12 --enable-jobs=12 --enable-reconfig --enable-kernel=preempt-rt --enable-rootfs=glibc-std-sato --with-template=feature/intel-emgd --with-rcpl-version=0014

Note: --enable-parallel-pkgbuilds should be set to 8 or greater (the greater, the better).
We have some information that indicates parallel-pkgbuilds=2 may not exhibit so many discrepancies as greater numbers would do.

*** Expected Results:
   No source file differences found between the two projects.

*** Actual Results:
   1. Part of customer's build process is to checksum the sources used in bitbake_build/tmp/work/*/**
       a. They ignore differences that reference the workspace path, timestamps, ...
       b. They ignore differences in Makefiles and Spec files that are due to the order of things being different (But same content).

   2. They are seeing several important differences in the sources between the two workspaces.
       (These are just the ones from a recent build.  We have seen other differences as well)
       The Diff output is attached.
       a. prj/bitbake_build/tmp/work/atom-wrs-linux/emgd-driver-bin-1.14-r0/emgd-driver-bin.spec
 b. All Makefiles in (prj/bitbake_build/tmp/work/atom-wrs-linux/flac-1.2.1-r2/*/**)
 c. prj/bitbake_build/tmp/work/atom-wrs-linux/gmp-5.0.4-r0/gmp-5.0.4/demos/calc/calc-config.h  (Just one example in this project)
 d. prj/bitbake_build/tmp/work/atom-wrs-linux/gettext-0.18.1.1-r15/gettext-0.18.1.1/gettext-tools/config.h

Please note that these are just examples. You may see other differences, including source files missing in one project and present in the other.

Other Downloads


Live chat
Online