X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=Makefile.am;h=f41296b13eeb95f8f95c31e050e7ff9d7b64bd87;hp=9800c47f15bf7b412afb180c16c01e25b02028f3;hb=ca4a9be47c32d6f574f005574486a40b18d93618;hpb=5b3e932f4e40d2c5523757242e00e4f4e6ae89cd diff --git a/Makefile.am b/Makefile.am index 9800c47f1..f41296b13 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,9 +38,9 @@ SUBDIRS = . po # Keep the test-suite.log .PRECIOUS: $(TEST_SUITE_LOG) Makefile -LIBELOGIND_CURRENT=11 -LIBELOGIND_REVISION=0 -LIBELOGIND_AGE=11 +LIBELOGIND_CURRENT=18 +LIBELOGIND_REVISION=3 +LIBELOGIND_AGE=18 # Dirs of external packages dbuspolicydir=@dbuspolicydir@ @@ -50,18 +50,23 @@ pamconfdir=@pamconfdir@ pkgconfigdatadir=$(datadir)/pkgconfig pkgconfiglibdir=$(libdir)/pkgconfig polkitpolicydir=$(datadir)/polkit-1/actions +polkitrulesdir=$(datadir)/polkit-1/rules.d +polkitpkladir=$(localstatedir)/lib/polkit-1/localauthority/10-vendor.d bashcompletiondir=@bashcompletiondir@ zshcompletiondir=@zshcompletiondir@ -systemsleepdir=$(pkglibexecdir)/sleep.d -systemshutdowndir=$(pkglibexecdir)/shutdown.d + +CGROUP_CONTROLLER=@cgroup_controller@ +PKTTYAGENT=$(bindir)/pkttyagent # Our own, non-special dirs pkgsysconfdir=$(sysconfdir)/elogind -pkgincludedir=$(includedir)/elogind +pkgincludedir=$(includedir)/elogind/systemd udevrulesdir=@udevrulesdir@ udevbindir=@udevbindir@ udevlibexecdir=$(udevbindir) udevhomedir=$(udevlibexecdir) +systemshutdowndir=$(rootlibexecdir)/system-shutdown +systemsleepdir=$(rootlibexecdir)/system-sleep factory_pamdir = $(datadir)/factory/etc/pam.d # And these are the special ones for / @@ -73,8 +78,6 @@ EXTRA_DIST = BUILT_SOURCES = INSTALL_EXEC_HOOKS = UNINSTALL_EXEC_HOOKS = -INSTALL_DATA_HOOKS = -UNINSTALL_DATA_HOOKS = DISTCLEAN_LOCAL_HOOKS = CLEAN_LOCAL_HOOKS = pkginclude_HEADERS = @@ -84,23 +87,40 @@ noinst_DATA = pkgconfiglib_DATA = polkitpolicy_in_files = polkitpolicy_files = +polkitrules_files = +polkitpkla_files = dist_udevrules_DATA = nodist_udevrules_DATA = dist_pkgsysconf_DATA = +nodist_pkgsysconf_DATA = dist_dbuspolicy_DATA = dist_dbussystemservice_DATA = check_PROGRAMS = check_DATA = +dist_rootlibexec_DATA = +rootlib_LTLIBRARIES = tests= manual_tests = +TEST_DATA_FILES = if ENABLE_TESTS -noinst_PROGRAMS = $(manual_tests) $(tests) +noinst_PROGRAMS = $(manual_tests) $(tests) $(unsafe_tests) TESTS = $(tests) +if ENABLE_UNSAFE_TESTS +TESTS += \ + $(unsafe_tests) +endif else noinst_PROGRAMS = TESTS = endif +if ENABLE_BASH_COMPLETION +dist_bashcompletion_DATA = $(dist_bashcompletion_data) +endif +if ENABLE_ZSH_COMPLETION +dist_zshcompletion_DATA = $(dist_zshcompletion_data) +endif + in_files = $(filter %.in,$(EXTRA_DIST)) in_in_files = $(filter %.in.in, $(in_files)) m4_files = $(filter %.m4,$(EXTRA_DIST) $(in_files:.m4.in=.m4)) @@ -111,16 +131,18 @@ CLEANFILES = $(BUILT_SOURCES) \ $(m4_files:.m4=) .PHONY: $(INSTALL_EXEC_HOOKS) $(UNINSTALL_EXEC_HOOKS) \ - $(INSTALL_DATA_HOOKS) $(UNINSTALL_DATA_HOOKS) \ $(DISTCLEAN_LOCAL_HOOKS) $(CLEAN_LOCAL_HOOKS) AM_CPPFLAGS = \ -include $(top_builddir)/config.h \ -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \ - -DELOGIND_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/elogind-cgroups-agent\" \ - -DROOTPREFIX=\"$(rootprefix)\" \ + -DSYSTEMD_CGROUP_CONTROLLER=\"_$(CGROUP_CONTROLLER)\" \ + -DSYSTEMD_CGROUP_CONTROLLER_LEGACY=\"name=$(CGROUP_CONTROLLER)\" \ + -DSYSTEMD_CGROUP_CONTROLLER_HYBRID=\"name=$(CGROUP_CONTROLLER)\" \ + -DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/elogind-cgroups-agent\" \ + -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/elogind\" \ -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \ - -DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \ + -DPOLKIT_AGENT_BINARY_PATH=\"$(PKTTYAGENT)\" \ -DSYSTEM_SLEEP_PATH=\"$(systemsleepdir)\" \ -DSYSTEM_SHUTDOWN_PATH=\"$(systemshutdowndir)\" \ -DHALT=\"$(HALT)\" \ @@ -141,22 +163,17 @@ AM_CPPFLAGS = \ -I $(top_srcdir)/src/libelogind/sd-bus \ -I $(top_srcdir)/src/libelogind/sd-event \ -I $(top_srcdir)/src/libelogind/sd-login \ + -I $(top_srcdir)/src/libelogind/sd-id128 \ + -I $(top_srcdir)/src/update-utmp \ + -I $(top_srcdir)/src/sleep \ + -DABS_SRC_DIR=\"$(abs_top_srcdir)\" \ + -DABS_BUILD_DIR=\"$(abs_top_builddir)\" \ $(OUR_CPPFLAGS) AM_CFLAGS = $(OUR_CFLAGS) AM_LDFLAGS = $(OUR_LDFLAGS) # ------------------------------------------------------------------------------ -define move-to-rootlibdir - if test "$(libdir)" != "$(rootlibdir)"; then \ - $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ - so_img_name=$$(readlink $(DESTDIR)$(libdir)/$$libname) && \ - rm -f $(DESTDIR)$(libdir)/$$libname && \ - $(LN_S) --relative -f $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \ - mv $(DESTDIR)$(libdir)/$$libname.* $(DESTDIR)$(rootlibdir); \ - fi -endef - install-touch-usr-hook: touch -c $(DESTDIR)/$(prefix) @@ -187,8 +204,11 @@ AM_V_RM_0 = @echo " RM " $@; # ------------------------------------------------------------------------------ rootbin_PROGRAMS = -bin_PROGRAMS = -rootlibexec_PROGRAMS = +rootlibexec_PROGRAMS = \ + elogind \ + elogind-cgroups-agent + +pkglibexec_PROGRAMS = dist_doc_DATA = \ README \ @@ -222,70 +242,65 @@ man_MANS = \ noinst_DATA += \ $(HTML_FILES) \ - $(HTML_ALIAS) + $(HTML_ALIAS) \ + docs/html/man +endif CLEANFILES += \ $(man_MANS) \ $(HTML_FILES) \ - $(HTML_ALIAS) + $(HTML_ALIAS) \ + docs/html/man docs/html/man: $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_LN)$(LN_S) -f ../../man $@ -noinst_DATA += \ - docs/html/man - -CLEANFILES += \ - docs/html/man - -if HAVE_PYTHON man/index.html: man/elogind.index.html $(AM_V_LN)$(LN_S) -f elogind.index.html $@ +if HAVE_PYTHON noinst_DATA += \ man/index.html +endif CLEANFILES += \ man/index.html -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) -NON_INDEX_XML_FILES = $(filter-out man/elogind.index.xml,$(XML_FILES)) -SOURCE_XML_FILES = ${patsubst %,$(top_srcdir)/%,$(filter-out man/elogind.directives.xml,$(NON_INDEX_XML_FILES))} +XML_GLOB := $(wildcard $(top_srcdir)/man/*.xml) +DIRECTIVE_FILE := man/elogind.directives.xml +INDEX_XML_FILE := man/elogind.index.xml +NON_INDEX_XML_FILES := $(DIRECTIVE_FILE) $(filter-out $(INDEX_XML_FILE) $(DIRECTIVE_FILE),$(XML_FILES)) +ALL_XML_FILES := $(INDEX_XML_FILE) $(DIRECTIVE_FILE) $(filter-out $(INDEX_XML_FILE) $(DIRECTIVE_FILE),$(XML_GLOB)) +SOURCE_XML_FILES := ${patsubst %,$(top_srcdir)/%,$(filter-out $(DIRECTIVE_FILE),$(NON_INDEX_XML_FILES))} # This target should only be run manually. It recreates Makefile-man.am # file in the source directory based on all man/*.xml files. Run it after # adding, removing, or changing the conditional in a man page. -update-man-list: $(top_srcdir)/tools/make-man-rules.py $(XML_GLOB) - $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp +update-man-list: $(top_srcdir)/tools/make-man-rules.py $(ALL_XML_FILES) man/custom-entities.ent + $(AM_V_GEN)$(PYTHON) $< $(ALL_XML_FILES) > $(top_srcdir)/Makefile-man.tmp $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am - @echo "Makefile-man.am has been regenerated" + @echo "Makefile-man.am has been regenerated" -man/elogind.index.xml: $(top_srcdir)/tools/make-man-index.py $(NON_INDEX_XML_FILES) +$(INDEX_XML_FILE): $(top_srcdir)/tools/make-man-index.py $(NON_INDEX_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $< $@ $(filter-out $<,$^) -man/elogind.directives.xml: $(top_srcdir)/tools/make-directive-index.py man/custom-entities.ent $(SOURCE_XML_FILES) +$(DIRECTIVE_FILE): $(top_srcdir)/tools/make-directive-index.py man/custom-entities.ent $(SOURCE_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $< $@ $(SOURCE_XML_FILES) CLEANFILES += \ - man/elogind.index.xml \ - man/elogind.directives.xml + $(INDEX_XML_FILE) \ + $(DIRECTIVE_FILE) EXTRA_DIST += \ - tools/make-man-rules.py - -endif - -endif - -EXTRA_DIST += \ - $(filter-out man/elogind.directives.xml,$(XML_FILES)) \ - $(HTML_FILES) \ - $(HTML_ALIAS) \ - $(man_MANS) \ - $(NULL) + $(filter-out $(DIRECTIVE_FILE) $(INDEX_XML_FILE),$(XML_FILES)) \ + tools/make-man-index.py \ + tools/make-man-rules.py \ + tools/make-directive-index.py \ + tools/xml_helper.py \ + man/glib-event-glue.c # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ @@ -293,36 +308,81 @@ noinst_LTLIBRARIES += \ libbasic_la_SOURCES = \ src/basic/missing.h \ - src/basic/capability.c \ - src/basic/capability.h \ + src/basic/capability-util.c \ + src/basic/capability-util.h \ src/basic/conf-files.c \ src/basic/conf-files.h \ + src/basic/stdio-util.h \ src/basic/hostname-util.h \ src/basic/hostname-util.c \ src/basic/unit-name.c \ src/basic/unit-name.h \ + src/basic/unaligned.h \ src/basic/util.c \ src/basic/util.h \ + src/basic/io-util.c \ + src/basic/io-util.h \ + src/basic/string-util.c \ + src/basic/string-util.h \ + src/basic/parse-util.c \ + src/basic/parse-util.h \ + src/basic/fd-util.c \ + src/basic/fd-util.h \ + src/basic/user-util.c \ + src/basic/user-util.h \ + src/basic/dirent-util.c \ + src/basic/dirent-util.h \ + src/basic/xattr-util.c \ + src/basic/xattr-util.h \ + src/basic/proc-cmdline.c \ + src/basic/proc-cmdline.h \ + src/basic/fs-util.c \ + src/basic/fs-util.h \ + src/basic/syslog-util.c \ + src/basic/syslog-util.h \ + src/basic/stat-util.c \ + src/basic/stat-util.h \ + src/basic/mount-util.c \ + src/basic/mount-util.h \ + src/basic/hexdecoct.c \ + src/basic/hexdecoct.h \ + src/basic/extract-word.c \ + src/basic/extract-word.h \ + src/basic/escape.c \ + src/basic/escape.h \ src/basic/path-util.c \ src/basic/path-util.h \ + src/basic/parse-printf-format.c \ + src/basic/parse-printf-format.h \ src/basic/time-util.c \ src/basic/time-util.h \ + src/basic/locale-util.c \ + src/basic/locale-util.h \ + src/basic/umask-util.h \ src/basic/signal-util.c \ src/basic/signal-util.h \ + src/basic/string-table.c \ + src/basic/string-table.h \ src/basic/mempool.c \ src/basic/mempool.h \ src/basic/hashmap.c \ src/basic/hashmap.h \ + src/basic/hash-funcs.c \ + src/basic/hash-funcs.h \ src/basic/siphash24.c \ src/basic/siphash24.h \ src/basic/prioq.c \ src/basic/prioq.h \ src/basic/strv.c \ src/basic/strv.h \ + src/basic/env-util.c \ + src/basic/env-util.h \ src/basic/log.c \ src/basic/log.h \ src/basic/bus-label.c \ src/basic/bus-label.h \ + src/basic/exec-util.c \ + src/basic/exec-util.h \ src/basic/virt.c \ src/basic/virt.h \ src/basic/smack-util.c \ @@ -331,6 +391,8 @@ libbasic_la_SOURCES = \ src/basic/utf8.h \ src/basic/gunicode.c \ src/basic/gunicode.h \ + src/basic/socket-util.c \ + src/basic/socket-util.h \ src/basic/fileio.c \ src/basic/fileio.h \ src/basic/mkdir.c \ @@ -343,8 +405,8 @@ libbasic_la_SOURCES = \ src/basic/terminal-util.h \ src/basic/login-util.h \ src/basic/login-util.c \ - src/basic/audit.c \ - src/basic/audit.h \ + src/basic/audit-util.c \ + src/basic/audit-util.h \ src/basic/memfd-util.c \ src/basic/memfd-util.h \ src/basic/process-util.c \ @@ -363,7 +425,12 @@ libbasic_la_SOURCES = \ src/basic/rm-rf.c \ src/basic/rm-rf.h \ src/basic/copy.c \ - src/basic/copy.h + src/basic/copy.h \ + src/basic/alloc-util.h \ + src/basic/alloc-util.c \ + src/basic/format-util.h \ + src/basic/khash.h \ + src/basic/khash.c nodist_libbasic_la_SOURCES = \ src/basic/errno-from-name.h \ @@ -375,6 +442,9 @@ libbasic_la_CFLAGS = \ $(CAP_CFLAGS) \ -pthread +libbasic_la_LDFLAGS = \ + $(CAP_LDFLAGS) + libbasic_la_LIBADD = \ $(SELINUX_LIBS) \ $(CAP_LIBS) \ @@ -386,21 +456,26 @@ noinst_LTLIBRARIES += \ libshared.la libshared_la_SOURCES = \ - src/shared/sleep-config.c \ - src/shared/sleep-config.h \ + src/shared/udev-util.h \ + src/shared/udev-util.c \ + src/shared/bus-util.c \ + src/shared/bus-util.h \ + src/shared/clean-ipc.c \ + src/shared/clean-ipc.h \ src/shared/conf-parser.c \ src/shared/conf-parser.h \ + src/shared/musl_missing.h \ + src/shared/musl_missing.c \ src/shared/pager.c \ src/shared/pager.h \ + src/shared/sleep-config.c \ + src/shared/sleep-config.h \ src/shared/spawn-polkit-agent.c \ src/shared/spawn-polkit-agent.h \ - src/shared/clean-ipc.c \ - src/shared/clean-ipc.h \ - src/shared/cgroup-show.c \ - src/shared/cgroup-show.h \ - src/shared/utmp-wtmp.h \ - src/shared/bus-util.c \ - src/shared/bus-util.h + src/shared/tests.h \ + src/shared/tests.c \ + src/shared/nsflags.h \ + src/shared/nsflags.c if HAVE_ACL libshared_la_SOURCES += \ @@ -414,9 +489,43 @@ libshared_la_CFLAGS = \ libshared_la_LIBADD = \ libelogind-internal.la \ + libbasic.la \ $(UDEV_LIBS) \ $(ACL_LIBS) +noinst_LTLIBRARIES += \ + libelogind-shared.la + +libelogind_shared_la_SOURCES = \ + $(libbasic_la_SOURCES) \ + $(libshared_la_SOURCES) \ + $(libelogind_internal_la_SOURCES) + +libelogind_shared_la_CFLAGS = \ + $(AM_CFLAGS) \ + $(libbasic_la_CFLAGS) \ + $(libshared_la_CFLAGS) \ + $(libelogind_internal_la_CFLAGS) \ + $(libelogind_journal_internal_la_CFLAGS) \ + $(libudev_internal_la_CFLAGS) \ + $(ACL_CFLAGS) \ + $(LIBIDN_CFLAGS) \ + $(SECCOMP_CFLAGS) \ + -fvisibility=default + +# We can't use libshared_la_LIBADD here because it would +# pull in libelogind*-internal.la +libelogind_shared_la_LIBADD = \ + $(libbasic_la_LIBADD) \ + $(libelogind_internal_la_LIBADD) \ + $(UDEV_LIBS) \ + $(ACL_LIBS) \ + $(LIBIDN_LIBS) \ + $(SECCOMP_LIBS) + +libelogind_shared_la_LDFLAGS = \ + $(AM_LDFLAGS) + # ----------------------------------------------------------------------------- gperf_txt_sources = \ src/basic/errno-list.txt @@ -455,6 +564,334 @@ src/basic/errno-to-name.h: src/basic/errno-list.txt $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(AWK) 'BEGIN{ print "static const char* const errno_names[] = { "} !/EDEADLOCK/ && !/EWOULDBLOCK/ && !/ENOTSUP/ { printf "[%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' <$< >$@ +# ------------------------------------------------------------------------------ + +manual_tests += \ + test-cgroup + +unsafe_tests = \ + test-ipcrm + +tests += \ + test-log \ + test-path-util \ + test-siphash24 \ + test-utf8 \ + test-ellipsize \ + test-util \ + test-exec-util \ + test-hexdecoct \ + test-escape \ + test-alloc-util \ + test-proc-cmdline \ + test-io-util \ + test-fs-util \ + test-stat-util \ + test-fd-util \ + test-string-util \ + test-extract-word \ + test-parse-util \ + test-user-util \ + test-process-util \ + test-strip-tab-ansi \ + test-prioq \ + test-hashmap \ + test-set \ + test-list \ + test-unaligned \ + test-conf-files \ + test-conf-parser \ + test-locale-util \ + test-copy \ + test-verbs \ + test-signal-util \ + test-selinux \ + test-sizeof + +TEST_DATA_FILES += \ + test/bus-policy/hello.conf \ + test/bus-policy/methods.conf \ + test/bus-policy/ownerships.conf \ + test/bus-policy/signals.conf \ + test/bus-policy/check-own-rules.conf \ + test/bus-policy/many-rules.conf \ + test/bus-policy/test.conf + + +EXTRA_DIST += \ + src/test/test-helper.h + +test_utf8_SOURCES = \ + src/test/test-utf8.c + +test_utf8_LDADD = \ + libelogind-shared.la + +test_locale_util_SOURCES = \ + src/test/test-locale-util.c + +test_locale_util_LDADD = \ + libelogind-shared.la + +test_copy_SOURCES = \ + src/test/test-copy.c + +# Link statically to ensure file is large +test_copy_LDADD = \ + libshared.la + +test_util_SOURCES = \ + src/test/test-util.c + +test_util_LDADD = \ + libelogind-shared.la + +test_exec_util_SOURCES = \ + src/test/test-exec-util.c + +test_exec_util_LDADD = \ + libelogind-shared.la + +test_hexdecoct_SOURCES = \ + src/test/test-hexdecoct.c + +test_hexdecoct_LDADD = \ + libelogind-shared.la + +test_alloc_util_SOURCES = \ + src/test/test-alloc-util.c + +test_alloc_util_LDADD = \ + libelogind-shared.la + +test_io_util_SOURCES = \ + src/test/test-io-util.c + +test_io_util_LDADD = \ + libelogind-shared.la + +test_fs_util_SOURCES = \ + src/test/test-fs-util.c + +test_fs_util_LDADD = \ + libelogind-shared.la + +test_proc_cmdline_SOURCES = \ + src/test/test-proc-cmdline.c + +test_proc_cmdline_LDADD = \ + libelogind-shared.la + +test_fd_util_SOURCES = \ + src/test/test-fd-util.c + +test_fd_util_LDADD = \ + libelogind-shared.la + +test_stat_util_SOURCES = \ + src/test/test-stat-util.c + +test_stat_util_LDADD = \ + libelogind-shared.la + +test_escape_SOURCES = \ + src/test/test-escape.c + +test_escape_LDADD = \ + libelogind-shared.la + +test_string_util_SOURCES = \ + src/test/test-string-util.c + +test_string_util_LDADD = \ + libelogind-shared.la + +test_extract_word_SOURCES = \ + src/test/test-extract-word.c + +test_extract_word_LDADD = \ + libelogind-shared.la + +test_parse_util_SOURCES = \ + src/test/test-parse-util.c + +test_parse_util_LDADD = \ + libelogind-shared.la + +test_user_util_SOURCES = \ + src/test/test-user-util.c + +test_user_util_LDADD = \ + libelogind-shared.la + +test_process_util_SOURCES = \ + src/test/test-process-util.c + +test_process_util_LDADD = \ + libelogind-shared.la + +test_verbs_SOURCES = \ + src/test/test-verbs.c + +test_verbs_LDADD = \ + libelogind-shared.la + +test_signal_util_SOURCES = \ + src/test/test-signal-util.c + +test_signal_util_LDADD = \ + libelogind-shared.la + +test_selinux_SOURCES = \ + src/test/test-selinux.c + +test_selinux_LDADD = \ + libelogind-shared.la + +test_sizeof_SOURCES = \ + src/test/test-sizeof.c + +test_sizeof_LDADD = \ + libelogind-shared.la + +BUILT_SOURCES += \ + src/test/test-hashmap-ordered.c + +src/test/test-hashmap-ordered.c: src/test/test-hashmap-plain.c + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(AWK) 'BEGIN { print "/* GENERATED FILE */\n#define ORDERED" } \ + { if (!match($$0, "^#include")) \ + gsub(/hashmap/, "ordered_hashmap"); \ + gsub(/HASHMAP/, "ORDERED_HASHMAP"); \ + gsub(/Hashmap/, "OrderedHashmap"); \ + print }' <$< >$@ + +nodist_test_hashmap_SOURCES = \ + src/test/test-hashmap-ordered.c + +test_hashmap_SOURCES = \ + src/test/test-hashmap.c \ + src/test/test-hashmap-plain.c + +test_hashmap_LDADD = \ + libelogind-shared.la + +test_set_SOURCES = \ + src/test/test-set.c + +test_set_LDADD = \ + libelogind-shared.la + +test_list_SOURCES = \ + src/test/test-list.c + +test_list_LDADD = \ + libelogind-shared.la + +test_unaligned_LDADD = \ + libelogind-shared.la + +test_unaligned_SOURCES = \ + src/test/test-unaligned.c + +test_prioq_SOURCES = \ + src/test/test-prioq.c + +test_prioq_LDADD = \ + libelogind-shared.la + +test_log_SOURCES = \ + src/test/test-log.c + +test_log_LDADD = \ + libelogind-shared.la + +test_ipcrm_SOURCES = \ + src/test/test-ipcrm.c + +test_ipcrm_LDADD = \ + libelogind-shared.la + +test_ellipsize_SOURCES = \ + src/test/test-ellipsize.c + +test_ellipsize_LDADD = \ + libelogind-shared.la + +test_strip_tab_ansi_SOURCES = \ + src/test/test-strip-tab-ansi.c + +test_strip_tab_ansi_LDADD = \ + libelogind-shared.la + +test_cgroup_SOURCES = \ + src/test/test-cgroup.c + +test_cgroup_LDADD = \ + libelogind-shared.la + +test_path_util_SOURCES = \ + src/test/test-path-util.c + +test_path_util_LDADD = \ + libelogind-shared.la + +test_siphash24_SOURCES = \ + src/test/test-siphash24.c + +test_siphash24_LDADD = \ + libelogind-shared.la + +test_conf_files_SOURCES = \ + src/test/test-conf-files.c + +test_conf_files_LDADD = \ + libelogind-shared.la + +test_conf_parser_SOURCES = \ + src/test/test-conf-parser.c + +test_conf_parser_LDADD = \ + libelogind-shared.la + +# ------------------------------------------------------------------------------ +## .PHONY so it always rebuilds it +.PHONY: coverage lcov-run lcov-report coverage-sync + +# run lcov from scratch, always +coverage: all + $(MAKE) lcov-run + $(MAKE) lcov-report + +coverage_dir = coverage +coverage_opts = --base-directory $(srcdir) --directory $(builddir) --rc 'geninfo_adjust_src_path=$(abspath $(srcdir))=>$(abspath $(builddir))' + +if ENABLE_COVERAGE +# reset run coverage tests +lcov-run: + @rm -rf $(coverage_dir) + lcov $(coverage_opts) --zerocounters + -$(MAKE) check + +# generate report based on current coverage data +lcov-report: + $(MKDIR_P) $(coverage_dir) + lcov $(coverage_opts) --compat-libtool --capture --no-external \ + | sed 's|$(abspath $(builddir))|$(abspath $(srcdir))|' > $(coverage_dir)/.lcov.info + lcov --remove $(coverage_dir)/.lcov.info --output-file $(coverage_dir)/.lcov-clean.info 'test-*' + genhtml -t "systemd test coverage" -o $(coverage_dir) $(coverage_dir)/.lcov-clean.info + @echo "Coverage report generated in $(abs_builddir)/$(coverage_dir)/index.html" + +# lcov doesn't work properly with vpath builds, make sure that bad +# output is not uploaded by mistake. +coverage-sync: coverage + test "$(builddir)" = "$(srcdir)" + rsync -rlv --delete --omit-dir-times coverage/ $(www_target)/coverage + +else +lcov-run lcov-report: + echo "Need to reconfigure with --enable-coverage" +endif # ------------------------------------------------------------------------------ @@ -465,14 +902,14 @@ dist_factory_pam_DATA = \ endif # ------------------------------------------------------------------------------ -rootlibexec_PROGRAMS += \ +pkglibexec_PROGRAMS += \ elogind-cgroups-agent elogind_cgroups_agent_SOURCES = \ src/cgroups-agent/cgroups-agent.c elogind_cgroups_agent_LDADD = \ - libshared.la + libelogind-shared.la # ------------------------------------------------------------------------------ libelogind_internal_la_SOURCES = \ @@ -525,13 +962,11 @@ libelogind_internal_la_SOURCES = \ src/libelogind/sd-bus/bus-protocol.h \ src/libelogind/sd-event/sd-event.c \ src/libelogind/sd-id128/sd-id128.c \ + src/libelogind/sd-id128/id128-util.h \ + src/libelogind/sd-id128/id128-util.c \ src/libelogind/sd-daemon/sd-daemon.c \ src/libelogind/sd-login/sd-login.c -libelogind_internal_la_LIBADD = \ - libbasic.la \ - -lresolv - noinst_LTLIBRARIES += \ libelogind-internal.la @@ -540,14 +975,7 @@ EXTRA_DIST += \ src/libelogind/sd-bus/DIFFERENCES \ src/libelogind/sd-bus/GVARIANT-SERIALIZATION -libelogind_la_SOURCES = \ - $(libelogind_internal_la_SOURCES) - -nodist_libelogind_la_SOURCES = \ - $(nodist_libelogind_internal_la_SOURCES) - -libelogind_la_CFLAGS = \ - $(libelogind_internal_la_CFLAGS) +libelogind_la_SOURCES = libelogind_la_LDFLAGS = \ $(AM_LDFLAGS) \ @@ -555,16 +983,8 @@ libelogind_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/libelogind/libelogind.sym libelogind_la_LIBADD = \ - $(libelogind_internal_la_LIBADD) - -libelogind-install-hook: - libname=libelogind.so && $(move-to-rootlibdir) - -libelogind-uninstall-hook: - rm -f $(DESTDIR)$(rootlibdir)/libelogind.so* - -INSTALL_EXEC_HOOKS += libelogind-install-hook -UNINSTALL_EXEC_HOOKS += libelogind-uninstall-hook + libelogind-internal.la \ + libbasic.la pkgconfiglib_DATA += \ src/libelogind/libelogind.pc @@ -575,10 +995,88 @@ pkginclude_HEADERS += \ src/systemd/sd-id128.h \ src/systemd/_sd-common.h +header-install-hook: + $(MKDIR_P) $(DESTDIR)/$(pkgincludedir) + cd $(DESTDIR)/$(includedir)/elogind && \ + for hdr in $(notdir $(pkginclude_HEADERS)) ; do \ + rm -f $$hdr ; \ + $(LN_S) systemd/$$hdr $$hdr ; \ + done -lib_LTLIBRARIES += \ +header-uninstall-hook: + m -f $(DESTDIR)/$(includedir)/elogind/*.h + +INSTALL_EXEC_HOOKS += header-install-hook +UNINSTALL_EXEC_HOOKS += header-uninstall-hook + +rootlib_LTLIBRARIES += \ libelogind.la +tests += \ + test-bus-signature \ + test-bus-server \ + test-bus-match \ + test-bus-introspect \ + test-bus-error \ + test-event + +test_bus_signature_SOURCES = \ + src/libelogind/sd-bus/test-bus-signature.c + +test_bus_signature_LDADD = \ + libelogind-shared.la + +test_bus_server_SOURCES = \ + src/libelogind/sd-bus/test-bus-server.c + +test_bus_server_LDADD = \ + libelogind-shared.la + +test_bus_error_SOURCES = \ + src/libelogind/sd-bus/test-bus-error.c + +# Link statically because this test uses BUS_ERROR_MAP_ELF_REGISTER +test_bus_error_LDADD = \ + libshared.la + +test_bus_match_SOURCES = \ + src/libelogind/sd-bus/test-bus-match.c + +test_bus_match_LDADD = \ + libelogind-shared.la + +test_bus_introspect_SOURCES = \ + src/libelogind/sd-bus/test-bus-introspect.c + +test_bus_introspect_LDADD = \ + libelogind-shared.la + +test_event_SOURCES = \ + src/libelogind/sd-event/test-event.c + +test_event_LDADD = \ + libelogind-shared.la + +# ------------------------------------------------------------------------------ +test_id128_SOURCES = \ + src/test/test-id128.c + +test_id128_LDADD = \ + libelogind-shared.la + +tests += \ + test-id128 + +# ------------------------------------------------------------------------------ +test_hash_SOURCES = \ + src/test/test-hash.c + +test_hash_LDADD = \ + libelogind-shared.la + +tests += \ + test-hash + # ------------------------------------------------------------------------------ elogind_SOURCES = \ src/login/logind.c \ @@ -591,6 +1089,14 @@ elogind_LDADD = \ libelogind-core.la libelogind_core_la_SOURCES = \ + src/core/cgroup.h \ + src/core/cgroup.c \ + src/core/mount-setup.h \ + src/core/mount-setup.c \ + src/login/elogind.c \ + src/login/elogind.h \ + src/login/elogind-dbus.c \ + src/login/elogind-dbus.h \ src/login/logind-core.c \ src/login/logind-device.c \ src/login/logind-device.h \ @@ -614,11 +1120,17 @@ libelogind_core_la_SOURCES = \ src/login/logind-user-dbus.c \ src/login/logind-utmp.c \ src/login/logind-acl.h \ - src/core/cgroup.h \ - src/core/cgroup.c + src/sleep/sleep.c \ + src/sleep/sleep.h + +if HAVE_UTMP +libelogind_core_la_SOURCES += \ + src/shared/utmp-wtmp.c \ + src/update-utmp/update-utmp.c +endif libelogind_core_la_LIBADD = \ - libshared.la + libelogind-shared.la if HAVE_ACL libelogind_core_la_SOURCES += \ @@ -628,36 +1140,34 @@ endif noinst_LTLIBRARIES += \ libelogind-core.la -rootlibexec_PROGRAMS += \ +pkglibexec_PROGRAMS += \ elogind loginctl_SOURCES = \ + src/login/eloginctl.c \ + src/login/eloginctl.h \ src/login/loginctl.c \ src/login/sysfs-show.h \ src/login/sysfs-show.c loginctl_LDADD = \ - libshared.la + libelogind-shared.la rootbin_PROGRAMS += \ loginctl -if ENABLE_BASH_COMPLETION -dist_bashcompletion_DATA = \ +dist_bashcompletion_data = \ shell-completion/bash/loginctl -endif -if ENABLE_ZSH_COMPLETION -dist_zshcompletion_DATA = \ +dist_zshcompletion_data = \ shell-completion/zsh/_loginctl \ shell-completion/zsh/_elogind-inhibit -endif elogind_inhibit_SOURCES = \ src/login/inhibit.c elogind_inhibit_LDADD = \ - libshared.la + libelogind-shared.la rootbin_PROGRAMS += \ elogind-inhibit @@ -666,19 +1176,19 @@ test_login_SOURCES = \ src/libelogind/sd-login/test-login.c test_login_LDADD = \ - libshared.la + libelogind-shared.la test_login_shared_SOURCES = \ src/login/test-login-shared.c test_login_shared_LDADD = \ - libshared.la + libelogind-shared.la test_inhibit_SOURCES = \ src/login/test-inhibit.c test_inhibit_LDADD = \ - libshared.la + libelogind-shared.la test_login_tables_SOURCES = \ src/login/test-login-tables.c @@ -718,9 +1228,13 @@ pam_elogind_la_LIBADD = \ pamlib_LTLIBRARIES = \ pam_elogind.la +if ENABLE_PAM_CONFIG dist_pamconf_DATA = \ src/login/elogind-user +endif +EXTRA_DIST += \ + src/login/elogind-user.m4 endif dist_dbussystemservice_DATA += \ @@ -729,7 +1243,7 @@ dist_dbussystemservice_DATA += \ dist_dbuspolicy_DATA += \ src/login/org.freedesktop.login1.conf -dist_pkgsysconf_DATA += \ +nodist_pkgsysconf_DATA += \ src/login/logind.conf polkitpolicy_files += \ @@ -751,10 +1265,12 @@ gperf_gperf_sources = \ EXTRA_DIST += \ src/login/71-seat.rules.in \ - src/login/73-seat-late.rules.in + src/login/73-seat-late.rules.in \ + src/login/logind.conf.in # ------------------------------------------------------------------------------ substitutions = \ + '|rootlibdir=$(rootlibdir)|' \ '|rootlibexecdir=$(rootlibexecdir)|' \ '|rootbindir=$(rootbindir)|' \ '|bindir=$(bindir)|' \ @@ -773,6 +1289,7 @@ substitutions = \ '|udevlibexecdir=$(udevlibexecdir)|' \ '|KILL=$(KILL)|' \ '|MKDIR_P=$(MKDIR_P)|' \ + '|KILL_USER_PROCESSES=$(KILL_USER_PROCESSES)|' \ '|systemuidmax=$(SYSTEM_UID_MAX)|' \ '|systemgidmax=$(SYSTEM_GID_MAX)|' \ '|TTY_GID=$(TTY_GID)|' @@ -780,7 +1297,8 @@ substitutions = \ SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) \ - < $< > $@ + -e '/^\#\# /d' \ + < $< > $@ man/%: man/%.in $(SED_PROCESS) @@ -832,6 +1350,8 @@ units/user/%: units/user/%.m4 if ENABLE_POLKIT nodist_polkitpolicy_DATA = \ $(polkitpolicy_files) +polkitrules_DATA = $(polkitrules_files) +polkitpkla_DATA = $(polkitpkla_files) endif EXTRA_DIST += \ @@ -894,9 +1414,7 @@ EXTRA_DIST += \ install-exec-hook: $(INSTALL_EXEC_HOOKS) -uninstall-hook: $(UNINSTALL_DATA_HOOKS) $(UNINSTALL_EXEC_HOOKS) - -install-data-hook: $(INSTALL_DATA_HOOKS) +uninstall-hook: $(UNINSTALL_EXEC_HOOKS) distclean-local: $(DISTCLEAN_LOCAL_HOOKS) @@ -923,8 +1441,7 @@ DISTCHECK_CONFIGURE_FLAGS += \ endif .PHONY: dist-check-help - -dist-check-help: $(rootbin_PROGRAMS) $(bin_PROGRAMS) +dist-check-help: $(rootbin_PROGRAMS) for i in $(abspath $^); do \ if $$i --help | grep -v 'default:' | grep -E -q '.{80}.' ; then \ echo "$(basename $$i) --help output is too wide:"; \ @@ -932,12 +1449,55 @@ dist-check-help: $(rootbin_PROGRAMS) $(bin_PROGRAMS) exit 1; \ fi; done +include_compilers = "$(CC)" "$(CC) -ansi" "$(CC) -std=iso9899:1990" +public_headers = $(filter-out src/systemd/_sd-common.h, $(pkginclude_HEADERS) $(include_HEADERS)) +.PHONY: dist-check-includes +dist-check-includes: $(public_headers) + @res=0; \ + for i in $(abspath $^); do \ + for cc in $(include_compilers); do \ + echo "$$cc -o/dev/null -c -x c -include "$$i" - elogind-$(VERSION)/$$f ; \ + chmod `stat -c '%a' elogind-$(VERSION)-raw/$$f` \ + elogind-$(VERSION)/$$f ; \ + done ; \ + for l in `find elogind-$(VERSION)-raw/ -type l | cut -d '/' -f 2-` ; do \ + $(MKDIR_P) elogind-$(VERSION)/`dirname $$l` ; \ + cp -P elogind-$(VERSION)-raw/$$l elogind-$(VERSION)/$$l ; \ + done ; \ + tar czf elogind-$(VERSION).tar.gz elogind-$(VERSION) ; \ + rm -rf elogind-$(VERSION) elogind-$(VERSION)-raw) ; \ + $(AM_V_at)mv /var/tmp/elogind-$(VERSION).tar.gz ./ + .PHONY: install-tree install-tree: all rm -rf $(abs_srcdir)/install-tree @@ -945,21 +1505,21 @@ install-tree: all tree $(abs_srcdir)/install-tree # Let's run all tests of the test suite, but under valgrind. Let's -# exclude the one perl script we have in there +# exclude perl/python/shell scripts we have in there .PHONY: valgrind-tests valgrind-tests: $(TESTS) - $(AM_V_GEN)for f in $(filter-out %.pl, $^); do \ - if file $$f | grep -q shell; then \ + $(AM_V_GEN)for f in $(filter-out %.pl %.py, $^); do \ + if $(LIBTOOL) --mode=execute file $$f | grep -q shell; then \ echo -e "$${x}Skipping non-binary $$f"; else \ echo -e "$${x}Running $$f"; \ - libtool --mode=execute valgrind -q --leak-check=full --max-stackframe=5242880 --error-exitcode=55 $(builddir)/$$f ; fi; \ + $(AM_TESTS_ENVIRONMENT) $(LIBTOOL) --mode=execute valgrind -q --leak-check=full --max-stackframe=5242880 --error-exitcode=55 $(builddir)/$$f ; fi; \ x="\n\n"; \ done exported-%: % $(AM_V_GEN)$(NM) -g --defined-only $(builddir)/.libs/$(<:.la=.so) 2>&1 /dev/null | grep " T " | cut -d" " -f3 > $@ -exported: $(addprefix exported-, $(lib_LTLIBRARIES)) +exported: $(addprefix exported-, $(rootlib_LTLIBRARIES)) $(AM_V_GEN)cat $^ > $@ .PHONY: check-api-docs @@ -1027,16 +1587,49 @@ BUILT_SOURCES += \ tests += \ test-libelogind-sym -.PHONY: cppcheck +.PHONY: install-tests +install-tests: $(tests) $(TEST_DATA_FILES) + for f in $(tests); do \ + if [ -x $(top_builddir)/.libs/$$f ]; then \ + install -D -m 755 $(top_builddir)/.libs/$$f $(DESTDIR)/$(testsdir)/$$f; \ + else \ + install -D -m 755 $(top_builddir)/$$f $(DESTDIR)/$(testsdir)/$$f; \ + fi; \ + done + for f in $(TEST_DATA_FILES); do \ + install -D -m 644 $(top_srcdir)/$$f $(DESTDIR)/$(testsdir)/testdata/$${f#test/}; \ + done + +.PHONY: cccc cppcheck +cccc: all + cccc --outdir=$(top_builddir)/cccc \ + `find $(top_srcdir)/src/ -name '*.h' -or -name '*.c'` + cppcheck: - cppcheck --enable=all -q $(top_srcdir) + cppcheck --enable=all -q \ + -I $(top_srcdir)/src \ + -I $(top_builddir)/src/basic \ + -I $(top_srcdir)/src/basic \ + -I $(top_srcdir)/src/core \ + -I $(top_srcdir)/src/shared \ + -I $(top_builddir)/src/shared \ + -I $(top_srcdir)/src/login \ + -I $(top_srcdir)/src/systemd \ + -I $(top_srcdir)/src/libelogind/sd-bus \ + -I $(top_srcdir)/src/libelogind/sd-event \ + -I $(top_srcdir)/src/libelogind/sd-login \ + -I $(top_srcdir)/src/libelogind/sd-id128 \ + -I $(top_srcdir)/src/update-utmp \ + -I $(top_srcdir)/src/sleep \ + --force \ + $(top_srcdir) # Used to extract compile flags for YCM. print-%: @echo $($*) git-contrib: - @git shortlog -s `git describe --abbrev=0`.. | cut -c8- | awk '{ print $$0 "," }' | sort -u + @git shortlog -s `git describe --abbrev=0`.. | cut -c8- | sed 's/ / /g' | awk '{ print $$0 "," }' | sort -u EXTRA_DIST += \ tools/gdb-sd_dump_hashmaps.py