From 485d877f8d482f4c7a9a9d185ee4868ba1892732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Fri, 2 Feb 2024 13:41:37 +0100 Subject: [PATCH 1/4] meson: use a dependency object for liblastlog2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is easier to use. Signed-off-by: Thomas Weißschuh --- liblastlog2/meson.build | 8 ++++---- pam_lastlog2/meson.build | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/liblastlog2/meson.build b/liblastlog2/meson.build index c478939170..d77e556fc8 100644 --- a/liblastlog2/meson.build +++ b/liblastlog2/meson.build @@ -15,7 +15,7 @@ liblastlog2_sym_path = '@0@/@1@'.format(meson.current_source_dir(), liblastlog2_ lib_lastlog2 = both_libraries( 'lastlog2', lib_lastlog2_sources, - include_directories : [dir_include, dir_liblastlog2], + include_directories : [dir_include], link_args : ['-Wl,--version-script=@0@'.format(liblastlog2_sym_path)], link_depends : liblastlog2_sym, dependencies : [libsqlite3], @@ -50,9 +50,9 @@ if build_liblastlog2 exe = executable( test_name, 'src/tests/tst_' + lastlog2_test + '.c', - include_directories : [dir_include, dir_liblastlog2], - link_with : [lib_common, lib_lastlog2], - dependencies : libdl + include_directories : [dir_include], + link_with : [lib_common], + dependencies : [libdl, lastlog2_dep], ) # the test-setup expects the helpers in the toplevel build-directory link = meson.project_build_root() / test_name diff --git a/pam_lastlog2/meson.build b/pam_lastlog2/meson.build index e9864f3cd3..ae768dad10 100644 --- a/pam_lastlog2/meson.build +++ b/pam_lastlog2/meson.build @@ -19,11 +19,10 @@ if build_liblastlog2 'pam_lastlog2', lib_pam_lastlog2_sources, name_prefix : '', - include_directories : [dir_include, dir_liblastlog2], + include_directories : [dir_include], link_args : ['-Wl,--version-script=@0@'.format(pam_lastlog2_sym_path)], link_depends : pam_lastlog2_sym, - link_with : [lib_lastlog2], - dependencies : [libpam], + dependencies : [libpam, lastlog2_dep], install : build_liblastlog2, install_dir : pamlibdir, version : liblastlog2_version, From 9e9703709681a904da62b080e025c416fb521d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Fri, 2 Feb 2024 13:44:50 +0100 Subject: [PATCH 2/4] meson: use a dependency object for sqlite3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Weißschuh --- liblastlog2/meson.build | 4 +--- meson.build | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/liblastlog2/meson.build b/liblastlog2/meson.build index d77e556fc8..c3da5d40a0 100644 --- a/liblastlog2/meson.build +++ b/liblastlog2/meson.build @@ -7,8 +7,6 @@ lib_lastlog2_sources = ''' src/lastlog2.c '''.split() -libsqlite3 = cc.find_library('sqlite3') - liblastlog2_sym = 'src/liblastlog2.sym' liblastlog2_sym_path = '@0@/@1@'.format(meson.current_source_dir(), liblastlog2_sym) @@ -18,7 +16,7 @@ lib_lastlog2 = both_libraries( include_directories : [dir_include], link_args : ['-Wl,--version-script=@0@'.format(liblastlog2_sym_path)], link_depends : liblastlog2_sym, - dependencies : [libsqlite3], + dependencies : [lib_sqlite3], install : build_liblastlog2, version : liblastlog2_version, ) diff --git a/meson.build b/meson.build index 7bd87e6fa2..d9d29a4626 100644 --- a/meson.build +++ b/meson.build @@ -414,6 +414,8 @@ conf.set('HAVE_LIBAUDIT', lib_audit.found() ? 1 : false) conf.set('HAVE_SMACK', not get_option('smack').disabled()) +lib_sqlite3 = dependency('sqlite3', required : get_option('build-liblastlog2')) + foreach header : headers have = cc.has_header(header) conf.set('HAVE_' + header.underscorify().to_upper(), have ? 1 : false) From 6b61e282c5a5b322b4ab2927528560f108a6518e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Fri, 2 Feb 2024 13:48:28 +0100 Subject: [PATCH 3/4] meson: create dedicated config for pam_lastlog2 --- meson.build | 1 + meson_options.txt | 2 ++ pam_lastlog2/meson.build | 8 +++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index d9d29a4626..5a3806cf8e 100644 --- a/meson.build +++ b/meson.build @@ -197,6 +197,7 @@ headers = ''' security/openpam.h security/pam_appl.h security/pam_misc.h + security/pam_modules.h sys/disk.h sys/disklabel.h sys/endian.h diff --git a/meson_options.txt b/meson_options.txt index b3cdc2dd3e..fe2ae4a41d 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -39,6 +39,8 @@ option('build-libuuid', type : 'feature', description : 'build libuuid and uuid utilities') option('build-liblastlog2', type : 'feature', description : 'build liblastlog2 and lastlog2 utilities') +option('build-pam-lastlog2', type : 'feature', + description : 'build PAM lastlog2 module') option('build-libmount', type : 'feature', description : 'build libmount') option('build-libsmartcols', type : 'feature', diff --git a/pam_lastlog2/meson.build b/pam_lastlog2/meson.build index ae768dad10..d662e1b3f2 100644 --- a/pam_lastlog2/meson.build +++ b/pam_lastlog2/meson.build @@ -1,3 +1,9 @@ +build_pam_lastlog2 = not get_option('build-pam-lastlog2') \ + .require(build_liblastlog2) \ + .require(conf.get('HAVE_SECURITY_PAM_MODULES_H').to_string() == '1') \ + .disabled() +summary('pam_lastlog2', build_pam_lastlog2 ? 'enabled' : 'disabled', section : 'components') + cc = meson.get_compiler('c') pkg = import('pkgconfig') lib_pam_lastlog2_sources = ''' @@ -9,7 +15,7 @@ if pamlibdir == '' pamlibdir = get_option('libdir') / 'security' endif -if build_liblastlog2 +if build_pam_lastlog2 pam_lastlog2_sym = 'src/pam_lastlog2.sym' pam_lastlog2_sym_path = '@0@/@1@'.format(meson.current_source_dir(), pam_lastlog2_sym) From 529c4bbe3bb8b7aff1367ca834427427610885e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Fri, 2 Feb 2024 14:40:06 +0100 Subject: [PATCH 4/4] meson: only build liblastlog when enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Weißschuh --- liblastlog2/meson.build | 44 ++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/liblastlog2/meson.build b/liblastlog2/meson.build index c3da5d40a0..d4cd4a61ee 100644 --- a/liblastlog2/meson.build +++ b/liblastlog2/meson.build @@ -10,31 +10,31 @@ lib_lastlog2_sources = ''' liblastlog2_sym = 'src/liblastlog2.sym' liblastlog2_sym_path = '@0@/@1@'.format(meson.current_source_dir(), liblastlog2_sym) -lib_lastlog2 = both_libraries( - 'lastlog2', - lib_lastlog2_sources, - include_directories : [dir_include], - link_args : ['-Wl,--version-script=@0@'.format(liblastlog2_sym_path)], - link_depends : liblastlog2_sym, - dependencies : [lib_sqlite3], - install : build_liblastlog2, - version : liblastlog2_version, -) +if build_liblastlog2 + lib_lastlog2 = both_libraries( + 'lastlog2', + lib_lastlog2_sources, + include_directories : [dir_include], + link_args : ['-Wl,--version-script=@0@'.format(liblastlog2_sym_path)], + link_depends : liblastlog2_sym, + dependencies : [lib_sqlite3], + install : build_liblastlog2, + version : liblastlog2_version, + ) -lastlog2_dep = declare_dependency(link_with: lib_lastlog2, include_directories: dir_liblastlog2) + lastlog2_dep = declare_dependency(link_with: lib_lastlog2, include_directories: dir_liblastlog2) -lastlog2_tests = [ - 'dlopen', - 'pam_lastlog2_output', - 'remove_entry', - 'rename_user', - 'write_read_user', - 'y2038_ll2_read_all', - 'y2038_sqlite3_time', -] -libdl = cc.find_library('dl') + lastlog2_tests = [ + 'dlopen', + 'pam_lastlog2_output', + 'remove_entry', + 'rename_user', + 'write_read_user', + 'y2038_ll2_read_all', + 'y2038_sqlite3_time', + ] + libdl = cc.find_library('dl') -if build_liblastlog2 pkg.generate( lib_lastlog2, description : 'library to manage last login data',