root/build-tools
Davlet Panech e66aead87b downloader: succeed on GPG errors in DSCs files
Downloader sometimes fails on external .dsc files signed with unusable
GPG keys:
- expired keys
- .dsc file signed with a key that is not in apt's GPG database.
These files are typically signed by individual package maintainers, not
the official Debian/binary repository key that APT uses for binary
package indexes.

Downloader uses 2 different methods to fetch source packages, which
behave differently w.r.t. GPG checks:
- with "archive" key present in meta_data.yaml, we download using the
  "dget" utility, which in turn validates against a set of known keys
  in /usr/share/keyrings/
- without "archive", we download using "apt-get source", which doesn't
  validate GPG at all

This patch makes the downloader script ignore GPG signature errors, but
print a warning in the log. We also allow package maintainers to add an
additional option, "dsc_sha256", to check the .dsc file's checksum,
instead of its GPG signature (this will suppress the warning).
Rationale:
- it's difficult to make GPG verification accept expired keys
- we always verify sha256 checksums of the files making up the source
  package (ie the files referenced by .dsc)
- as for the .dsc file itself, we only verify its checksum if it is
  present in meta_data.yaml, "dsc_sha256". No packages do that as of
  this writing.

CHANGES
=====================
- utils.py: add a slightly different version of run_shell_cmd that
  captures and returns both STDOUT and STDERR
- debrepack.py:
  * use "dscverify" (from "devscripts" package) to verify .dsc files
  * if normal verification fails, try again with GPG check disabled
  * new key in meta_data.yaml: dsc_sha256. If present, make sure .dsc
    file's checksum matches.
  * workaround for "dget" and "dscverify" falsely succeeding when
    files referenced by .dsc are missing
  * removed functions "download_check_dsc" and "check_dsc" as they are
    no longer used after this change

HOW TO REPRODUCE
=====================
One example of a package signed with a key that is not in the current
(bullseye) version of debian-keyring, is golang-github-golang-jwt-jwt
[1]. The download fails on that package.

TESTS
=====================
- Remove golang-github-golang-jwt-jwt from /import/mirrors and reproduce
  the download error (unknown GPG key)
- Apply this patch, remove all downloaded sources, re-run downloader and
  make sure it succeeds with GPG-related warnings
- Simulate various problems with a .dsc file and make sure they are
  detected (ie the script fails):
  * .dsc URL in meta_data.yml returns http 404
  * one of the files referenced by .dsc returns http 404
  * one of the checksums in .dsc doesn't match
  * .dsc checksum it self doesn't match "dsc_sha256" in meta_data.yaml

[1] 2b7ac3c340/golang-github-dev/golang-github-golang-jwt-jwt-dev/debian/meta_data.yaml

