aea374710e
This removes the "transaction monitor". Originally the idea here was things would queue, but we never really made that work. Since transactions started grabbing the libostree sysroot lock in particular. Rip out the transaction monitor code with the queue and have a singleton txn ref in the sysroot object. This should ensure that if a txn is active, one always gets an error message about which one. Next, add a 30s timeout for connections to the transaction DBus sockets after they're complete. This should address https://github.com/projectatomic/rpm-ostree/issues/1692 which is a case where gnome-software was leaking the txn DBus connection and keeping it alive. Closes: #1755 Approved by: cgwalters
141 lines
4.7 KiB
Plaintext
141 lines
4.7 KiB
Plaintext
dbus_built_sources = rpm-ostreed-generated.h rpm-ostreed-generated.c
|
|
|
|
# TODO: Add --c-generate-autocleanup=all once we depend on GLib 2.50+
|
|
# https://github.com/projectatomic/rpm-ostree/pull/705
|
|
rpm-ostreed-generated.h: rpm-ostreed-generated.c
|
|
rpm-ostreed-generated.c: Makefile $(top_srcdir)/src/daemon/org.projectatomic.rpmostree1.xml
|
|
$(AM_V_GEN) gdbus-codegen \
|
|
--interface-prefix org.projectatomic.rpmostree1 \
|
|
--c-namespace RPMOSTree \
|
|
--c-generate-object-manager \
|
|
--generate-c-code rpm-ostreed-generated \
|
|
--generate-docbook rpm-ostreed-generated \
|
|
$(top_srcdir)/src/daemon/org.projectatomic.rpmostree1.xml \
|
|
$(NULL)
|
|
BUILT_SOURCES += $(dbus_built_sources)
|
|
CLEANFILES += rpm-ostreed-generated-org.projectatomic.rpmostree1.OS.xml \
|
|
rpm-ostreed-generated-org.projectatomic.rpmostree1.OSExperimental.xml \
|
|
rpm-ostreed-generated-org.projectatomic.rpmostree1.Sysroot.xml \
|
|
rpm-ostreed-generated-org.projectatomic.rpmostree1.Transaction.xml \
|
|
$(NULL)
|
|
|
|
noinst_LTLIBRARIES += librpmostreed.la
|
|
nodist_librpmostreed_la_SOURCES = $(dbus_built_sources)
|
|
|
|
librpmostreed_la_SOURCES = \
|
|
src/daemon/rpmostreed-types.h \
|
|
src/daemon/rpmostreed-daemon.h \
|
|
src/daemon/rpmostreed-daemon.c \
|
|
src/daemon/rpmostreed-utils.h \
|
|
src/daemon/rpmostreed-utils.c \
|
|
src/daemon/rpmostreed-sysroot.h \
|
|
src/daemon/rpmostreed-sysroot.c \
|
|
src/daemon/rpmostree-sysroot-core.h \
|
|
src/daemon/rpmostree-sysroot-core.c \
|
|
src/daemon/rpmostree-sysroot-upgrader.h \
|
|
src/daemon/rpmostree-sysroot-upgrader.c \
|
|
src/daemon/rpmostreed-errors.h \
|
|
src/daemon/rpmostreed-errors.c \
|
|
src/daemon/rpmostreed-deployment-utils.h \
|
|
src/daemon/rpmostreed-deployment-utils.c \
|
|
src/daemon/rpmostreed-transaction.h \
|
|
src/daemon/rpmostreed-transaction.c \
|
|
src/daemon/rpmostreed-transaction-types.h \
|
|
src/daemon/rpmostreed-transaction-types.c \
|
|
src/daemon/rpmostreed-transaction-livefs.c \
|
|
src/daemon/rpmostree-package-variants.h \
|
|
src/daemon/rpmostree-package-variants.c \
|
|
src/daemon/rpmostreed-os.h \
|
|
src/daemon/rpmostreed-os.c \
|
|
src/daemon/rpmostreed-os-experimental.h \
|
|
src/daemon/rpmostreed-os-experimental.c \
|
|
$(NULL)
|
|
|
|
librpmostreed_la_CFLAGS = \
|
|
$(AM_CFLAGS) \
|
|
$(PKGDEP_RPMOSTREE_CFLAGS) \
|
|
-DG_LOG_DOMAIN=\"rpm-ostreed\" \
|
|
-fvisibility=hidden \
|
|
-D_RPMOSTREE_EXTERN= \
|
|
-I$(srcdir)/src/daemon \
|
|
-I$(srcdir)/src/lib \
|
|
-I$(srcdir)/src/libpriv \
|
|
-I$(libglnx_srcpath) \
|
|
$(NULL)
|
|
|
|
librpmostreed_la_LIBADD = \
|
|
$(PKGDEP_RPMOSTREE_LIBS) \
|
|
librpmostreepriv.la \
|
|
librpmostree-1.la \
|
|
$(CAP_LIBS)
|
|
$(NULL)
|
|
|
|
dbusconf_DATA = $(srcdir)/src/daemon/org.projectatomic.rpmostree1.conf
|
|
dbusconfdir = ${sysconfdir}/dbus-1/system.d
|
|
|
|
systemdunit_service_in_files = \
|
|
$(srcdir)/src/daemon/rpm-ostreed.service.in \
|
|
$(srcdir)/src/daemon/rpm-ostreed-automatic.service.in \
|
|
$(srcdir)/src/daemon/rpm-ostree-bootstatus.service.in \
|
|
$(NULL)
|
|
|
|
systemdunit_service_files = $(systemdunit_service_in_files:.service.in=.service)
|
|
systemdunit_timer_files = $(srcdir)/src/daemon/rpm-ostreed-automatic.timer
|
|
|
|
systemdunit_DATA = \
|
|
$(systemdunit_service_files) \
|
|
$(systemdunit_timer_files) \
|
|
$(NULL)
|
|
|
|
systemdunitdir = $(prefix)/lib/systemd/system/
|
|
if BUILDOPT_ASAN
|
|
daemon_asan_options = -e s,@SYSTEMD_ENVIRON\@,Environment=ASAN_OPTIONS=detect_leaks=false,
|
|
else
|
|
daemon_asan_options = -e /@SYSTEMD_ENVIRON\@/d
|
|
endif
|
|
$(systemdunit_service_files): Makefile
|
|
$(SED_SUBST) $(daemon_asan_options) $@.in > $@
|
|
|
|
# We keep this stub script around to have SELinux labeling work,
|
|
# plus some backwards compatibility.
|
|
libexec_SCRIPTS = rpm-ostreed
|
|
rpm-ostreed: $(srcdir)/src/daemon/rpm-ostreed-stub.sh.in Makefile
|
|
$(SED_SUBST) $< > $@.tmp && mv $@.tmp $@
|
|
|
|
install-daemon-altname-hook:
|
|
mv $(DESTDIR)$(systemdunitdir)/rpm-ostreed.service $(DESTDIR)$(systemdunitdir)/$(primaryname)d.service
|
|
ln -sf $(primaryname)d.service $(DESTDIR)$(systemdunitdir)/rpm-ostreed.service
|
|
if BUILDOPT_NEW_NAME
|
|
INSTALL_DATA_HOOKS += install-daemon-altname-hook
|
|
endif
|
|
|
|
# We don't yet rename the DBus related items
|
|
service_in_files = $(srcdir)/src/daemon/org.projectatomic.rpmostree1.service.in
|
|
service_DATA = $(service_in_files:.service.in=.service)
|
|
servicedir = $(dbusservicedir)
|
|
%.service: %.service.in Makefile
|
|
$(SED_SUBST) $@.in > $@.tmp && mv $@.tmp $@
|
|
|
|
polkit_policy_DATA = $(srcdir)/src/daemon/org.projectatomic.rpmostree1.policy
|
|
polkit_policydir = $(datadir)/polkit-1/actions
|
|
|
|
dbus_introspection_DATA = src/daemon/org.projectatomic.rpmostree1.xml
|
|
dbus_introspectiondir = $(datadir)/dbus-1/interfaces
|
|
|
|
sysconf_DATA += $(srcdir)/src/daemon/rpm-ostreed.conf
|
|
|
|
EXTRA_DIST += \
|
|
$(dbus_introspection_DATA) \
|
|
$(dbusservice_DATA) \
|
|
$(polkit_policy_DATA) \
|
|
$(sysconf_DATA) \
|
|
$(service_in_files) \
|
|
$(systemdunit_service_in_files) \
|
|
$(systemdunit_timer_files) \
|
|
$(NULL)
|
|
|
|
CLEANFILES += \
|
|
$(service_DATA) \
|
|
$(systemdunit_service_files) \
|
|
$(NULL)
|