Commit c5339c57 authored by Matthias Clasen's avatar Matthias Clasen

initial commit

parents
Matthias Clasen <mclasen@redhat.com>
This diff is collapsed.
This diff is collapsed.
SUBDIRS = src data po
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = config.rpath m4/ChangeLog
Overview
========
The AccountsService project provides
o A set of D-Bus interfaces for querying and manipulating
user account information.
o An implementation of these interfaces based on the usermod(8),
useradd(8) and userdel(8) commands.
License
=======
See the COPYING file.
Installation
============
See the INSTALL file.
General
-------
- what privileges do we need ? anything beyond change-yourself vs.
change-other-user ?
- document dbus interfaces
- document polkit privileges
Code changes
------------
- add supervisor user to supervised accounts
Other
-----
- move service to fd.o
- approach IPA guys to 'make infopipe like this service'
- push forward to minimal, but functional state
. gnome-autogen.sh
AC_INIT(AccountsService, 0.2)
AM_INIT_AUTOMAKE(dist-bzip2 foreign)
GETTEXT_PACKAGE=accounts-service
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
[the gettext translation domain])
AC_PROG_CC
PKG_PROG_PKG_CONFIG
AM_GNU_GETTEXT(external)
IT_PROG_INTLTOOL([0.40.0])
PKG_CHECK_MODULES(GLIB, glib-2.0)
PKG_CHECK_MODULES(GIO, gio-2.0)
PKG_CHECK_MODULES(GDK_PIXBUF, gdk-pixbuf-2.0)
PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1)
PKG_CHECK_MODULES(POLKIT, polkit-gobject-1)
AC_CONFIG_FILES([
Makefile
po/Makefile.in
data/Makefile
src/Makefile
])
AC_OUTPUT
dbusifdir = $(dateadir)/dbus-1/interfaces
dbusif_DATA = \
org.freedesktop.Accounts.xml \
org.freedesktop.Accounts.User.xml
dbusconfdir = $(sysconfdir)/dbus-1/system.d
dbusconf_DATA = org.freedesktop.Accounts.conf
servicedir = $(datadir)/dbus-1/system-services
service_in_files = org.freedesktop.Accounts.service.in
service_DATA = $(service_in_files:.service.in=.service)
$(service_DATA): $(service_in_files) Makefile
@sed -e "s|\@libexecdir\@|$(libexecdir)|" $< >$@
policydir = $(datadir)/polkit-1/actions
policy_in_files = org.freedesktop.accounts.policy.in
policy_DATA = $(policy_in_files:.policy.in=.policy)
@INTLTOOL_POLICY_RULE@
EXTRA_DIST = \
$(dbusif_DATA) \
$(dbusconf_DATA) \
$(service_in_files) \
$(policy_in_files)
<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" >
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
<interface name="org.freedesktop.Accounts.User">
<method name="SetUserName">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="name" direction="in" type="s"/>
</method>
<method name="SetRealName">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="name" direction="in" type="s"/>
</method>
<method name="SetEmail">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="email" direction="in" type="s"/>
</method>
<method name="SetLanguage">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="language" direction="in" type="s"/>
</method>
<method name="SetLocation">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="location" direction="in" type="s"/>
</method>
<method name="SetHomeDirectory">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="homedir" direction="in" type="s"/>
</method>
<method name="SetShell">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="shell" direction="in" type="s"/>
</method>
<method name="SetIconFile">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="filename" direction="in" type="s"/>
</method>
<method name="SetIconData">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="width" direction="in" type="i"/>
<arg name="height" direction="in" type="i"/>
<arg name="channels" direction="in" type="i"/>
<arg name="rowstride" direction="in" type="i"/>
<arg name="data" direction="in" type="ay"/>
</method>
<method name="SetLocked">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="locked" direction="in" type="b"/>
</method>
<method name="SetAccountType">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="accountType" direction="in" type="i"/>
</method>
<method name="SetPasswordMode">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="mode" direction="in" type="i"/>
</method>
<method name="SetPassword">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="password" direction="in" type="s"/>
<arg name="hint" direction="in" type="s"/>
</method>
<property name="Uid" type="t" access="read"/>
<property name="UserName" type="s" access="read"/>
<property name="RealName" type="s" access="read"/>
<property name="AccountType" type="i" access="read"/>
<property name="HomeDirectory" type="s" access="read"/>
<property name="Shell" type="s" access="read"/>
<property name="Email" type="s" access="read"/>
<property name="Language" type="s" access="read"/>
<property name="Location" type="s" access="read"/>
<property name="LoginFrequency" type="t" access="read"/>
<property name="IconFile" type="s" access="read"/>
<property name="Locked" type="b" access="read"/>
<property name="PasswordMode" type="i" access="read"/>
<property name="PasswordHint" type="s" access="read"/>
<signal name="Changed"/>
</interface>
</node>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Only root can own the service -->
<policy user="root">
<allow own="org.freedesktop.Accounts"/>
</policy>
<policy context="default">
<allow send_destination="org.freedesktop.Accounts"/>
<allow send_destination="org.freedesktop.Accounts"
send_interface="org.freedesktop.DBus.Properties"/>
<allow send_destination="org.freedesktop.Accounts"
send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="org.freedesktop.Accounts.User"
send_interface="org.freedesktop.DBus.Properties"/>
<allow send_destination="org.freedesktop.Accounts.User"
send_interface="org.freedesktop.DBus.Introspectable"/>
</policy>
</busconfig>
[D-BUS Service]
Name=org.freedesktop.Accounts
Exec=@libexecdir@/accounts-daemon
User=root
<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd" >
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
<interface name="org.freedesktop.Accounts">
<!-- ************************************************************ -->
<method name="ListCachedUsers">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="users" direction="out" type="ao">
<doc:doc><doc:summary>Object paths of cached users</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
List users which have logged into the system locally before.
</doc:para>
</doc:description>
</doc:doc>
</method>
<method name="FindUserById">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="id" direction="in" type="x">
<doc:doc><doc:summary>The uid to look up</doc:summary></doc:doc>
</arg>
<arg name="user" direction="out" type="o">
<doc:doc><doc:summary>Object path of user</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
Find a user by uid.
</doc:para>
</doc:description>
</doc:doc>
</method>
<method name="FindUserByName">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="name" direction="in" type="s">
<doc:doc><doc:summary>The username to look up</doc:summary></doc:doc>
</arg>
<arg name="user" direction="out" type="o">
<doc:doc><doc:summary>Object path of user</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
Find a user by its username.
</doc:para>
</doc:description>
</doc:doc>
</method>
<method name="CreateUser">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="name" direction="in" type="s">
<doc:doc><doc:summary>The username to use</doc:summary></doc:doc>
</arg>
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="fullname" direction="in" type="s">
<doc:doc><doc:summary>The real name to use</doc:summary></doc:doc>
</arg>
<arg name="user" direction="out" type="o">
<doc:doc><doc:summary>Object path of the new user</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
Create a new user account.
</doc:para>
</doc:description>
</doc:doc>
</method>
<method name="DeleteUser">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="id" direction="in" type="x">
<doc:doc><doc:summary>The uid to delete</doc:summary></doc:doc>
</arg>
<arg name="removeFiles" direction="in" type="b">
<doc:doc><doc:summary>Whether to remove the users files</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
Delete a user account.
</doc:para>
</doc:description>
</doc:doc>
</method>
<signal name="UserAdded">
<arg name="user" type="o"/>
</signal>
<signal name="UserDeleted">
<arg name="user" type="o"/>
</signal>
<signal name="UserChanged">
<arg name="user" type="o"/>
</signal>
<property name="DaemonVersion" type="s" access="read"/>
</interface>
</node>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
<vendor/>
<vendor_url/>
<icon_name>stock_person</icon_name>
<action id="org.freedesktop.accounts.change-own-user-data">
<_description>Change your own user data</_description>
<_message>Authentication is required to change user data</_message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
<action id="org.freedesktop.accounts.change-user-data">
<_description>Change user data</_description>
<_message>Authentication is required to change user data</_message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.freedesktop.accounts.create-user">
<_description>Create a user account</_description>
<_message>Authentication is required to create a user account</_message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.freedesktop.accounts.delete-user">
<_description>Delete a user account</_description>
<_message>Authentication is required to delete a user account</_message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.freedesktop.accounts.lock-user">
<_description>Lock a user account</_description>
<_message>Authentication is required to lock a user account</_message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.freedesktop.accounts.change-account-type">
<_description>Change a users account type</_description>
<_message>Authentication is required to change an account type</_message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
</policyconfig>
2010-01-12 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.17.
2010-01-12 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.17.
2010-01-11 gettextize <bug-gnu-gettext@gnu.org>
* Makefile.in.in: New file, from gettext-0.17.
* boldquot.sed: New file, from gettext-0.17.
* en@boldquot.header: New file, from gettext-0.17.
* en@quot.header: New file, from gettext-0.17.
* insert-header.sin: New file, from gettext-0.17.
* quot.sed: New file, from gettext-0.17.
* remove-potcdate.sin: New file, from gettext-0.17.
* Rules-quot: New file, from gettext-0.17.
* POTFILES.in: New file.
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(GETTEXT_PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Red Hat, Inc.
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS =
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS =
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =
# List of source files which contain translatable strings.
[encoding: UTF-8]
data/org.freedesktop.accounts.policy.in
src/main.c
# Special Makefile rules for English message catalogs with quotation marks.
DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
.SUFFIXES: .insert-header .po-update-en
en@quot.po-create:
$(MAKE) en@quot.po-update
en@boldquot.po-create:
$(MAKE) en@boldquot.po-update
en@quot.po-update: en@quot.po-update-en
en@boldquot.po-update: en@boldquot.po-update-en
.insert-header.po-update-en:
@lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
tmpdir=`pwd`; \
echo "$$lang:"; \
ll=`echo $$lang | sed -e 's/@.*//'`; \
LC_ALL=C; export LC_ALL; \
cd $(srcdir); \
if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
rm -f $$tmpdir/$$lang.new.po; \
else \
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
:; \
else \
echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
exit 1; \
fi; \
fi; \
else \
echo "creation of $$lang.po failed!" 1>&2; \
rm -f $$tmpdir/$$lang.new.po; \
fi
en@quot.insert-header: insert-header.sin
sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
en@boldquot.insert-header: insert-header.sin
sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
mostlyclean: mostlyclean-quot
mostlyclean-quot:
rm -f *.insert-header
s/"\([^"]*\)"/\1/g
s/`\([^`']*\)'/\1/g
s/ '\([^`']*\)' /\1/g
s/ '\([^`']*\)'$/\1/g
s/^'\([^`']*\)' /\1/g
s/“”/""/g
s//“/g
s//”/g
s//‘/g
s//’/g
# All this catalog "translates" are quotation characters.
# The msgids must be ASCII and therefore cannot contain real quotation
# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
# and double quote (0x22). These substitutes look strange; see
# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
#
# This catalog translates grave accent (0x60) and apostrophe (0x27) to
# left single quotation mark (U+2018) and right single quotation mark (U+2019).
# It also translates pairs of apostrophe (0x27) to
# left single quotation mark (U+2018) and right single quotation mark (U+2019)
# and pairs of quotation mark (0x22) to
# left double quotation mark (U+201C) and right double quotation mark (U+201D).
#
# When output to an UTF-8 terminal, the quotation characters appear perfectly.
# When output to an ISO-8859-1 terminal, the single quotation marks are
# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
# grave/acute accent (by libiconv), and the double quotation marks are
# transliterated to 0x22.
# When output to an ASCII terminal, the single quotation marks are
# transliterated to apostrophes, and the double quotation marks are
# transliterated to 0x22.
#
# This catalog furthermore displays the text between the quotation marks in
# bold face, assuming the VT100/XTerm escape sequences.
#
# All this catalog "translates" are quotation characters.
# The msgids must be ASCII and therefore cannot contain real quotation
# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
# and double quote (0x22). These substitutes look strange; see
# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
#
# This catalog translates grave accent (0x60) and apostrophe (0x27) to
# left single quotation mark (U+2018) and right single quotation mark (U+2019).
# It also translates pairs of apostrophe (0x27) to
# left single quotation mark (U+2018) and right single quotation mark (U+2019)
# and pairs of quotation mark (0x22) to
# left double quotation mark (U+201C) and right double quotation mark (U+201D).
#
# When output to an UTF-8 terminal, the quotation characters appear perfectly.
# When output to an ISO-8859-1 terminal, the single quotation marks are
# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
# grave/acute accent (by libiconv), and the double quotation marks are
# transliterated to 0x22.
# When output to an ASCII terminal, the single quotation marks are
# transliterated to apostrophes, and the double quotation marks are
# transliterated to 0x22.
#
# Sed script that inserts the file called HEADER before the header entry.
#
# At each occurrence of a line starting with "msgid ", we execute the following
# commands. At the first occurrence, insert the file. At the following
# occurrences, do nothing. The distinction between the first and the following
# occurrences is achieved by looking at the hold space.
/^msgid /{
x
# Test if the hold space is empty.
s/m/m/
ta
# Yes it was empty. First occurrence. Read the file.
r HEADER
# Output the file's contents by reading the next line. But don't lose the
# current line while doing this.
g
N
bb
:a
# The hold space was nonempty. Following occurrences. Do nothing.
x
:b
}
s/"\([^"]*\)"/\1/g
s/`\([^`']*\)'/\1/g
s/ '\([^`']*\)' /\1/g
s/ '\([^`']*\)'$/\1/g
s/^'\([^`']*\)' /\1/g
s/“”/""/g
# Sed script that remove the POT-Creation-Date line in the header entry
# from a POT file.
#
# The distinction between the first and the following occurrences of the
# pattern is achieved by looking at the hold space.
/^"POT-Creation-Date: .*"$/{
x
# Test if the hold space is empty.
s/P/P/
ta
# Yes it was empty. First occurrence. Remove the line.
g
d
bb
:a
# The hold space was nonempty. Following occurrences. Do nothing.
x
:b
}
INCLUDES = \
-DLOCALSTATE_DIR=\""$(localstatedir)"\" \
$(DBUS_GLIB_CFLAGS) \
$(GIO_CFLAGS) \
$(GLIB_CFLAGS) \
$(GDK_PIXBUF_CFLAGS) \
$(POLKIT_CFLAGS)
BUILT_SOURCES = \
daemon-glue.h \
user-glue.h
daemon-glue.h: $(top_srcdir)/data/org.freedesktop.Accounts.xml Makefile
dbus-binding-tool --prefix=daemon --mode=glib-server --output=daemon-glue.h $(top_srcdir)/data/org.freedesktop.Accounts.xml
user-glue.h: $(top_srcdir)/data/org.freedesktop.Accounts.User.xml Makefile
dbus-binding-tool --prefix=user --mode=glib-server --output=user-glue.h $(top_srcdir)/data/org.freedesktop.Accounts.User.xml
libexec_PROGRAMS = accounts-daemon
accounts_daemon_SOURCES = \
$(enums_h_sources) \
$(BUILT_SOURCES) \
types.h \
daemon.h \
daemon.c \
user.h \
user.c \
main.c
accounts_daemon_LDADD = \
$(DBUS_GLIB_LIBS) \
$(GIO_LIBS) \
$(GLIB_LIBS) \
$(GDK_PIXBUF_LIBS) \
$(POLKIT_LIBS)
CLEANFILES = $(BUILT_SOURCES)
install-data-hook:
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/AccountsService/users"
$(MKDIR_P) "$(DESTDIR)$(localstatedir)/lib/AccountsService/icons"
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-