2.4.2.1. Build History Package Information

The history for each package contains a text file that has name-value pairs with information about the package. For example, buildhistory/packages/core2-poky-linux/busybox/busybox/latest contains the following:

     PV = 1.19.3
     PR = r3
     RDEPENDS = update-rc.d eglibc (>= 2.13)
     RRECOMMENDS = busybox-syslog busybox-udhcpc
     PKGSIZE = 564701
     FILES = /usr/bin/* /usr/sbin/* /usr/libexec/* /usr/lib/lib*.so.* \
        /etc /com /var /bin/* /sbin/* /lib/*.so.* /usr/share/busybox \
        /usr/lib/busybox/* /usr/share/pixmaps /usr/share/applications \
        /usr/share/idl /usr/share/omf /usr/share/sounds /usr/lib/bonobo/servers
     FILELIST = /etc/busybox.links /etc/init.d/hwclock.sh /bin/busybox /bin/sh
                

Most of these name-value pairs correspond to variables used to produce the package. The exceptions are FILELIST, which is the actual list of files in the package, and PKGSIZE, which is the total size of files in the package in bytes.

There is also a file corresponding to the recipe from which the package came (e.g. buildhistory/packages/core2-poky-linux/busybox/latest):

     PV = 1.19.3
     PR = r3
     DEPENDS = virtual/i586-poky-linux-gcc virtual/i586-poky-linux-compilerlibs \
        virtual/libc update-rc.d-native
     PACKAGES = busybox-httpd busybox-udhcpd busybox-udhcpc busybox-syslog \
        busybox-mdev busybox-dbg busybox busybox-doc busybox-dev \
        busybox-staticdev busybox-locale
                

Finally, for those recipes fetched from a version control system (e.g., Git), a file exists that lists source revisions that are specified in the recipe and lists the actual revisions used during the build. Listed and actual revisions might differ when SRCREV is set to ${AUTOREV}. Here is an example assuming buildhistory/packages/emenlow-poky-linux/linux-yocto/latest_srcrev):

     # SRCREV_machine = "b5c37fe6e24eec194bb29d22fdd55d73bcc709bf"
     SRCREV_machine = "b5c37fe6e24eec194bb29d22fdd55d73bcc709bf"
     # SRCREV_emgd = "caea08c988e0f41103bbe18eafca20348f95da02"
     SRCREV_emgd = "caea08c988e0f41103bbe18eafca20348f95da02"
     # SRCREV_meta = "c2ed0f16fdec628242a682897d5d86df4547cf24"
     SRCREV_meta = "c2ed0f16fdec628242a682897d5d86df4547cf24"
                

You can use the buildhistory-collect-srcrevs command to collect the stored SRCREV values from build history and report them in a format suitable for use in global configuration (e.g., local.conf or a distro include file) to override floating AUTOREV values to a fixed set of revisions. Here is some example output from this command:

     # emenlow-poky-linux
     SRCREV_machine_pn-linux-yocto = "b5c37fe6e24eec194bb29d22fdd55d73bcc709bf"
     SRCREV_emgd_pn-linux-yocto = "caea08c988e0f41103bbe18eafca20348f95da02"
     SRCREV_meta_pn-linux-yocto = "c2ed0f16fdec628242a682897d5d86df4547cf24"
     # core2-poky-linux
     SRCREV_pn-kmod = "62081c0f68905b22f375156d4532fd37fa5c8d33"
     SRCREV_pn-blktrace = "d6918c8832793b4205ed3bfede78c2f915c23385"
     SRCREV_pn-opkg = "649"
                

Note

Here are some notes on using the buildhistory-collect-srcrevs command:
  • By default, only values where the SRCREV was not hardcoded (usually when AUTOREV was used) are reported. Use the -a option to see all SRCREV values.

  • The output statements might not have any effect if overrides are applied elsewhere in the build system configuration. Use the -f option to add the forcevariable override to each output line if you need to work around this restriction.

  • The script does apply special handling when building for multiple machines. However, the script does place a comment before each set of values that specifies which triplet to which they belong as shown above (e.g., emenlow-poky-linux).