diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d8d3e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/rpm-ostree-2019.6.tar.xz diff --git a/.rpm-ostree.metadata b/.rpm-ostree.metadata new file mode 100644 index 0000000..bb08118 --- /dev/null +++ b/.rpm-ostree.metadata @@ -0,0 +1 @@ +4394f32b43403577dd738675cbf8e28efbf8866f SOURCES/rpm-ostree-2019.6.tar.xz diff --git a/SOURCES/0001-app-status-Fix-printf-format-string-for-32-bit.patch b/SOURCES/0001-app-status-Fix-printf-format-string-for-32-bit.patch new file mode 100644 index 0000000..a48c3ed --- /dev/null +++ b/SOURCES/0001-app-status-Fix-printf-format-string-for-32-bit.patch @@ -0,0 +1,35 @@ +From 08c98eda94381f0147af5783960121574043fa5a Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Wed, 25 Sep 2019 12:42:59 -0400 +Subject: [PATCH] app/status: Fix printf format string for 32-bit + +Hit this when compiling in Koji. +--- + src/app/rpmostree-builtin-status.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/app/rpmostree-builtin-status.c b/src/app/rpmostree-builtin-status.c +index 2bc2c4b5..8b38fc83 100644 +--- a/src/app/rpmostree-builtin-status.c ++++ b/src/app/rpmostree-builtin-status.c +@@ -1119,7 +1119,7 @@ fetch_history_deployment_gvariant (RORHistoryEntry *entry, + GError **error) + { + g_autofree char *fn = +- g_strdup_printf ("%s/%lu", RPMOSTREE_HISTORY_DIR, entry->deploy_timestamp); ++ g_strdup_printf ("%s/%" PRIu64, RPMOSTREE_HISTORY_DIR, entry->deploy_timestamp); + + *out_deployment = NULL; + +@@ -1165,7 +1165,7 @@ print_history_entry (RORHistoryEntry *entry, + print_timestamp_and_relative ("BootTimestamp", entry->last_boot_timestamp); + if (entry->boot_count > 1) + { +- g_print ("%s BootCount: %lu; first booted on ", ++ g_print ("%s BootCount: %" PRIu64 "; first booted on ", + libsd_special_glyph (TREE_RIGHT), entry->boot_count); + print_timestamp_and_relative (NULL, entry->first_boot_timestamp); + } +-- +2.21.0 + diff --git a/SOURCES/0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch b/SOURCES/0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch new file mode 100644 index 0000000..fc9b177 --- /dev/null +++ b/SOURCES/0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch @@ -0,0 +1,111 @@ +From 1675058768263b804148c7a737b00a480d6b32f8 Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Wed, 26 Feb 2020 11:14:51 -0500 +Subject: [PATCH] initramfs: Fix using local /etc when also replacing kernel + +Instead of basing our decision to use the local `/etc` on whether we're +using `dracut --rebuild`, base it directly on a boolean parameter. + +This is relevant in the client-side when initramfs regeneration is +requested as well as a kernel override. In such cases, we do want to use +the local `/etc`, but we'd skip that path because we didn't also use +`dracut --rebuild`. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1806588 +--- + src/daemon/rpmostree-sysroot-upgrader.c | 9 ++++++--- + src/libpriv/rpmostree-kernel.c | 6 ++---- + src/libpriv/rpmostree-kernel.h | 1 + + src/libpriv/rpmostree-postprocess.c | 2 +- + tests/vmcheck/test-override-kernel.sh | 9 +++++++++ + 5 files changed, 19 insertions(+), 8 deletions(-) + +diff --git a/src/daemon/rpmostree-sysroot-upgrader.c b/src/daemon/rpmostree-sysroot-upgrader.c +index e3f5acef..f84e20c6 100644 +--- a/src/daemon/rpmostree-sysroot-upgrader.c ++++ b/src/daemon/rpmostree-sysroot-upgrader.c +@@ -1097,9 +1097,12 @@ perform_local_assembly (RpmOstreeSysrootUpgrader *self, + g_assert (kernel_state && kernel_path); + + g_auto(GLnxTmpfile) initramfs_tmpf = { 0, }; +- if (!rpmostree_run_dracut (self->tmprootfs_dfd, add_dracut_argv, kver, +- initramfs_path, NULL, &initramfs_tmpf, +- cancellable, error)) ++ /* NB: We only use the real root's /etc if initramfs regeneration is explicitly ++ * requested. IOW, just replacing the kernel still gets use stock settings, like the ++ * server side. */ ++ if (!rpmostree_run_dracut (self->tmprootfs_dfd, add_dracut_argv, kver, initramfs_path, ++ rpmostree_origin_get_regenerate_initramfs (self->origin), ++ NULL, &initramfs_tmpf, cancellable, error)) + return FALSE; + + if (!rpmostree_finalize_kernel (self->tmprootfs_dfd, bootdir, kver, kernel_path, +diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c +index d1f0c90c..a1e4546c 100644 +--- a/src/libpriv/rpmostree-kernel.c ++++ b/src/libpriv/rpmostree-kernel.c +@@ -475,6 +475,7 @@ rpmostree_run_dracut (int rootfs_dfd, + const char *const* argv, + const char *kver, + const char *rebuild_from_initramfs, ++ gboolean use_root_etc, + GLnxTmpDir *dracut_host_tmpdir, + GLnxTmpfile *out_initramfs_tmpf, + GCancellable *cancellable, +@@ -562,10 +563,7 @@ rpmostree_run_dracut (int rootfs_dfd, + &tmpf, error)) + goto out; + +- /* If we're rebuilding, we use the *current* /etc so we pick up any modified +- * config files. Otherwise, we use the usr/etc defaults. +- */ +- if (rebuild_from_initramfs) ++ if (use_root_etc) + { + bwrap = rpmostree_bwrap_new_base (rootfs_dfd, error); + if (!bwrap) +diff --git a/src/libpriv/rpmostree-kernel.h b/src/libpriv/rpmostree-kernel.h +index fb9d8a1b..32a36511 100644 +--- a/src/libpriv/rpmostree-kernel.h ++++ b/src/libpriv/rpmostree-kernel.h +@@ -54,6 +54,7 @@ rpmostree_run_dracut (int rootfs_dfd, + const char *const* argv, + const char *kver, + const char *rebuild_from_initramfs, ++ gboolean use_root_etc, + GLnxTmpDir *dracut_host_tmpdir, + GLnxTmpfile *out_initramfs_tmpf, + GCancellable *cancellable, +diff --git a/src/libpriv/rpmostree-postprocess.c b/src/libpriv/rpmostree-postprocess.c +index ce7424a1..186817be 100644 +--- a/src/libpriv/rpmostree-postprocess.c ++++ b/src/libpriv/rpmostree-postprocess.c +@@ -447,7 +447,7 @@ process_kernel_and_initramfs (int rootfs_dfd, + return FALSE; + if (!rpmostree_run_dracut (rootfs_dfd, + (const char *const*)dracut_argv->pdata, kver, +- NULL, &dracut_host_tmpd, ++ NULL, FALSE, &dracut_host_tmpd, + &initramfs_tmpf, cancellable, error)) + return FALSE; + /* No reason to have the initramfs not be world-readable since +diff --git a/tests/vmcheck/test-override-kernel.sh b/tests/vmcheck/test-override-kernel.sh +index 0e8c91b7..4bde242a 100755 +--- a/tests/vmcheck/test-override-kernel.sh ++++ b/tests/vmcheck/test-override-kernel.sh +@@ -60,3 +60,12 @@ assert_streq "$(wc -l < modules-dirs.txt)" "2" + assert_file_has_content_literal modules-dirs.txt $kernel_release + + echo "ok override kernel" ++ ++# And check that we can regenerate the initramfs and include files from our /etc ++vm_cmd touch /etc/foobar.conf ++vm_rpmostree initramfs --enable --arg=-I --arg=/etc/foobar.conf ++newroot=$(vm_get_deployment_root 0) ++vm_cmd lsinitrd ${newroot}/usr/lib/modules/${kernel_release}/initramfs.img > lsinitrd.txt ++assert_file_has_content_literal lsinitrd.txt etc/foobar.conf ++ ++echo "ok override kernel with custom initramfs args" +-- +2.24.1 + diff --git a/SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch b/SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch new file mode 100644 index 0000000..e0aa499 --- /dev/null +++ b/SOURCES/0001-kargs-Support-append-and-delete-simultaneously.patch @@ -0,0 +1,90 @@ +From f295f543064f1a0b5833fefccd6bb203b3527623 Mon Sep 17 00:00:00 2001 +From: Colin Walters +Date: Sun, 17 Nov 2019 15:51:07 +0000 +Subject: [PATCH] kargs: Support --append and --delete simultaneously + +Code I wrote for the machine-config-operator expected it to +work, and I don't see a reason not to support it. + +See https://github.com/openshift/machine-config-operator/issues/1265 +--- + src/app/rpmostree-builtin-kargs.c | 6 ------ + src/daemon/rpmostreed-transaction-types.c | 20 ++++++++++---------- + tests/vmcheck/test-kernel-args.sh | 9 +++++++++ + 3 files changed, 19 insertions(+), 16 deletions(-) + +diff --git a/src/app/rpmostree-builtin-kargs.c b/src/app/rpmostree-builtin-kargs.c +index 359df946..fcfb727a 100644 +--- a/src/app/rpmostree-builtin-kargs.c ++++ b/src/app/rpmostree-builtin-kargs.c +@@ -196,12 +196,6 @@ rpmostree_builtin_kargs (int argc, + "Cannot specify both --delete and --replace"); + return FALSE; + } +- if (opt_kernel_delete_strings && opt_kernel_append_strings) +- { +- g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, +- "Cannot specify both --delete and --append"); +- return FALSE; +- } + if (opt_import_proc_cmdline && opt_deploy_index) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, +diff --git a/src/daemon/rpmostreed-transaction-types.c b/src/daemon/rpmostreed-transaction-types.c +index bc62b6c4..da432b83 100644 +--- a/src/daemon/rpmostreed-transaction-types.c ++++ b/src/daemon/rpmostreed-transaction-types.c +@@ -2449,20 +2449,20 @@ kernel_arg_transaction_execute (RpmostreedTransaction *transaction, + return FALSE; + } + } +- else ++ ++ if (self->kernel_args_replaced) + { +- if (self->kernel_args_replaced) ++ for (char **iter = self->kernel_args_replaced; iter && *iter; iter++) + { +- for (char **iter = self->kernel_args_replaced; iter && *iter; iter++) +- { +- const char *arg = *iter; +- if (!ostree_kernel_args_new_replace (kargs, arg, error)) +- return FALSE; +- } ++ const char *arg = *iter; ++ if (!ostree_kernel_args_new_replace (kargs, arg, error)) ++ return FALSE; + } ++ } + +- if (self->kernel_args_added) +- ostree_kernel_args_append_argv (kargs, self->kernel_args_added); ++ if (self->kernel_args_added) ++ { ++ ostree_kernel_args_append_argv (kargs, self->kernel_args_added); + } + + /* After all the arguments are processed earlier, we convert it to a string list*/ +diff --git a/tests/vmcheck/test-kernel-args.sh b/tests/vmcheck/test-kernel-args.sh +index 570d986a..ca105ae3 100755 +--- a/tests/vmcheck/test-kernel-args.sh ++++ b/tests/vmcheck/test-kernel-args.sh +@@ -48,6 +48,15 @@ assert_file_has_content_literal kargs.txt 'FOO=BAR' + assert_file_has_content_literal kargs.txt 'APPENDARG=VALAPPEND APPENDARG=2NDAPPEND' + echo "ok kargs append" + ++# Ensure the result flows through with rpm-ostree kargs ++vm_rpmostree kargs --append=APPENDARG=3RDAPPEND --delete=APPENDARG=VALAPPEND ++vm_rpmostree kargs > kargs.txt ++assert_not_file_has_content kargs.txt 'APPENDARG=VALAPPEND' ++assert_file_has_content_literal kargs.txt 'APPENDARG=3RDAPPEND' ++# And reset to previous state ++vm_rpmostree cleanup -p ++echo "ok kargs append and delete" ++ + # Test for rpm-ostree kargs delete + vm_kargs_now kargs --delete FOO + vm_cmd grep ^options /boot/loader/entries/ostree-2-$osname.conf > tmp_conf.txt +-- +2.24.1 + diff --git a/SOURCES/0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch b/SOURCES/0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch new file mode 100644 index 0000000..6965c4b --- /dev/null +++ b/SOURCES/0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch @@ -0,0 +1,47 @@ +From 6aa496e3128321f911dae10bf1a0f32c5e9a11fd Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Tue, 29 Oct 2019 16:38:56 -0400 +Subject: [PATCH 1/2] libpriv/kernel: Use g_build_filename instead of + g_strconcat + +It's much easier to mess up with the latter than the former when +building filenames. There's a bunch more all over the codebase; just did +this bit to be consistent with the next commit which also uses it. +--- + src/libpriv/rpmostree-kernel.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c +index 9eb052bd..2266f9c7 100644 +--- a/src/libpriv/rpmostree-kernel.c ++++ b/src/libpriv/rpmostree-kernel.c +@@ -353,7 +353,7 @@ rpmostree_finalize_kernel (int rootfs_dfd, + GError **error) + { + const char slash_bootdir[] = "boot"; +- g_autofree char *modules_bootdir = g_strconcat ("usr/lib/modules/", kver, NULL); ++ g_autofree char *modules_bootdir = g_build_filename ("usr/lib/modules", kver, NULL); + + /* Calculate the sha256sum of the kernel+initramfs (called the "boot + * checksum"). We checksum the initramfs from the tmpfile fd (via mmap()) to +@@ -371,7 +371,7 @@ rpmostree_finalize_kernel (int rootfs_dfd, + } + const char *boot_checksum_str = g_checksum_get_string (boot_checksum); + +- g_autofree char *kernel_modules_path = g_strconcat (modules_bootdir, "/vmlinuz", NULL);; ++ g_autofree char *kernel_modules_path = g_build_filename (modules_bootdir, "vmlinuz", NULL); + /* It's possible the bootdir is already the modules directory; in that case, + * we don't need to rename. + */ +@@ -394,7 +394,7 @@ rpmostree_finalize_kernel (int rootfs_dfd, + } + + /* Replace the initramfs */ +- g_autofree char *initramfs_modules_path = g_strconcat (modules_bootdir, "/initramfs.img", NULL); ++ g_autofree char *initramfs_modules_path = g_build_filename (modules_bootdir, "initramfs.img", NULL); + if (unlinkat (rootfs_dfd, initramfs_modules_path, 0) < 0) + { + if (errno != ENOENT) +-- +2.21.0 + diff --git a/SOURCES/0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch b/SOURCES/0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch new file mode 100644 index 0000000..bbe19f6 --- /dev/null +++ b/SOURCES/0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch @@ -0,0 +1,43 @@ +From 3b8a1ec6c400a4e5af0f7f5889b360d2ed16f572 Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Tue, 3 Dec 2019 21:36:40 -0500 +Subject: [PATCH] libpriv/kernel: add cap_mknod to dracut run + +A lot of history with this. But essentially, dracut tries to `mknod` a +few character devices like `/dev/random` and `/dev/urandom` and fails. + +We originally blocked `cap_mknod` because, well, `%post` scripts don't +really need to do that, and it would get wiped anyway. But there is a +use case for dracut's CPIO: we want `/dev/*random` to be available in +early boot *before* systemd even mounts `devtmpfs` because libgcrypt as +part of its constructor-time selftests in FIPS mode wants to read from +there. + +For more fun, see: +https://bugzilla.redhat.com/show_bug.cgi?id=1778940 +https://bugzilla.redhat.com/show_bug.cgi?id=1401444 +https://bugzilla.redhat.com/show_bug.cgi?id=1380866 +--- + src/libpriv/rpmostree-kernel.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c +index 2bea504c..a7fffcb6 100644 +--- a/src/libpriv/rpmostree-kernel.c ++++ b/src/libpriv/rpmostree-kernel.c +@@ -564,6 +564,12 @@ rpmostree_run_dracut (int rootfs_dfd, + rpmostree_bwrap_bind_read (bwrap, "usr", "/usr"); + } + ++ /* Need to let dracut create devices like /dev/urandom: ++ * https://bugzilla.redhat.com/show_bug.cgi?id=1778940 ++ * https://bugzilla.redhat.com/show_bug.cgi?id=1401444 ++ * https://bugzilla.redhat.com/show_bug.cgi?id=1380866 */ ++ rpmostree_bwrap_append_bwrap_argv (bwrap, "--cap-add", "cap_mknod", NULL); ++ + if (dracut_host_tmpdir) + rpmostree_bwrap_bind_readwrite (bwrap, dracut_host_tmpdir->path, "/tmp/dracut"); + +-- +2.23.0 + diff --git a/SOURCES/0001-status-Quote-initramfs-args-if-necessary.patch b/SOURCES/0001-status-Quote-initramfs-args-if-necessary.patch new file mode 100644 index 0000000..a86da9a --- /dev/null +++ b/SOURCES/0001-status-Quote-initramfs-args-if-necessary.patch @@ -0,0 +1,29 @@ +From 14701be788420dcd8b1ed4be0e031bc034627e9c Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Wed, 26 Feb 2020 11:14:50 -0500 +Subject: [PATCH] status: Quote initramfs args if necessary + +E.g. if it contains spaces as is the case when one does +`rpm-ostree initramfs --arg=-I --arg='/file1 /file2'`. +--- + src/app/rpmostree-builtin-status.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/app/rpmostree-builtin-status.c b/src/app/rpmostree-builtin-status.c +index 8b38fc83..09dcd94a 100644 +--- a/src/app/rpmostree-builtin-status.c ++++ b/src/app/rpmostree-builtin-status.c +@@ -856,7 +856,9 @@ print_one_deployment (RPMOSTreeSysroot *sysroot_proxy, + + for (char **iter = initramfs_args; iter && *iter; iter++) + { +- g_string_append (buf, *iter); ++ const char *arg = *iter; ++ g_autofree char *quoted = rpmostree_maybe_shell_quote (arg); ++ g_string_append (buf, quoted ?: arg); + g_string_append_c (buf, ' '); + } + if (buf->len == 0) +-- +2.24.1 + diff --git a/SOURCES/0001-unpacker-Build-with-older-libarchive-without-zstd.patch b/SOURCES/0001-unpacker-Build-with-older-libarchive-without-zstd.patch new file mode 100644 index 0000000..0e993bb --- /dev/null +++ b/SOURCES/0001-unpacker-Build-with-older-libarchive-without-zstd.patch @@ -0,0 +1,43 @@ +From 11ee20c1cdcc7a76d9e1047e8063b8349a6c6da6 Mon Sep 17 00:00:00 2001 +From: Colin Walters +Date: Tue, 15 Oct 2019 15:16:06 +0000 +Subject: [PATCH] unpacker: Build with older libarchive without zstd + +It's not in RHEL8.1, and I'm trying to rebase rpm-ostree. +--- + configure.ac | 4 ++++ + src/libpriv/rpmostree-unpacker-core.c | 2 ++ + 2 files changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 873dc6b9..a0c5cce4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -122,6 +122,10 @@ dnl bundled libdnf + PKGDEP_RPMOSTREE_CFLAGS="-I $(pwd)/libdnf -I $(pwd)/libdnf-build $PKGDEP_RPMOSTREE_CFLAGS" + PKGDEP_RPMOSTREE_LIBS="-L$(pwd)/libdnf-build/libdnf -ldnf $PKGDEP_RPMOSTREE_LIBS" + ++dnl RHEL8.1 has old libarchive ++AS_IF([pkg-config --atleast-version=3.3.3 libarchive], ++ [AC_DEFINE([HAVE_LIBARCHIVE_ZSTD], 1, [Define if we have libarchive with zstd])]) ++ + dnl This is the current version in Fedora 25. + AS_IF([pkg-config --atleast-version=4.14.2 rpm], [], [AC_MSG_ERROR([librpm 4.14.2 required])]) + +diff --git a/src/libpriv/rpmostree-unpacker-core.c b/src/libpriv/rpmostree-unpacker-core.c +index 3bd574a4..2d741b1e 100644 +--- a/src/libpriv/rpmostree-unpacker-core.c ++++ b/src/libpriv/rpmostree-unpacker-core.c +@@ -74,7 +74,9 @@ rpmostree_unpack_rpm2cpio (int fd, GError **error) + archive_read_support_filter_gzip, + archive_read_support_filter_xz, + archive_read_support_filter_bzip2, ++#ifdef HAVE_LIBARCHIVE_ZSTD + archive_read_support_filter_zstd, ++#endif + archive_read_support_format_cpio }; + + for (i = 0; i < G_N_ELEMENTS (archive_setup_funcs); i++) +-- +2.21.0 + diff --git a/SOURCES/0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch b/SOURCES/0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch new file mode 100644 index 0000000..c797777 --- /dev/null +++ b/SOURCES/0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch @@ -0,0 +1,66 @@ +From fec61ce5778910bac7779191ee8deeb0a24593c8 Mon Sep 17 00:00:00 2001 +From: Jonathan Lebon +Date: Tue, 29 Oct 2019 16:40:39 -0400 +Subject: [PATCH 2/2] libpriv/kernel: Hack around vmlinuz path in HMAC file + +As mentioned in the comment block: + +``` +If there's an HMAC file, fix the path to the kernel in it to be +relative. Right now, the kernel spec encodes `/boot/vmlinux-$kver`, +which of course not going to work for us. We should work towards making +this change directly into the kernel spec. +``` + +For background, see this comment and following: +https://github.com/ostreedev/ostree/pull/1962#issuecomment-547488164 +--- + src/libpriv/rpmostree-kernel.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/src/libpriv/rpmostree-kernel.c b/src/libpriv/rpmostree-kernel.c +index 2266f9c7..2bea504c 100644 +--- a/src/libpriv/rpmostree-kernel.c ++++ b/src/libpriv/rpmostree-kernel.c +@@ -393,6 +393,38 @@ rpmostree_finalize_kernel (int rootfs_dfd, + return glnx_throw_errno_prefix (error, "linkat(%s)", kernel_modules_path); + } + ++ /* If there's an HMAC file, fix the path to the kernel in it to be relative. Right now, ++ * the kernel spec encodes `/boot/vmlinux-$kver`, which of course not going to work for ++ * us. We should work towards making this change directly into the kernel spec. */ ++ g_autofree char *hmac_path = g_build_filename (modules_bootdir, ".vmlinuz.hmac", NULL); ++ if (!glnx_fstatat_allow_noent (rootfs_dfd, hmac_path, NULL, 0, error)) ++ return FALSE; ++ if (errno == 0) ++ { ++ g_autofree char *contents = glnx_file_get_contents_utf8_at (rootfs_dfd, hmac_path, ++ NULL, cancellable, error); ++ if (contents == NULL) ++ return FALSE; ++ ++ /* rather than trying to parse and understand the *sum format, just hackily replace */ ++ g_autofree char *old_path = g_strconcat (" /boot/vmlinuz-", kver, NULL); ++ g_autofree char *new_path = g_strconcat (" vmlinuz-", kver, NULL); ++ g_autofree char *new_contents = ++ rpmostree_str_replace (contents, old_path, new_path, error); ++ if (!new_contents) ++ return FALSE; ++ ++ /* sanity check there are no '/' in there; that way too we just error out if the path ++ * or format changes (but really, this should be a temporary hack...) */ ++ if (strchr (new_contents, '/') != 0) ++ return glnx_throw (error, "Unexpected / in .vmlinuz.hmac: %s", new_contents); ++ ++ if (!glnx_file_replace_contents_at (rootfs_dfd, hmac_path, ++ (guint8*)new_contents, -1, 0, ++ cancellable, error)) ++ return FALSE; ++ } ++ + /* Replace the initramfs */ + g_autofree char *initramfs_modules_path = g_build_filename (modules_bootdir, "initramfs.img", NULL); + if (unlinkat (rootfs_dfd, initramfs_modules_path, 0) < 0) +-- +2.21.0 + diff --git a/SPECS/rpm-ostree.spec b/SPECS/rpm-ostree.spec new file mode 100644 index 0000000..105be69 --- /dev/null +++ b/SPECS/rpm-ostree.spec @@ -0,0 +1,640 @@ +# The canonical copy of this spec file is upstream at: +# https://github.com/projectatomic/rpm-ostree/blob/master/packaging/rpm-ostree.spec.in + +Summary: Hybrid image/package system +Name: rpm-ostree +Version: 2019.6 +Release: 8%{?dist} +#VCS: https://github.com/cgwalters/rpm-ostree +# This tarball is generated via "cd packaging && make -f Makefile.dist-packaging dist-snapshot" +# in the upstream git. If rust is enabled, it contains vendored sources. +Source0: rpm-ostree-%{version}.tar.xz +License: LGPLv2+ +URL: https://github.com/projectatomic/rpm-ostree + +Patch0: 0001-app-status-Fix-printf-format-string-for-32-bit.patch +Patch1: 0001-unpacker-Build-with-older-libarchive-without-zstd.patch +Patch2: 0001-libpriv-kernel-Use-g_build_filename-instead-of-g_str.patch +Patch3: 0002-libpriv-kernel-Hack-around-vmlinuz-path-in-HMAC-file.patch +Patch4: 0001-libpriv-kernel-add-cap_mknod-to-dracut-run.patch +Patch5: 0001-kargs-Support-append-and-delete-simultaneously.patch +Patch6: 0001-status-Quote-initramfs-args-if-necessary.patch +Patch7: 0001-initramfs-Fix-using-local-etc-when-also-replacing-ke.patch + +%if !%{defined rust_arches} +# It's not defined yet in the base CentOS7 root +%define rust_arches x86_64 i686 armv7hl aarch64 ppc64 ppc64le s390x +%endif # defined rust_arches + +ExclusiveArch: %{rust_arches} + +%if 0%{?fedora} +BuildRequires: cargo +BuildRequires: rust +%else +# assume el8 +BuildRequires: rust-toolset +%endif + +# For the autofiles bits below +BuildRequires: /usr/bin/python3 +# We always run autogen.sh +BuildRequires: autoconf automake libtool git +# For docs +BuildRequires: chrpath +BuildRequires: gtk-doc +BuildRequires: gperf +BuildRequires: gnome-common +BuildRequires: /usr/bin/g-ir-scanner +# Core requirements +# One way to check this: `objdump -p /path/to/rpm-ostree | grep LIBOSTREE` and pick the highest (though that might miss e.g. new struct members) +BuildRequires: pkgconfig(ostree-1) >= 2019.2 +BuildRequires: pkgconfig(polkit-gobject-1) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(rpm) +BuildRequires: pkgconfig(libarchive) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: libcap-devel +BuildRequires: libattr-devel + +# We currently interact directly with librepo +BuildRequires: pkgconfig(librepo) + +# Needed by curl-rust +BuildRequires: pkgconfig(libcurl) + +# libdnf bundling +# We're using RPATH to pick up our bundled version +%global __requires_exclude ^libdnf[.]so[.].*$ + +# Our bundled libdnf.so.2 is for us only +%global __provides_exclude_from ^%{_libdir}/%{name}/.*$ + +BuildRequires: cmake +BuildRequires: pkgconfig(expat) +BuildRequires: pkgconfig(check) +BuildRequires: pkgconfig(libsolv) + +# We need g++ for libdnf +BuildRequires: gcc-c++ + + +# more libdnf build deps (see libdnf's spec for versions) +%global swig_version 3.0.12 +%global libmodulemd_version 1.6.1 +BuildRequires: swig >= %{swig_version} +BuildRequires: pkgconfig(modulemd) >= %{libmodulemd_version} +BuildRequires: pkgconfig(json-c) +BuildRequires: pkgconfig(cppunit) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(smartcols) +BuildRequires: gpgme-devel + +Requires: libmodulemd1%{?_isa} >= %{libmodulemd_version} + +# For now...see https://github.com/projectatomic/rpm-ostree/pull/637 +# and https://github.com/fedora-infra/fedmsg-atomic-composer/pull/17 +# etc. We'll drop this dependency at some point in the future when +# rpm-ostree wraps more of ostree (such as `ostree admin unlock` etc.) +Requires: ostree +Requires: bubblewrap +Requires: fuse + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description +rpm-ostree is a hybrid image/package system. It supports +"composing" packages on a build server into an OSTree repository, +which can then be replicated by client systems with atomic upgrades. +Additionally, unlike many "pure" image systems, with rpm-ostree +each client system can layer on additional packages, providing +a "best of both worlds" approach. + +%package libs +Summary: Shared library for rpm-ostree + +%description libs +The %{name}-libs package includes the shared library for %{name}. + +%package devel +Summary: Development headers for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description devel +The %{name}-devel package includes the header files for %{name}-libs. + +%prep +%autosetup -Sgit -n %{name}-%{version} + +%build +env NOCONFIGURE=1 ./autogen.sh +%configure --disable-silent-rules --enable-gtk-doc +make %{?_smp_mflags} + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p -c" +find $RPM_BUILD_ROOT -name '*.la' -delete + +# I try to do continuous delivery via rpmdistro-gitoverlay while +# reusing the existing spec files. Currently RPM only supports +# mandatory file entries. What this is doing is making each file +# entry optional - if it exists it will be picked up. That +# way the same spec file works more easily across multiple versions where e.g. an +# older version might not have a systemd unit file. +cat > autofiles.py < 0: + sys.stderr.write('{0} matched {1} files\n'.format(line, len(files))) + sys.stdout.write(line + '\n') + else: + sys.stderr.write('{0} did not match any files\n'.format(line)) +EOF +PYTHON=python3 +if ! test -x /usr/bin/python3; then + PYTHON=python2 +fi +$PYTHON autofiles.py > files \ + '%{_bindir}/*' \ + '%{_libdir}/%{name}' \ + '%{_mandir}/man*/*' \ + '%{_datadir}/dbus-1/system.d/*' \ + '%{_sysconfdir}/rpm-ostreed.conf' \ + '%{_prefix}/lib/systemd/system/*' \ + '%{_libexecdir}/rpm-ostree*' \ + '%{_datadir}/polkit-1/actions/*.policy' \ + '%{_datadir}/dbus-1/system-services' \ + '%{_datadir}/bash-completion/completions/*' + +$PYTHON autofiles.py > files.lib \ + '%{_libdir}/*.so.*' \ + '%{_libdir}/girepository-1.0/*.typelib' + +$PYTHON autofiles.py > files.devel \ + '%{_libdir}/lib*.so' \ + '%{_includedir}/*' \ + '%{_datadir}/dbus-1/interfaces/org.projectatomic.rpmostree1.xml' \ + '%{_libdir}/pkgconfig/*' \ + '%{_datadir}/gtk-doc/html/*' \ + '%{_datadir}/gir-1.0/*-1.0.gir' + +%files -f files +%doc COPYING.GPL COPYING.LGPL LICENSE README.md + +%files libs -f files.lib + +%files devel -f files.devel + +%changelog +* Tue Mar 03 2020 Colin Walters - 2019.6-8 +- Backport patches for initramfs /etc + Resolves: #1808459 + +* Thu Feb 27 2020 Colin Walters - 2019.6-7 +- Backport f295f543064f1a0b5833fefccd6bb203b3527623 + Resolves: #1807487 + +* Thu Dec 05 2019 Jonathan Lebon - 2019.6-6 +- Backport dracut mknod patch for FIPS: + https://github.com/coreos/rpm-ostree/pull/1946 + +* Thu Oct 31 2019 Jonathan Lebon - 2019.6-5 +- Backport HMAC patch for FIPS: + https://github.com/coreos/rpm-ostree/pull/1934 + +* Fri Oct 18 2019 Colin Walters - 2019.6-4 +- Backport zchunk patch + +* Tue Oct 15 2019 Colin Walters - 2019.6-3 +- https://github.com/coreos/rpm-ostree/releases/tag/v20196 +- Backport zstd patch + +* Fri May 17 2019 Jonathan Lebon - 2019.3-3 +- Rebuild for rhel-8.1.0 branch + +* Fri Mar 29 2019 Colin Walters - 2019.3-2 +- Backport patch for pivot rebases + +* Wed Mar 27 2019 Jonathan Lebon - 2019.3-1 +- New upstream version + +* Thu Feb 14 2019 Jonathan Lebon - 2019.2-1 +- New upstream version + +* Sat Feb 02 2019 Fedora Release Engineering - 2019.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Jan 22 2019 Jonathan Lebon - 2019.1-1 +- New upstream version + +* Fri Dec 14 2018 Jonathan Lebon - 2018.10-1 +- New upstream version + +* Tue Dec 04 2018 Jonathan Lebon +- Simplify Rust conditionals + +* Fri Nov 02 2018 Jonathan Lebon - 2018.9-3 +- Backport patch for https://pagure.io/dusty/failed-composes/issue/956 + +* Tue Oct 30 2018 Igor Gnatenko - 2018.9-2 +- Rebuild for libsolv 0.7 + +* Sun Oct 28 2018 Jonathan Lebon - 2018.9-1 +- New upstream version + +* Mon Oct 15 2018 Jonathan Lebon - 2018.8-2 +- Add new source and patch to drop cbindgen requirement + +* Tue Sep 11 2018 Jonathan Lebon - 2018.8-1 +- New upstream version + +* Thu Aug 09 2018 Jonathan Lebon - 2018.7-1 +- New upstream version + +* Wed Aug 01 2018 Jonathan Lebon - 2018.6.42.gda27b94b-1 +- git master snapshot for https://bugzilla.redhat.com/show_bug.cgi?id=1565647 + +* Mon Jul 30 2018 Colin Walters - 2018.6-4 +- Backport patch for https://bugzilla.redhat.com/show_bug.cgi?id=1607223 + from https://github.com/projectatomic/rpm-ostree/pull/1469 +- Also https://github.com/projectatomic/rpm-ostree/pull/1461 + +* Mon Jul 16 2018 Colin Walters - 2018.6-3 +- Make build python3-only compatible for distributions that want that + +* Fri Jun 29 2018 Jonathan Lebon - 2018.6-2 +- Rebuild for yummy Rusty bitsy + +* Fri Jun 29 2018 Jonathan Lebon - 2018.6-1 +- New upstream version + +* Tue May 15 2018 Jonathan Lebon - 2018.5-1 +- New upstream version + +* Mon Mar 26 2018 Jonathan Lebon - 2018.4-1 +- New upstream version + +* Sun Mar 18 2018 Iryna Shcherbina - 2018.3-4 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Wed Mar 07 2018 Jonathan Lebon - 2018.3-3 +- Add BR on gcc-c++ + +* Thu Mar 01 2018 Dusty Mabe - 2018.3-2 +- backport treating FUSE as netfs +- See https://github.com/projectatomic/rpm-ostree/pull/1285 + +* Sun Feb 18 2018 Jonathan Lebon - 2018.3-1 +- New upstream version (minor bugfix release) + +* Fri Feb 16 2018 Jonathan Lebon - 2018.2-1 +- New upstream version + +* Fri Feb 09 2018 Fedora Release Engineering - 2018.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Jan 19 2018 Dusty Mabe - 2018.1-2 +- Revert the ostree:// formatting in the output. +- See https://github.com/projectatomic/rpm-ostree/pull/1136#issuecomment-358122137 + +* Mon Jan 15 2018 Colin Walters - 2018.1-1 +- https://github.com/projectatomic/rpm-ostree/releases/tag/v2018.1 + +* Tue Dec 05 2017 Jonathan Lebon - 2017.11-1 +- New upstream version + +* Wed Nov 22 2017 Colin Walters - 2017.10-3 +- Backport patch for NFS issues +- https://pagure.io/atomic-wg/issue/387 + +* Sun Nov 12 2017 Jonathan Lebon - 2017.10-2 +- Backport fix for --repo handling + https://github.com/projectatomic/rpm-ostree/pull/1101 + +* Thu Nov 02 2017 Colin Walters - 2017.10-1 +- https://github.com/projectatomic/rpm-ostree/releases/tag/v2017.10 + +* Mon Sep 25 2017 Jonathan Lebon - 2017.9-1 +- New upstream version + +* Mon Aug 21 2017 Jonathan Lebon - 2017.8-2 +- Patch to allow metadata_expire=0 + https://github.com/projectatomic/rpm-ostree/issues/930 + +* Fri Aug 18 2017 Jonathan Lebon - 2017.8-1 +- New upstream version + +* Thu Aug 10 2017 Igor Gnatenko - 2017.7-7 +- Rebuilt for RPM soname bump + +* Thu Aug 10 2017 Igor Gnatenko - 2017.7-6 +- Rebuilt for RPM soname bump + +* Thu Aug 03 2017 Fedora Release Engineering - 2017.7-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 2017.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 21 2017 Jonathan Lebon - 2017.7-3 +- Tweak new pkg name to rpm-ostree-libs to be more consistent with the main + package name and ostree's ostree-libs. + +* Fri Jul 21 2017 Colin Walters - 2017.7-2 +- Enable introspection, rename shared lib to librpmostree + Due to an oversight, we were not actually building with introspection. + Fix that. And while we are here, split out a shared library package, + so that e.g. containers can do `from gi.repository import RpmOstree` + without dragging in the systemd service, etc. (RHBZ#1473701) + +* Mon Jul 10 2017 Jonathan Lebon - 2017.7-1 +- New upstream version + +* Sat Jun 24 2017 Colin Walters +- Update to git snapshot to help debug compose failure + +* Wed May 31 2017 Jonathan Lebon - 2017.6-3 +- Make sure we don't auto-provide libdnf (RHBZ#1457089) + +* Fri May 26 2017 Jonathan Lebon - 2017.6-2 +- Bump libostree dep + +* Fri May 26 2017 Jonathan Lebon - 2017.6-1 +- New upstream version + +* Fri Apr 28 2017 Jonathan Lebon - 2017.5-2 +- Bump libostree dep and rebuild in override + +* Fri Apr 28 2017 Jonathan Lebon - 2017.5-1 +- New upstream version + +* Fri Apr 14 2017 Jonathan Lebon - 2017.4-2 +- Backport patch to allow unprivileged `rpm-ostree status` + +* Thu Apr 13 2017 Jonathan Lebon - 2017.4-1 +- New upstream version. + +* Fri Apr 07 2017 Colin Walters - 2017.3-4 +- Backport patch to add API devices for running on CentOS 7 + https://github.com/projectatomic/rpm-ostree/issues/727 + +* Thu Mar 16 2017 Colin Walters - 2017.3-3 +- Add patch to fix f26 altfiles + +* Fri Mar 10 2017 Colin Walters - 2017.3-2 +- Backport patch for running in koji + +* Mon Mar 06 2017 Colin Walters - 2017.3-1 +- New upstream version + Fixes: CVE-2017-2623 + Resolves: #1422157 + +* Fri Mar 03 2017 Colin Walters - 2017.2-5 +- Add patch to bump requires for ostree + +* Mon Feb 27 2017 Colin Walters - 2017.2-4 +- Add requires on ostree + +* Sat Feb 18 2017 Colin Walters - 2017.2-3 +- Add patch for gperf 3.1 compatibility + Resolves: #1424268 + +* Wed Feb 15 2017 Colin Walters - 2017.2-2 +- New upstream version + +* Sat Feb 11 2017 Fedora Release Engineering - 2017.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 27 2017 Colin Walters - 2017.1-3 +- Back out netns usage for now for https://pagure.io/releng/issue/6602 + +* Sun Jan 22 2017 Colin Walters - 2017.1-2 +- New upstream version + +* Mon Dec 12 2016 walters@redhat.com - 2016.13-1 +- New upstream version + +* Sat Nov 26 2016 walters@redhat.com - 2016.12-4 +- Backport patch to fix install-langs + +* Tue Nov 15 2016 walters@redhat.com - 2016.11-2 +- New upstream version + +* Mon Oct 24 2016 walters@verbum.org - 2016.11-1 +- New upstream version + +* Fri Oct 07 2016 walters@redhat.com - 2016.10-1 +- New upstream version + +* Thu Sep 08 2016 walters@redhat.com - 2016.9-1 +- New upstream version + +* Thu Sep 08 2016 walters@redhat.com - 2016.8-1 +- New upstream version + +* Thu Sep 01 2016 walters@redhat.com - 2016.7-4 +- Add requires on fuse https://github.com/projectatomic/rpm-ostree/issues/443 + +* Wed Aug 31 2016 Colin Walters - 2016.7-3 +- Backport patch for running inside mock + +* Sat Aug 13 2016 walters@redhat.com - 2016.6-3 +- New upstream version + +* Sat Aug 13 2016 Colin Walters - 2016.6-2 +- Backport patches from master to fix non-containerized composes + +* Thu Aug 11 2016 walters@redhat.com - 2016.6-1 +- New upstream version + +* Mon Jul 25 2016 Colin Walters - 2016.5-1 +- New upstream version + +* Fri Jul 08 2016 walters@verbum.org - 2016.4-2 +- Require bubblewrap + +* Fri Jul 08 2016 walters@redhat.com - 2016.4-1 +- New upstream version + +* Thu Jul 07 2016 Colin Walters - 2016.3.5.g4219a96-1 +- Backport fixes from https://github.com/projectatomic/rpm-ostree/commits/2016.3-fixes + +* Wed Jun 15 2016 Colin Walters - 2016.3.3.g17fb980-2 +- Backport fixes from https://github.com/projectatomic/rpm-ostree/commits/2016.3-fixes + +* Fri May 20 2016 Colin Walters - 2016.3-2 +- New upstream version + +* Thu Mar 31 2016 Colin Walters - 2016.1-3 +- Backport patch to fix Fedora composes writing data into source file:/// URIs + +* Thu Mar 24 2016 Colin Walters - 2016.1-2 +- New upstream version + +* Tue Feb 23 2016 Colin Walters - 2015.11.43.ga2c052b-2 +- New git snapshot, just getting some new code out there +- We are now bundling a copy of libhif, as otherwise coordinated releases with + PackageKit/dnf would be required, and we are not ready for that yet. + +* Wed Feb 10 2016 Matthew Barnes - 2015.11-3 +- Fix URL: https://github.com/projectatomic/rpm-ostree + +* Thu Feb 04 2016 Fedora Release Engineering - 2015.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Dec 15 2015 Colin Walters - 2015.11-1 +- New upstream version + +* Sat Nov 21 2015 Colin Walters - 2015.10-1 +- New upstream version + +* Mon Nov 09 2015 Colin Walters - 2015.9-4 +- Fix files list for -devel, which should in turn fix Anaconda + builds which pull in rpm-ostree, but should not have devel bits. + +* Sat Oct 31 2015 Colin Walters - 2015.9-3 +- Add patch that should fix bodhis use of --workdir-tmpfs + +* Sat Sep 05 2015 Kalev Lember - 2015.9-2 +- Rebuilt for librpm soname bump + +* Wed Aug 26 2015 Colin Walters - 2015.9-2 +- New upstream version + +* Tue Aug 04 2015 Colin Walters - 2015.8-1 +- New upstream version + +* Mon Jul 27 2015 Colin Walters - 2015.7-5 +- rebuilt + +* Mon Jul 20 2015 Colin Walters - 2015.7-4 +- Rebuild for CentOS update to libhif + +* Tue Jun 16 2015 Colin Walters - 2015.7-3 +- Rebuild to pick up hif_source_set_required() + +* Mon Jun 15 2015 Colin Walters - 2015.7-2 +- New upstream version + +* Tue Jun 09 2015 Colin Walters - 2015.6-2 +- New upstream version + +* Tue May 12 2015 Colin Walters - 2015.5-3 +- Add patch to fix rawhide composes + +* Mon May 11 2015 Colin Walters - 2015.5-2 +- New upstream release + Adds shared library and -devel subpackage + +* Fri Apr 10 2015 Colin Walters - 2015.4-2 +- New upstream release + Port to libhif, drops dependency on yum. + +* Thu Apr 09 2015 Colin Walters - 2015.3-8 +- Cherry pick f21 patch to disable read only /etc with yum which + breaks when run inside docker + +* Wed Apr 08 2015 Colin Walters - 2015.3-7 +- Add patch to use yum-deprecated + Resolves: #1209695 + +* Fri Feb 27 2015 Colin Walters - 2015.3-5 +- Drop /usr/bin/atomic, now provided by the "atomic" package + +* Fri Feb 06 2015 Dennis Gilmore - 2015.3-4 +- add git to BuildRequires + +* Thu Feb 05 2015 Colin Walters - 2015.3-3 +- Adapt to Hawkey 0.5.3 API break + +* Thu Feb 05 2015 Dennis Gilmore - 2015.3-3 +- rebuild for libhawkey soname bump + +* Fri Jan 23 2015 Colin Walters - 2015.3-2 +- New upstream release + +* Thu Jan 08 2015 Colin Walters - 2015.2-1 +- New upstream release + +* Wed Dec 17 2014 Colin Walters - 2014.114-2 +- New upstream release + +* Tue Nov 25 2014 Colin Walters - 2014.113-1 +- New upstream release + +* Mon Nov 24 2014 Colin Walters - 2014.112-1 +- New upstream release + +* Mon Nov 17 2014 Colin Walters - 2014.111-1 +- New upstream release + +* Fri Nov 14 2014 Colin Walters - 2014.110-1 +- New upstream release + +* Fri Oct 24 2014 Colin Walters - 2014.109-1 +- New upstream release + +* Sat Oct 04 2014 Colin Walters - 2014.107-2 +- New upstream release + +* Mon Sep 08 2014 Colin Walters - 2014.106-3 +- New upstream release +- Bump requirement on ostree + +* Mon Aug 18 2014 Fedora Release Engineering - 2014.105-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Aug 08 2014 Colin Walters - 2014.105-2 +- New upstream release + +* Sun Jul 13 2014 Colin Walters +- New upstream release + +* Sat Jun 21 2014 Colin Walters +- New upstream release +- Bump OSTree requirements +- Enable hawkey package diff, we have new enough versions + of libsolv/hawkey +- Enable /usr/bin/atomic symbolic link + +* Tue Jun 10 2014 Colin Walters +- New upstream git snapshot + +* Sun Jun 08 2014 Fedora Release Engineering - 2014.101-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 30 2014 Colin Walters +- New upstream release + +* Fri May 23 2014 Colin Walters +- Previous autobuilder code is split off into rpm-ostree-toolbox + +* Sun Apr 13 2014 Colin Walters +- New upstream release + +* Tue Apr 08 2014 Colin Walters +- Drop requires on yum to allow minimal images without it + +* Mon Mar 31 2014 Colin Walters +- New upstream release + +* Sat Mar 22 2014 Colin Walters - 2014.6.3.g5707fa7-2 +- Bump ostree version requirement + +* Sat Mar 22 2014 Colin Walters - 2014.6.3.g5707fa7-1 +- New git snapshot, add rpm-ostree-sign to file list + +* Sat Mar 22 2014 Colin Walters - 2014.6-1 +- New upstream version + +* Fri Mar 07 2014 Colin Walters - 2014.5-1 +- Initial package +