# enable debug features such as control environment variables
# WARNING! do not use for production builds as it will break security
%define debug_build 0
+%define efl 0
-Name: tlm
+%if %{debug_build} == 1
+%define extra_config_options1 --enable-gtk-doc --enable-debug
+%endif
+
+%if %{efl} == 1
+%define extra_config_options1 --enable-examples
+%endif
+
+
+Name: tlm
Summary: Login manager for Tizen
-Version: 0.0.4
+Version: 1.0.3
Release: 1
-Group: System/Service
+Group: System/Service
License: LGPL-2.1+
-Source: %{name}-%{version}.tar.gz
-URL: https://github.com/01org/tlm
+URL: https://github.com/01org/tlm
+Source: %{name}-%{version}.tar.gz
Source1001: %{name}.manifest
-Requires(post): /sbin/ldconfig, systemd
-Requires(postun): /sbin/ldconfig, systemd
-Requires: gumd
+Requires(post): /sbin/ldconfig
+Requires(post): systemd
+Requires(postun): /sbin/ldconfig
+Requires(postun): systemd
+Requires(post): tizen-platform-config
Requires: libsystemd
-BuildRequires: pkgconfig(glib-2.0) >= 2.30
+Requires: pam-modules-extra
+BuildRequires: pkgconfig(glib-2.0) >= 2.38
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(libgum)
-BuildRequires: pkgconfig(elementary)
BuildRequires: pam-devel
+BuildRequires: pkgconfig(libtzplatform-config)
%if %{debug_build} == 1
BuildRequires: gtk-doc
%endif
-
+%if %{efl} == 1
+BuildRequires: pkgconfig(elementary)
+%endif
%description
-%{summary}.
-
+TLM is a daemon that handles user logins in a multi-user, multi-seat system by
+authenticating the users through PAM, and setting up, launching, and tracking
+user sessions.
%package devel
-Summary: Development files for %{name}
+Summary: Dev files for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
-
%description devel
-%{summary}.
+Development files for %{name}.
%package doc
-Summary: Documentation files for %{name}
+Summary: Doc files for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
-
%description doc
-%{summary}.
+Documentation files for %{name}.
+
+
+%package config-common
+Summary: Common configuration files
+Group: System/Service
+Requires: %{name} = %{version}-%{release}
+Provides: %{name}-config
+
+%description config-common
+Tiny Login Manager common configuration files.
+
+%package config-common-singleseat
+Summary: Common configuration files with single seat
+Group: System/Service
+Requires: %{name} = %{version}-%{release}
+Provides: %{name}-config
+%description config-common-singleseat
+Tiny Login Manager common configuration files with signle seat.
%prep
%setup -q -n %{name}-%{version}
%build
+# for Address space layout randomization
+export CFLAGS="$CFLAGS -fPIE"
+export LDFLAGS="$LDFLAGS -pie"
+
%if %{debug_build} == 1
./autogen.sh
-%configure --enable-gum --enable-gtk-doc --enable-examples --enable-debug
-%else
-%configure --enable-gum --enable-examples
%endif
-make %{?_smp_mflags}
+%reconfigure --enable-gum \
+ %{?extra_config_options1:%extra_config_options1} \
+ %{?extra_config_options2:%extra_config_options2}
+%__make %{?_smp_mflags}
%install
rm -rf %{buildroot}
%make_install
+rm -f %{buildroot}%{_sysconfdir}/tlm.conf
install -m 755 -d %{buildroot}%{_unitdir}
install -m 644 data/tlm.service %{buildroot}%{_unitdir}
+mkdir -p %{buildroot}%{_unitdir}/multi-user.target.wants
+ln -s ../tlm.service %{buildroot}%{_unitdir}/multi-user.target.wants/tlm.service
install -m 755 -d %{buildroot}%{_sysconfdir}/pam.d
install -m 644 data/tlm-login %{buildroot}%{_sysconfdir}/pam.d/
install -m 644 data/tlm-default-login %{buildroot}%{_sysconfdir}/pam.d/
-
+install -m 644 data/tlm-system-login %{buildroot}%{_sysconfdir}/pam.d/
+install -m 755 -d %{buildroot}%{_sysconfdir}/session.d
+install -m 644 data/tizen-common/etc/tlm*.conf %{buildroot}%{_sysconfdir}
+install -m 755 data/tizen-common/etc/session.d/* %{buildroot}%{_sysconfdir}/session.d/
+chmod 700 %{buildroot}%{_bindir}/%{name}
+chmod 700 %{buildroot}%{_bindir}/%{name}-sessiond
+chmod 700 %{buildroot}%{_bindir}/%{name}-launcher
%post
/sbin/ldconfig
-/usr/bin/systemctl enable tlm
-/usr/bin/systemctl daemon-reload
+%postun -p /sbin/ldconfig
-%postun
-/sbin/ldconfig
-/usr/bin/systemctl disable tlm
-/usr/bin/systemctl daemon-reload
+%post config-common
+if [ ! -e /etc/tlm.conf ] || [ -h /etc/tlm.conf ]; then
+ ln -s -f /etc/tlm-default.conf /etc/tlm.conf
+fi
+systemctl enable tlm
+systemctl daemon-reload
+
+%preun config-common
+if [ $1 == 0 ]; then
+ systemctl disable tlm
+ systemctl daemon-reload
+fi
+
+%postun config-common
+if [ -h /etc/tlm.conf ] && [ $1 == 0 ]; then
+ rm -f /etc/tlm.conf
+fi
+
+
+%post config-common-singleseat
+if [ ! -e /etc/tlm.conf ] || [ -h /etc/tlm.conf ]; then
+ ln -s -f /etc/tlm-singleseat.conf /etc/tlm.conf
+fi
+#systemctl enable tlm
+#systemctl daemon-reload
+
+#%preun config-common-singleseat
+#if [ $1 == 0 ]; then
+ #systemctl disable tlm
+ #systemctl daemon-reload
+#fi
+
+%postun config-common-singleseat
+if [ -h /etc/tlm.conf ] && [ $1 == 0 ]; then
+ rm -f /etc/tlm.conf
+fi
%files
%defattr(-,root,root,-)
%manifest %{name}.manifest
-%doc AUTHORS COPYING INSTALL NEWS README
+%license COPYING
+%doc AUTHORS NEWS README
%{_bindir}/%{name}
%{_bindir}/%{name}-sessiond
%{_bindir}/%{name}-client
+%{_bindir}/%{name}-launcher
%{_libdir}/lib%{name}*.so.*
%{_libdir}/%{name}/plugins/*.so*
%{_unitdir}/tlm.service
-%config(noreplace) %{_sysconfdir}/tlm.conf
+%{_unitdir}/multi-user.target.wants/tlm.service
%config %{_sysconfdir}/pam.d/tlm-login
%config %{_sysconfdir}/pam.d/tlm-default-login
+%config %{_sysconfdir}/pam.d/tlm-system-login
%files devel
%{_includedir}/%{name}/*.h
%{_libdir}/lib%{name}*.so
%{_libdir}/pkgconfig/%{name}.pc
+%if %{efl} == 1
%{_bindir}/tlm-ui
+%endif
%files doc
%defattr(-,root,root,-)
%{_datadir}/gtk-doc/html/tlm/*
+
+
+%files config-common
+%defattr(-,root,root,-)
+%manifest %{name}.manifest
+%license COPYING
+%config(noreplace) %{_sysconfdir}/tlm-default.conf
+%config(noreplace) %{_sysconfdir}/session.d/*
+
+%files config-common-singleseat
+%defattr(-,root,root,-)
+%manifest %{name}.manifest
+%license COPYING
+%config(noreplace) %{_sysconfdir}/tlm-singleseat.conf