mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-22 17:35:55 +03:00
a6d45dc165
Quite a while ago we added staged deployments, which solved a bunch of issues around the `/etc` merge. However...a persistent problem since then is that any failures in that process that happened in the *previous* boot are not very visible. We ship custom code in `rpm-ostree status` to query the previous journal. But that has a few problems - one is that on systems that have been up a while, that failure message may even get rotated out. And second, some systems may not even have a persistent journal at all. A general thing we do in e.g. Fedora CoreOS testing is to check for systemd unit failures. We do that both in our automated tests, and we even ship code that displays them on ssh logins. And beyond that obviously a lot of other projects do the same; it's easy via `systemctl --failed`. So to make failures more visible, change our `ostree-finalize-staged.service` to have an internal wrapper around the process that "catches" any errors, and copies the error message into a file in `/boot/ostree`. Then, a new `ostree-boot-complete.service` looks for this file on startup and re-emits the error message, and fails. It also deletes the file. The rationale is to avoid *continually* warning. For example we need to handle the case when an upgrade process creates a new staged deployment. Now, we could change the ostree core code to delete the warning file when that happens instead, but this is trying to be a conservative change. This should make failures here much more visible as is.
165 lines
5.2 KiB
Plaintext
165 lines
5.2 KiB
Plaintext
# Makefile for C source code
|
|
#
|
|
# Copyright (C) 2011 Colin Walters <walters@verbum.org>
|
|
#
|
|
# 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, see <https://www.gnu.org/licenses/>.
|
|
|
|
bin_PROGRAMS += ostree
|
|
|
|
ostree_SOURCES = src/ostree/main.c \
|
|
src/ostree/ot-builtin-admin.c \
|
|
src/ostree/ot-builtins.h \
|
|
src/ostree/ot-builtin-cat.c \
|
|
src/ostree/ot-builtin-config.c \
|
|
src/ostree/ot-builtin-checkout.c \
|
|
src/ostree/ot-builtin-checksum.c \
|
|
src/ostree/ot-builtin-commit.c \
|
|
src/ostree/ot-builtin-create-usb.c \
|
|
src/ostree/ot-builtin-diff.c \
|
|
src/ostree/ot-builtin-export.c \
|
|
src/ostree/ot-builtin-find-remotes.c \
|
|
src/ostree/ot-builtin-fsck.c \
|
|
src/ostree/ot-builtin-init.c \
|
|
src/ostree/ot-builtin-pull-local.c \
|
|
src/ostree/ot-builtin-log.c \
|
|
src/ostree/ot-builtin-ls.c \
|
|
src/ostree/ot-builtin-prune.c \
|
|
src/ostree/ot-builtin-refs.c \
|
|
src/ostree/ot-builtin-remote.c \
|
|
src/ostree/ot-builtin-reset.c \
|
|
src/ostree/ot-builtin-rev-parse.c \
|
|
src/ostree/ot-builtin-sign.c \
|
|
src/ostree/ot-builtin-summary.c \
|
|
src/ostree/ot-builtin-show.c \
|
|
src/ostree/ot-builtin-static-delta.c \
|
|
src/ostree/ot-main.h \
|
|
src/ostree/ot-main.c \
|
|
src/ostree/ot-dump.h \
|
|
src/ostree/ot-dump.c \
|
|
src/ostree/ot-editor.c \
|
|
src/ostree/ot-editor.h \
|
|
src/ostree/parse-datetime.h \
|
|
$(NULL)
|
|
|
|
nodist_ostree_SOURCES = \
|
|
src/ostree/parse-datetime.c \
|
|
$(NULL)
|
|
|
|
if USE_GPGME
|
|
ostree_SOURCES += \
|
|
src/ostree/ot-builtin-gpg-sign.c \
|
|
$(NULL)
|
|
endif
|
|
|
|
# Admin subcommand
|
|
ostree_SOURCES += \
|
|
src/ostree/ot-admin-builtin-init-fs.c \
|
|
src/ostree/ot-admin-builtin-diff.c \
|
|
src/ostree/ot-admin-builtin-deploy.c \
|
|
src/ostree/ot-admin-builtin-finalize-staged.c \
|
|
src/ostree/ot-admin-builtin-boot-complete.c \
|
|
src/ostree/ot-admin-builtin-undeploy.c \
|
|
src/ostree/ot-admin-builtin-instutil.c \
|
|
src/ostree/ot-admin-builtin-cleanup.c \
|
|
src/ostree/ot-admin-builtin-os-init.c \
|
|
src/ostree/ot-admin-builtin-set-origin.c \
|
|
src/ostree/ot-admin-builtin-status.c \
|
|
src/ostree/ot-admin-builtin-switch.c \
|
|
src/ostree/ot-admin-builtin-pin.c \
|
|
src/ostree/ot-admin-builtin-upgrade.c \
|
|
src/ostree/ot-admin-builtin-unlock.c \
|
|
src/ostree/ot-admin-builtins.h \
|
|
src/ostree/ot-admin-instutil-builtin-selinux-ensure-labeled.c \
|
|
src/ostree/ot-admin-instutil-builtin-set-kargs.c \
|
|
src/ostree/ot-admin-instutil-builtin-grub2-generate.c \
|
|
src/ostree/ot-admin-instutil-builtins.h \
|
|
src/ostree/ot-admin-functions.h \
|
|
src/ostree/ot-admin-functions.c \
|
|
$(NULL)
|
|
|
|
# Remote subcommand
|
|
ostree_SOURCES += \
|
|
src/ostree/ot-remote-builtins.h \
|
|
src/ostree/ot-remote-builtin-add.c \
|
|
src/ostree/ot-remote-builtin-delete.c \
|
|
src/ostree/ot-remote-builtin-list.c \
|
|
src/ostree/ot-remote-builtin-show-url.c \
|
|
src/ostree/ot-remote-builtin-refs.c \
|
|
src/ostree/ot-remote-builtin-summary.c \
|
|
$(NULL)
|
|
|
|
if USE_GPGME
|
|
ostree_SOURCES += \
|
|
src/ostree/ot-remote-builtin-gpg-import.c \
|
|
src/ostree/ot-remote-builtin-gpg-list-keys.c \
|
|
$(NULL)
|
|
endif
|
|
|
|
if USE_CURL_OR_SOUP
|
|
ostree_SOURCES += src/ostree/ot-remote-builtin-add-cookie.c \
|
|
src/ostree/ot-remote-builtin-delete-cookie.c \
|
|
src/ostree/ot-remote-builtin-list-cookies.c \
|
|
src/ostree/ot-remote-cookie-util.h \
|
|
src/ostree/ot-remote-cookie-util.c \
|
|
$(NULL)
|
|
endif
|
|
|
|
src/ostree/parse-datetime.c: src/ostree/parse-datetime.y Makefile
|
|
mkdir -p src/ostree/
|
|
$(AM_V_GEN) $(YACC) $< -o $@
|
|
|
|
EXTRA_DIST += src/ostree/parse-datetime.y
|
|
CLEANFILES += src/ostree/parse-datetime.c
|
|
|
|
ostree_bin_shared_cflags = $(AM_CFLAGS) -I$(srcdir)/src/libotutil -I$(srcdir)/src/libostree \
|
|
-I$(builddir)/src/libostree -I$(srcdir)/src/ostree -I$(srcdir)/libglnx $(OT_INTERNAL_GIO_UNIX_CFLAGS) \
|
|
-DPKGLIBEXECDIR=\"$(pkglibexecdir)\"
|
|
ostree_bin_shared_ldadd = $(AM_LDFLAGS) libglnx.la libotutil.la libostree-1.la \
|
|
$(OT_INTERNAL_GIO_UNIX_LIBS)
|
|
|
|
ostree_CFLAGS = $(ostree_bin_shared_cflags)
|
|
ostree_LDADD = $(ostree_bin_shared_ldadd) libbsdiff.la $(LIBSYSTEMD_LIBS)
|
|
|
|
|
|
if USE_CURL_OR_SOUP
|
|
ostree_SOURCES += src/ostree/ot-builtin-pull.c
|
|
endif
|
|
|
|
if USE_LIBSOUP
|
|
# Eventually once we stop things from using this, we should support disabling this
|
|
ostree_SOURCES += src/ostree/ot-builtin-trivial-httpd.c
|
|
pkglibexec_PROGRAMS += ostree-trivial-httpd
|
|
ostree_trivial_httpd_SOURCES = src/ostree/ostree-trivial-httpd.c
|
|
ostree_trivial_httpd_CFLAGS = $(ostree_bin_shared_cflags) $(OT_INTERNAL_SOUP_CFLAGS)
|
|
ostree_trivial_httpd_LDADD = $(ostree_bin_shared_ldadd) $(OT_INTERNAL_SOUP_LIBS)
|
|
|
|
if !USE_CURL
|
|
# This is necessary for the cookie jar bits
|
|
ostree_CFLAGS += $(OT_INTERNAL_SOUP_CFLAGS)
|
|
ostree_LDADD += $(OT_INTERNAL_SOUP_LIBS)
|
|
endif
|
|
endif
|
|
|
|
if USE_LIBARCHIVE
|
|
ostree_CFLAGS += $(OT_DEP_LIBARCHIVE_CFLAGS)
|
|
ostree_LDADD += $(OT_DEP_LIBARCHIVE_LIBS)
|
|
endif
|
|
|
|
if USE_LIBSODIUM
|
|
ostree_CFLAGS += $(OT_DEP_LIBSODIUM_CFLAGS)
|
|
ostree_LDADD += $(OT_DEP_LIBSODIUM_LIBS)
|
|
endif # USE_LIBSODIUM
|