mirror of
https://gitlab.com/mishakmak/pam-fprint-grosshack.git
synced 2026-04-08 20:03:34 +02:00
build: Add meson build system
Reuse the generated dbus interface .xml files from fprintd to avoid unnecessary copies.
This commit is contained in:
committed by
Bastien Nocera
parent
5c5849dca7
commit
eb6dbb6953
1
.gitignore
vendored
1
.gitignore
vendored
@ -18,6 +18,7 @@
|
|||||||
/Makefile
|
/Makefile
|
||||||
/Makefile.in
|
/Makefile.in
|
||||||
/TAGS
|
/TAGS
|
||||||
|
/_build
|
||||||
/_libs
|
/_libs
|
||||||
/autom4te.cache
|
/autom4te.cache
|
||||||
/config.cache
|
/config.cache
|
||||||
|
|||||||
11
config.h.meson
Normal file
11
config.h.meson
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/* Define to the Gettext package name */
|
||||||
|
#mesondefine GETTEXT_PACKAGE
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#mesondefine PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Where the configuration file will be located */
|
||||||
|
#mesondefine SYSCONFDIR
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#mesondefine VERSION
|
||||||
77
data/meson.build
Normal file
77
data/meson.build
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
install_data('net.reactivated.Fprint.conf',
|
||||||
|
install_dir: dbus_conf_dir)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
configuration: configuration_data({
|
||||||
|
'LIBEXECDIR': fprintd_installdir,
|
||||||
|
}),
|
||||||
|
input: 'net.reactivated.Fprint.service.in',
|
||||||
|
output: 'net.reactivated.Fprint.service',
|
||||||
|
install: true,
|
||||||
|
install_dir: dbus_service_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
configuration: configuration_data({
|
||||||
|
'libexecdir': fprintd_installdir,
|
||||||
|
}),
|
||||||
|
input: 'fprintd.service.in',
|
||||||
|
output: 'fprintd.service',
|
||||||
|
install: true,
|
||||||
|
install_dir: systemd_unit_dir,
|
||||||
|
)
|
||||||
|
|
||||||
|
polkit_policy = 'net.reactivated.fprint.device.policy'
|
||||||
|
polkit_policy_target = custom_target(polkit_policy,
|
||||||
|
input: '@0@.in'.format(polkit_policy),
|
||||||
|
output: polkit_policy,
|
||||||
|
command: [
|
||||||
|
find_program('intltool-merge'),
|
||||||
|
'-x',
|
||||||
|
'-u',
|
||||||
|
meson.source_root() / 'po',
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@',
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: polkit_policy_directory,
|
||||||
|
)
|
||||||
|
|
||||||
|
if xmllint.found()
|
||||||
|
test(polkit_policy,
|
||||||
|
xmllint,
|
||||||
|
depends: polkit_policy_target,
|
||||||
|
args: [
|
||||||
|
'--noout',
|
||||||
|
polkit_policy_target.full_path(),
|
||||||
|
])
|
||||||
|
endif
|
||||||
|
|
||||||
|
install_data('fprintd.conf',
|
||||||
|
install_dir: sysconfdir)
|
||||||
|
|
||||||
|
if get_option('man')
|
||||||
|
manfiles = {
|
||||||
|
'fprintd': 1,
|
||||||
|
'pam_fprintd': 8,
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach man_name, man_section: manfiles
|
||||||
|
custom_target('man_' + man_name + '.' + man_section.to_string(),
|
||||||
|
input: man_name + '.pod',
|
||||||
|
output: man_name + '.' + man_section.to_string(),
|
||||||
|
command: [
|
||||||
|
pod2man,
|
||||||
|
'-c', '',
|
||||||
|
'-s', man_section.to_string(),
|
||||||
|
'-q', 'none',
|
||||||
|
'-n', man_name,
|
||||||
|
'-r', 'freedesktop',
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@',
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
install_dir: datadir / 'man' / 'man' + man_section.to_string(),
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
endif
|
||||||
28
doc/dbus/meson.build
Normal file
28
doc/dbus/meson.build
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
docbook_xml_header = custom_target('docbook_xml_header',
|
||||||
|
output: 'docbook-xml-header.xml',
|
||||||
|
command: [
|
||||||
|
'echo', '-n',
|
||||||
|
'<?xml version="1.0"?>',
|
||||||
|
'<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">',
|
||||||
|
],
|
||||||
|
capture: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
dbus_interfaces_refs = []
|
||||||
|
foreach interface_file: dbus_interfaces_files
|
||||||
|
basename = run_command('basename', interface_file.full_path(), '.xml').stdout().strip()
|
||||||
|
dbus_interfaces_refs += custom_target(basename + '_ref',
|
||||||
|
input: docbook_xml_header,
|
||||||
|
output: basename + '.ref.xml',
|
||||||
|
depends: interface_file,
|
||||||
|
capture: true,
|
||||||
|
command: [
|
||||||
|
bash, '-c',
|
||||||
|
'cat @INPUT@;' +
|
||||||
|
xsltproc.path() + ' @0@/@1@ '.format(
|
||||||
|
meson.source_root(),
|
||||||
|
files('spec-to-docbook.xsl')[0]) +
|
||||||
|
interface_file.full_path() + '| tail -n +2;',
|
||||||
|
],
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
27
doc/meson.build
Normal file
27
doc/meson.build
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
subdir('dbus')
|
||||||
|
|
||||||
|
version_file = configure_file(
|
||||||
|
input: 'version.xml.in',
|
||||||
|
output: 'version.xml',
|
||||||
|
configuration: configuration_data({
|
||||||
|
'VERSION': meson.project_version(),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
gnome.gtkdoc(meson.project_name(),
|
||||||
|
main_xml: 'fprintd-docs.xml',
|
||||||
|
src_dir: meson.source_root() / 'src',
|
||||||
|
dependencies: [
|
||||||
|
declare_dependency(
|
||||||
|
sources: dbus_interfaces_refs,
|
||||||
|
link_with: libfprintd_private,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
content_files: [
|
||||||
|
version_file,
|
||||||
|
dbus_interfaces_refs,
|
||||||
|
],
|
||||||
|
ignore_headers: [
|
||||||
|
'config.h',
|
||||||
|
],
|
||||||
|
install: true)
|
||||||
159
meson.build
Normal file
159
meson.build
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
project('fprintd', 'c',
|
||||||
|
version: '1.90.0',
|
||||||
|
license: 'GPLv2+',
|
||||||
|
default_options: [
|
||||||
|
'buildtype=debugoptimized',
|
||||||
|
'warning_level=1',
|
||||||
|
'c_std=gnu99',
|
||||||
|
],
|
||||||
|
meson_version: '>= 0.50.0')
|
||||||
|
|
||||||
|
gnome = import('gnome')
|
||||||
|
i18n = import('i18n')
|
||||||
|
|
||||||
|
cc = meson.get_compiler('c')
|
||||||
|
host_system = host_machine.system()
|
||||||
|
glib_min_version = '2.56'
|
||||||
|
libfprint_min_version = '1.90.0'
|
||||||
|
|
||||||
|
fprintd_installdir = get_option('prefix') / get_option('libexecdir')
|
||||||
|
fprintd_plugindir = get_option('prefix') / get_option('libdir') / meson.project_name() / 'modules'
|
||||||
|
storage_path = get_option('prefix') / get_option('localstatedir') / 'lib/fprint'
|
||||||
|
localedir = get_option('prefix') / get_option('localedir')
|
||||||
|
datadir = get_option('prefix') / get_option('datadir')
|
||||||
|
sysconfdir = get_option('sysconfdir')
|
||||||
|
if get_option('prefix') != '/usr'
|
||||||
|
sysconfdir = get_option('prefix') / sysconfdir
|
||||||
|
endif
|
||||||
|
|
||||||
|
common_cflags = cc.get_supported_arguments([
|
||||||
|
'-fno-strict-aliasing',
|
||||||
|
'-Wall',
|
||||||
|
'-Wcast-align',
|
||||||
|
'-Werror=address',
|
||||||
|
'-Werror=array-bounds',
|
||||||
|
'-Werror=empty-body',
|
||||||
|
'-Werror=implicit',
|
||||||
|
'-Werror=init-self',
|
||||||
|
'-Werror=int-to-pointer-cast',
|
||||||
|
'-Werror=main',
|
||||||
|
'-Werror=missing-braces',
|
||||||
|
'-Werror=nonnull',
|
||||||
|
'-Werror=pointer-to-int-cast',
|
||||||
|
'-Werror=return-type',
|
||||||
|
'-Werror=sequence-point',
|
||||||
|
'-Werror=trigraphs',
|
||||||
|
'-Werror=write-strings',
|
||||||
|
'-Wformat-nonliteral',
|
||||||
|
'-Wformat-security',
|
||||||
|
'-Wformat=2',
|
||||||
|
'-Wignored-qualifiers',
|
||||||
|
'-Wimplicit-function-declaration',
|
||||||
|
'-Wlogical-op',
|
||||||
|
'-Wmissing-declarations',
|
||||||
|
'-Wmissing-format-attribute',
|
||||||
|
'-Wmissing-include-dirs',
|
||||||
|
'-Wmissing-noreturn',
|
||||||
|
'-Wmissing-prototypes',
|
||||||
|
'-Wnested-externs',
|
||||||
|
'-Wold-style-definition',
|
||||||
|
'-Wpointer-arith',
|
||||||
|
'-Wshadow',
|
||||||
|
'-Wstrict-prototypes',
|
||||||
|
'-Wtype-limits',
|
||||||
|
'-Wundef',
|
||||||
|
'-Wunused',
|
||||||
|
])
|
||||||
|
add_project_arguments(common_cflags, language: 'c')
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version)
|
||||||
|
gio_dep = dependency('gio-2.0', version: '>=' + glib_min_version)
|
||||||
|
gmodule_dep = dependency('gmodule-2.0', version: '>=' + glib_min_version)
|
||||||
|
libfprint_dep = dependency('libfprint-2', version: '>=' + libfprint_min_version)
|
||||||
|
polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.91')
|
||||||
|
dbus_dep = dependency('dbus-1', required: false)
|
||||||
|
dbus_glib_dep = dependency('dbus-glib-1')
|
||||||
|
libsystemd_dep = dependency('libsystemd', required: get_option('pam'))
|
||||||
|
pam_dep = cc.find_library('pam',
|
||||||
|
required: get_option('pam'),
|
||||||
|
has_headers: 'security/pam_modules.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
pod2man = find_program('pod2man', required: get_option('man'))
|
||||||
|
xsltproc = find_program('xsltproc', required: get_option('gtk_doc'))
|
||||||
|
|
||||||
|
# StateDirectory was introduced in systemd 235
|
||||||
|
systemd_dep = dependency('systemd', version: '>= 235')
|
||||||
|
systemd_unit_dir = get_option('systemd_system_unit_dir')
|
||||||
|
|
||||||
|
if systemd_unit_dir == ''
|
||||||
|
systemd_unit_dir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
|
||||||
|
endif
|
||||||
|
|
||||||
|
dbus_service_dir = get_option('dbus_service_dir')
|
||||||
|
dbus_data_dir = datadir
|
||||||
|
dbus_interfaces_dir = ''
|
||||||
|
|
||||||
|
if dbus_dep.found()
|
||||||
|
if dbus_service_dir == ''
|
||||||
|
dbus_service_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir')
|
||||||
|
endif
|
||||||
|
dbus_interfaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir')
|
||||||
|
dbus_data_dir = dbus_dep.get_pkgconfig_variable('datadir')
|
||||||
|
endif
|
||||||
|
|
||||||
|
dbus_conf_dir = dbus_data_dir / 'dbus-1/system.d'
|
||||||
|
|
||||||
|
if dbus_service_dir == ''
|
||||||
|
dbus_service_dir = datadir / 'dbus-1/system-services'
|
||||||
|
endif
|
||||||
|
if dbus_interfaces_dir == ''
|
||||||
|
dbus_interfaces_dir = datadir / 'dbus-1/interfaces'
|
||||||
|
endif
|
||||||
|
|
||||||
|
polkit_policy_directory = polkit_gobject_dep.get_pkgconfig_variable('policydir')
|
||||||
|
|
||||||
|
# Tests dependencies
|
||||||
|
pam_wrapper_dep = dependency('pam_wrapper', required: get_option('pam'))
|
||||||
|
|
||||||
|
xmllint = find_program('xmllint', required: false)
|
||||||
|
python3 = find_program('python3') # No meson without it!
|
||||||
|
python3_test_modules = {
|
||||||
|
'cairo': true,
|
||||||
|
'dbus': true,
|
||||||
|
'dbusmock': true,
|
||||||
|
'gi': true,
|
||||||
|
'pypamtest': get_option('pam'),
|
||||||
|
}
|
||||||
|
python3_available_modules = []
|
||||||
|
|
||||||
|
foreach module, required : python3_test_modules
|
||||||
|
if required and run_command(python3, '-c', 'import @0@'.format(module)).returncode() != 0
|
||||||
|
error('Python3 module \'' + module + '\' required by test suite not found')
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
cdata = configuration_data()
|
||||||
|
cdata.set_quoted('GETTEXT_PACKAGE', meson.project_name())
|
||||||
|
cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||||
|
cdata.set_quoted('VERSION', meson.project_version())
|
||||||
|
cdata.set_quoted('SYSCONFDIR', sysconfdir)
|
||||||
|
|
||||||
|
config_h = configure_file(
|
||||||
|
input: 'config.h.meson',
|
||||||
|
output: 'config.h',
|
||||||
|
configuration: cdata
|
||||||
|
)
|
||||||
|
|
||||||
|
subdir('src')
|
||||||
|
subdir('data')
|
||||||
|
subdir('utils')
|
||||||
|
if get_option('pam')
|
||||||
|
subdir('pam')
|
||||||
|
endif
|
||||||
|
if get_option('gtk_doc')
|
||||||
|
subdir('doc')
|
||||||
|
endif
|
||||||
|
subdir('tests')
|
||||||
|
subdir('po')
|
||||||
18
meson_options.txt
Normal file
18
meson_options.txt
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
option('pam',
|
||||||
|
description: 'Build the fprintd PAM module',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true)
|
||||||
|
option('man',
|
||||||
|
description: 'Generate the man files',
|
||||||
|
type: 'boolean',
|
||||||
|
value: true)
|
||||||
|
option('systemd_system_unit_dir',
|
||||||
|
description: 'Directory for systemd service files',
|
||||||
|
type: 'string')
|
||||||
|
option('dbus_service_dir',
|
||||||
|
description: 'Directory for dbus service files',
|
||||||
|
type: 'string')
|
||||||
|
option('gtk_doc',
|
||||||
|
type: 'boolean',
|
||||||
|
value: false,
|
||||||
|
description: 'Use gtk-doc to build documentation')
|
||||||
27
pam/meson.build
Normal file
27
pam/meson.build
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
mapfile = files('pam_fprintd.ver')
|
||||||
|
pam_modules_dir = '/' + get_option('libdir') / 'security'
|
||||||
|
|
||||||
|
pam_fprintd = shared_module('pam_fprintd',
|
||||||
|
name_prefix: '',
|
||||||
|
include_directories: [
|
||||||
|
include_directories('..'),
|
||||||
|
],
|
||||||
|
sources: [
|
||||||
|
'pam_fprintd.c',
|
||||||
|
'fingerprint-strings.h',
|
||||||
|
],
|
||||||
|
dependencies: [
|
||||||
|
libsystemd_dep,
|
||||||
|
pam_dep,
|
||||||
|
],
|
||||||
|
c_args: [
|
||||||
|
'-DLOCALEDIR="@0@"'.format(localedir),
|
||||||
|
],
|
||||||
|
link_args: [
|
||||||
|
'-Wl,--version-script,@0@/@1@'.format(meson.source_root(), mapfile[0]),
|
||||||
|
'-Wl,--unresolved-symbols=report-all',
|
||||||
|
],
|
||||||
|
link_depends: mapfile,
|
||||||
|
install: true,
|
||||||
|
install_dir: pam_modules_dir,
|
||||||
|
)
|
||||||
6
pam/pam_fprintd.ver
Normal file
6
pam/pam_fprintd.ver
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
global:
|
||||||
|
pam_*;
|
||||||
|
local:
|
||||||
|
*;
|
||||||
|
};
|
||||||
1
po/meson.build
Normal file
1
po/meson.build
Normal file
@ -0,0 +1 @@
|
|||||||
|
i18n.gettext(meson.project_name(), preset: 'glib')
|
||||||
81
src/meson.build
Normal file
81
src/meson.build
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
fprintd_marshal = gnome.genmarshal('fprintd-marshal',
|
||||||
|
prefix: 'fprintd_marshal',
|
||||||
|
sources: 'fprintd-marshal.list',
|
||||||
|
valist_marshallers: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
bash = find_program('bash')
|
||||||
|
dbus_binding_tool = find_program('dbus-binding-tool')
|
||||||
|
dbus_interfaces = ['Manager', 'Device']
|
||||||
|
dbus_interfaces_files = []
|
||||||
|
dbus_server_glue_sources = []
|
||||||
|
|
||||||
|
foreach interface_name: dbus_interfaces
|
||||||
|
interface = interface_name.to_lower()
|
||||||
|
interface_file = interface + '.xml'
|
||||||
|
glue_name = interface + '-dbus-glue.h'
|
||||||
|
dbus_server_glue_sources += custom_target(glue_name,
|
||||||
|
input: interface_file,
|
||||||
|
output: glue_name,
|
||||||
|
command: [
|
||||||
|
dbus_binding_tool,
|
||||||
|
'--prefix=fprint_' + interface,
|
||||||
|
'--mode=glib-server',
|
||||||
|
'--output=@OUTPUT@',
|
||||||
|
'@INPUT@',
|
||||||
|
])
|
||||||
|
|
||||||
|
dbus_interfaces_files += custom_target('dbus_interface_' + interface,
|
||||||
|
input: interface_file,
|
||||||
|
output: 'net.reactivated.Fprint.@0@.xml'.format(interface_name),
|
||||||
|
command: ['cp', '@INPUT@', '@OUTPUT@'],
|
||||||
|
install: true,
|
||||||
|
install_dir: dbus_interfaces_dir,
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
fprintd_deps = declare_dependency(
|
||||||
|
include_directories: [
|
||||||
|
include_directories('..'),
|
||||||
|
],
|
||||||
|
dependencies: [
|
||||||
|
dbus_glib_dep,
|
||||||
|
glib_dep,
|
||||||
|
gio_dep,
|
||||||
|
gmodule_dep,
|
||||||
|
libfprint_dep,
|
||||||
|
polkit_gobject_dep,
|
||||||
|
],
|
||||||
|
compile_args: [
|
||||||
|
'-DG_LOG_DOMAIN="@0@"'.format(meson.project_name()),
|
||||||
|
'-DLOCALEDIR="@0@"'.format(localedir),
|
||||||
|
'-DPLUGINDIR="@0@"'.format(fprintd_plugindir),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
libfprintd_private = static_library('fprintd-private',
|
||||||
|
sources: [
|
||||||
|
'device.c',
|
||||||
|
'fprintd.h',
|
||||||
|
'manager.c',
|
||||||
|
dbus_server_glue_sources,
|
||||||
|
fprintd_marshal,
|
||||||
|
],
|
||||||
|
dependencies: fprintd_deps,
|
||||||
|
gnu_symbol_visibility: 'hidden',
|
||||||
|
)
|
||||||
|
|
||||||
|
fprintd = executable('fprintd',
|
||||||
|
sources: [
|
||||||
|
'file_storage.c',
|
||||||
|
'file_storage.h',
|
||||||
|
'fprintd.h',
|
||||||
|
'main.c',
|
||||||
|
'storage.h',
|
||||||
|
],
|
||||||
|
dependencies: fprintd_deps,
|
||||||
|
link_with: libfprintd_private,
|
||||||
|
gnu_symbol_visibility: 'hidden',
|
||||||
|
install: true,
|
||||||
|
install_dir: fprintd_installdir,
|
||||||
|
)
|
||||||
46
tests/meson.build
Normal file
46
tests/meson.build
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
tests = [
|
||||||
|
'fprintd',
|
||||||
|
'test_fprintd_utils',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach t: tests
|
||||||
|
test(t,
|
||||||
|
python3,
|
||||||
|
args: meson.current_source_dir() / t + '.py',
|
||||||
|
suite: ['daemon'],
|
||||||
|
depends: [
|
||||||
|
fprintd,
|
||||||
|
fprintd_utils,
|
||||||
|
],
|
||||||
|
env: [
|
||||||
|
'G_DEBUG=fatal-criticals',
|
||||||
|
'FPRINT_BUILD_DIR=' + meson.build_root() / 'src',
|
||||||
|
'TOPSRCDIR=' + meson.source_root(),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
add_test_setup('default_setup',
|
||||||
|
is_default: true,
|
||||||
|
env: [
|
||||||
|
'G_SLICE=always-malloc',
|
||||||
|
'MALLOC_CHECK_=2',
|
||||||
|
'MALLOC_PERTURB_=55',
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
if find_program('valgrind', required: false).found()
|
||||||
|
glib_share = glib_dep.get_pkgconfig_variable('prefix') / 'share' / glib_dep.name()
|
||||||
|
glib_suppressions = glib_share + '/valgrind/glib.supp'
|
||||||
|
add_test_setup('valgrind',
|
||||||
|
env: [
|
||||||
|
'G_SLICE=always-malloc',
|
||||||
|
'VALGRIND=' + glib_suppressions,
|
||||||
|
],
|
||||||
|
timeout_multiplier: 5
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get_option('pam')
|
||||||
|
subdir('pam')
|
||||||
|
endif
|
||||||
26
tests/pam/meson.build
Normal file
26
tests/pam/meson.build
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
subdir('services')
|
||||||
|
|
||||||
|
tests = [
|
||||||
|
'test_pam_fprintd',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach t: tests
|
||||||
|
test(t,
|
||||||
|
python3,
|
||||||
|
args: meson.current_source_dir() / t + '.py',
|
||||||
|
suite: ['PAM'],
|
||||||
|
depends: [
|
||||||
|
pam_fprintd,
|
||||||
|
pam_service_file,
|
||||||
|
],
|
||||||
|
env: [
|
||||||
|
'TOPBUILDDIR=' + meson.build_root(),
|
||||||
|
'TOPSRCDIR=' + meson.source_root(),
|
||||||
|
'LD_PRELOAD=libpam_wrapper.so',
|
||||||
|
'PAM_WRAPPER=1',
|
||||||
|
'PAM_WRAPPER_SERVICE_DIR=' + meson.current_build_dir() / 'services',
|
||||||
|
'G_DEBUG=fatal-warnings',
|
||||||
|
],
|
||||||
|
timeout: 60,
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
13
tests/pam/services/meson.build
Normal file
13
tests/pam/services/meson.build
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Meson doesn't allow to have configure_file's as targets we depend on... Meh!
|
||||||
|
pam_service_file = custom_target('pam_test_service_file',
|
||||||
|
output: 'null',
|
||||||
|
command: 'true',
|
||||||
|
depends: pam_fprintd,
|
||||||
|
depend_files: configure_file(
|
||||||
|
input: 'fprintd-pam-test.in',
|
||||||
|
output: 'fprintd-pam-test',
|
||||||
|
configuration: configuration_data({
|
||||||
|
'FPRINTDPAMPATH': pam_fprintd.full_path(),
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
@ -163,7 +163,7 @@ class TestPamFprintd(dbusmock.DBusTestCase):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if 'PAM_WRAPPER_SERVICE_DIR' not in os.environ:
|
if 'PAM_WRAPPER_SERVICE_DIR' not in os.environ:
|
||||||
print('Cannot run test without environment set correctly, run "make check" instead')
|
print('Cannot run test without environment set correctly, run "meson test" instead')
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
# set stream to sys.stderr to get debug output
|
# set stream to sys.stderr to get debug output
|
||||||
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=2))
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=2))
|
||||||
|
|||||||
67
utils/meson.build
Normal file
67
utils/meson.build
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
dbus_client_glue_sources = []
|
||||||
|
|
||||||
|
foreach interface_name: dbus_interfaces
|
||||||
|
interface = interface_name.to_lower()
|
||||||
|
interface_file = meson.source_root() / 'src' / interface + '.xml'
|
||||||
|
glue_name = interface + '-dbus-glue.h'
|
||||||
|
dbus_client_glue_sources += custom_target(glue_name,
|
||||||
|
input: interface_file,
|
||||||
|
output: glue_name,
|
||||||
|
command: [
|
||||||
|
dbus_binding_tool,
|
||||||
|
'--prefix=fprint_' + interface,
|
||||||
|
'--mode=glib-client',
|
||||||
|
'--output=@OUTPUT@',
|
||||||
|
'@INPUT@',
|
||||||
|
])
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
utils_marshal = custom_target('utils_marshal',
|
||||||
|
depends: fprintd_marshal,
|
||||||
|
input: fprintd_marshal,
|
||||||
|
output: ['marshal.c', 'marshal.h'],
|
||||||
|
command: [bash, '-c',
|
||||||
|
'cp @INPUT0@ @OUTPUT0@;' +
|
||||||
|
'cp @INPUT1@ @OUTPUT1@;' +
|
||||||
|
'sed s/fprintd-//g -i ' + meson.current_build_dir() / 'marshal*.{h,c}']
|
||||||
|
)
|
||||||
|
|
||||||
|
libfprintd_utils_dep = declare_dependency(
|
||||||
|
include_directories: [
|
||||||
|
include_directories('../pam'),
|
||||||
|
],
|
||||||
|
dependencies: [
|
||||||
|
glib_dep,
|
||||||
|
dbus_glib_dep,
|
||||||
|
],
|
||||||
|
sources: [
|
||||||
|
utils_marshal,
|
||||||
|
dbus_client_glue_sources,
|
||||||
|
],
|
||||||
|
link_with: static_library('fprintd_utils',
|
||||||
|
sources: [
|
||||||
|
dbus_client_glue_sources,
|
||||||
|
utils_marshal,
|
||||||
|
],
|
||||||
|
dependencies: [
|
||||||
|
glib_dep,
|
||||||
|
]
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
utils = [
|
||||||
|
'delete',
|
||||||
|
'enroll',
|
||||||
|
'list',
|
||||||
|
'verify',
|
||||||
|
]
|
||||||
|
|
||||||
|
fprintd_utils = []
|
||||||
|
|
||||||
|
foreach util: utils
|
||||||
|
fprintd_utils += executable('fprintd-' + util,
|
||||||
|
sources: util + '.c',
|
||||||
|
dependencies: libfprintd_utils_dep,
|
||||||
|
install: true,
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
Reference in New Issue
Block a user