diff options
author | Max Krummenacher <max.krummenacher@toradex.com> | 2023-01-19 10:19:43 +0100 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2023-01-25 16:21:24 +0100 |
commit | 10f18204aab6ceeee00e3307b8dfe20dfd129f20 (patch) | |
tree | e8c22227bea7e14b9eac637cd897ac046835c519 /recipes-graphics | |
parent | 8e91c3531a990e94aacdfb2257df96be2778c857 (diff) |
weston.init: import from meta-arago
- Move the am62xx specific files into their own directory so
that they do not clash with files of the same name used by other
architectures.
- Additionally explicitely set the weston backend to drm.
- Additionally set the idle timeout to 0 in weston.ini, i.e. disable
that functionality.
- Start weston through a systemd service.
Related-to: ELB-4978
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Diffstat (limited to 'recipes-graphics')
-rw-r--r-- | recipes-graphics/wayland/weston-init.bbappend | 22 | ||||
-rw-r--r-- | recipes-graphics/wayland/weston-init/am62xx/init | 129 | ||||
-rw-r--r-- | recipes-graphics/wayland/weston-init/am62xx/runWeston | 39 | ||||
-rw-r--r-- | recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh | 12 | ||||
-rw-r--r-- | recipes-graphics/wayland/weston-init/am62xx/weston.ini | 12 |
5 files changed, 214 insertions, 0 deletions
diff --git a/recipes-graphics/wayland/weston-init.bbappend b/recipes-graphics/wayland/weston-init.bbappend new file mode 100644 index 0000000..8c6ab12 --- /dev/null +++ b/recipes-graphics/wayland/weston-init.bbappend @@ -0,0 +1,22 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +PR:append:am62xx = ".arago12" + +PACKAGECONFIG:append:am62xx:tdx = " no-idle-timeout" + +SRC_URI:append:am62xx = " \ + file://runWeston \ + file://wayland_env.sh \ + file://weston.ini \ +" + +do_install:append:am62xx () { + install -d ${D}${bindir} + install -m 755 ${WORKDIR}/runWeston ${D}${bindir} + + install -d ${D}${sysconfdir}/profile.d + install -m 0644 ${WORKDIR}/weston.ini ${D}${sysconfdir} + install -m 0644 ${WORKDIR}/wayland_env.sh ${D}${sysconfdir}/profile.d/ +} + +FILES:${PN}:append:am62xx = "${sysconfdir}/profile.d/* ${sysconfdir}/weston.ini" diff --git a/recipes-graphics/wayland/weston-init/am62xx/init b/recipes-graphics/wayland/weston-init/am62xx/init new file mode 100644 index 0000000..fa3f037 --- /dev/null +++ b/recipes-graphics/wayland/weston-init/am62xx/init @@ -0,0 +1,129 @@ +#!/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 + +killproc() { + all_pids=`/bin/pidof $1` + + # busybox pidof doesn't ommit the current pid + # as this script is called weston on the target + # in thinlinux with a busybox based utility load + # later killproc operations end up killing this + # script. + for pid in $all_pids + do + if [ "$pid" != "$$" ]; then + kill_pids+=$pid + fi + done + + [ "$kill_pids" != "" ] && kill $kill_pids +} + +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 + + # Weston for some reason dies if these environment variables are set + unset WAYLAND_DISPLAY + + # This is all a nasty hack + if test -z "$XDG_RUNTIME_DIR"; then + export XDG_RUNTIME_DIR=/run/user/root + fi + + if [ ! -d "$XDG_RUNTIME_DIR" ] ; then + mkdir --parents $XDG_RUNTIME_DIR + chmod 0700 $XDG_RUNTIME_DIR + fi + + echo "Starting Weston" + + if [ ! -d "/dev/input" ]; then + echo "Waiting for input device..." + killproc weston + sleep 3 + fi + + openvt -c 4 -f runWeston + + # If there's no touchscreen device available, done + if [ ! -e /dev/input/touchscreen0 ] ; then + exit 0 + fi + + # If it was already calibrated, done + if [ -f "$WS_CALUDEV_FILE" ] ; then + exit 0 + fi + + # Check if SD card is mounted + mount | grep /run/media/mmcblk0p1 | grep vfat > /dev/null 2>&1 + if [ "$?" = "0" ] ; then + SD_MOUNTED="1" + else + SD_MOUNTED="0" + fi + + # Check if SD card has a calibration rules file + SD_CALUDEV_FILE=/run/media/mmcblk0p1/ws-calibrate.rules + if [ "$SD_MOUNTED" = "1" -a -f "$SD_CALUDEV_FILE" ] ; then + # Copy it over to udev location + cp "$SD_CALUDEV_FILE" "$WS_CALUDEV_FILE" + else + # Run a calibration app and save output to udev rules + echo "Calibrating touchscreen (first time only)" + echo + echo "*** To continue, please complete the touchscreen calibration" + echo -n "*** by touching the crosshairs on the LCD screen" + sleep 2 + CAL_VALUES=`weston-calibrator|cut -c21-` + echo 'SUBSYSTEM=="input", ENV{WL_CALIBRATION}="'$CAL_VALUES'"' > $WS_CALUDEV_FILE + echo "." + # Copy it back to SD + if [ "$SD_MOUNTED" = "1" ] ; then + cp "$WS_CALUDEV_FILE" "$SD_CALUDEV_FILE" + fi + fi + + # Reload and re-run udev rules and restart weston + udevadm control --reload + udevadm trigger + killproc weston + sleep 2 + openvt -c 4 -f runWeston + ;; + + stop) + echo "Stopping Weston" + killproc weston + ;; + + restart) + $0 stop + sleep 2 + $0 start + ;; + + *) + echo "usage: $0 { start | stop | restart }" + ;; +esac + +exit 0 diff --git a/recipes-graphics/wayland/weston-init/am62xx/runWeston b/recipes-graphics/wayland/weston-init/am62xx/runWeston new file mode 100644 index 0000000..2751352 --- /dev/null +++ b/recipes-graphics/wayland/weston-init/am62xx/runWeston @@ -0,0 +1,39 @@ +#!/bin/sh + +clear +cat << EOF + + + + + + + + + + + + + + + + + Please wait... + + + + + + + + + + + + + + + +EOF + +weston --idle-time=0 --backend=drm-backend.so >> /var/log/weston.log 2>&1 diff --git a/recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh b/recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh new file mode 100644 index 0000000..50979b3 --- /dev/null +++ b/recipes-graphics/wayland/weston-init/am62xx/wayland_env.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +### Wayland Environment Variables ### + +export XDG_CONFIG_HOME=/etc/ +export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir +export WS_CALUDEV_FILE=/etc/udev/rules.d/ws-calibrate.rules + +if ! test -d "${XDG_RUNTIME_DIR}"; then + mkdir -p "${XDG_RUNTIME_DIR}" + chmod 0700 "${XDG_RUNTIME_DIR}" +fi diff --git a/recipes-graphics/wayland/weston-init/am62xx/weston.ini b/recipes-graphics/wayland/weston-init/am62xx/weston.ini new file mode 100644 index 0000000..c0ae9f9 --- /dev/null +++ b/recipes-graphics/wayland/weston-init/am62xx/weston.ini @@ -0,0 +1,12 @@ +[core] +require-input=false + +[shell] +locking=false +animation=zoom +panel-position=top +startup-animation=fade + +[screensaver] +# Uncomment path to disable screensaver +#path=@libexecdir@/weston-screensaver |