AC_SUBST(SAMPLES_CFLAGS)
AC_SUBST(SAMPLES_LIBS)
+# headless server
+HEADLESS_SERVER_REQUIRES="wayland-server"
+PKG_CHECK_MODULES(HEADLESS_SERVER, $[HEADLESS_SERVER_REQUIRES])
+HEADLESS_SERVER_CFLAGS="$PEPPER_DIR $HEADLESS_SERVER_CFLAGS"
+HEADLESS_SERVER_LIBS="$PEPPER_LIB $PEPPER_LIBS $HEADLESS_SERVER_LIBS"
+
+AC_SUBST(HEADLESS_SERVER_CFLAGS)
+AC_SUBST(HEADLESS_SERVER_LIBS)
+
# doctor (headless server) and headless client samples
DOCTOR_SERVER_REQUIRES="wayland-server libtbm"
PKG_CHECK_MODULES(DOCTOR_SERVER, $[DOCTOR_SERVER_REQUIRES])
src/lib/fbdev/Makefile
src/lib/wayland/Makefile
src/bin/doctor/Makefile
+src/bin/headless/Makefile
src/samples/Makefile
pkgconfig/pepper.pc
pkgconfig/pepper-render.pc
%description doctor
This package includes doctor server files.
+###### headless server
+%package headless
+Summary: Headless server for pepper package
+Requires: pepper
+
+%description headless
+This package includes headless server files.
+
###### samples
%package samples
Summary: samples for pepper package
install -m 644 data/doctor/units/display-manager.service %{buildroot}%{_unitdir}
install -m 644 data/doctor/units/display-manager-ready.path %{buildroot}%{_unitdir}
install -m 644 data/doctor/units/display-manager-ready.service %{buildroot}%{_unitdir}
+install -m 644 data/headless/units/display-manager.service %{buildroot}%{_unitdir}
+install -m 644 data/headless/units/display-manager-ready.path %{buildroot}%{_unitdir}
+install -m 644 data/headless/units/display-manager-ready.service %{buildroot}%{_unitdir}
# install user session service
%__mkdir_p %{buildroot}%{_unitdir_user}
install -m 644 data/doctor/units/display-user.service %{buildroot}%{_unitdir_user}
+install -m 644 data/headless/units/display-user.service %{buildroot}%{_unitdir_user}
# install env file and scripts for service
%__mkdir_p %{buildroot}%{_sysconfdir}/sysconfig
install -m 0644 data/doctor/units/display-manager.env %{buildroot}%{_sysconfdir}/sysconfig
+install -m 0644 data/headless/units/display-manager.env %{buildroot}%{_sysconfdir}/sysconfig
%__mkdir_p %{buildroot}%{_sysconfdir}/profile.d
install -m 0644 data/doctor/units/display_env.sh %{buildroot}%{_sysconfdir}/profile.d
+install -m 0644 data/headless/units/display_env.sh %{buildroot}%{_sysconfdir}/profile.d
%post -n %{name} -p /sbin/ldconfig
%postun -n %{name} -p /sbin/ldconfig
# create user 'display'
getent passwd %{display_user} >/dev/null || %{_sbindir}/useradd -r -g %{display_group} -d /run/display -s /bin/false -c "Display" %{display_user}
+%pre headless
+# create groups 'display'
+getent group %{display_group} >/dev/null || %{_sbindir}/groupadd -r -o %{display_group}
+# create user 'display'
+getent passwd %{display_user} >/dev/null || %{_sbindir}/useradd -r -g %{display_group} -d /run/display -s /bin/false -c "Display" %{display_user}
+
# create links within systemd's target(s)
%__mkdir_p %{_unitdir}/graphical.target.wants/
%__mkdir_p %{_unitdir_user}/basic.target.wants/
rm -f %{_unitdir}/graphical.target.wants/display-manager-ready.service
rm -f %{_unitdir_user}/basic.target.wants/display-user.service
+%postun headless
+rm -f %{_unitdir}/graphical.target.wants/display-manager.service
+rm -f %{_unitdir}/graphical.target.wants/display-manager-ready.service
+rm -f %{_unitdir_user}/basic.target.wants/display-user.service
+
%files -n %{name}
%manifest %{name}.manifest
%defattr(-,root,root,-)
%config %{_sysconfdir}/sysconfig/display-manager.env
%config %{_sysconfdir}/profile.d/display_env.sh
+%files headless
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%license COPYING
+%{_bindir}/headless*
+%{_unitdir}/display-manager-ready.path
+%{_unitdir}/display-manager-ready.service
+%{_unitdir}/display-manager.service
+%{_unitdir_user}/display-user.service
+%config %{_sysconfdir}/sysconfig/display-manager.env
+%config %{_sysconfdir}/profile.d/display_env.sh
+
%files samples
%manifest %{name}.manifest
%defattr(-,root,root,-)
--- /dev/null
+#include <pepper.h>
+
+int main(int argc, char *argv[])
+{
+ const char *socket_name = NULL;
+ pepper_compositor_t *compositor = NULL;
+
+ socket_name = getenv("WAYLAND_DISPLAY");
+
+ if (!socket_name)
+ socket_name = "headless-0";
+
+ /* create pepper compositir */
+ compositor = pepper_compositor_create(socket_name);
+ PEPPER_CHECK(compositor, return EXIT_FAILURE, "Failed to create compositor !");
+
+ /* run event loop */
+ wl_display_run(pepper_compositor_get_display(compositor));
+
+ pepper_compositor_destroy(compositor);
+
+ return EXIT_SUCCESS;
+}