From 9ed8cc5c73e10f4ada5fc5b21d1a09b9f2c2d742 Mon Sep 17 00:00:00 2001 From: Maximiliano Sandoval Date: Sat, 10 Aug 2024 17:40:41 +0200 Subject: [PATCH] daemon: Add meson --- server/data/meson.build | 15 ++++++++ server/data/oo7-daemon.service.in | 11 ++++++ .../data/org.freedesktop.secrets.service.in | 3 ++ server/meson.build | 38 +++++++++++++++++++ server/meson_options.txt | 26 +++++++++++++ server/src/meson.build | 28 ++++++++++++++ 6 files changed, 121 insertions(+) create mode 100644 server/data/meson.build create mode 100644 server/data/oo7-daemon.service.in create mode 100644 server/data/org.freedesktop.secrets.service.in create mode 100644 server/meson.build create mode 100644 server/meson_options.txt create mode 100644 server/src/meson.build diff --git a/server/data/meson.build b/server/data/meson.build new file mode 100644 index 000000000..9bf7cc306 --- /dev/null +++ b/server/data/meson.build @@ -0,0 +1,15 @@ +if systemduserunitdir != '' + configure_file( + input: 'oo7-daemon.service.in', + output: 'oo7-daemon.service', + configuration: libexecdir_conf, + install_dir: systemduserunitdir, + ) +endif + +configure_file( + input: 'org.freedesktop.secrets.service.in', + output: 'org.freedesktop.secrets.service', + configuration: libexecdir_conf, + install_dir: dbus_service_dir, +) diff --git a/server/data/oo7-daemon.service.in b/server/data/oo7-daemon.service.in new file mode 100644 index 000000000..b74fdb99b --- /dev/null +++ b/server/data/oo7-daemon.service.in @@ -0,0 +1,11 @@ +[Unit] +Description=Secret service (oo7 implementation) + +[Service] +Type=simple +StandardError=journal +ExecStart=@libexecdir@/oo7-daemon +Restart=on-failure + +[Install] +WantedBy=default.target diff --git a/server/data/org.freedesktop.secrets.service.in b/server/data/org.freedesktop.secrets.service.in new file mode 100644 index 000000000..07f3c718b --- /dev/null +++ b/server/data/org.freedesktop.secrets.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.secrets +Exec=@libexecdir@/oo7-daemon diff --git a/server/meson.build b/server/meson.build new file mode 100644 index 000000000..1e13fa116 --- /dev/null +++ b/server/meson.build @@ -0,0 +1,38 @@ +project( + 'oo7-daemon', + 'rust', + version: '0.1.0', + meson_version: '>= 0.59.0', +) + +is_devel = get_option('profile') == 'development' + +prefix = get_option('prefix') +datadir = get_option('datadir') +dbus_service_dir = get_option('dbus_service_dir') +libexecdir = get_option('libexecdir') + +build_systemd_service = get_option('systemd') +systemduserunitdir = get_option('systemduserunitdir') +if systemduserunitdir == '' + systemd = dependency('systemd', version: '>= 242', required: build_systemd_service) + if build_systemd_service.allowed() and systemd.found() + systemduserunitdir = systemd.get_variable( + pkgconfig: 'systemduserunitdir', + pkgconfig_define: ['prefix', prefix] + ) + endif +endif + +libexecdir_conf = configuration_data() +libexecdir_conf.set('libexecdir', prefix / libexecdir) + +summary({ + 'prefix': prefix, + 'datadir': datadir, + 'libexecdir': libexecdir, + 'dbus_service_dir': dbus_service_dir, +}) + +subdir('data') +subdir('src') diff --git a/server/meson_options.txt b/server/meson_options.txt new file mode 100644 index 000000000..d5b481060 --- /dev/null +++ b/server/meson_options.txt @@ -0,0 +1,26 @@ +option('dbus_service_dir', + type: 'string', + description: 'Directory for D-Bus service files' +) + +option('systemd', + type: 'feature', + value: 'auto', + description: 'Enable systemd support' +) + +option('systemduserunitdir', + type: 'string', + description: 'Directory for systemd user service files' +) + +option ( + 'profile', + type: 'combo', + choices: [ + 'default', + 'development' + ], + value: 'default', + description: 'The build profile. One of "default" or "development".' +) diff --git a/server/src/meson.build b/server/src/meson.build new file mode 100644 index 000000000..a7cec560b --- /dev/null +++ b/server/src/meson.build @@ -0,0 +1,28 @@ +cargo = find_program('cargo') + +cargo_options = [] +cargo_options += [ '--target-dir', meson.project_build_root() / 'src' ] +if is_devel + rust_target = 'debug' + message('Building in debug mode') +else + cargo_options += [ '--release' ] + rust_target = 'release' + message('Building in release mode') +endif + +cargo_build = custom_target( + 'cargo-build', + build_by_default: true, + build_always_stale: true, + output: meson.project_name(), + console: true, + install: true, + install_dir: libexecdir, + command: [ + cargo, 'build', + cargo_options, + '&&', + 'cp', 'src' / rust_target / meson.project_name(), '@OUTPUT@', + ] +)