From 10a706eb3e01f0b72b2f4594c9a577587302a02a Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Thu, 24 Jun 2021 18:58:45 +0100
Subject: [PATCH] build: Generate code for a small subset of the systemd D-Bus
 API

Taken from Flatpak 1.11.2.

Signed-off-by: Simon McVittie <smcv@collabora.com>
---
 pressure-vessel/meson.build                  | 23 +++++++++++++++++++
 pressure-vessel/org.freedesktop.systemd1.xml | 24 ++++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 pressure-vessel/org.freedesktop.systemd1.xml

diff --git a/pressure-vessel/meson.build b/pressure-vessel/meson.build
index a2bf3f37b..552a35bbb 100644
--- a/pressure-vessel/meson.build
+++ b/pressure-vessel/meson.build
@@ -68,6 +68,13 @@ launcher1 = gnome.gdbus_codegen(
   namespace : 'Pv',
 )
 
+systemd_dbus = gnome.gdbus_codegen(
+  'flatpak-systemd-dbus-generated',
+  sources : 'org.freedesktop.systemd1.xml',
+  interface_prefix : 'org.freedesktop.systemd1.',
+  namespace : 'Systemd',
+)
+
 enums = gnome.mkenums_simple(
   'enumtypes',
   sources : headers,
@@ -121,6 +128,21 @@ launcher_codegen_dep = declare_dependency(
   sources : launcher1[1],
 )
 
+systemd_codegen = static_library(
+  'pressure-vessel-systemd-codegen',
+  sources : systemd_dbus,
+  dependencies : [
+    gio_unix,
+  ],
+  c_args : silence_gdbus_codegen_warnings + pv_c_args,
+  include_directories : pv_include_dirs,
+  install: false,
+)
+systemd_codegen_dep = declare_dependency(
+  link_with : systemd_codegen,
+  sources : systemd_dbus[1],
+)
+
 executable(
   'pressure-vessel-adverb',
   sources : [
@@ -217,6 +239,7 @@ executable(
   c_args : pv_c_args,
   dependencies : [
     pressure_vessel_utils_dep,
+    systemd_codegen_dep,
     gio_unix,
     xau,
     libglnx_dep,
diff --git a/pressure-vessel/org.freedesktop.systemd1.xml b/pressure-vessel/org.freedesktop.systemd1.xml
new file mode 100644
index 000000000..eebb138a9
--- /dev/null
+++ b/pressure-vessel/org.freedesktop.systemd1.xml
@@ -0,0 +1,24 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<!--
+Taken from Flatpak.
+Copyright 2015 Red Hat, Inc.
+SPDX-License-Identifier: LGPL-2.1-or-later
+-->
+<node>
+ <interface name="org.freedesktop.systemd1.Manager">
+  <method name="StartTransientUnit">
+   <arg type="s" direction="in" name="name"/>
+   <arg type="s" direction="in" name="mode"/>
+   <arg type="a(sv)" direction="in" name="properties"/>
+   <arg type="a(sa(sv))" direction="in" name="aux"/>
+   <arg type="o" direction="out" name="job"/>
+  </method>
+  <signal name="JobRemoved">
+   <arg type="u" name="id"/>
+   <arg type="o" name="job"/>
+   <arg type="s" name="unit"/>
+   <arg type="s" name="result"/>
+  </signal>
+ </interface>
+</node>
-- 
GitLab