diff options
author | Andrew Geissler <geissonator@yahoo.com> | 2020-07-25 00:15:54 +0300 |
---|---|---|
committer | Andrew Geissler <geissonator@yahoo.com> | 2020-07-25 00:20:14 +0300 |
commit | b7d2861976669d4f6decc55762ba83fe0371d6d5 (patch) | |
tree | 895805a16305cf31bccbf50b9baa866b232afa49 /poky/meta/lib/oe | |
parent | 5bea8d8239056487ed7ec39d7b1c319c664dcf68 (diff) | |
download | openbmc-b7d2861976669d4f6decc55762ba83fe0371d6d5.tar.xz |
poky: subtree update:968fcf4989..23deb29c1b
Arthur She (1):
igt-gpu-tools: Add PACKAGECONFIG for Chamelium support
Bruce Ashfield (4):
linux-yocto/5.4: update to v5.4.51
linux-yocto-rt/5.4: fix mmdrop stress test issues
kernel-yocto: account for extracted defconfig in elements check
kernel-devsrc: fix on-target module build for v5.8+
Changqing Li (2):
dpkg: change SRC_URI to take dpkg from git
gtk-immodules-cache.bbclass: fix post install scriptlet error
Charlie Davies (1):
u-boot: fix condition to allow use of *.cfg
Chen Qi (1):
rpm: fix nativesdk's default var location
Christian Eggers (2):
avahi: Fix typo in recipe
util-linux: Set license for library sub packages
Daniel Ammann (1):
image.bbclass: improve wording when image size exceeds the specified limit
Dmitry Baryshkov (1):
gcc-10.1: add fix for PR 96130
Douglas (2):
nativesdk: clear MACHINE_FEATURES
nativesdk: Set the CXXFLAGS to the BUILDSDK_CXXFLAGS
He Zhe (1):
cryptodev-module: Backport a patch to fix build failure with kernel v5.8
Hongxu Jia (1):
e2fsprogs: fix up check for hardlinks always false if inode > 0xFFFFFFFF
Jens Rehsack (3):
subversion: extend for nativesdk
serf: extend for nativesdk
kmod: add packageconfig for xz and ssl
Joshua Watt (8):
virtual/libgbm is the provider of gbm.pc
diffoscope: upgrade 150 -> 151
python3-pycryptodomex: upgrade 3.9.7 -> 3.9.8
python3-pycryptodome: upgrade 3.9.7 -> 3.9.8
classes/reproducible: Move to library code
lib/oe/reproducible: Fix error when no git HEAD
classes/cmake: Fix host detection
classes/package: Use HOST_OS for runtime dependencies
Kamil Dziezyk (1):
qemu: fix for virtfs configuration error in qemu 5.0.0
Kevin Hao (3):
wic/filemap: Drop the unused block_is_unmapped()
wic/filemap: Drop the unused get_unmapped_ranges()
wic/filemap: Fall back to standard copy when no way to get the block map
Khem Raj (4):
go: Disbale CGO for riscv64
go-dep: Fix build on riscv64
musl: Update to latest tip
site: Make sys_siglist default to no
Konrad Weihmann (2):
bitbake: pyshyacc: allow double COMMA statements
ptest: append to FILES
Kurt Kiefer (1):
linux-firmware: add ibt-20 package
Lee Chee Yang (1):
bison: fix Argument list too long error
Mingli Yu (1):
python3: define a profile directory path
Naveen Saini (3):
libva: upgrade 2.7.1 -> 2.8.0
libva-initial: upgrade 2.7.1 -> 2.8.0
libva-utils: upgrade 2.7.1 -> 2.8.0
Oleksandr (1):
expat: Added ptest
Pierre-Jean Texier (1):
u-boot: upgrade 2020.04 -> 2020.07
Rasmus Villemoes (1):
cml1: Move find_cfgs() helper to cml1.bbclass
Ricardo Salveti (1):
sudo: set with-rundir to /run/sudo
Richard Purdie (34):
bitbake: fetch2: Change git fetcher not to destroy old references
oeqa/selftest/sstatetests: Avoid polluting DL_DIR
bitbake: server/process: Fix a rare lockfile race
qemurunner: Ensure pid location is deterministic
qemurunner: Add extra debug info when qemu fails to start
bitbake: server/process: Ensure UI-less servers don't sit in infinite loops
oeqa/utils/qemurunner: Fix missing pid file tracebacks
mpfr: upgrade 4.0.2 -> 4.1.0
libuv: upgrade 1.38.0 -> 1.38.1
btrfs-tools: upgrade 5.6.1 -> 5.7
init-system-helpers: upgrade 1.57 -> 1.58
createrepo-c: upgrade 0.15.11 -> 0.16.0
mtd-utils: upgrade 2.1.1 -> 2.1.2
dpkg: upgrade 1.20.0 -> 1.20.5
python3-cython: upgrade 0.29.20 -> 0.29.21
python3-git: upgrade 3.1.3 -> 3.1.7
asciidoc: upgrade 9.0.0 -> 9.0.1
libnsl2: upgrade 1.2.0 -> 1.3.0
rpcsvc-proto: upgrade 1.4.1 -> 1.4.2
stress-ng: upgrade 0.11.14 -> 0.11.15
epiphany: upgrade 3.36.2 -> 3.36.3
ffmpeg: upgrade 4.3 -> 4.3.1
gnupg: upgrade 2.2.20 -> 2.2.21
mpg123: upgrade 1.26.1 -> 1.26.2
libevent: upgrade 2.1.11 -> 2.1.12
webkitgtk: upgrade 2.28.2 -> 2.28.3
libgcrypt: upgrade 1.8.5 -> 1.8.6
bitbake: server/process: Fix note reference -> info
bitbake: cooker: Fix unmatched files handling leading to misleading warnings
bitbake: build: Allow deltask to take multiple tasknames
pseudo: Update to add OFC fcntl lock updates
oeqa/qemurunner: Add priority/nice information for running processes
bitbake: cooker: Improve multiconfig configuration error reporting
bitbake: cooker: Handle multiconfig name mappings correctly
Robert Yang (1):
openssl: openssl-bin requires openssl-conf to run
Ross Burton (9):
insane: consolidate skipping of temporary do_package files
perf: add PACKAGECONFIG for CoreSight support
autotools: don't special-case help2man-native for dependencies
flex: fix build with autoconf 2.70
nasm: fix build with autoconf 2.70
init-ifupdown: always make machine-specific
insane: improve arch test messages
startup-notification: add time_t type mismatch patch from upstream
gcc: mitigate the Straight-line Speculation attack
Sakib Sajal (5):
qemu: fix CVE-2020-13362
qemu: fix CVE-2020-13659
qemu: fix CVE-2020-13800
qemu: fix CVE-2020-13791
busybox: make hwclock compatible with glibc 2.31
Tanu Kaskinen (2):
alsa-lib: upgrade 1.2.3.1 -> 1.2.3.2
pulseaudio: improve the Thumb frame pointer fix
Taras Kondratiuk (1):
nfs-utils: use rpcgen tool from HOSTTOOLS_DIR
Tim Orling (2):
lib/oe/recipeutils.py: add AUTHOR; BBCLASSEXTEND
scripts/lib/recipetool/create.py: fix regex strings
Wang Mingyu (4):
dbus: upgrade 1.12.18 -> 1.12.20
fribidi: upgrade 1.0.9 -> 1.0.10
glib-2.0: upgrade 2.64.3 -> 2.64.4
libvorbis: upgrade 1.3.6 -> 1.3.7
Yi Zhao (1):
bind: upgrade 9.11.19 -> 9.11.21
Yongxin Liu (2):
linux-firmware: fix the wrong file path for ibt-misc
linux-firmware: move ibt-misc to the end of ibt packages
akuster (3):
cve-check.bbclass: always save cve report
ref-system-requirements: update supported hosts lists
glibc: whitelist CVE-2010-10029
zhengruoqin (1):
gnutls: Fix krb5 code license to GPLv2.1+ to match the LICENSE file.
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Iae9b13b7fe09bb3c0ab953a063793c95e8b17468
Diffstat (limited to 'poky/meta/lib/oe')
-rw-r--r-- | poky/meta/lib/oe/recipeutils.py | 2 | ||||
-rw-r--r-- | poky/meta/lib/oe/reproducible.py | 104 |
2 files changed, 105 insertions, 1 deletions
diff --git a/poky/meta/lib/oe/recipeutils.py b/poky/meta/lib/oe/recipeutils.py index 29473a988..36427eec9 100644 --- a/poky/meta/lib/oe/recipeutils.py +++ b/poky/meta/lib/oe/recipeutils.py @@ -24,7 +24,7 @@ from collections import OrderedDict, defaultdict from bb.utils import vercmp_string # Help us to find places to insert values -recipe_progression = ['SUMMARY', 'DESCRIPTION', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()'] +recipe_progression = ['SUMMARY', 'DESCRIPTION', 'AUTHOR', 'HOMEPAGE', 'BUGTRACKER', 'SECTION', 'LICENSE', 'LICENSE_FLAGS', 'LIC_FILES_CHKSUM', 'PROVIDES', 'DEPENDS', 'PR', 'PV', 'SRCREV', 'SRCPV', 'SRC_URI', 'S', 'do_fetch()', 'do_unpack()', 'do_patch()', 'EXTRA_OECONF', 'EXTRA_OECMAKE', 'EXTRA_OESCONS', 'do_configure()', 'EXTRA_OEMAKE', 'do_compile()', 'do_install()', 'do_populate_sysroot()', 'INITSCRIPT', 'USERADD', 'GROUPADD', 'PACKAGES', 'FILES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RPROVIDES', 'RREPLACES', 'RCONFLICTS', 'ALLOW_EMPTY', 'populate_packages()', 'do_package()', 'do_deploy()', 'BBCLASSEXTEND'] # Variables that sometimes are a bit long but shouldn't be wrapped nowrap_vars = ['SUMMARY', 'HOMEPAGE', 'BUGTRACKER', r'SRC_URI\[(.+\.)?md5sum\]', r'SRC_URI\[(.+\.)?sha256sum\]'] list_vars = ['SRC_URI', 'LIC_FILES_CHKSUM'] diff --git a/poky/meta/lib/oe/reproducible.py b/poky/meta/lib/oe/reproducible.py new file mode 100644 index 000000000..f4f58dd95 --- /dev/null +++ b/poky/meta/lib/oe/reproducible.py @@ -0,0 +1,104 @@ +# +# SPDX-License-Identifier: GPL-2.0-only +# +import os +import subprocess +import bb + +def get_source_date_epoch_from_known_files(d, sourcedir): + source_date_epoch = None + newest_file = None + known_files = set(["NEWS", "ChangeLog", "Changelog", "CHANGES"]) + for file in known_files: + filepath = os.path.join(sourcedir, file) + if os.path.isfile(filepath): + mtime = int(os.lstat(filepath).st_mtime) + # There may be more than one "known_file" present, if so, use the youngest one + if not source_date_epoch or mtime > source_date_epoch: + source_date_epoch = mtime + newest_file = filepath + if newest_file: + bb.debug(1, "SOURCE_DATE_EPOCH taken from: %s" % newest_file) + return source_date_epoch + +def find_git_folder(d, sourcedir): + # First guess: WORKDIR/git + # This is the default git fetcher unpack path + workdir = d.getVar('WORKDIR') + gitpath = os.path.join(workdir, "git/.git") + if os.path.isdir(gitpath): + return gitpath + + # Second guess: ${S} + gitpath = os.path.join(sourcedir, ".git") + if os.path.isdir(gitpath): + return gitpath + + # Perhaps there was a subpath or destsuffix specified. + # Go looking in the WORKDIR + exclude = set(["build", "image", "license-destdir", "patches", "pseudo", + "recipe-sysroot", "recipe-sysroot-native", "sysroot-destdir", "temp"]) + for root, dirs, files in os.walk(workdir, topdown=True): + dirs[:] = [d for d in dirs if d not in exclude] + if '.git' in dirs: + return root + + bb.warn("Failed to find a git repository in WORKDIR: %s" % workdir) + return None + +def get_source_date_epoch_from_git(d, sourcedir): + if not "git://" in d.getVar('SRC_URI'): + return None + + gitpath = find_git_folder(d, sourcedir) + if not gitpath: + return None + + # Check that the repository has a valid HEAD; it may not if subdir is used + # in SRC_URI + p = subprocess.run(['git', 'rev-parse', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=gitpath) + if p.returncode != 0: + bb.debug(1, "%s does not have a valid HEAD: %s" % (gitpath, p.stdout.decode('utf-8'))) + return None + + bb.debug(1, "git repository: %s" % gitpath) + p = subprocess.run(['git','log','-1','--pretty=%ct'], check=True, stdout=subprocess.PIPE, cwd=gitpath) + return int(p.stdout.decode('utf-8')) + +def get_source_date_epoch_from_youngest_file(d, sourcedir): + if sourcedir == d.getVar('WORKDIR'): + # These sources are almost certainly not from a tarball + return None + + # Do it the hard way: check all files and find the youngest one... + source_date_epoch = None + newest_file = None + for root, dirs, files in os.walk(sourcedir, topdown=True): + files = [f for f in files if not f[0] == '.'] + + for fname in files: + filename = os.path.join(root, fname) + try: + mtime = int(os.lstat(filename).st_mtime) + except ValueError: + mtime = 0 + if not source_date_epoch or mtime > source_date_epoch: + source_date_epoch = mtime + newest_file = filename + + if newest_file: + bb.debug(1, "Newest file found: %s" % newest_file) + return source_date_epoch + +def fixed_source_date_epoch(): + bb.debug(1, "No tarball or git repo found to determine SOURCE_DATE_EPOCH") + return 0 + +def get_source_date_epoch(d, sourcedir): + return ( + get_source_date_epoch_from_git(d, sourcedir) or + get_source_date_epoch_from_known_files(d, sourcedir) or + get_source_date_epoch_from_youngest_file(d, sourcedir) or + fixed_source_date_epoch() # Last resort + ) + |