meta-agl-profile-graphical: update weston and weston-init
[AGL/meta-agl.git] / meta-agl-profile-graphical / recipes-graphics / wayland / weston-init.bbappend
index 910cf5a..c71402f 100644 (file)
@@ -2,80 +2,66 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
 inherit agl-graphical
 
-
-WESTONSTART ??= "/usr/bin/weston ${WESTONARGS}"
+WESTONSTART ??= "${@bb.utils.contains("DISTRO_FEATURES", "agl-compositor", "/usr/bin/agl-compositor", "/usr/bin/weston",d)} ${WESTONARGS}"
 WESTONSTART_append = " ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", " --log=${DISPLAY_XDG_RUNTIME_DIR}/weston.log", "",d)}"
 
-SRC_URI += " \
-    file://weston_tmpfiles.conf \
-    file://weston.service.add \
+WIFILES = " \
+    file://weston.conf.in \
+    file://tmpfiles.conf.in \
+    file://zz-dri.rules.in \
+    file://zz-input.rules.in \
+    file://zz-tty.rules.in \
 "
 
-do_install_append() {
-    sed -i "/\[Unit\]/aConflicts=getty@tty${WESTONTTY}.service" \
-           ${D}${systemd_system_unitdir}/weston.service
-
-    sed -i "/\[Service\]/r ${S}/weston.service.add" \
-           ${D}${systemd_system_unitdir}/weston.service
-
-    if ! grep -q '^Group=' ${D}${systemd_system_unitdir}/weston.service; then
-        sed -i "/\[Service\]/aGroup=root" ${D}${systemd_system_unitdir}/weston.service
-    fi
-    if ! grep -q '^User=' ${D}${systemd_system_unitdir}/weston.service; then
-        sed -i "/\[Service\]/aUser=root" ${D}${systemd_system_unitdir}/weston.service
-    fi
-
-    sed -e 's,User=root,User=${WESTONUSER},g' \
-        -e 's,Group=root,Group=${WESTONGROUP},g' \
-        -e 's,ExecStart=.*,ExecStart=${WESTONSTART},g' \
-        -e 's,@WESTONTTY@,${WESTONTTY},g' \
-        -e 's,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g' \
-       -e '/PAMName=/d' \
-        -i ${D}${systemd_system_unitdir}/weston.service
-
-    # Add a rule to ensure the 'display' user has permissions to
-    # open the graphics device
-    install -d ${D}${sysconfdir}/init.d
-    install -d ${D}${sysconfdir}/udev/rules.d
-    cat >${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF'
-SUBSYSTEM=="drm", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-EOF
-
-    # user 'display' must own /dev/tty${WESTONTTY} for weston to start correctly
-    cat >${D}${sysconfdir}/udev/rules.d/zz-tty.rules <<'EOF'
-SUBSYSTEM=="tty", KERNEL=="tty${WESTONTTY}", OWNER="${WESTONUSER}", SECLABEL{smack}="^", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-EOF
-
-    # user 'display' must also be able to access /dev/input/*
-    cat >${D}${sysconfdir}/udev/rules.d/zz-input.rules <<'EOF'
-SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="^", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-EOF
-
-    # user 'display' must also be able to access /dev/media*, etc.
-    cat >${D}${sysconfdir}/udev/rules.d/zz-remote-display.rules <<'EOF'
-SUBSYSTEM=="media", MODE="0660", GROUP="display", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-SUBSYSTEM=="video4linux", MODE="0660", GROUP="display", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston.service"
-KERNEL=="uvcs", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-KERNEL=="rgnmm", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-EOF
-
-    install -d ${D}${sysconfdir}/tmpfiles.d
-    install -Dm755 ${WORKDIR}/weston_tmpfiles.conf ${D}/${libdir}/tmpfiles.d/weston.conf
-
-    sed -e 's,@WESTONUSER@,${WESTONUSER},g' \
-        -e 's,@WESTONGROUP@,${WESTONGROUP},g' \
-        -i ${D}/${libdir}/tmpfiles.d/weston.conf
-}
+WIFILES_append_imx = " \
+    file://zz-dri-imx.rules.in \
+"
 
-do_install_append_imx() {
+SRC_URI_append = " ${WIFILES}"
 
+do_install_append() {
+    # Remove upstream weston.ini to avoid conflict with weston-ini-conf package
+    rm -f ${D}${sysconfdir}/xdg/weston/weston.ini
+
+    # Remove upstream weston udev rules just to be safe
+    rm -f ${D}${sysconfdir}/udev/rules.d/71-weston-drm.rules
+
+    # Process ".in" files
+    files=$(echo ${WIFILES} | sed s,file://,,g)
+    for f in ${files}; do
+        g=${f%.in}
+        if [ "${f}" != "${g}" ]; then
+            sed -e "s,@WESTONUSER@,${WESTONUSER},g" \
+                -e "s,@WESTONGROUP@,${WESTONGROUP},g" \
+                -e "s,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g" \
+                -e "s,@WESTONSTART@,${WESTONSTART},g" \
+                    ${WORKDIR}/${f} > ${WORKDIR}/${g}
+        fi
+    done
+
+    # Install weston drop-in
+    install -d ${D}${systemd_system_unitdir}/weston@.service.d
+    install -m644 ${WORKDIR}/weston.conf ${D}/${systemd_system_unitdir}/weston@.service.d/weston-init.conf
+
+    # Install tmpfiles drop-in
+    install -d ${D}${libdir}/tmpfiles.d
+    install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/weston-init.conf
+
+    # Install udev rules
     install -d ${D}${sysconfdir}/udev/rules.d
-    cat >>${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF'
-SUBSYSTEM=="gpu_class", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*"
-EOF
-
+    for f in ${files}; do
+        g=${f%.in}
+        h=${g%.rules}
+        if [ "${g}" != "${h}" ]; then
+            install -m644 ${WORKDIR}/${g} ${D}${sysconfdir}/udev/rules.d
+        fi
+    done
 }
 
-FILES_${PN} += "${libdir}/tmpfiles.d/*.conf"
+FILES_${PN} += " \
+    ${libdir}/tmpfiles.d/ \
+    ${systemd_system_unitdir}/weston@.service.d/ \
+"
 
+SYSTEMD_AUTO_ENABLE = "enable"