summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-12-11gcc-runtime: improve reproducibilityjurob/reproducible_binaries_4Juro Bystricky
Remove various build host references from packages: libstdc++-staticdev gcc-runtime.dbg The references are removoved by correctly setting various compiler -fdebug-prefix-map settings. There are two main issues: The default DEBUG_PREFIX_MAP variable references WORKDIR, however, gcc sources are in a shared folder (work-shared)/ Additionally, DWARF info seems to store symlink names but gcc seems to resolve symlink names referenced in -fdebug-prefix-map. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11kernel.bbclass: explicitly use pigzJuro Bystricky
Use "pigz -n -T" to avoid timestamps from compressed file headers. Using "gzip -n" may not work if gzip is actually pigz in disguise. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11pigz: don't pretend to be gzipJuro Bystricky
pigz is not always a direct drop-in replacement for gzip. "pigz -n" is not equivalent to "gzip -n" Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11kernel-devsrc: Use full mrproper to cleanSaul Wold
By using the full mrproper clean target it also removes some generated files that are not required on the target to build. It also helps to fix reprodudible builds as the generated files could have different permissions causing the check to fail. Tested with building and booting kernel from source on the target [YOCTO #12137] Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2017-12-11libc6: improve reproducibilityJuro Bystricky
Building various libraries (libc6, libc6-pic, libc6-staticdev, libc6-dbg, ...) can be non-deterministic because they may be built with two different versions of intl/plural.c. in two otherwise identical builds. We may or may not re-generate the file plural.c from the file plural.y, based on bison being installed or not and based on mtimes of those two files, as the Makefile contains: plural.c: plural.y $(BISON) $(BISONFLAGS) $@ $^ If the above rule does not fire, we use a "fallback" plural.c, otherwise we use plural.c re-generated from plural.y. The fix is to always require bison to be installed and unconditionally re-generate plural.c. (This is achieved by simply removing the "fallback" plural.c from the distribution). The generated plural.c can contain build host references in the form of "#line" statements. These contain absolute build host paths, so we use bison "--no-lines" additional option when generating plural.c. [YOCTO #12291] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11pulseaudio: improve reproducibilityJuro Bystricky
1. Remove build host references from CFLAGS in generated config.h file. They end up compiled in the image, but are are only used for information. 2. Remove PA_BUILDDIR hardcoded references: safe to remove as we are guaranteed not to run from the build directory when the image is cross-compiled 3. Take care of any embedded __FILE__ strings, only if the compiler supports -ffile-prefix-map option. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11python-dev: improve reproducibilityJuro Bystricky
Remove remaining build host references from packaged files. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11ltp: improve reproducibilityJuro Bystricky
ltp package contains several gzipped files. Improve reproducibility of the build by ensuring the gzipped files do not contain timestamps in their headers. https://wiki.debian.org/ReproducibleBuilds/TimestampsInGzipHeaders Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11groff-doc: improve reproducibilityJuro Bystricky
Some examples used "random" numbers to generate random RGB colors. This would break reproducible builds. The issue was solved by a patch backported from Debian. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11groff_1.22.3.bb: support SOURCE_DATE_EPOCHJuro Bystricky
Patch backported from Debian: https://sources.debian.net/src/groff/1.22.3-9/debian/patches/source-date-epoch.patch/ Various documents contain information such as: %%Creator:​·​groff·​version·​1.​22.​3 %%CreationDate:​·​Sat·​Nov·​11·​01:​04:​26·​2017 The intent is to replace CreationDate by a value specified by SOURCE_DATE_EPOCH (if present in environment). Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11grub-efi_2.02.bb: improve reproducibilityJuro Bystricky
Remove several build host references from modinfo.sh files. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11x11perf: improve reproducibilityJuro Bystricky
Remove build host refeences. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11perl-ptest: various fixesJuro Bystricky
Improve reproducibility: Remove all build host references from distributed files. Do not package non-linux OS related files. Also remove some additional files not needed by run-ptest. (There are probably still more files that can be removed, but as long as they don't leak build host references they are harmless). Fix the expected checksum of MakeMaker/lib/ExtUtils/Liblist/Kid.pm to match the one expected: We modified the file, but did not recalculate/update the file checksum accordingly. (This fixes the only failing test.) Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11python3-dev: improve reproducibilityJuro Bystricky
Remove remaining build host references from packaged files. [#YOCTO 11472] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11perl-dbg: improve reproducibilityJuro Bystricky
Remove various build host references scattered within comments in numerous files that are distributed in the package. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11icu-dbg: improve reproducibilityJuro Bystricky
Make sure build host references do not end up being compiled in the image. This only affects libicutu and icu-dbg. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11libperl5: improve reproducibilityJuro Bystricky
Remove additional build host references from Config_heavy.pl and config.sh. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11libical-dev: improve reproducibilityJuro Bystricky
Remove build host references from the file LibIcalTargets-noconfig.cmake. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11gnutls: improve reproducibilityJuro Bystricky
Sanitize generated config.h containing build host reference such as: #define POSIX_SHELL "<builddir>/tmp/hosttools/bash" The path for POSIX_SHELL is not only wrong for the cross-compiled target, it also prevents reproducible build. Prior the compilation we edit the value to: #define POSIX_SHELL "bash" With this change we can build reproducible libgnutls-bin, libgnutls-dev and libgnutls-dbg packages. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11sudo: improve reproducibilityJuro Bystricky
Delete various build host references from the internally generated file sudo_usage.h. The references get compiled into executables, which leads to non-reproducible builds. The removed references (configure options) were only used as part of the sudo "usage", and even then only when ran as root. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11curl_7.54.1.bb: improve reproducibilityJuro Bystricky
Improve reproducible build of curl-dev and curl-dbg packages. curl-dev: Correctly remove build host references from curl-config curl-dbg: Do not generate time stamps in files generated by mkhelp.pl Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11openssl_1.0.2l.bb: improve reproducibilityJuro Bystricky
Improve reproducible build of: openssl-staticdev openssl-ptest openssl-dbg libcrypto There are three main causes that prevent reproducible build: 1. openssl-ptest: Remove build host references from Makefile and Configure distributed with the package 2. openssl-dbg: Generate modified "buildinf.h". This file is generated by the script "mkbuildinf.pl". The generated file contains build host CFLAGS, containing various build host references. We need to pass sanitized CFLAGS to the script. 3. We also need to modify the script "mkbuildinf.pl" itsel in order not to generate a timestamp if SOURCE_DATE_EPOCH is present in the environment. With the newly generated "buildinf.h" we can build reproducible libcrypto and openssl-staticdev as well. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11e2fsprogs-ptest: improve reproducibilityJuro Bystricky
Remove several Makefiles containing build host references. While at it, also remove some additional files not needed for testing. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11icu-dev: improve reproducibilityJuro Bystricky
Remove all build host references from several distributed files. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11gobject-introspection: remove cross-compiler wrappersJuro Bystricky
The wrappers are needed for cross-compiling only. [YOCTO #11705] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11tcl: remove host path from tclConfig.shWenzong Fan
The tclConfig.sh is also used by other packages (such as expect) for cross-compiling, the host path from it can't be removed directly in the do_install step. With PACKAGE_PREPROCESS_FUNCS to remove host path and avoid the crossscripts installed to target. Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
2017-12-11glibc-locale: fix inconsistent glibc-gconv dependenciesJuro Bystricky
On occassions two builds of all glibc-gconv packages could differ in: build1: Depends:​·​glibc-​gconv build2: Depends:​·​glibc-​gconv,​·​libc6·​(>=·​2.​25)​ This patch attempts to fix this. [YOCTO #11551] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11acl-doc: improve reproducibilityJuro Bystricky
Use gzip compression without timestamps in the metadata. (Use gzip -n). Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11util-linux-ptest: various fixesJuro Bystricky
The original code only enabled a sub-set of all available tests. It also copied binary images although the images were already installed in a different location as well. In addition, the original code copied libtool scripts instead of already cross-comiled binary images. This patch modifies the test scripts so there is no need to copy images already installed: instead it tests images already installed. The images are scattered in /bin, usr/bin, /sbin/ usr/sbin folders, so the modification of test scripts reflects this. We do, however, copy some cross-compiled tests that were missing previously. By the virtue of not copying the libtools scripts we also managed the achieve binary reproducible package, as previously leaked build host info was contained in libtool scripts, which are not copied anymore. [YOCTO #10953] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11buildhistory.bbclass: buildhistory_list_files: remove folder sizeJuro Bystricky
"buildhistory_list_files" generates text files containing list of files that go into various packages/images. The file list contains file sizes as well. However, the listed "file size" of a directory entry depends on the file system of the build host. So, for example, building on EXT4 the folder size is always listed as 4096 bytes. The same folder is listed with different size when building on tmpfs. This can make direct comparison of two build histories difficult. Considering that the listed folder size is meaningless anyway (it has no relation to the size of the package/image), this patch addresses the problem by removing the directory entry sizes entirely from the generated text files. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11sed-ptest: improve reproducibilityJuro Bystricky
Remove build host references Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11distcc-doc: improve reproducibilityJuro Bystricky
Compress disctcc-doc without timestamps in the meta-data header. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11grub_2.02.bb: improve reproducibilityJuro Bystricky
Remove several build host references from modinfo.sh files. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11poky-reproducible.conf: Initial versionJuro Bystricky
Simplify building reproducible images by using DISTRO="poky-reproducible" Sets some variables to reasonable values so users do not have to set them in local.conf. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11rootfs-postcommands.bbclass: support binary reproducibilityJuro Bystricky
Conditionally support binary reproducibility of rootfs images. If BUILD_REPRODUCIBLE_BINARIES = 1 then: 1. set /etc/timestamp to a reproducible value 2. set /etc/version to a reproducible value 3. set /etc/gconf: set mtime in all %gconf.xml to reproducible values The reproducible value is taken from the variable REPRODUCIBLE_TIMESTAMP_ROOTFS. If the variable is not specified, the timestamp value is derived from the top git commit. [YOCTO#11176] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11cpio: provide cpio-replacement-nativeJuro Bystricky
By default, bitbake uses host cpio, which can be quite old and missing crucial newever features. This patch allows to use the cpio-native instead, which is the latest upstream version. To use the cpio-native instead of the cpio from host, you need to specify: do_image_cpio[depends] += "cpio-replacement-native:do_populate_sysroot" EXTRANATIVEPATH += "cpio-native" Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11image_types.bbclass: improve cpio image reproducibilityJuro Bystricky
This patch helps to build cpio images that are binary reproducible. The changes are as follows: 1. By default, cpio from the host is used, which can be quite old. Hence we need to implement a way to use/call cpio-native, which supports new features needed for binary reproducibility, notably the arguments such as "--reproducible" and "--ignore-devno". This can be achieved by specifying the following (in local.conf): do_image_cpio[depends] += "cpio-replacement-native:do_populate_sysroot" EXTRANATIVEPATH += "cpio-native" 2. Provide a way to pass custom arguments to cpio. This is done via a new variable IMAGE_CMD_CPIO. For binary reproducible cpio archives one needs to set (in local.conf) IMAGE_CMD_CPIO = "cpio --ignore-devno --reproducible " 3. A symlink is created as part of the image. Here we make sure it gets the timestamps (mtime) based on the timestamp of the symlink target, rather than the timestamp corresponding to the build time. 4. Sort the files we pipe to cpio. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11module.bbclass: improve reproducibilityJuro Bystricky
Use gcc option "-ffile-prefix-map" if available. This will remap any hard-coded __FILE__ containing build host path to a reproducible value, with the absolute build-host path stripped. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11kernel.bbclass: improve reproducibilityJuro Bystricky
In order to achieve binary identical modules-${MACHINE}.tgz, we need to instruct "tar" to set mtime for added files based on SOURCE_DATE_EPOCH when creating the file. We also need to instruct "gzip" not to save the original file name and time stamp in metadata. Other minor code improvements without functional changes. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11compiler-options.bbclass: provide and validate optionsJuro Bystricky
As we may be using external toolchains, we cannot assume various compiler options to be valid. Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-12-11reproducible_build.bbclass: initial support for binary reproducibilityJuro Bystricky
Conditionally set some environment variables in order to achieve improved binary reproducibility. Providing BUILD_REPRODUCIBLE_BINARIES is set to "1", we set the following environment variables: export PYTHONHASHSEED=0 export PERL_HASH_SEED=0 export TZ="UTC" Additionally, we export and set SOURCE_DATE_EPOCH. This is the most crucial step to achieve binary reproducibility. The value for this variable (timestamp) is obtained after source code for a recipe has been unpacked, but before it is patched. If the code sources come from a GIT repo, we get the timestamp from the top commit. (GIT repo does not preserve file mktime timestamps). It is not safe to assume folders named "git" contain git repositories, so we check for presence of .git folder in ${S}. Otherwise, if GIT repo is not present, we get mtime from known files such as NEWS, ChangeLog, etc. If this also fails, we go through all files and get the timestamp from the youngest one. We create an individual timestamp for each recipe. The timestamp is stored in the file '__source_date_epoch.txt' located in ${WORKDIR}. Later on, each task reads this file and sets SOURCE_DATE_EPOCH based on the value found in the file. The file __source_date_epoch.txt file is re-used if found. This can be the file we previously created ourselves, or it can be a file provided by a user via a recipe. [YOCTO#11178] [YOCTO#11179] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
2017-10-10bitbake: toaster/highlight.pack.js: Fix corrupted fileRichard Purdie
The newly added file in the last commit was corrupted, fix it. (Bitbake rev: be393f247a08c0a4a50a6a76b8fd57f78295d2a1) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-10bitbake: toaster: Remove prettifyDavid Reyna
Remove "prettify.js" and "prettify.css" due to license issues with Apache2. Replace with "highlight.pack.js" with its BSD3 License. [YOCTO #12206] (Bitbake rev: 6361698819530382541506b06a61f2c76dde59cb) Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Brian Avery <brian.avery@intel.com> Signed-off-by: David Reyna <david.reyna@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-09poky: add debian-9 to SANITY_TESTED_DISTROSMartin Kelly
I have been working with OE on debian-9 for several months now without issue. In addition, I tested a build + runqemu for core-image-sato following the quickstart guide and had no issues. (From meta-yocto rev: 2d8a572df7498ce8eb3a78f05384f0f7dd5ecb91) Signed-off-by: Martin Kelly <mkelly@xevo.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-09packagegroups: remove a bbappendSlater, Joseph
Force items into packagegroup-core-tools-profile? I don't think so. (From meta-yocto rev: df0f331832fad818604d8696700765fb4d3ba072) Signed-off-by: Joe Slater <jslater@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-09bitbake.conf: add tools required by testimage to HOSTTOOLS conditionallyChen Qi
Add tools required by testimage to HOSTTOOLS only when testimage is inherited. These tools, as described in the comment, are only required by the testimage task. So this change should not have negtive effect. This would also solve build error on hosts which miss some tool such as scp. (From OE-Core rev: 8ca61a5464743ff85b6d26886112750d6ddd13e0) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-09gcc-6.3: Backport patch to fix ICE on ARMKhem Raj
Fixes internal compiler error: Max. number of generated reload insns per insn is achieved (90) (From OE-Core rev: d2631f45a057c53797b7ba657662f35f66a2b04e) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-09e2fsprogs: modify ptest scriptJuro Bystricky
e2fsprog testsuite used to log results into its own log file into /usr/lib/e2fsprogs/ptest/test.log. Therefore console output was not available and redirecting ptest-runner output into a log file would not capture output of any individual tests. So overall the whole e2fsprogs testsuite consisting of about 300 tests was evaluated as a single test. This patch ensures the e2fsprogs test_script output is not automatically redirected while executing during run-ptest. Any redirection is up to the user. Additionally, the results of tests are prefixed by more canonical "PASS:" FAIL:" based on the actual test results. Aditionally, remove various files created by the testsuite. [YOCTO #12146] (From OE-Core rev: a218b85dba1a481901548f7414676c0ae6f43316) Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-09linux-firmware: Split i.MX SDMA firmwaresOtavio Salvador
This splits out the i.MX SDMA firmwares for i.MX6 and i.MX7 SoCs. This also includes the required runtime provides, conflicts and replaces for the old firmware-imx which was provided by NXP BSP layer. (From OE-Core rev: b3f3078fd4349fdf6986dd57e4b04bce03630924) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-10-07bitbake: README: new readme file including main aspects of the projectLeonardo Sandoval
Includes brief description of the project, pointers to website, documentation, mailing list and source code. (Bitbake rev: 28249c42701f9156a0b3153d72d7e46dacab37cb) Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>