mirror of
https://github.com/ostreedev/ostree.git
synced 2024-12-21 13:34:34 +03:00
92b1a27202
In the OSTree model, executables go in `/usr`, state in `/var` and configuration in `/etc`. Software that lives in `/opt` however messes this up because it often mixes code *and* state, making it harder to manage. More generally, it's sometimes useful to have the OSTree commit contain code under a certain path, but still allow that path to be writable by software and the sysadmin at runtime (`/usr/local` is another instance). Add the concept of state overlays. A state overlay is an overlayfs mount whose upper directory, which contains unmanaged state, is carried forward on top of a lower directory, containing OSTree-managed files. In the example of `/usr/local`, OSTree commits can ship content there, all while allowing users to e.g. add scripts in `/usr/local/bin` when booted into that commit. Some reconciliation logic is executed whenever the base is updated so that newer files in the base are never shadowed by a copied up version in the upper directory. This matches RPM semantics when upgrading packages whose files may have been modified. For ease of integration, this is exposed as a systemd template unit which any downstream distro/user can enable. The instance name is the mountpath in escaped systemd path notation (e.g. `ostree-state-overlay@usr-local.service`). See discussions in https://github.com/ostreedev/ostree/issues/3113 for more details.
160 lines
5.0 KiB
Plaintext
160 lines
5.0 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-lock-finalization.c \
|
|
src/ostree/ot-admin-builtin-boot-complete.c \
|
|
src/ostree/ot-admin-builtin-undeploy.c \
|
|
src/ostree/ot-admin-builtin-set-default.c \
|
|
src/ostree/ot-admin-builtin-instutil.c \
|
|
src/ostree/ot-admin-builtin-kargs.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-post-copy.c \
|
|
src/ostree/ot-admin-builtin-upgrade.c \
|
|
src/ostree/ot-admin-builtin-unlock.c \
|
|
src/ostree/ot-admin-builtin-state-overlay.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 \
|
|
src/ostree/ot-admin-kargs-builtins.h \
|
|
src/ostree/ot-admin-kargs-builtin-edit-in-place.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_OR_LIBSOUP3
|
|
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
|