From f46ce2f0433b4c568577deb6ceefbca656253ed6 Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Fri, 20 Nov 2020 12:38:44 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/ostree.git#319b8abc3ebb85e835b81725c4131328d04d8725 --- .gitignore | 1 + ...Remove-deployment-bootcsum-assertion.patch | 278 ------------------ 0001-gcc11.patch | 40 --- ...Don-t-leak-fd-when-checksumming-dtbs.patch | 33 --- ...oot-print-st_dev-and-st_ino-as-64-bi.patch | 30 -- ostree.spec | 11 +- sources | 2 +- 7 files changed, 8 insertions(+), 387 deletions(-) delete mode 100644 0001-deploy-Remove-deployment-bootcsum-assertion.patch delete mode 100644 0001-gcc11.patch delete mode 100644 0001-lib-deploy-Don-t-leak-fd-when-checksumming-dtbs.patch delete mode 100644 0001-ostree-prepare-root-print-st_dev-and-st_ino-as-64-bi.patch diff --git a/.gitignore b/.gitignore index 888f9aa..2d75bcf 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,4 @@ /libostree-2020.5.tar.xz /libostree-2020.6.tar.xz /libostree-2020.7.tar.xz +/libostree-2020.8.tar.xz diff --git a/0001-deploy-Remove-deployment-bootcsum-assertion.patch b/0001-deploy-Remove-deployment-bootcsum-assertion.patch deleted file mode 100644 index 639bb01..0000000 --- a/0001-deploy-Remove-deployment-bootcsum-assertion.patch +++ /dev/null @@ -1,278 +0,0 @@ -From aa2a2783ea71d956db41f0f874d596752e47449f Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Thu, 24 Sep 2020 19:28:31 +0000 -Subject: [PATCH] deploy: Remove deployment bootcsum assertion - -When support for devicetree was added, it created a problem -because old and new ostree versions would compute different -checksums for the "boot data". The scenario here is: - -- Have system with ostree < 2020.4 -- Reboot into system with ostree 2020.5 -- Try to perform an operation that would retain - that previous booted deployment (common) - -Currently ostree iterates over all the deployments -that will be retained and calls `install_deployment_kernel()`, -even for the booted one (which is a bit silly), but -just to verify that all boot data for the targeted -deployments are installed. - -This then re-computes the checksum and we'd trip this -assertion. - -In practice though, we don't strictly require them to match; -the only thing that will happen if they don't is that we'll -end up with another copy of the kernel/initramfs - and -that only temporarily until the previous deployment -gets GC'd. - -Longer term, I think what we really want to do anyways -is probably closer to like a little ostree repo for `/boot` -so that we can e.g. still hardlink kernels there even if -the initramfs changes, or hardlink both kernel/initramfs -if just the devicetree changes, etc. - -Closes: https://github.com/ostreedev/ostree/issues/2154 ---- - Makefile-tests.am | 1 + - src/libostree/ostree-sysroot-deploy.c | 67 ++++++++++++++------------ - src/libostree/ostree-sysroot-private.h | 1 + - src/libostree/ostree-sysroot.c | 1 + - tests/test-osupdate-dtb.sh | 62 ++++++++++++++++++++++++ - 5 files changed, 101 insertions(+), 31 deletions(-) - create mode 100755 tests/test-osupdate-dtb.sh - -diff --git a/Makefile-tests.am b/Makefile-tests.am -index a4179377..eb110dad 100644 ---- a/Makefile-tests.am -+++ b/Makefile-tests.am -@@ -105,6 +105,7 @@ _installed_or_uninstalled_test_scripts = \ - tests/test-admin-deploy-nomerge.sh \ - tests/test-admin-deploy-none.sh \ - tests/test-admin-deploy-bootid-gc.sh \ -+ tests/test-osupdate-dtb.sh \ - tests/test-admin-instutil-set-kargs.sh \ - tests/test-admin-upgrade-not-backwards.sh \ - tests/test-admin-pull-deploy-commit.sh \ -diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c -index 3f337a50..d97d96a8 100644 ---- a/src/libostree/ostree-sysroot-deploy.c -+++ b/src/libostree/ostree-sysroot-deploy.c -@@ -1028,7 +1028,8 @@ _ostree_kernel_layout_new (void) - - /* See get_kernel_from_tree() below */ - static gboolean --get_kernel_from_tree_usrlib_modules (int deployment_dfd, -+get_kernel_from_tree_usrlib_modules (OstreeSysroot *sysroot, -+ int deployment_dfd, - OstreeKernelLayout **out_layout, - GCancellable *cancellable, - GError **error) -@@ -1137,37 +1138,41 @@ get_kernel_from_tree_usrlib_modules (int deployment_dfd, - g_clear_object (&in); - glnx_close_fd (&fd); - -- /* Check for /usr/lib/modules/$kver/devicetree first, if it does not -- * exist check for /usr/lib/modules/$kver/dtb/ directory. -- */ -- if (!ot_openat_ignore_enoent (ret_layout->boot_dfd, "devicetree", &fd, error)) -- return FALSE; -- if (fd != -1) -- { -- ret_layout->devicetree_srcpath = g_strdup ("devicetree"); -- ret_layout->devicetree_namever = g_strdup_printf ("devicetree-%s", kver); -- in = g_unix_input_stream_new (fd, FALSE); -- if (!ot_gio_splice_update_checksum (NULL, in, &checksum, cancellable, error)) -- return FALSE; -- } -- else -+ /* Testing aid for https://github.com/ostreedev/ostree/issues/2154 */ -+ const gboolean no_dtb = (sysroot->debug_flags & OSTREE_SYSROOT_DEBUG_TEST_NO_DTB) > 0; -+ if (!no_dtb) - { -- struct stat stbuf; -- /* Check for dtb directory */ -- if (!glnx_fstatat_allow_noent (ret_layout->boot_dfd, "dtb", &stbuf, 0, error)) -+ /* Check for /usr/lib/modules/$kver/devicetree first, if it does not -+ * exist check for /usr/lib/modules/$kver/dtb/ directory. -+ */ -+ if (!ot_openat_ignore_enoent (ret_layout->boot_dfd, "devicetree", &fd, error)) - return FALSE; -- -- if (errno == 0 && S_ISDIR (stbuf.st_mode)) -+ if (fd != -1) - { -- /* devicetree_namever set to NULL indicates a complete directory */ -- ret_layout->devicetree_srcpath = g_strdup ("dtb"); -- ret_layout->devicetree_namever = NULL; -- -- if (!checksum_dir_recurse(ret_layout->boot_dfd, "dtb", &checksum, cancellable, error)) -+ ret_layout->devicetree_srcpath = g_strdup ("devicetree"); -+ ret_layout->devicetree_namever = g_strdup_printf ("devicetree-%s", kver); -+ in = g_unix_input_stream_new (fd, FALSE); -+ if (!ot_gio_splice_update_checksum (NULL, in, &checksum, cancellable, error)) - return FALSE; - } -- } -+ else -+ { -+ struct stat stbuf; -+ /* Check for dtb directory */ -+ if (!glnx_fstatat_allow_noent (ret_layout->boot_dfd, "dtb", &stbuf, 0, error)) -+ return FALSE; - -+ if (errno == 0 && S_ISDIR (stbuf.st_mode)) -+ { -+ /* devicetree_namever set to NULL indicates a complete directory */ -+ ret_layout->devicetree_srcpath = g_strdup ("dtb"); -+ ret_layout->devicetree_namever = NULL; -+ -+ if (!checksum_dir_recurse(ret_layout->boot_dfd, "dtb", &checksum, cancellable, error)) -+ return FALSE; -+ } -+ } -+ } - g_clear_object (&in); - glnx_close_fd (&fd); - -@@ -1336,7 +1341,8 @@ get_kernel_from_tree_legacy_layouts (int deployment_dfd, - * initramfs there, so we need to look in /usr/lib/ostree-boot first. - */ - static gboolean --get_kernel_from_tree (int deployment_dfd, -+get_kernel_from_tree (OstreeSysroot *sysroot, -+ int deployment_dfd, - OstreeKernelLayout **out_layout, - GCancellable *cancellable, - GError **error) -@@ -1345,7 +1351,7 @@ get_kernel_from_tree (int deployment_dfd, - g_autoptr(OstreeKernelLayout) legacy_layout = NULL; - - /* First, gather from usr/lib/modules/$kver if it exists */ -- if (!get_kernel_from_tree_usrlib_modules (deployment_dfd, &usrlib_modules_layout, cancellable, error)) -+ if (!get_kernel_from_tree_usrlib_modules (sysroot, deployment_dfd, &usrlib_modules_layout, cancellable, error)) - return FALSE; - - /* Gather the legacy layout */ -@@ -1761,7 +1767,7 @@ install_deployment_kernel (OstreeSysroot *sysroot, - - /* Find the kernel/initramfs/devicetree in the tree */ - g_autoptr(OstreeKernelLayout) kernel_layout = NULL; -- if (!get_kernel_from_tree (deployment_dfd, &kernel_layout, -+ if (!get_kernel_from_tree (sysroot, deployment_dfd, &kernel_layout, - cancellable, error)) - return FALSE; - -@@ -1771,7 +1777,6 @@ install_deployment_kernel (OstreeSysroot *sysroot, - - const char *osname = ostree_deployment_get_osname (deployment); - const char *bootcsum = ostree_deployment_get_bootcsum (deployment); -- g_assert_cmpstr (kernel_layout->bootcsum, ==, bootcsum); - g_autofree char *bootcsumdir = g_strdup_printf ("ostree/%s-%s", osname, bootcsum); - g_autofree char *bootconfdir = g_strdup_printf ("loader.%d/entries", new_bootversion); - g_autofree char *bootconf_name = g_strdup_printf ("ostree-%d-%s.conf", -@@ -2711,7 +2716,7 @@ sysroot_initialize_deployment (OstreeSysroot *self, - return FALSE; - - g_autoptr(OstreeKernelLayout) kernel_layout = NULL; -- if (!get_kernel_from_tree (deployment_dfd, &kernel_layout, -+ if (!get_kernel_from_tree (self, deployment_dfd, &kernel_layout, - cancellable, error)) - return FALSE; - -diff --git a/src/libostree/ostree-sysroot-private.h b/src/libostree/ostree-sysroot-private.h -index fa1e5336..1af2fd27 100644 ---- a/src/libostree/ostree-sysroot-private.h -+++ b/src/libostree/ostree-sysroot-private.h -@@ -38,6 +38,7 @@ typedef enum { - /* This is a temporary flag until we fully drop the explicit `systemctl start - * ostree-finalize-staged.service` so that tests can exercise the new path unit. */ - OSTREE_SYSROOT_DEBUG_TEST_STAGED_PATH = 1 << 3, -+ OSTREE_SYSROOT_DEBUG_TEST_NO_DTB = 1 << 4, /* https://github.com/ostreedev/ostree/issues/2154 */ - } OstreeSysrootDebugFlags; - - typedef enum { -diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c -index b211fea7..e412ea4d 100644 ---- a/src/libostree/ostree-sysroot.c -+++ b/src/libostree/ostree-sysroot.c -@@ -190,6 +190,7 @@ ostree_sysroot_init (OstreeSysroot *self) - { "test-fifreeze", OSTREE_SYSROOT_DEBUG_TEST_FIFREEZE }, - { "no-xattrs", OSTREE_SYSROOT_DEBUG_NO_XATTRS }, - { "test-staged-path", OSTREE_SYSROOT_DEBUG_TEST_STAGED_PATH }, -+ { "no-dtb", OSTREE_SYSROOT_DEBUG_TEST_NO_DTB }, - }; - - self->debug_flags = g_parse_debug_string (g_getenv ("OSTREE_SYSROOT_DEBUG"), -diff --git a/tests/test-osupdate-dtb.sh b/tests/test-osupdate-dtb.sh -new file mode 100755 -index 00000000..9e0c4686 ---- /dev/null -+++ b/tests/test-osupdate-dtb.sh -@@ -0,0 +1,62 @@ -+#!/bin/bash -+# -+# Copyright (C) 2020 Red Hat, Inc. -+# -+# SPDX-License-Identifier: LGPL-2.0+ -+# -+# This library is free software; you can redistribute it and/or -+# modify it under the terms of the GNU Lesser General Public -+# License as published by the Free Software Foundation; either -+# version 2 of the License, or (at your option) any later version. -+# -+# This library is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# Lesser General Public License for more details. -+# -+# You should have received a copy of the GNU Lesser General Public -+# License along with this library; if not, write to the -+# Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+# Boston, MA 02111-1307, USA. -+ -+set -euo pipefail -+ -+. $(dirname $0)/libtest.sh -+ -+echo "1..1" -+ -+# Exports OSTREE_SYSROOT so --sysroot not needed. -+kver="3.6.0" -+modulesdir="usr/lib/modules/${kver}" -+setup_os_repository "archive" "syslinux" ${modulesdir} -+ -+cd ${test_tmpdir} -+os_repository_new_commit "test" "test with device tree directory" -+ -+devicetree_path=osdata/${modulesdir}/dtb/asoc-board.dtb -+devicetree_overlay_path=osdata/${modulesdir}/dtb/overlays/overlay.dtbo -+ -+mkdir -p osdata/${modulesdir}/dtb -+echo "a device tree" > ${devicetree_path} -+mkdir -p osdata/${modulesdir}/dtb/overlays -+echo "a device tree overlay" > ${devicetree_overlay_path} -+ -+${CMD_PREFIX} ostree --repo=testos-repo commit --tree=dir=osdata/ -b testos/buildmaster/x86_64-runtime -+${CMD_PREFIX} ostree --repo=sysroot/ostree/repo pull-local --remote=testos testos-repo testos/buildmaster/x86_64-runtime -+${CMD_PREFIX} ostree --repo=sysroot/ostree/repo remote add --set=gpg-verify=false testos file://$(pwd)/testos-repo testos/buildmaster/x86_64-runtime -+${CMD_PREFIX} env OSTREE_SYSROOT_DEBUG=${OSTREE_SYSROOT_DEBUG},no-dtb ostree admin deploy --os=testos testos:testos/buildmaster/x86_64-runtime -+assert_has_file sysroot/boot/ostree/testos-${bootcsum}/vmlinuz-3.6.0 -+assert_not_has_file sysroot/boot/ostree/testos-${bootcsum}/dtb/asoc-board.dtb 'a device tree' -+assert_streq $(ls sysroot/boot/ostree | wc -l) 1 -+assert_streq $(find sysroot/boot/ostree -name '*.dtb' | wc -l) 0 -+${CMD_PREFIX} ostree --repo=testos-repo commit --tree=dir=osdata/ -b testos/buildmaster/x86_64-runtime -+env OSTREE_SYSROOT_DEBUG=${OSTREE_SYSROOT_DEBUG},no-dtb ${CMD_PREFIX} ostree admin upgrade --os=testos -+${CMD_PREFIX} ostree --repo=testos-repo commit --tree=dir=osdata/ -b testos/buildmaster/x86_64-runtime -+${CMD_PREFIX} ostree admin upgrade --os=testos -+assert_streq $(ls sysroot/boot/ostree | wc -l) 2 -+# Note that the bootcsum computed by the test suite doesn't include devicetree -+# And currently we end up installing the dtb for the *previous* deployment -+# too which is a bug - in the future this should be fixed to assert 1. -+assert_streq $(find sysroot/boot/ostree -name '*.dtb' | wc -l) 2 -+ -+echo "ok update with no dtb to dtb" --- -2.26.2 - diff --git a/0001-gcc11.patch b/0001-gcc11.patch deleted file mode 100644 index 7a5e041..0000000 --- a/0001-gcc11.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 267e8eb3849a539704c480512b135400c7e49309 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Fri, 30 Oct 2020 11:40:03 -0600 -Subject: [PATCH] gcc11 - -gcc-11 ---- - src/libostree/ostree-enumtypes.c.template | 2 +- - src/libostree/ostree-sysroot-upgrader.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/libostree/ostree-enumtypes.c.template b/src/libostree/ostree-enumtypes.c.template -index 751c458..89ad32a 100644 ---- a/src/libostree/ostree-enumtypes.c.template -+++ b/src/libostree/ostree-enumtypes.c.template -@@ -36,7 +36,7 @@ - GType - _@enum_name@_get_type (void) - { -- static volatile gsize the_type__volatile = 0; -+ static gsize the_type__volatile = 0; - - if (g_once_init_enter (&the_type__volatile)) - { -diff --git a/src/libostree/ostree-sysroot-upgrader.c b/src/libostree/ostree-sysroot-upgrader.c -index 4681335..ea68674 100644 ---- a/src/libostree/ostree-sysroot-upgrader.c -+++ b/src/libostree/ostree-sysroot-upgrader.c -@@ -682,7 +682,7 @@ ostree_sysroot_upgrader_deploy (OstreeSysrootUpgrader *self, - GType - ostree_sysroot_upgrader_flags_get_type (void) - { -- static volatile gsize g_define_type_id__volatile = 0; -+ static gsize g_define_type_id__volatile = 0; - - if (g_once_init_enter (&g_define_type_id__volatile)) - { --- -2.28.0 - diff --git a/0001-lib-deploy-Don-t-leak-fd-when-checksumming-dtbs.patch b/0001-lib-deploy-Don-t-leak-fd-when-checksumming-dtbs.patch deleted file mode 100644 index ca089e0..0000000 --- a/0001-lib-deploy-Don-t-leak-fd-when-checksumming-dtbs.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b3dc074f5ed6d3a1e40dbc1e3315a518512d3c63 Mon Sep 17 00:00:00 2001 -From: Jonathan Lebon -Date: Wed, 7 Oct 2020 14:44:25 -0400 -Subject: [PATCH] lib/deploy: Don't leak fd when checksumming dtbs - -Likely the root of https://bugzilla.redhat.com/show_bug.cgi?id=1886149. ---- - src/libostree/ostree-sysroot-deploy.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/libostree/ostree-sysroot-deploy.c b/src/libostree/ostree-sysroot-deploy.c -index 1c4fb5dc..7b7ba5e9 100644 ---- a/src/libostree/ostree-sysroot-deploy.c -+++ b/src/libostree/ostree-sysroot-deploy.c -@@ -272,13 +272,13 @@ checksum_dir_recurse (int dfd, - } - else - { -- int fd; -+ glnx_autofd int fd = -1; - - if (!ot_openat_ignore_enoent (dfditer.fd, d_name, &fd, error)) - return FALSE; - if (fd != -1) - { -- g_autoptr(GInputStream) in = g_unix_input_stream_new (fd, FALSE); -+ g_autoptr(GInputStream) in = g_unix_input_stream_new (glnx_steal_fd (&fd), TRUE); - if (!ot_gio_splice_update_checksum (NULL, in, checksum, cancellable, error)) - return FALSE; - } --- -2.26.2 - diff --git a/0001-ostree-prepare-root-print-st_dev-and-st_ino-as-64-bi.patch b/0001-ostree-prepare-root-print-st_dev-and-st_ino-as-64-bi.patch deleted file mode 100644 index 462cf38..0000000 --- a/0001-ostree-prepare-root-print-st_dev-and-st_ino-as-64-bi.patch +++ /dev/null @@ -1,30 +0,0 @@ -From dec9eab2030a212b3713379af9d74c625ecce137 Mon Sep 17 00:00:00 2001 -From: Jonathan Lebon -Date: Thu, 15 Oct 2020 12:05:34 -0400 -Subject: [PATCH] ostree-prepare-root: print st_dev and st_ino as 64-bit ints - -This matches what systemd does and should work fine on all platforms. - -Possibly resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1888436 ---- - src/switchroot/ostree-prepare-root.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/switchroot/ostree-prepare-root.c b/src/switchroot/ostree-prepare-root.c -index 6351babb..6bc2c374 100644 ---- a/src/switchroot/ostree-prepare-root.c -+++ b/src/switchroot/ostree-prepare-root.c -@@ -152,8 +152,8 @@ resolve_deploy_path (const char * root_mountpoint) - "MESSAGE_ID=" SD_ID128_FORMAT_STR, - SD_ID128_FORMAT_VAL(OSTREE_PREPARE_ROOT_DEPLOYMENT_MSG), - "DEPLOYMENT_PATH=%s", resolved_path, -- "DEPLOYMENT_DEVICE=%u", stbuf.st_dev, -- "DEPLOYMENT_INODE=%u", stbuf.st_ino, -+ "DEPLOYMENT_DEVICE=%" PRIu64, (uint64_t) stbuf.st_dev, -+ "DEPLOYMENT_INODE=%" PRIu64, (uint64_t) stbuf.st_ino, - NULL); - #endif - return deploy_path; --- -2.26.2 - diff --git a/ostree.spec b/ostree.spec index 6a02c88..2a4f6c4 100644 --- a/ostree.spec +++ b/ostree.spec @@ -7,15 +7,12 @@ Summary: Tool for managing bootable, immutable filesystem trees Name: ostree -Version: 2020.7 -Release: 4%{?dist} +Version: 2020.8 +Release: 1%{?dist} Source0: https://github.com/ostreedev/%{name}/releases/download/v%{version}/libostree-%{version}.tar.xz License: LGPLv2+ URL: https://ostree.readthedocs.io/en/latest/ -Patch0: 0001-ostree-prepare-root-print-st_dev-and-st_ino-as-64-bi.patch -Patch1: 0001-gcc11.patch - BuildRequires: git # We always run autogen.sh BuildRequires: autoconf automake libtool @@ -170,6 +167,10 @@ find %{buildroot} -name '*.la' -delete %endif %changelog +* Wed Nov 18 08:42:24 UTC 2020 Luca BRUNO - 2020.8-1 +- New upstream version +- https://github.com/ostreedev/ostree/releases/tag/v2020.8 + * Fri Oct 30 2020 Jeff Law - 2020.7-4 - Fix volatile issues exposed by gcc-11 diff --git a/sources b/sources index b06d6fd..5d8f754 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libostree-2020.7.tar.xz) = f42dca3c9e1810c0421ab99588f27c625733b71ef811534b66e0c0c4afafbad5bf475e08feaf87c2f8414c38f127fd344adbb57a4b75001077aedbfe92af3706 +SHA512 (libostree-2020.8.tar.xz) = 2523f5742c4472f8e64614bb99edc5aec1a8f8a837b54f67efba9760aefc3385014e1296c9246ac81b361f4588deb4794768a231bf8f338c24a14255ab63da04