Hello community, here is the log from the commit of package post-build-checks for openSUSE:Factory checked in at 2018-10-01 09:02:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/post-build-checks (Old) and /work/SRC/openSUSE:Factory/.post-build-checks.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "post-build-checks" Mon Oct 1 09:02:28 2018 rev:91 rq:636914 version:84.88+git20180920.ef3d8cb Changes: -------- --- /work/SRC/openSUSE:Factory/post-build-checks/post-build-checks.changes 2018-08-28 09:18:35.387722696 +0200 +++ /work/SRC/openSUSE:Factory/.post-build-checks.new/post-build-checks.changes 2018-10-01 09:02:30.388043980 +0200 @@ -1,0 +2,30 @@ +Thu Sep 20 15:31:19 UTC 2018 - r...@suse.de + +- Update to version 84.88+git20180920.ef3d8cb: + * 50-check-kernel-build-id + - add archs i686 ppc ppc64 s390 armv6l armv7l + +------------------------------------------------------------------- +Thu Sep 20 13:36:08 UTC 2018 - r...@suse.de + +- Update to version 84.88+git20180920.51eb861: + * 50-check-kernel-build-id + - regroup checks for image and debuginfo + - make arch list a little more robust + - Handle i586. Also improve error handling when arch not found. + - Change err() to return 0. Only return 1 if we successfully + compared the id's and there was a discrepancy. + - change file mode to 755 for 50-check-kernel-build-id to match + all other checks + * make all OBS tex pdf builds reproducible by exporting + FORCE_SOURCE_DATE as 1 + +------------------------------------------------------------------- +Mon Sep 17 16:15:35 UTC 2018 - r...@suse.de + +- Update to version 84.88+git20180917.23b80ae: + * check for -fstack-clash-protection instead of -fmessage-length, + as that one will be removed from optflags + * Add kernel-build-id consistency check + +------------------------------------------------------------------- Old: ---- post-build-checks-84.88+git20180809.3be1b09.tar.xz New: ---- post-build-checks-84.88+git20180920.ef3d8cb.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ post-build-checks.spec ++++++ --- /var/tmp/diff_new_pack.aNXPO8/_old 2018-10-01 09:02:30.804043618 +0200 +++ /var/tmp/diff_new_pack.aNXPO8/_new 2018-10-01 09:02:30.804043618 +0200 @@ -16,13 +16,13 @@ # -%define version_unconverted 84.88+git20180809.3be1b09 +%define version_unconverted 84.88+git20180920.ef3d8cb Name: post-build-checks Summary: post checks for build after rpms have been created License: GPL-2.0-or-later Group: Development/Tools/Building -Version: 84.88+git20180809.3be1b09 +Version: 84.88+git20180920.ef3d8cb Release: 0 PreReq: aaa_base permissions sed Requires: aaa_base-malloccheck ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.aNXPO8/_old 2018-10-01 09:02:30.844043583 +0200 +++ /var/tmp/diff_new_pack.aNXPO8/_new 2018-10-01 09:02:30.844043583 +0200 @@ -1,5 +1,5 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/openSUSE/post-build-checks.git</param> - <param name="changesrevision">3be1b099402914cdfe62d7d82e80ab0742b7ebe8</param></service> + <param name="changesrevision">ef3d8cb349ac8062bd2b73502539a32f05be3a0a</param></service> </servicedata> \ No newline at end of file ++++++ post-build-checks-84.88+git20180809.3be1b09.tar.xz -> post-build-checks-84.88+git20180920.ef3d8cb.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/post-build-checks-84.88+git20180809.3be1b09/checks/50-check-kernel-build-id new/post-build-checks-84.88+git20180920.ef3d8cb/checks/50-check-kernel-build-id --- old/post-build-checks-84.88+git20180809.3be1b09/checks/50-check-kernel-build-id 1970-01-01 01:00:00.000000000 +0100 +++ new/post-build-checks-84.88+git20180920.ef3d8cb/checks/50-check-kernel-build-id 2018-09-20 17:30:03.000000000 +0200 @@ -0,0 +1,156 @@ +#!/bin/bash +#set -x + +# Verify consistency of BuildID between vmlinux, image (vmlinuz etc - if +# supported) and vmlinux.debug (debuginfo). +# Tony Jones <to...@suse.de>, May 2018 + +# This script uses following build environment vars: +# -PNAME (package name) +# -BUILD_DEBUG (are debuginfo's being built? aka osc build -d?) + +trap '[ -d "${_tmpdir}" ] && rm -rf ${_tmpdir}' EXIT +function warn() { echo "... $*" >&2; } +function err() { warn $*; echo "Giving up" >&2 ; exit 0; } +function buildid() { eu-readelf --notes $1 | awk '/Build ID:/ {print $3}'; } +function have_image { [ -n "${image_name}" ]; } +function have_debuginfo { [ ${have_debugi} -eq 1 ]; } + +# Find the version#s for kernel and kernel rpm +# This should be consistent across branches +function findversion() { + local _rpm + + [ -d ${rpms} ] || err "Unable to find rpmbuild dir ${rpms}" + + # find the "main" kernel rpm for $PNAME + _rpm=`cd ${rpms}; compgen -G "${PNAME}-[0-9]*.${arch}.rpm"` + + [ -z "${_rpm}" -o ! -f "${rpms}/${_rpm}" ] && err "Unable to find base kernel rpm for ${PNAME}" + + kernversion=`rpm -qp --provides ${rpms}/${_rpm} | awk '/^kernel-base =/ {print $3}'` + rpmversion=`rpm -qp --provides ${rpms}/${_rpm} | awk "/^${PNAME}\\(${rpm_prov_arch}\\) =/ {print \\$3}"` + + [ -z "${kernversion}" -o -z "${rpmversion}" ] && err "Unable to validate kernel build versions from ${_rpm}"; +} + +TOPDIR=/usr/src/packages +cpioflags="-icd --quiet" +have_debugi=1 +image_name="" +vmlinux_compression_suffix="" +warnonly=0 + +# only check for these flavors +case "${PNAME}" in + kernel-default|kernel-debug|kernel-vanilla) + flavor=${PNAME#kernel-};; + *) exit 0;; +esac + +have_debugi=${BUILD_DEBUG} +[ -z "${BUILD_DEBUG}" ] && have_debugi=0 + +[ -h ${BUILD_ROOT}/.build.packages ] && TOPDIR=${BUILD_ROOT}/`readlink ${BUILD_ROOT}/.build.packages` + +[ -f ${TOPDIR}/SOURCES/IGNORE_BUILDID_MISMATCH ] && warnonly=1 + +# look for which arch was built, since this is kernel specific, there are +# no biarch issues +karchs="i586 i686 x86_64 ppc ppc64 ppc64le s390 s390x armv6l armv7l aarch64" +rpm_prov_arch="" +for arch in ${karchs}; do + if [ -d ${TOPDIR}/RPMS/${arch} ] ;then + case ${arch} in + "i586"|"i686") rpm_prov_arch="x86-32" + vmlinux_compression_suffix=".gz" + image_name="vmlinuz";; + "x86_64") rpm_prov_arch="x86-64"; + vmlinux_compression_suffix=".gz" + image_name="vmlinuz";; + "ppc") rpm_prov_arch="ppc-32";; + "ppc64"|"ppc64le") rpm_prov_arch="ppc-64";; + "s390") rpm_prov_arch="s390-32" + vmlinux_compression_suffix=".gz" + #has Image but not ELF + ;; + "s390x") rpm_prov_arch="s390-64" + vmlinux_compression_suffix=".gz" + #has Image but not ELF + ;; + "armv6l") rpm_prov_arch="armv6hl-32" + vmlinux_compression_suffix=".gz" + #has Image but not ELF + ;; + "armv7l") rpm_prov_arch="armv7hl-32" + vmlinux_compression_suffix=".gz" + #has Image but not ELF + ;; + "aarch64") rpm_prov_arch="aarch-64" + vmlinux_compression_suffix=".gz" + #has Image but not ELF + ;; + *) err "karchs does not match case statement, please fixme!" ;; + esac + break + fi +done + +[ -n "${rpm_prov_arch}" ] || { warn "No valid build arch in ${TOPDIR}/RPMS"; exit 0; } + +! have_image && ! have_debuginfo && { warn "No BuildID consistency to verify (debuginfo disabled and arch has no kernel image fmt)"; exit 0; } + +rpm -q --quiet elfutils || { warn "Unable to verify BuildID (no elfutils). Add 'BuildRequires: elfutils' to package"; exit 0; } + +rpms=${TOPDIR}/RPMS/${arch} +findversion + +echo "... Verifying kernel build-ids for ${PNAME} ${kernversion} ${arch}" + +echo "... Processing kernel rpms in '${rpms}'" + +krpm=${rpms}/${PNAME}-${rpmversion}.${arch}.rpm +[ -f ${krpm} ] || err "Unable to find kernel rpm '${krpm}'" + +_tmpdir=`mktemp -d` +[ -d "${_tmpdir}" ] || err "Unable to make tempdir" + +vmlinux="./boot/vmlinux-${kernversion}-${flavor}${vmlinux_compression_suffix}" +image="" +have_image && image="./boot/${image_name}-${kernversion}-${flavor}" +rpm2cpio ${krpm} | (cd ${_tmpdir} ; cpio ${cpioflags} ${vmlinux} ${image}) + +[ ! -f ${_tmpdir}/${vmlinux} ] && err "Unable to extract ${vmlinux} from ${krpm}" +vmlinux_id=`buildid ${_tmpdir}/${vmlinux}` + +mismatch=0 +if have_image ;then + [ ! -f ${_tmpdir}/${image} ] && err "Unable to extract ${image} from ${krpm}" + image_id=`buildid ${_tmpdir}/${image}` + + if [ ${vmlinux_id} == "${image_id}" ] ;then + echo "... BuildID vmlinux/${image_name} OK - ${vmlinux_id}" + else + warn "BuildID Mismatch vmlinux=${vmlinux_id} ${image_name}=${image_id}" ; mismatch=1 + fi +fi + +if have_debuginfo ;then + kdbgi_rpm=${rpms}/${PNAME}-debuginfo-${rpmversion}.${arch}.rpm + [ ! -f ${kdbgi_rpm} ] && err "Unable to find kernel debuginfo rpm '${kdbgi_rpm}'" + + vmlinux_dbgi="./usr/lib/debug/boot/vmlinux-${kernversion}-${flavor}.debug" + rpm2cpio ${kdbgi_rpm} | (cd ${_tmpdir} ; cpio ${cpioflags} ${vmlinux_dbgi}) + + [ ! -f ${_tmpdir}/${vmlinux_dbgi} ] && err "Unable to extract ${vmlinux} from ${kdbgi_rpm}" + vmlinux_dbgi_id=`buildid ${_tmpdir}/${vmlinux_dbgi}` + + if [ ${vmlinux_id} == "${vmlinux_dbgi_id}" ] ;then + echo "... BuildID vmlinux/vmlinux_debuginfo OK - ${vmlinux_id}" + else + warn "BuildID Mismatch vmlinux=${vmlinux_id} vmlinux_debuginfo=${vmlinux_dbgi_id}" ; mismatch=1 + fi +fi + +[ ${warnonly} -eq 1 -a ${mismatch} -eq 1 ] && { mismatch=0; warn "Ignoring BuildID mismatch (IGNORE_BUILDID_MISMATCH exists in kernel source dir)"; } +exit ${mismatch} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/post-build-checks-84.88+git20180809.3be1b09/checks-data/check_gcc_output new/post-build-checks-84.88+git20180920.ef3d8cb/checks-data/check_gcc_output --- old/post-build-checks-84.88+git20180809.3be1b09/checks-data/check_gcc_output 2018-08-09 16:13:13.000000000 +0200 +++ new/post-build-checks-84.88+git20180920.ef3d8cb/checks-data/check_gcc_output 2018-09-20 17:30:03.000000000 +0200 @@ -226,9 +226,9 @@ } # libtool needs some special love. $iscompilerline = 1 if (/libtool.*--mode=compile.*(gcc|cc|g\+\+)/i); - # If a line has -fmessage-length in it assume it uses RPM_OPT_FLAGS. + # If a line has -fstack-clash-protection in it assume it uses RPM_OPT_FLAGS. # If you avoid this check by adding -fml, we will hack your hands off. - if ($iscompilerline && ! /-fmessage-length/ && /\.c/i) { + if ($iscompilerline && ! /-fstack-clash-protection/ && /\.c/i) { # split away "foo.c" or foo.c; or similar too. foreach my $f(grep(/\.c(pp|c)?$/,split(/[ "';`]/))) { &add_warning("no-rpm-opt-flags", "<cmdline>:$f"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/post-build-checks-84.88+git20180809.3be1b09/suse-buildsystem.sh new/post-build-checks-84.88+git20180920.ef3d8cb/suse-buildsystem.sh --- old/post-build-checks-84.88+git20180809.3be1b09/suse-buildsystem.sh 2018-08-09 16:13:13.000000000 +0200 +++ new/post-build-checks-84.88+git20180920.ef3d8cb/suse-buildsystem.sh 2018-09-20 17:30:03.000000000 +0200 @@ -1,6 +1,8 @@ export SUSE_IGNORED_RPATHS=/etc/suse-ignored-rpaths.conf export SUSE_ASNEEDED=1 + +# for reproducible builds export QT_HASH_SEED=0 export PERL_HASH_SEED=42 export PYTHONHASHSEED=0 - +export FORCE_SOURCE_DATE=1 # for texlive to use SOURCE_DATE_EPOCH