Closes-Bug: 2072650
Signed-off-by: Davlet Panech <davlet.panech@windriver.com>
Change-Id: I2c91a997eafdcfd546d79e575c81bf6f9530ca0a
2024-07-11 20:40:49 -04:00
..
branching fix several issues with branching tools 2023-09-26 13:41:12 -04:00
build_guest build-guest: update RPM lists + misc fixes 2021-08-09 13:25:28 -04:00
build_iso minimal_rpm_list.txt: ebtables->iptables-ebtables 2021-10-29 16:21:19 -04:00
build_minimal_iso Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
build-docker-images Update stx-vault-manager image 2024-07-02 14:45:12 +00:00
build-wheels Zuul: Fix pyzmq - pip version incompatibility 2024-06-25 21:53:26 +00:00
certificates StarlingX open source release updates 2018-06-01 07:45:23 -07:00
deb-utils debian: port helm chart script to debian 2022-05-10 17:13:13 -04:00
mk Uprev grub2 and shim 2018-06-27 13:04:02 -04:00
repo_files centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00
requirements Zuul: Fix pyzmq - pip version incompatibility 2024-06-25 21:53:26 +00:00
signing StarlingX open source release updates 2018-06-01 07:45:23 -07:00
stx downloader: succeed on GPG errors in DSCs files 2024-07-11 20:40:49 -04:00
unit-tests debian: port helm chart script to debian 2022-05-10 17:13:13 -04:00
audit-pkgs Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
build-avoidance-utils.sh build-avoidance: ensure we can write to a copied build environment. 2022-01-17 11:24:33 -05:00
build-extra-helm-charts.sh Add execution permission to extra-helm-chart build 2024-05-17 14:15:04 -03:00
build-guest build-guest: accept extra RPMs on command line 2021-08-16 09:29:05 -04:00
build-helm-charts.sh Add logic for building extra helm build 2024-05-16 09:21:03 -03:00
build-img Update build image to look for update-iso-centos.sh script 2022-12-07 21:04:22 +00:00
build-iso build-iso: Create package_checksums file within iso 2022-05-03 12:41:05 -04:00
build-pkg-srpm StarlingX open source release updates 2018-06-01 07:45:23 -07:00
build-pkgs Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
build-pkgs-parallel Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
build-pkgs-serial Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
build-remote-cli.sh build-remote-cli: remove useless defaults 2023-08-24 12:16:35 -04:00
build-rpms Build Avoidance 2018-09-17 16:41:31 -04:00
build-rpms-parallel build-rpms: fix typo in temp files removal 2022-09-27 16:10:50 -04:00
build-rpms-serial build-rpms: fix typo in temp files removal 2022-09-27 16:10:50 -04:00
build-srpms Build Avoidance 2018-09-17 16:41:31 -04:00
build-srpms-common.sh Eliminate intermediate .tox files during build 2020-08-27 11:01:45 -05:00
build-srpms-parallel Exclude .tox folder when checking file ages 2020-12-21 15:25:27 -05:00
build-srpms-serial Exclude .tox folder when checking file ages 2020-12-21 15:25:27 -05:00
Cached_Data.txt StarlingX open source release updates 2018-06-01 07:45:23 -07:00
classify Build: Improved logging, error handling, and other small fixes 2018-08-29 16:31:09 -04:00
create_dependancy_cache.py Build script readiness for renaming cgcs-tis-repo to local-repo 2020-09-24 12:03:00 -04:00
create-prepatched-iso Add script to generate pre-patched iso 2024-07-04 15:16:08 -03:00
create-yum-conf centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00
deb-utils.sh debian: port helm chart script to debian 2022-05-10 17:13:13 -04:00
default_build_srpm Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
find_klm StarlingX open source release updates 2018-06-01 07:45:23 -07:00
find_patched_srpms_needing_upgrade StarlingX open source release updates 2018-06-01 07:45:23 -07:00
git-repo-utils.sh fix several issues with branching tools 2023-09-26 13:41:12 -04:00
git-utils.sh fix several issues with branching tools 2023-09-26 13:41:12 -04:00
helm_chart_modify.py Merge "FluxCD: Add image versions from image record files" 2022-06-08 17:10:45 +00:00
image-utils.sh Update to build tools to support Build layering. 2020-02-07 16:36:40 -05:00
ip_report.py Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
make-installer-images.sh update-pxe-network-installer: add updated firmwares 2022-05-23 14:18:43 +00:00
mock_cfg_to_yum_conf.py Python 3 compatibility: use print as a function. 2018-10-12 13:42:44 +00:00
mockchain-parallel Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
mockchain-parallel-1.3.4 Update to build tools to support Build layering. 2020-02-07 16:36:40 -05:00
mockchain-parallel-1.4.16 Update to build tools to support Build layering. 2020-02-07 16:36:40 -05:00
mockchain-parallel-2.6 Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
mockchain-parallel-2.7 Support mock >= 2.7 2021-02-19 12:33:58 -05:00
modify-build-cfg centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00
patch_rebase_1 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch_rebase_2 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch_rebase_3 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch_rebase_4 Build script readiness for renaming cgcs-centos-repo to centos-repo 2020-09-24 11:59:55 -04:00
patch-iso patch-iso: Fix up paths 2022-04-11 09:25:08 -04:00
patch-iso-debian Pull only the latest ostree commit to pre-patched ISO 2023-12-18 11:11:30 -03:00
pkg-manager-utils.sh Add support CentOS-8/dnf/mock-2.6 based builds 2020-12-08 14:13:28 -05:00
repo-utils.sh manifest_get_default_revision must deal with / in branch names 2022-02-01 11:03:43 -05:00
sign_initramfs-sign-script debian: secure boot: add scripts for remote signing 2023-02-23 08:10:30 +00:00
sign_iso_formal.sh cleanup signing scripts 2018-09-07 14:44:37 -04:00
sign_patch_formal.sh cleanup signing scripts 2018-09-07 14:44:37 -04:00
sign_rootfs-post-scripts debian: secure boot: add scripts for remote signing 2023-02-23 08:10:30 +00:00
sign-rpms Prepare the build tools for code restucturing 2019-09-05 15:18:10 -04:00
sign-secure-boot Add -v flag to warn secure boot signing of the /var prefix 2021-12-30 16:35:52 -05:00
sign-secure-boot_debian Update secure-boot script paths 2023-03-21 13:59:59 -07:00
source_lookup.txt Remove 'django_openstack_auth' reference from source_lookup.txt 2021-07-13 23:16:25 +05:30
spec-utils enable pbr version 2020-06-08 16:54:14 +08:00
srpm-utils srpm-utils: Recognize /usr/bin/mkdir as well 2021-10-27 13:35:09 -04:00
stxRpmUtils.py Correct build failure after mock updrade 2019-06-06 13:39:34 -04:00
sync_jenkins.sh Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
sync-jenkins Remove references to cgcs-3rd-party-repo 2020-10-27 14:26:03 -04:00
tis.macros StarlingX open source release updates 2018-06-01 07:45:23 -07:00
update-efiboot-image Merge "Fix update-efiboot-image loop device leak" 2020-10-28 13:46:04 +00:00
update-pxe-network-installer build-tools: discover firmware files for installer 2022-06-03 10:55:56 -04:00
url_utils.sh Fix https port 2023-12-01 15:21:13 -05:00
utils.sh debian: code cleanup 2022-05-10 17:09:08 -04:00
wheel-utils.sh Enable build of docker images, charts and wheels from a layered build 2020-04-08 13:58:41 -04:00
wrs_orig.txt StarlingX open source release updates 2018-06-01 07:45:23 -07:00
yum-builddep-wrapper centos7: delete yum.pid after yum-builddep 2021-03-25 18:25:23 -04:00