aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl-core/recipes-graphics/wayland
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2021-01-04 11:25:07 -0500
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2021-01-12 13:35:51 +0000
commitdd6777dfdacc691402cde0e349e9987a481efe3a (patch)
tree0d7e757655d1d5980bb7b9889ca943a9348e687c /meta-agl-core/recipes-graphics/wayland
parentcf15d1c197b2afdd4641b2415b12c011a8f1a432 (diff)
meta-agl-core: Revise weston-ini-conf mechanism
The recent layer reorganization broke the landscape vs portrait scheme based on bbappend'ing the weston-ini-conf recipe in the previous cluster and html5 demo layers. To fix this and to facilitate being able to easily build the mix of demo platform images, the weston.ini generation mechanism in the weston-ini-conf has been revised to build multiple packages. Instead of relying on SRC_URI to install weston.ini fragments into WORKDIR and grabbing all of them with a *.cfg glob, an explicit list built from new WESTON_FRAGMENTS and WESTON_DISPLAYS variables is used. The fragments listed in WESTON_FRAGMENTS are used to generate both weston-ini-conf and weston-ini-conf-landscape packages containing uniquely named files (weston.ini.default and weston.ini.landscape, respectively), and the OE update-alternatives mechanism is used to have weston.ini point at the appropriate file on installation. For now, the two packages are explicitly marked as incompatible with one another, but this could be tweaked in the future if switching between them on target is desired. Additional notes: - A RPROVIDES of "weston-ini" has been defined for the weston-ini-conf packages and a RDEPENDS on it added to weston-init. This should allow members to drop in a complete alternative solution while still having a dependency chain. - The various meta-agl-bsp bbappends of weston-ini-conf have for the most part been updated to yield the same behavior as before, though with an eye towards using machine overrides to ease multiconfig usage down the road. This includes the currently unused Raspberry Pi touchscreen support, which has been left since it may still see use. - An exception to the above, however, is that the support for the touchscreen on the dra7 EVM has been removed, as upstream dropped the support for the screen on the available test hardware and at present it only seems feasible to support external HDMI monitors. - The unused fbdev fragment used to support meta-freescale in the past has been removed. - The virtual and virtual-landscape fragments have been renamed to virtual-270 and virtual-0 to better indicate the orientation and match the naming used for the other fragments. It is likely that future work will need to split the display enabling and orientation aspects, as the current tying together of the two results in configurations somewhat overly specific to the actual AGL demo systems. Bug-AGL: SPEC-3745 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I2a968781182a346c1d483cca4fd7337679e58118 Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/25860 Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-agl-core/recipes-graphics/wayland')
-rw-r--r--meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf35
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb95
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend7
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg4
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-0.cfg3
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-270.cfg4
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg18
-rw-r--r--meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc4
8 files changed, 109 insertions, 61 deletions
diff --git a/meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf b/meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf
index bbd5a80c4..bb66fd2bb 100644
--- a/meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf
+++ b/meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf
@@ -1,10 +1,11 @@
##Generate a weston.ini file:
-To modify any of the default sections (core, shell, ivi-shell), add a
-do_configure() function to your bbappend:
+To modify any of the default sections (core, shell), add a
+do_configure() function to your bbappend, using machine (e.g. h3ulcb)
+overrides (i.e. use the MACHINE name where "machine" is used below):
'''
-do_configure() {
+do_configure_machine() {
echo repaint-window=34 >> ${WORKDIR}/core.cfg
echo transition-duration=300 >> ${WORKDIR}/ivishell.cfg
@@ -13,22 +14,30 @@ do_configure() {
'''
or:
'''
-do_configure() {
+do_configure_machine() {
sed -i -e 's/drm-backend/fbdev-backend/' ${WORKDIR}/core.cfg
}
'''
-To change the display from the default assumption of an HDMI-1-A connected
-screen that needs to be rotated 270 degrees:
-
-'''
-SRC_URI_remove = "file://hdmi-a-1-270.cfg"
-SRC_URI += "file://hdmi-a-1-90.cfg"
+To add new non-display sections, just list them in SRC_URI and WESTON_FRAGMENTS:
'''
+FILESEXTRAPATHS_prepend_machine := "${THISDIR}/${PN}:"
+
+SRC_URI_append_machine = " file://foo.cfg"
+WESTON_FRAGMENTS_append_machine = " foo"
-To add new sections just list them in SRC_URI:
'''
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI += "file://dsi.cfg"
+To change the display, for example from the default assumption of an
+HDMI-1-A connected screen that needs to be rotated 270 degrees to one
+that is rotated 90 degrees, redefine the WESTON_DISPLAYS variable:
+
+'''
+WESTON_DISPLAYS_machine = "hdmi-a-1-90"
'''
+
+Note that the weston-ini-conf recipe automatically generates a landscape
+orientation version of weston.ini by replacing 90/270 degree rotation
+fragments for HDMI-A-1 and the virtual output into 180 and 0 degrees,
+respectively. This landscape configuration can be used in an image by
+pulling in weston-ini-conf-landscape instead of weston-ini-conf.
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
index 16c0f046d..70130f74a 100644
--- a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb
@@ -1,41 +1,86 @@
-SUMMARY = "Startup script and systemd unit file for the Weston Wayland compositor"
+SUMMARY = "Configuration file for the Weston and AGL Wayland compositors"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-SRC_URI = "file://core.cfg \
- file://shell.cfg \
- file://hdmi-a-1-270.cfg \
- "
-
-# cluster and html5-landscape
-# core, shell, hdmi-a-1-180.cfg, virtual-landscape.cfg
-SRC_URI_remove_landscape = " \
- file://hdmi-a-1-270.cfg \
+SRC_URI = " \
+ file://core.cfg \
+ file://shell.cfg \
file://hdmi-a-1-90.cfg \
- file://virtual.cfg \
-"
-SRC_URI_append_landscape = " \
file://hdmi-a-1-180.cfg \
- file://virtual-landscape.cfg \
+ file://hdmi-a-1-270.cfg \
+ file://remote-output.cfg \
+ file://virtual-270.cfg \
+ file://virtual-0.cfg \
"
-
S = "${WORKDIR}"
-PACKAGE_ARCH = "${MACHINE_ARCH}"
+inherit update-alternatives
+
+# Default primary display/orientation fragment
+WESTON_DISPLAYS ?= "hdmi-a-1-270"
+
+# Configuration fragments to use in weston.ini.*
+# Note that some may be replaced/removed when building the landscape
+# configuration.
+WESTON_FRAGMENTS = "core shell ${WESTON_DISPLAYS}"
+
+# On-target weston.ini directory
+weston_ini_dir = "${sysconfdir}/xdg/weston"
do_compile() {
- # Put all of our cfg files together.
- rm -f ${WORKDIR}/weston.ini
- for F in ${WORKDIR}/*.cfg; do
- cat $F >> ${WORKDIR}/weston.ini
- echo >> ${WORKDIR}/weston.ini
+ # Put all of our cfg files together for a default portrait
+ # orientation configuration
+ rm -f ${WORKDIR}/weston.ini.default
+ for F in ${WESTON_FRAGMENTS}; do
+ cat ${WORKDIR}/${F}.cfg >> ${WORKDIR}/weston.ini.default
+ echo >> ${WORKDIR}/weston.ini.default
done
- sed -i -e '$ d' ${WORKDIR}/weston.ini
+ sed -i -e '$ d' ${WORKDIR}/weston.ini.default
+
+ # Do it again, but filter fragments to configure for landscape
+ rm -f ${WORKDIR}/weston.ini.landscape
+ for F in ${WESTON_FRAGMENTS}; do
+ if echo $F | grep '^hdmi-a-1-\(90\|270\)$'; then
+ F="hdmi-a-1-180"
+ elif echo $F | grep '^virtual-270$'; then
+ F="virtual-0"
+ fi
+ cat ${WORKDIR}/${F}.cfg >> ${WORKDIR}/weston.ini.landscape
+ echo >> ${WORKDIR}/weston.ini.landscape
+ done
+ sed -i -e '$ d' ${WORKDIR}/weston.ini.landscape
}
do_install_append() {
- WESTON_INI_CONFIG=${sysconfdir}/xdg/weston
- install -d ${D}${WESTON_INI_CONFIG}
- install -m 0644 ${WORKDIR}/weston.ini ${D}${WESTON_INI_CONFIG}/weston.ini
+ install -d ${D}${weston_ini_dir}
+ install -m 0644 ${WORKDIR}/weston.ini.default ${D}${weston_ini_dir}/
+ install -m 0644 ${WORKDIR}/weston.ini.landscape ${D}${weston_ini_dir}/
}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+# Use the alternative mechanism to handle multiple packages providing
+# weston.ini. This seems simpler than other possible approaches.
+# Note that for now the generated packages are being marked as
+# incompatible with each other for simplicity, that can be changed if
+# a usecase where switching between alternatives at runtime is desirable
+# appears.
+
+ALTERNATIVE_LINK_NAME[weston.ini] = "${weston_ini_dir}/weston.ini"
+
+RDEPENDS_${PN} = "weston-init"
+RPROVIDES_${PN} = "weston-ini"
+RCONFLICTS_${PN} = "${PN}-landscape"
+ALTERNATIVE_${PN} = "weston.ini"
+ALTERNATIVE_TARGET_${PN} = "${weston_ini_dir}/weston.ini.default"
+
+PACKAGE_BEFORE_PN += "${PN}-landscape"
+
+FILES_${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
+
+RDEPENDS_${PN}-landscape = "weston-init"
+RPROVIDES_${PN}-landscape = "weston-ini"
+RCONFLICTS_${PN}-landscape = "${PN}"
+ALTERNATIVE_${PN}-landscape = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-landscape = "${weston_ini_dir}/weston.ini.landscape"
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend
index 179004094..0f51d5971 100644
--- a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend
@@ -2,11 +2,10 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", "file://remote-output.cfg", "",d)}"
-
+WESTON_DISPLAYS_append = "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", " remote-output", "", d)}"
# For virtual machines and intel-corei7-64 we want to support both the HDMI-A-1
# and Virtual-1 outputs. This allows us to run virtual images on real hardware
# and vice versa.
-SRC_URI_append_qemuall = " file://virtual.cfg"
-SRC_URI_append_intel-corei7-64 = " file://virtual.cfg"
+WESTON_DISPLAYS_append_qemuall = " virtual-270"
+WESTON_DISPLAYS_append_intel-corei7-64 = " virtual-270"
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg
new file mode 100644
index 000000000..7648c779b
--- /dev/null
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg
@@ -0,0 +1,4 @@
+# A display is connected to HDMI-A-1
+[output]
+name=HDMI-A-1
+transform=180
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-0.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-0.cfg
new file mode 100644
index 000000000..d69253639
--- /dev/null
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-0.cfg
@@ -0,0 +1,3 @@
+[output]
+name=Virtual-1
+mode=1920x1080
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-270.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-270.cfg
new file mode 100644
index 000000000..0e5b536a6
--- /dev/null
+++ b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual-270.cfg
@@ -0,0 +1,4 @@
+[output]
+name=Virtual-1
+mode=1920x1080
+transform=270
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg b/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg
deleted file mode 100644
index 25a8fae94..000000000
--- a/meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg
+++ /dev/null
@@ -1,18 +0,0 @@
-[output]
-name=Virtual-1
-transform=270
-mode=1920x1080
-#mode=1600x1200
-#mode=1680x1050
-#mode=1400x1050
-#mode=1600x900
-#mode=1280x1024
-#mode=1440x900
-#mode=1280x960
-#mode=1360x768
-#mode=1280x800
-#mode=1280x768
-#mode=1280x720
-#mode=800x600
-#mode=848x480
-#mode=640x480
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc
index 51c59ae4d..fc6ab5d97 100644
--- a/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc
+++ b/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc
@@ -1,6 +1,8 @@
+SYSTEMD_AUTO_ENABLE = "enable"
+
do_install_append() {
# Remove upstream weston.ini to avoid conflict with weston-ini-conf package
rm -f ${D}${sysconfdir}/xdg/weston/weston.ini
}
-SYSTEMD_AUTO_ENABLE = "enable"
+RDEPENDS_${PN} += "weston-ini"