9796eb466d05b1c8a4dd9cd0f360dca7ea7945bc
[scm/bb/tizen.git] / proto-meta-Tizen_generic / specfile-initial / weston-common / packaging / weston-common.spec
1 %bcond_with wayland
2 Name:       weston-common
3 Version:    1
4 Release:    0
5 Summary:    Tizen Common Weston configuration and set-up
6 License:    MIT
7 Group:      Base/Configuration
8 Source0:    %{name}-%{version}.tar.bz2
9 Source1001: weston-common.manifest
10 Provides:   weston-startup
11
12 Requires:   weston
13 # for getent:
14 Requires:   glibc
15 # for useradd et al
16 Requires:   pwdutils
17
18 BuildRequires:  autoconf >= 2.64, automake >= 1.11
19 BuildRequires:  libtool >= 2.2
20 BuildRequires:  libjpeg-devel
21 BuildRequires:  xz
22 BuildRequires:  pkgconfig
23 BuildRequires:  pkgconfig(libpng)
24 BuildRequires:  pkgconfig(xkbcommon)
25 BuildRequires:  pkgconfig(wayland-client)
26 BuildRequires:  pkgconfig(wayland-cursor)
27 BuildRequires:  pkgconfig(wayland-egl)
28 BuildRequires:  pkgconfig(egl)
29 BuildRequires:  pkgconfig(glesv2)
30 BuildRequires:  pkgconfig(pixman-1)
31 BuildRequires:  pkgconfig(cairo)
32 BuildRequires:  pkgconfig(cairo-egl)
33 BuildRequires:  pkgconfig(cairo-glesv2)
34 BuildRequires:  pkgconfig(weston)
35 BuildRequires:  pkgconfig(glib-2.0)
36 BuildRequires:  pkgconfig(gio-2.0)
37
38 %if !%{with wayland}
39 ExclusiveArch:
40 %endif
41
42 ############ tz-launcher
43 %package tz-launcher
44 Summary: A small launcher for Wayland compositors
45
46 %description tz-launcher
47 A small launcher for Wayland compositors
48 ############
49
50 %description
51 This package contains Tizen Common configuration and set-up for
52 the Weston compositor, including systemd unit files.
53
54 %package config
55 Summary:    Tizen Common Weston configuration
56 Group:      Base/Configuration
57 %description config
58 This package contains Tizen Common configuration for the Weston
59 compositor.
60
61 %prep
62 %setup -q
63 cp %{SOURCE1001} .
64
65 %build
66 %reconfigure
67 make %{?_smp_mflags}
68
69 %install
70 %define daemon_user display
71 %define daemon_group display
72
73 #install tz-launcher
74 %make_install
75
76 # install weston service as 'display-manager.service' as it's the one wanted by graphical.target
77 mkdir -p %{buildroot}%{_unitdir}
78 install -m 644 display-manager-run.service %{buildroot}%{_unitdir}/display-manager-run.service
79 install -m 644 display-manager.service %{buildroot}%{_unitdir}/display-manager.service
80 install -m 644 display-manager.path %{buildroot}%{_unitdir}/display-manager.path
81
82 # install Environment file for weston service and weston-user.service
83 mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
84 install -m 0644 weston.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/weston
85 install -m 0644 weston-user.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/weston-user
86
87 # install tmpfiles.d(5) conf
88 mkdir -p %{buildroot}%{_prefix}/lib/tmpfiles.d
89 install -m 0644 weston_tmpfiles.conf %{buildroot}%{_prefix}/lib/tmpfiles.d/weston.conf
90
91 # install weston-user service in user session
92 mkdir -p %{buildroot}%{_unitdir_user}
93 install -m 644 weston-user.service %{buildroot}%{_unitdir_user}/
94
95 # install weston.sh
96 mkdir -p %{buildroot}%{_sysconfdir}/profile.d/
97 install -m 0644 weston.sh %{buildroot}%{_sysconfdir}/profile.d/
98
99 # install weston.ini
100 %define weston_config_dir %{_sysconfdir}/xdg/weston
101 mkdir -p %{buildroot}%{weston_config_dir}
102 install -m 0644 weston.ini %{buildroot}%{weston_config_dir}
103
104 # Add a rule to ensure the 'display' user has permissions to
105 # open the graphics device
106 mkdir -p %{buildroot}%{_sysconfdir}/udev/rules.d
107 cat >%{buildroot}%{_sysconfdir}/udev/rules.d/99-dri.rules <<'EOF'
108 SUBSYSTEM=="drm", MODE="0660", GROUP="%{daemon_group}", SMACK="*"
109 EOF
110
111 # user 'display' must own /dev/tty7 for weston to start correctly
112 cat >%{buildroot}%{_sysconfdir}/udev/rules.d/99-tty.rules <<'EOF'
113 SUBSYSTEM=="tty", KERNEL=="tty7", OWNER="%{daemon_user}", SMACK="^"
114 EOF
115
116 # user 'display' must also be able to access /dev/input/event*
117 cat >%{buildroot}%{_sysconfdir}/udev/rules.d/99-input.rules <<'EOF'
118 SUBSYSTEM=="input", KERNEL=="event*", MODE="0660", GROUP="input", SMACK="^"
119 EOF
120
121 # install desktop file
122 mkdir -p %{buildroot}%{_datadir}/applications
123 install -m 0644 weston-terminal.desktop %{buildroot}%{_datadir}/applications
124
125 %pre
126 # create groups 'display' and 'weston-launch'
127 getent group %{daemon_group} >/dev/null || %{_sbindir}/groupadd -r -o %{daemon_group}
128 getent group input >/dev/null || %{_sbindir}/groupadd -r -o input
129 getent group weston-launch >/dev/null || %{_sbindir}/groupadd -r -o weston-launch
130
131 # create user 'display'
132 getent passwd %{daemon_user} >/dev/null || %{_sbindir}/useradd -r -g %{daemon_group} -d /run/display -s /bin/false -c "Display daemon" %{daemon_user}
133
134 # add user 'display' to groups 'weston-launch' and 'input'
135 groupmod -A %{daemon_user} weston-launch
136 groupmod -A %{daemon_user} input
137
138 # setup display manager service
139 mkdir -p %{_unitdir}/graphical.target.wants/
140 ln -sf ../display-manager.path  %{_unitdir}/graphical.target.wants/
141
142 # setup display manager access (inside user session)
143 mkdir -p %{_unitdir_user}/default.target.requires/
144 ln -sf ../weston-user.service  %{_unitdir_user}/default.target.requires/
145
146 %postun
147 rm -f %{_unitdir}/graphical.target.wants/display-manager.path
148 rm -f %{_unitdir_user}/default.target.requires/weston-user.service
149
150 %files
151 %manifest %{name}.manifest
152 %defattr(-,root,root)
153 %license COPYING
154 %{_unitdir}/display-manager-run.service
155 %{_unitdir}/display-manager.service
156 %{_unitdir}/display-manager.path
157 %config %{_sysconfdir}/sysconfig/*
158 %{_prefix}/lib/tmpfiles.d/weston.conf
159 %{_unitdir_user}/weston-user.service
160 %config %{_sysconfdir}/profile.d/*
161 %config %{_sysconfdir}/udev/rules.d/*
162 %{_datadir}/applications/*.desktop
163
164 %files config
165 %manifest %{name}.manifest
166 %config %{weston_config_dir}/weston.ini
167
168 %files tz-launcher
169 %manifest %{name}.manifest
170 %defattr(-,root,root)
171 %license src/COPYING
172 %{_bindir}/tz-launcher
173 %{_bindir}/wl-pre