From patchwork Fri May 2 20:28:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Randolph Sapp X-Patchwork-Id: 62364 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32656C3ABAC for ; Fri, 2 May 2025 20:32:13 +0000 (UTC) Received: from lelvem-ot02.ext.ti.com (lelvem-ot02.ext.ti.com [198.47.23.235]) by mx.groups.io with SMTP id smtpd.web10.120.1746217916511232156 for ; Fri, 02 May 2025 13:31:56 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=NeDYOpTO; spf=pass (domain: ti.com, ip: 198.47.23.235, mailfrom: rs@ti.com) Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelvem-ot02.ext.ti.com (8.15.2/8.15.2) with ESMTPS id 542KVdlm486359 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 2 May 2025 15:31:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1746217899; bh=O8qTkaVcXaMq9XIzbSPo82MtSe4rBy2n2kA9UH/ZuK8=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=NeDYOpTOAF5p1m3KVBgbkY8WXGLtU2tq5MPrTaiWiHQCGmeFqM0KaI4c2zM9rd3W3 KdJoFPp2S65xWcj3TiQfJr8aapH798OVyWPulV2ov0m95KwoRa0ux3PrU+EnLZNUR0 L7/J5Iv0pxxhFQbuDUWFfcPZ/1Oe9BgM8fPUEYT8= Received: from DLEE108.ent.ti.com (dlee108.ent.ti.com [157.170.170.38]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 542KVd0b023199 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 2 May 2025 15:31:39 -0500 Received: from DLEE110.ent.ti.com (157.170.170.21) by DLEE108.ent.ti.com (157.170.170.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Fri, 2 May 2025 15:31:39 -0500 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DLEE110.ent.ti.com (157.170.170.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Fri, 2 May 2025 15:31:39 -0500 Received: from rs-desk.dhcp.ti.com (rs-desk.dhcp.ti.com [128.247.81.144]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 542KVdGI126709; Fri, 2 May 2025 15:31:39 -0500 From: To: , , , , , , , , CC: , Subject: [oe-core][PATCH 1/3] emptty: add version 0.14.0 Date: Fri, 2 May 2025 15:28:39 -0500 Message-ID: <20250502202840.3148565-3-rs@ti.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250502202840.3148565-2-rs@ti.com> References: <20250502202840.3148565-2-rs@ti.com> MIME-Version: 1.0 X-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 02 May 2025 20:32:13 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/215923 From: Randolph Sapp Add emptty, a "Dead simple CLI Display Manager on TTY". This is a relatively lightweight display manager that supports x11 as well as wayland though both a CLI and automatic login mechanism. This can effetely replace the custom init scripts for both x11 (xserver-nodm-init) and wayland (weston-init) with a single tool with more verbose logging capabilities. This is split into two recipes. The emptty package provides the binary and various agnostic configs while the emptty-conf package provides the default configuration for the application itself. This RPROVIDES virtual-emptty-conf, allowing other recipes to provide their own configurations to override the default behavior. Signed-off-by: Randolph Sapp --- .../conf/distro/include/default-providers.inc | 1 + meta/conf/distro/include/maintainers.inc | 1 + meta/recipes-graphics/emptty/emptty-conf.bb | 14 +++++ meta/recipes-graphics/emptty/emptty.inc | 26 +++++++++ .../recipes-graphics/emptty/emptty/emptty.tab | 1 + meta/recipes-graphics/emptty/emptty/pamconf | 10 ++++ meta/recipes-graphics/emptty/emptty_0.14.0.bb | 53 +++++++++++++++++++ 7 files changed, 106 insertions(+) create mode 100644 meta/recipes-graphics/emptty/emptty-conf.bb create mode 100644 meta/recipes-graphics/emptty/emptty.inc create mode 100644 meta/recipes-graphics/emptty/emptty/emptty.tab create mode 100644 meta/recipes-graphics/emptty/emptty/pamconf create mode 100644 meta/recipes-graphics/emptty/emptty_0.14.0.bb diff --git a/meta/conf/distro/include/default-providers.inc b/meta/conf/distro/include/default-providers.inc index ee91af8796..b5446c0f92 100644 --- a/meta/conf/distro/include/default-providers.inc +++ b/meta/conf/distro/include/default-providers.inc @@ -68,3 +68,4 @@ PREFERRED_PROVIDER_nativesdk-mesa ?= "nativesdk-mesa" PREFERRED_PROVIDER_virtual/nativesdk-libsdl2 ?= "nativesdk-libsdl2" PREFERRED_RPROVIDER_virtual-x-terminal-emulator ?= "rxvt-unicode" +PREFERRED_RPROVIDER_virtual-emptty-conf ?= "emptty-conf" diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index b3e3862df9..1b3c10f743 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc @@ -172,6 +172,7 @@ RECIPE_MAINTAINER:pn-efivar = "Ross Burton " RECIPE_MAINTAINER:pn-efibootmgr = "Ross Burton " RECIPE_MAINTAINER:pn-elfutils = "Zang Ruochen " RECIPE_MAINTAINER:pn-ell = "Zang Ruochen " +RECIPE_MAINTAINER:pn-emptty = "Randolph Sapp " RECIPE_MAINTAINER:pn-enchant2 = "Anuj Mittal " RECIPE_MAINTAINER:pn-encodings = "Unassigned " RECIPE_MAINTAINER:pn-epiphany = "Unassigned " diff --git a/meta/recipes-graphics/emptty/emptty-conf.bb b/meta/recipes-graphics/emptty/emptty-conf.bb new file mode 100644 index 0000000000..0aacb086cd --- /dev/null +++ b/meta/recipes-graphics/emptty/emptty-conf.bb @@ -0,0 +1,14 @@ +require emptty.inc + +SUMMARY += " (Default config)" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +do_install () { + oe_runmake -C ${S}/src/${GO_IMPORT} DESTDIR=${D} install-config +} + +FILES:${PN}-conf = "${sysconfdir}/emptty/conf" +CONFFILES:${PN}-conf = "${sysconfdir}/emptty/conf" +RPROVIDES:${PN}-conf += "virtual-emptty-conf" diff --git a/meta/recipes-graphics/emptty/emptty.inc b/meta/recipes-graphics/emptty/emptty.inc new file mode 100644 index 0000000000..11d5770f3a --- /dev/null +++ b/meta/recipes-graphics/emptty/emptty.inc @@ -0,0 +1,26 @@ +SUMMARY = "Dead simple CLI Display Manager on TTY" +DESCRIPTION = "Emptty is a simple display manager with a command line greeter \ +It supports both X11 and Wayland sessions, exporting required variables and \ +creating user paths as necessary." + +HOMEPAGE = "https://github.com/tvrzna/emptty" +BUGTRACKER = "https://github.com/tvrzna/emptty/issues" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=d1e4d12c7d1d17367ba5668706a405ba" + +S = "${UNPACKDIR}" + +FILESEXTRAPATHS:append = ":${THISDIR}/emptty" + +GO_IMPORT = "github.com/tvrzna/emptty" +GO_IMPORT_pam = "github.com/msteinert/pam" +SRC_URI = "\ + git://${GO_IMPORT}.git;protocol=https;branch=master;destsuffix=src/${GO_IMPORT} \ + git://${GO_IMPORT_pam}.git;protocol=https;branch=master;name=pam;destsuffix=src/${GO_IMPORT_pam} \ + file://pamconf \ + file://emptty.tab \ + " +SRCREV = "d162bef75fadc8ae1d8e33dbb3de5e2795a196e0" +SRCREV_pam = "50ded1b0e7864b9bf75005eb945a8ec826bcf69d" + +SRCREV_FORMAT .= "_pam" diff --git a/meta/recipes-graphics/emptty/emptty/emptty.tab b/meta/recipes-graphics/emptty/emptty/emptty.tab new file mode 100644 index 0000000000..6359c7224d --- /dev/null +++ b/meta/recipes-graphics/emptty/emptty/emptty.tab @@ -0,0 +1 @@ +7:5:respawn:/usr/bin/emptty -t 7 -d diff --git a/meta/recipes-graphics/emptty/emptty/pamconf b/meta/recipes-graphics/emptty/emptty/pamconf new file mode 100644 index 0000000000..9cbfd6c4a5 --- /dev/null +++ b/meta/recipes-graphics/emptty/emptty/pamconf @@ -0,0 +1,10 @@ +#%PAM-1.0 +auth sufficient pam_succeed_if.so user ingroup nopasswdlogin +auth include common-auth +-auth optional pam_gnome_keyring.so +-auth optional pam_kwallet5.so +account include common-account +session include common-session +-session optional pam_gnome_keyring.so auto_start +-session optional pam_kwallet5.so auto_start force_run +password include common-password diff --git a/meta/recipes-graphics/emptty/emptty_0.14.0.bb b/meta/recipes-graphics/emptty/emptty_0.14.0.bb new file mode 100644 index 0000000000..7e2f211bc9 --- /dev/null +++ b/meta/recipes-graphics/emptty/emptty_0.14.0.bb @@ -0,0 +1,53 @@ +require emptty.inc + +PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'pam x11', d)}" +PACKAGECONFIG[pam] = ",,libpam,pam-plugin-succeed-if" +PACKAGECONFIG[x11] = ",,virtual/libx11" + +DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'pam', '', 'libxcrypt', d)}" + +GO_TAGS = "" +GO_TAGS:append = "${@bb.utils.contains('PACKAGECONFIG', 'pam', '', ',nopam', d)}" +GO_TAGS:append = "${@bb.utils.contains('PACKAGECONFIG', 'x11', '', ',noxlib', d)}" + +GOBUILDFLAGS:append = " -tags=${GO_TAGS}" + +export GO111MODULE = "off" + +inherit go + +DEPENDS += "gzip" + +do_install () { + # general collateral + install -Dm755 ${B}/${GO_BUILD_BINDIR}/emptty ${D}${bindir}/emptty + install -d ${D}${mandir}/man1 + gzip -cn ${S}/src/${GO_IMPORT}/res/emptty.1 > ${D}${mandir}/man1/emptty.1.gz + + # pam config + if "${@bb.utils.contains('PACKAGECONFIG','pam','true','false',d)}" + then + install -Dm644 ${S}/pamconf ${D}${sysconfdir}/pam.d/emptty + fi + + # init services + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)} + then + oe_runmake -C ${S}/src/${GO_IMPORT} DESTDIR=${D} install-systemd + else + install -Dm644 ${S}/emptty.tab ${D}${sysconfdir}/inittab.d/emptty.tab + fi +} + +FILES:${PN} = "\ + ${systemd_system_unitdir}/emptty.service \ + ${sysconfdir}/inittab.d/emptty.tab \ + ${bindir}/emptty \ + ${mandir}/man1/emptty.1.gz \ + ${sysconfdir}/pam.d/emptty \ +" + +RDEPENDS:${PN} += "virtual-emptty-conf" +SYSTEMD_SERVICE:${PN} = "emptty.service" + +inherit systemd From patchwork Fri May 2 20:28:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Randolph Sapp X-Patchwork-Id: 62365 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34B2EC3ABB0 for ; Fri, 2 May 2025 20:32:13 +0000 (UTC) Received: from lelvem-ot02.ext.ti.com (lelvem-ot02.ext.ti.com [198.47.23.235]) by mx.groups.io with SMTP id smtpd.web10.119.1746217916457925406 for ; Fri, 02 May 2025 13:31:56 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=DQx5asuJ; spf=pass (domain: ti.com, ip: 198.47.23.235, mailfrom: rs@ti.com) Received: from fllv0035.itg.ti.com ([10.64.41.0]) by lelvem-ot02.ext.ti.com (8.15.2/8.15.2) with ESMTPS id 542KVdLF486360 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 2 May 2025 15:31:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1746217899; bh=STMYX/S6bpqD/6j33z2Anjep44ri8Ak3MwGTNRhBjX8=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=DQx5asuJL+Ms3ej8rBadC0bCfy+A+SGb1z72nVlu1O+dubM6ihF3X07ZB8bBC+wOF JB+UN2tEnil+vOSehxv2zjtedte2rEWeAIgbYqhrN01KXHkk157RZh3PkkDY0NhSyX DkJicI4HFOS9/kaKZj1Pd9F/Ye52g77WgsTdl1NA= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 542KVdL7107081 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 2 May 2025 15:31:39 -0500 Received: from DFLE102.ent.ti.com (10.64.6.23) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Fri, 2 May 2025 15:31:39 -0500 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DFLE102.ent.ti.com (10.64.6.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Fri, 2 May 2025 15:31:39 -0500 Received: from rs-desk.dhcp.ti.com (rs-desk.dhcp.ti.com [128.247.81.144]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 542KVdGJ126709; Fri, 2 May 2025 15:31:39 -0500 From: To: , , , , , , , , CC: , Subject: [oe-core][PATCH 2/3] weston-init: convert to virtual-emptty-conf Date: Fri, 2 May 2025 15:28:40 -0500 Message-ID: <20250502202840.3148565-4-rs@ti.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250502202840.3148565-2-rs@ti.com> References: <20250502202840.3148565-2-rs@ti.com> MIME-Version: 1.0 X-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 02 May 2025 20:32:13 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/215922 From: Randolph Sapp Convert this script package into a simple config for emptty using the same weston user but leveraging the nopasswdlogin session provided by emptty. Runtime provide virtual-emptty-conf as we need to set parameters for the default session. Signed-off-by: Randolph Sapp --- meta/recipes-graphics/wayland/weston-init.bb | 61 +++------------ .../wayland/weston-init/emptty.conf | 77 +++++++++++++++++++ .../recipes-graphics/wayland/weston-init/init | 54 ------------- .../wayland/weston-init/weston-autologin | 11 --- .../wayland/weston-init/weston-socket.sh | 20 ----- .../wayland/weston-init/weston-start | 76 ------------------ .../wayland/weston-init/weston.env | 0 .../wayland/weston-init/weston.service | 71 ----------------- .../wayland/weston-init/weston.socket | 14 ---- 9 files changed, 89 insertions(+), 295 deletions(-) create mode 100644 meta/recipes-graphics/wayland/weston-init/emptty.conf delete mode 100644 meta/recipes-graphics/wayland/weston-init/init delete mode 100644 meta/recipes-graphics/wayland/weston-init/weston-autologin delete mode 100755 meta/recipes-graphics/wayland/weston-init/weston-socket.sh delete mode 100755 meta/recipes-graphics/wayland/weston-init/weston-start delete mode 100644 meta/recipes-graphics/wayland/weston-init/weston.env delete mode 100644 meta/recipes-graphics/wayland/weston-init/weston.service delete mode 100644 meta/recipes-graphics/wayland/weston-init/weston.socket diff --git a/meta/recipes-graphics/wayland/weston-init.bb b/meta/recipes-graphics/wayland/weston-init.bb index 5723655a9b..d20cdd6803 100644 --- a/meta/recipes-graphics/wayland/weston-init.bb +++ b/meta/recipes-graphics/wayland/weston-init.bb @@ -1,17 +1,13 @@ -SUMMARY = "Startup script and systemd unit file for the Weston Wayland compositor" +SUMMARY = "Autologin package for the Weston Wayland compositor" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" PACKAGE_ARCH = "${MACHINE_ARCH}" -SRC_URI = "file://init \ - file://weston.env \ +SRC_URI = "\ file://weston.ini \ - file://weston.service \ - file://weston.socket \ - file://weston-socket.sh \ - file://weston-autologin \ - file://weston-start" + file://emptty.conf \ +" S = "${WORKDIR}/sources" UNPACKDIR = "${S}" @@ -28,32 +24,8 @@ DEFAULTBACKEND ??= "" DEFAULTBACKEND:qemuall ?= "drm" do_install() { - # Install weston-start script - if [ "${VIRTUAL-RUNTIME_init_manager}" != "systemd" ]; then - install -Dm755 ${S}/weston-start ${D}${bindir}/weston-start - sed -i 's,@DATADIR@,${datadir},g' ${D}${bindir}/weston-start - sed -i 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${bindir}/weston-start - install -Dm755 ${S}/init ${D}/${sysconfdir}/init.d/weston - sed -i 's#ROOTHOME#${ROOT_HOME}#' ${D}/${sysconfdir}/init.d/weston - fi - - # Install Weston systemd service - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - install -D -p -m0644 ${S}/weston.service ${D}${systemd_system_unitdir}/weston.service - install -D -p -m0644 ${S}/weston.socket ${D}${systemd_system_unitdir}/weston.socket - install -D -p -m0644 ${S}/weston-socket.sh ${D}${sysconfdir}/profile.d/weston-socket.sh - sed -i -e s:/etc:${sysconfdir}:g \ - -e s:/usr/bin:${bindir}:g \ - -e s:/var:${localstatedir}:g \ - ${D}${systemd_system_unitdir}/weston.service - fi - - if [ "${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)}" ]; then - install -D -p -m0644 ${S}/weston-autologin ${D}${sysconfdir}/pam.d/weston-autologin - fi - install -D -p -m0644 ${S}/weston.ini ${D}${sysconfdir}/xdg/weston/weston.ini - install -Dm644 ${S}/weston.env ${D}${sysconfdir}/default/weston + install -D -p -m0644 ${S}/emptty.conf ${D}${sysconfdir}/emptty/conf if [ -n "${DEFAULTBACKEND}" ]; then sed -i -e "/^\[core\]/a backend=${DEFAULTBACKEND}-backend.so" ${D}${sysconfdir}/xdg/weston/weston.ini @@ -74,9 +46,7 @@ do_install() { install -dm 755 -o weston -g weston ${D}/home/weston } -INHIBIT_UPDATERCD_BBCLASS = "${@oe.utils.conditional('VIRTUAL-RUNTIME_init_manager', 'systemd', '1', '', d)}" - -inherit update-rc.d systemd useradd +inherit useradd USERADD_PACKAGES = "${PN}" @@ -84,23 +54,16 @@ USERADD_PACKAGES = "${PN}" # require ${THISDIR}/required-distro-features.inc -RDEPENDS:${PN} = "weston kbd ${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'weston-xwayland', '', d)}" - -INITSCRIPT_NAME = "weston" -INITSCRIPT_PARAMS = "start 9 5 2 . stop 20 0 1 6 ." +RDEPENDS:${PN} = "emptty weston kbd ${@bb.utils.contains('PACKAGECONFIG', 'xwayland', 'weston-xwayland', '', d)}" FILES:${PN} += "\ ${sysconfdir}/xdg/weston/weston.ini \ - ${sysconfdir}/profile.d/weston-socket.sh \ - ${systemd_system_unitdir}/weston.service \ - ${systemd_system_unitdir}/weston.socket \ - ${sysconfdir}/default/weston \ - ${sysconfdir}/pam.d/ \ + ${sysconfdir}/emptty/conf \ /home/weston \ " -CONFFILES:${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/default/weston" +CONFFILES:${PN} += "${sysconfdir}/xdg/weston/weston.ini ${sysconfdir}/emptty/conf" +RPROVIDES:${PN} += "virtual-emptty-conf" -SYSTEMD_SERVICE:${PN} = "weston.service weston.socket" -USERADD_PARAM:${PN} = "--home /home/weston --shell /bin/sh --user-group -G video,input,render,seat,wayland weston" -GROUPADD_PARAM:${PN} = "-r wayland; -r render; -r seat" +USERADD_PARAM:${PN} = "--home /home/weston --shell /bin/sh --user-group -G video,input,render,seat,nopasswdlogin weston" +GROUPADD_PARAM:${PN} = "-r nopasswdlogin; -r render; -r seat" diff --git a/meta/recipes-graphics/wayland/weston-init/emptty.conf b/meta/recipes-graphics/wayland/weston-init/emptty.conf new file mode 100644 index 0000000000..7520bc0b9c --- /dev/null +++ b/meta/recipes-graphics/wayland/weston-init/emptty.conf @@ -0,0 +1,77 @@ +# TTY, where emptty will start. +TTY_NUMBER=7 + +# Enables switching to defined TTY number. +SWITCH_TTY=true + +# Enables printing of /etc/issue in daemon mode. +PRINT_ISSUE=true + +# Enables printing of default motd, /etc/emptty/motd or /etc/emptty/motd-gen.sh. +PRINT_MOTD=true + +# Preselected user, if AUTOLOGIN is enabled, this user is logged in. +DEFAULT_USER=weston + +# Enables Autologin, if DEFAULT_USER is defined and part of nopasswdlogin group. Possible values are "true" or "false". +AUTOLOGIN=true + +# The default session used, if Autologin is enabled. If session is not found in list of session, it proceeds to manual selection. +AUTOLOGIN_SESSION=Weston + +# If Autologin is enabled and session does not start correctly, the number of retries in short period is kept to eventually stop the infinite loop of restarts. -1 is for infinite retries, 0 is for no retry. +AUTOLOGIN_MAX_RETRY=0 + +# Default LANG, if user does not have set own in init script. +#LANG=en_US.UTF-8 + +# Starts desktop with calling "dbus-launch". +DBUS_LAUNCH=true + +# Starts Xorg desktop with calling "~/.xinitrc" script, if is true, file exists and selected WM/DE is Xorg session, it overrides DBUS_LAUNCH. +XINITRC_LAUNCH=false + +# Prints available WM/DE each on new line instead of printing on single line. +VERTICAL_SELECTION=false + +# Defines the way, how is logging handled. Possible values are "rotate", "appending" or "disabled". +#LOGGING=rotate + +# Overrides path of log file +#LOGGING_FILE=/var/log/emptty/[TTY_NUMBER].log + +# Arguments passed to Xorg server. +#XORG_ARGS= + +# Allows to use dynamic motd script to generate custom MOTD. +#DYNAMIC_MOTD=false + +# Allows to override default path to dynamic motd. +#DYNAMIC_MOTD_PATH=/etc/emptty/motd-gen.sh + +# Allows to override default path to static motd. +#MOTD_PATH=/etc/emptty/motd + +# Foreground color, available only in daemon mode. +#FG_COLOR=LIGHT_BLACK + +# Background color, available only in daemon mode. +#BG_COLOR=BLACK + +# Enables numlock in daemon mode. Possible values are "true" or "false". +#ENABLE_NUMLOCK=false + +# Defines the way, how is logging of session errors handled. Possible values are "rotate", "appending" or "disabled". +SESSION_ERROR_LOGGING=rotate + +# Overrides path of session errors log file +#SESSION_ERROR_LOGGING_FILE=/var/log/emptty/session-errors.[TTY_NUMBER].log + +# If set true, it will not use `.emptty-xauth` file, but the standard `~/.Xauthority` file. This allows to handle xauth issues. +#DEFAULT_XAUTHORITY=false + +#If set true, Xorg will be started as rootless, if system allows and emptty is running in daemon mode. +#ROOTLESS_XORG=false + +#If set true, environmental groups are printed to differ Xorg/Wayland/Custom/UserCustom desktops. +IDENTIFY_ENVS=false diff --git a/meta/recipes-graphics/wayland/weston-init/init b/meta/recipes-graphics/wayland/weston-init/init deleted file mode 100644 index a5c54e001e..0000000000 --- a/meta/recipes-graphics/wayland/weston-init/init +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# -### BEGIN INIT INFO -# Provides: weston -# Required-Start: $local_fs $remote_fs -# Required-Stop: $local_fs $remote_fs -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -### END INIT INFO - -if test -e /etc/default/weston ; then - . /etc/default/weston -fi - -killproc() { - pid=`/bin/pidof $1` - [ "$pid" != "" ] && kill $pid -} - -read CMDLINE < /proc/cmdline -for x in $CMDLINE; do - case $x in - weston=false) - echo "Weston disabled" - exit 0; - ;; - esac -done - -case "$1" in - start) - . /etc/profile - export HOME=ROOTHOME - - WESTON_USER=weston weston-start $OPTARGS & - ;; - - stop) - echo "Stopping Weston" - killproc weston - ;; - - restart) - $0 stop - sleep 1 - $0 start - ;; - - *) - echo "usage: $0 { start | stop | restart }" - ;; -esac - -exit 0 diff --git a/meta/recipes-graphics/wayland/weston-init/weston-autologin b/meta/recipes-graphics/wayland/weston-init/weston-autologin deleted file mode 100644 index f6e6d106de..0000000000 --- a/meta/recipes-graphics/wayland/weston-init/weston-autologin +++ /dev/null @@ -1,11 +0,0 @@ -auth required pam_nologin.so -auth required pam_unix.so try_first_pass nullok - -account required pam_nologin.so -account required pam_unix.so - -session required pam_env.so -session required pam_unix.so --session optional pam_systemd.so type=wayland class=user desktop=weston --session optional pam_loginuid.so - diff --git a/meta/recipes-graphics/wayland/weston-init/weston-socket.sh b/meta/recipes-graphics/wayland/weston-init/weston-socket.sh deleted file mode 100755 index 86389d63a3..0000000000 --- a/meta/recipes-graphics/wayland/weston-init/weston-socket.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# set weston variables for use with global weston socket -global_socket="/run/wayland-0" -if [ -e "$global_socket" ]; then - weston_group=$(stat -c "%G" "$global_socket") - if [ "$(id -u)" = "0" ]; then - export WAYLAND_DISPLAY="$global_socket" - else - case "$(groups "$USER")" in - *"$weston_group"*) - export WAYLAND_DISPLAY="$global_socket" - ;; - *) - ;; - esac - fi - unset weston_group -fi -unset global_socket diff --git a/meta/recipes-graphics/wayland/weston-init/weston-start b/meta/recipes-graphics/wayland/weston-init/weston-start deleted file mode 100755 index 3b13a0047a..0000000000 --- a/meta/recipes-graphics/wayland/weston-init/weston-start +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# Copyright (C) 2016 O.S. Systems Software LTDA. -# Copyright (C) 2016 Freescale Semiconductor - -export PATH="/sbin:/usr/sbin:/bin:/usr/bin" - -usage() { - cat <] -EOF -} - -## Module support -modules_dir=@DATADIR@/weston-start - -# Add weston extra argument -add_weston_argument() { - weston_args="$weston_args $1" -} - -## Add module to --modules argument -add_weston_module() { - if [[ "x${weston_modules}" == "x" ]]; then - weston_modules="--modules " - fi; - weston_modules+="${1}," -} - -if [ -n "$WAYLAND_DISPLAY" ]; then - echo "ERROR: A Wayland compositor is already running, nested Weston instance is not supported yet." - exit 1 -fi - -if [ -n "$WESTON_USER" ]; then - if [ -z "$WESTON_GROUP" ]; then - # no explicit WESTON_GROUP given, therefore use WESTON_USER - export WESTON_GROUP="${WESTON_USER}" - fi -fi - -weston_args=$* - -# Load and run modules -if [ -d "$modules_dir" ]; then - for m in "$modules_dir"/*; do - # Skip backup files - if [ "`echo $m | sed -e 's/\~$//'`" != "$m" ]; then - continue - fi - - # process module - . $m - if [[ x"{$weston_modules}" != "x" ]]; then - add_weston_argument "${weston_modules}" - fi; - done -fi - -if test -z "$XDG_RUNTIME_DIR"; then - export XDG_RUNTIME_DIR=/run/user/`id -u ${WESTON_USER}` - if test -d "$XDG_RUNTIME_DIR"; then - # Check permissions on existing directory - if [ "$(stat -c %u-%a "$XDG_RUNTIME_DIR")" != "$(id -u ${WESTON_USER})-700" ]; then - echo "ERROR: $XDG_RUNTIME_DIR has incorrect permissions" - exit 1 - fi - else - mkdir --mode 0700 --parents $XDG_RUNTIME_DIR - if [ -n "$WESTON_USER" ] - then - chown $WESTON_USER:$WESTON_GROUP $XDG_RUNTIME_DIR - fi - fi -fi - -su -c "XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR weston $weston_args --log=/tmp/weston.log" $WESTON_USER diff --git a/meta/recipes-graphics/wayland/weston-init/weston.env b/meta/recipes-graphics/wayland/weston-init/weston.env deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/meta/recipes-graphics/wayland/weston-init/weston.service b/meta/recipes-graphics/wayland/weston-init/weston.service deleted file mode 100644 index 80745998ed..0000000000 --- a/meta/recipes-graphics/wayland/weston-init/weston.service +++ /dev/null @@ -1,71 +0,0 @@ -# This is a system unit for launching Weston with auto-login as the -# user configured here. -# -# Weston must be built with systemd support, and your weston.ini must load -# the plugin systemd-notify.so. -[Unit] -Description=Weston, a Wayland compositor, as a system service -Documentation=man:weston(1) man:weston.ini(5) -Documentation=http://wayland.freedesktop.org/ - -# Make sure we are started after logins are permitted. -Requires=systemd-user-sessions.service -After=systemd-user-sessions.service - -# If Plymouth is used, we want to start when it is on its way out. -After=plymouth-quit-wait.service - -# D-Bus is necessary for contacting logind. Logind is required. -Wants=dbus.socket -After=dbus.socket - -# Ensure the socket is present -Requires=weston.socket - -# Since we are part of the graphical session, make sure we are started before -# it is complete. -Before=graphical.target - -# Prevent starting on systems without virtual consoles, Weston requires one -# for now. -ConditionPathExists=/dev/tty0 - -[Service] -# Requires systemd-notify.so Weston plugin. -Type=notify -EnvironmentFile=/etc/default/weston -ExecStart=/usr/bin/weston --modules=systemd-notify.so - -# Optional watchdog setup -#TimeoutStartSec=60 -#WatchdogSec=20 - -# The user to run Weston as. -User=weston -Group=weston - -# Make sure the working directory is the users home directory -WorkingDirectory=/home/weston - -# Set up a full user session for the user, required by Weston. -PAMName=weston-autologin - -# A virtual terminal is needed. -TTYPath=/dev/tty7 -TTYReset=yes -TTYVHangup=yes -TTYVTDisallocate=yes - -# Fail to start if not controlling the tty. -StandardInput=tty-fail -StandardOutput=journal -StandardError=journal - -# Log this user with utmp, letting it show up with commands 'w' and 'who'. -UtmpIdentifier=tty7 -UtmpMode=user - -[Install] -# Note: If you only want weston to start on-demand, remove this line with a -# service drop file -WantedBy=graphical.target diff --git a/meta/recipes-graphics/wayland/weston-init/weston.socket b/meta/recipes-graphics/wayland/weston-init/weston.socket deleted file mode 100644 index c1bdc83c05..0000000000 --- a/meta/recipes-graphics/wayland/weston-init/weston.socket +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Weston socket -RequiresMountsFor=/run - -[Socket] -ListenStream=/run/wayland-0 -SocketMode=0775 -SocketUser=weston -SocketGroup=wayland -RemoveOnStop=yes - -[Install] -WantedBy=sockets.target - From patchwork Fri May 2 20:28:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Randolph Sapp X-Patchwork-Id: 62363 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F749C3ABB0 for ; Fri, 2 May 2025 20:32:03 +0000 (UTC) Received: from lelvem-ot01.ext.ti.com (lelvem-ot01.ext.ti.com [198.47.23.234]) by mx.groups.io with SMTP id smtpd.web11.127.1746217916671015530 for ; Fri, 02 May 2025 13:31:56 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=zGQVJO3x; spf=pass (domain: ti.com, ip: 198.47.23.234, mailfrom: rs@ti.com) Received: from fllv0034.itg.ti.com ([10.64.40.246]) by lelvem-ot01.ext.ti.com (8.15.2/8.15.2) with ESMTPS id 542KVdAe3941853 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 2 May 2025 15:31:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1746217899; bh=cTQY5UEXxw/a84msrfHVPpukfw4mandNH7W1CRq69ps=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=zGQVJO3xLGO5/iOCRskwOFxb5seDJ6MExsJM84z2Oi7f9MggkYZHNcrWcd6JD2O8B voppEA0b0i9gXKtot2GbfBCSP78FAar54MCi0TWzib6Wx+w8I9GNa/6I8X5k4ozoD1 gptmN3d3Jo+4JFP7yKM2zaAvKYODTGmk+233xo9U= Received: from DFLE108.ent.ti.com (dfle108.ent.ti.com [10.64.6.29]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 542KVdIV001659 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 2 May 2025 15:31:39 -0500 Received: from DFLE108.ent.ti.com (10.64.6.29) by DFLE108.ent.ti.com (10.64.6.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Fri, 2 May 2025 15:31:39 -0500 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DFLE108.ent.ti.com (10.64.6.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Fri, 2 May 2025 15:31:39 -0500 Received: from rs-desk.dhcp.ti.com (rs-desk.dhcp.ti.com [128.247.81.144]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 542KVdGK126709; Fri, 2 May 2025 15:31:39 -0500 From: To: , , , , , , , , CC: , Subject: [oe-core][PATCH 3/3] xserver-nodm-init: convert to virtual-emptty-conf Date: Fri, 2 May 2025 15:28:41 -0500 Message-ID: <20250502202840.3148565-5-rs@ti.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250502202840.3148565-2-rs@ti.com> References: <20250502202840.3148565-2-rs@ti.com> MIME-Version: 1.0 X-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 02 May 2025 20:32:03 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/215924 From: Randolph Sapp Convert this script package into a simple config for emptty. This is capabile of using either the root user or the underprivileged xuser account based on the same ROOTLESS_X variable. The xuser will leverage the nopasswdlogin session provided by emptty for automatic logins. Runtime provide virtual-emptty-conf as we need to set parameters for the default session. This also gets rid of the xuser security/capability override since emptty sets up required components as root before decending into the specified user. This does not currently handle loading of autostart applications in "/etc/xdg/autostart". License-Update: GPLv2 scripts were replaced with MIT based config files Signed-off-by: Randolph Sapp --- meta/conf/distro/include/maintainers.inc | 4 +- .../x11-common/xserver-nodm-init/X11/Xsession | 38 -- .../X11/Xsession.d/13xdgbasedirs.sh | 19 - .../X11/Xsession.d/89xdgautostart.sh | 7 - .../X11/Xsession.d/90XWindowManager.sh | 7 - .../x11-common/xserver-nodm-init/Xserver | 25 -- .../xserver-nodm-init/capability.conf | 2 - .../xserver-nodm-init/default.desktop | 5 + .../xserver-nodm-init/emptty.conf.in} | 8 +- .../xserver-nodm-init/gplv2-license.patch | 355 ------------------ .../x11-common/xserver-nodm-init/xserver-nodm | 75 ---- .../xserver-nodm-init/xserver-nodm.conf.in | 7 - .../xserver-nodm-init/xserver-nodm.service.in | 11 - .../x11-common/xserver-nodm-init_3.0.bb | 57 +-- .../user-creation/xuser-account_0.1.bb | 3 +- 15 files changed, 29 insertions(+), 594 deletions(-) delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession.d/13xdgbasedirs.sh delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession.d/89xdgautostart.sh delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession.d/90XWindowManager.sh delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/Xserver delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/capability.conf create mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/default.desktop copy meta/recipes-graphics/{wayland/weston-init/emptty.conf => x11-common/xserver-nodm-init/emptty.conf.in} (95%) delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/gplv2-license.patch delete mode 100755 meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in delete mode 100644 meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc index 1b3c10f743..8088b2f667 100644 --- a/meta/conf/distro/include/maintainers.inc +++ b/meta/conf/distro/include/maintainers.inc @@ -920,12 +920,12 @@ RECIPE_MAINTAINER:pn-xorgproto = "Unassigned " RECIPE_MAINTAINER:pn-xprop = "Unassigned " RECIPE_MAINTAINER:pn-xrandr = "Unassigned " RECIPE_MAINTAINER:pn-xrestop = "Unassigned " -RECIPE_MAINTAINER:pn-xserver-nodm-init = "Unassigned " +RECIPE_MAINTAINER:pn-xserver-nodm-init = "Randolph Sapp " RECIPE_MAINTAINER:pn-xserver-xf86-config = "Unassigned " RECIPE_MAINTAINER:pn-xserver-xorg = "Unassigned " RECIPE_MAINTAINER:pn-xset = "Unassigned " RECIPE_MAINTAINER:pn-xtrans = "Unassigned " -RECIPE_MAINTAINER:pn-xuser-account = "Unassigned " +RECIPE_MAINTAINER:pn-xuser-account = "Randolph Sapp " RECIPE_MAINTAINER:pn-xvinfo = "Unassigned " RECIPE_MAINTAINER:pn-xwayland = "Unassigned " RECIPE_MAINTAINER:pn-xwininfo = "Unassigned " diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession b/meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession deleted file mode 100644 index 0b73127ae1..0000000000 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/X11/Xsession +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -if [ -x /usr/bin/dbus-launch ]; then - # As this is the X session script, always start a new DBus session. - eval `dbus-launch --sh-syntax --exit-with-session -+ Copyright (C) -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 2 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License along -+ with this program; if not, write to the Free Software Foundation, Inc., -+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ -+Also add information on how to contact you by electronic and paper mail. -+ -+If the program is interactive, make it output a short notice like this -+when it starts in an interactive mode: -+ -+ Gnomovision version 69, Copyright (C) year name of author -+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -+ This is free software, and you are welcome to redistribute it -+ under certain conditions; type `show c' for details. -+ -+The hypothetical commands `show w' and `show c' should show the appropriate -+parts of the General Public License. Of course, the commands you use may -+be called something other than `show w' and `show c'; they could even be -+mouse-clicks or menu items--whatever suits your program. -+ -+You should also get your employer (if you work as a programmer) or your -+school, if any, to sign a "copyright disclaimer" for the program, if -+necessary. Here is a sample; alter the names: -+ -+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program -+ `Gnomovision' (which makes passes at compilers) written by James Hacker. -+ -+ , 1 April 1989 -+ Ty Coon, President of Vice -+ -+This General Public License does not permit incorporating your program into -+proprietary programs. If your program is a subroutine library, you may -+consider it more useful to permit linking proprietary applications with the -+library. If this is what you want to do, use the GNU Lesser General -+Public License instead of this License. diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm deleted file mode 100755 index 116bb278bc..0000000000 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh -# -### BEGIN INIT INFO -# Provides: xserver -# Required-Start: $local_fs $remote_fs dbus -# Required-Stop: $local_fs $remote_fs -# Default-Start: 5 -# Default-Stop: 0 1 2 3 6 -### END INIT INFO - -killproc() { # kill the named process(es) - pid=`/bin/pidof $1` - [ "$pid" != "" ] && kill $pid -} - -read CMDLINE < /proc/cmdline -for x in $CMDLINE; do - case $x in - x11=false) - echo "X Server disabled" - exit 0; - ;; - esac -done - -case "$1" in - start) - . /etc/profile - - #default for USER - . /etc/default/xserver-nodm - echo "Starting Xserver" - if [ "$USER" != "root" ]; then - # setting for rootless X - chmod o+w /var/log - chmod g+r /dev/tty[0-3] - # hidraw device is probably needed - if [ -e /dev/hidraw0 ]; then - chmod o+rw /dev/hidraw* - fi - # Make sure that the Xorg has the cap_sys_admin capability which is - # needed for setting the drm master - if ! grep -q "^auth.*pam_cap\.so" /etc/pam.d/su; then - echo "auth optional pam_cap.so" >>/etc/pam.d/su - fi - if ! /usr/sbin/getcap $XSERVER | grep -q cap_sys_admin; then - /usr/sbin/setcap cap_sys_admin+eip $XSERVER - fi - fi - - # Using su rather than sudo as latest 1.8.1 cause failure [YOCTO #1211] - su -l -c '/etc/xserver-nodm/Xserver &' $USER - # Wait for the desktop to say its finished loading - # before loading the rest of the system - # dbus-wait org.matchbox_project.desktop Loaded - ;; - - stop) - echo "Stopping XServer" - killproc xinit - sleep 1 - chvt 1 & - ;; - - restart) - $0 stop - $0 start - ;; - - *) - echo "usage: $0 { start | stop | restart }" - ;; -esac - -exit 0 diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in deleted file mode 100644 index 4a9670d8d2..0000000000 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.conf.in +++ /dev/null @@ -1,7 +0,0 @@ -# common environment file for sysvinit and systemd - -XSERVER=/usr/bin/Xorg -DISPLAY=:0 -ARGS=" -br -pn @BLANK_ARGS@ @NO_CURSOR_ARG@ " -HOME=@HOME@ -USER=@USER@ diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in b/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in deleted file mode 100644 index 87dc4f8fcd..0000000000 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init/xserver-nodm.service.in +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Xserver startup without a display manager - -[Service] -EnvironmentFile=/etc/default/xserver-nodm -User=@USER@ -ExecStart=/etc/xserver-nodm/Xserver -Restart=always - -[Install] -Alias=display-manager.service diff --git a/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb b/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb index cd4acf8155..09b112c1ac 100644 --- a/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb +++ b/meta/recipes-graphics/x11-common/xserver-nodm-init_3.0.bb @@ -1,16 +1,10 @@ SUMMARY = "Simple Xserver Init Script (no dm)" -LICENSE = "GPL-2.0-only" -LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" SECTION = "x11" -SRC_URI = "file://xserver-nodm \ - file://Xserver \ - file://X11 \ - file://gplv2-license.patch \ - file://xserver-nodm.service.in \ - file://xserver-nodm.conf.in \ - file://capability.conf \ -" +SRC_URI = "file://emptty.conf.in \ + file://default.desktop" S = "${WORKDIR}/sources" UNPACKDIR = "${S}" @@ -18,7 +12,7 @@ UNPACKDIR = "${S}" # Since we refer to ROOTLESS_X which is normally enabled per-machine PACKAGE_ARCH = "${MACHINE_ARCH}" -inherit update-rc.d systemd features_check +inherit features_check REQUIRED_DISTRO_FEATURES = "x11 ${@oe.utils.conditional('ROOTLESS_X', '1', 'pam', '', d)}" @@ -28,45 +22,26 @@ PACKAGECONFIG[blank] = "" PACKAGECONFIG[nocursor] = "" do_install() { - install -d ${D}${sysconfdir}/default - install xserver-nodm.conf.in ${D}${sysconfdir}/default/xserver-nodm - install -d ${D}${sysconfdir}/xserver-nodm - install Xserver ${D}${sysconfdir}/xserver-nodm/Xserver - install -d ${D}${sysconfdir}/X11/Xsession.d - install X11/Xsession.d/* ${D}${sysconfdir}/X11/Xsession.d/ - install X11/Xsession ${D}${sysconfdir}/X11/ + install -D -p -m0644 ${S}/emptty.conf.in ${D}${sysconfdir}/emptty/conf + install -D -p -m0644 ${S}/default.desktop ${D}${datadir}/xsessions/default.desktop BLANK_ARGS="${@bb.utils.contains('PACKAGECONFIG', 'blank', '', '-s 0 -dpms', d)}" NO_CURSOR_ARG="${@bb.utils.contains('PACKAGECONFIG', 'nocursor', '-nocursor', '', d)}" + ROOTLESS_X_ARG="${@oe.utils.conditional('ROOTLESS_X', '1', 'true', 'false', d)}" if [ "${ROOTLESS_X}" = "1" ] ; then - XUSER_HOME="/home/xuser" XUSER="xuser" - install -D capability.conf ${D}${sysconfdir}/security/capability.conf - sed -i "s:@USER@:${XUSER}:" ${D}${sysconfdir}/security/capability.conf else - XUSER_HOME=${ROOT_HOME} XUSER="root" fi - sed -i "s:@HOME@:${XUSER_HOME}:; s:@USER@:${XUSER}:; s:@BLANK_ARGS@:${BLANK_ARGS}:" \ - ${D}${sysconfdir}/default/xserver-nodm - sed -i "s:@NO_CURSOR_ARG@:${NO_CURSOR_ARG}:" ${D}${sysconfdir}/default/xserver-nodm - - if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then - install -d ${D}${systemd_system_unitdir} - install -m 0644 ${S}/xserver-nodm.service.in ${D}${systemd_system_unitdir}/xserver-nodm.service - sed -i "s:@USER@:${XUSER}:" ${D}${systemd_system_unitdir}/xserver-nodm.service - fi - - if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then - install -d ${D}${sysconfdir}/init.d - install xserver-nodm ${D}${sysconfdir}/init.d - fi + sed -i "s:@USER@:${XUSER}:" ${D}${sysconfdir}/emptty/conf + sed -i "s:@NO_CURSOR_ARG@:${NO_CURSOR_ARG}:" ${D}${sysconfdir}/emptty/conf + sed -i "s:@BLANK_ARGS@:${BLANK_ARGS}:" ${D}${sysconfdir}/emptty/conf + sed -i "s:@ROOTLESS_X_ARG@:${ROOTLESS_X_ARG}:" ${D}${sysconfdir}/emptty/conf } -RDEPENDS:${PN} = "xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account libcap libcap-bin', '', d)}" - -INITSCRIPT_NAME = "xserver-nodm" -INITSCRIPT_PARAMS = "start 9 5 . stop 20 0 1 2 3 6 ." -SYSTEMD_SERVICE:${PN} = "xserver-nodm.service" +FILES:${PN} = "${sysconfdir}/emptty/conf \ + ${datadir}/xsessions/default.desktop" +RDEPENDS:${PN} = "emptty xinit ${@oe.utils.conditional('ROOTLESS_X', '1', 'xuser-account libcap libcap-bin', '', d)}" +RPROVIDES:${PN} += "virtual-emptty-conf" RCONFLICTS:${PN} = "xserver-common (< 1.34-r9) x11-common" diff --git a/meta/recipes-support/user-creation/xuser-account_0.1.bb b/meta/recipes-support/user-creation/xuser-account_0.1.bb index 80a429c6d3..57caccac4b 100644 --- a/meta/recipes-support/user-creation/xuser-account_0.1.bb +++ b/meta/recipes-support/user-creation/xuser-account_0.1.bb @@ -25,7 +25,8 @@ FILES:${PN} = "${sysconfdir}/dbus-1/system.d/system-xuser.conf" USERADD_PACKAGES = "${PN}" USERADD_PARAM:${PN} = "--create-home \ - --groups video,tty,audio,input,shutdown,disk \ + --groups video,tty,audio,input,shutdown,disk,nopasswdlogin \ --user-group xuser" +GROUPADD_PARAM:${PN} = "-r nopasswdlogin" ALLOW_EMPTY:${PN} = "1"