From 26cffee2b4d992f1f936b65430a2e6e4ef254bd5 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 3 Feb 2022 11:09:05 +0100 Subject: [PATCH 01/32] sway: initial package 1.7 --- .../compositor/sway/config/colorscheme | 20 ++ .../wayland/compositor/sway/config/config | 243 ++++++++++++++++++ .../compositor/sway/config/sway-daemon.conf | 4 + packages/wayland/compositor/sway/package.mk | 47 ++++ .../sway-100.01-static-ipc-socket.patch | 11 + .../sway-100.02-allow-running-as-root.patch | 13 + .../compositor/sway/profile.d/04-sway.conf | 6 + .../compositor/sway/scripts/sway-config | 47 ++++ .../wayland/compositor/sway/scripts/sway.sh | 14 + .../compositor/sway/system.d/sway.service | 20 ++ 10 files changed, 425 insertions(+) create mode 100644 packages/wayland/compositor/sway/config/colorscheme create mode 100644 packages/wayland/compositor/sway/config/config create mode 100644 packages/wayland/compositor/sway/config/sway-daemon.conf create mode 100644 packages/wayland/compositor/sway/package.mk create mode 100644 packages/wayland/compositor/sway/patches/sway-100.01-static-ipc-socket.patch create mode 100644 packages/wayland/compositor/sway/patches/sway-100.02-allow-running-as-root.patch create mode 100644 packages/wayland/compositor/sway/profile.d/04-sway.conf create mode 100755 packages/wayland/compositor/sway/scripts/sway-config create mode 100755 packages/wayland/compositor/sway/scripts/sway.sh create mode 100644 packages/wayland/compositor/sway/system.d/sway.service diff --git a/packages/wayland/compositor/sway/config/colorscheme b/packages/wayland/compositor/sway/config/colorscheme new file mode 100644 index 0000000000..be052853f4 --- /dev/null +++ b/packages/wayland/compositor/sway/config/colorscheme @@ -0,0 +1,20 @@ +## Base16 Black Metal (Dark Funeral) +# Author: metalelf0 (https://github.com/metalelf0) +# Source: base16-sway (https://github.com/rkubosz/base16-sway) + +set $base00 #000000 +set $base01 #121212 +set $base02 #222222 +set $base03 #333333 +set $base04 #999999 +set $base05 #c1c1c1 +set $base06 #999999 +set $base07 #c1c1c1 +set $base08 #5f8787 +set $base09 #aaaaaa +set $base0A #5f81a5 +set $base0B #d0dfee +set $base0C #aaaaaa +set $base0D #888888 +set $base0E #999999 +set $base0F #444444 diff --git a/packages/wayland/compositor/sway/config/config b/packages/wayland/compositor/sway/config/config new file mode 100644 index 0000000000..e6495a75cf --- /dev/null +++ b/packages/wayland/compositor/sway/config/config @@ -0,0 +1,243 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. +# Load prefered color scheme +include colorscheme +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term foot.sh +# Your preferred application launcher +# Note: pass the final command to swaymsg so that the resulting window can be opened +# on the original workspace that the command was run on. +set $highlight $base0A +set $prompt $base0B +set $menu bemenu-run -p "#" -l 10 --scrollbar autohide -i -w --tf "$prompt" --hf "$highlight" --sf "$highlight" --scf "$highlight" --no-exec | xargs swaymsg exec -- + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/sway/) +output * bg /usr/share/sway/libreelec-wallpaper-2160.png fill + +# hide_cursor hides the cursor image after the specified timeout (in milliseconds) has elapsed with no activity on that cursor +seat * hide_cursor 3000 + +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# You can get the names of your outputs by running: swaymsg -t get_outputs + +### Idle configuration +# +# Example configuration: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ +# before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration +# +# Example configuration: +# +# input "2:14:SynPS/2_Synaptics_TouchPad" { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# You can get the names of your inputs by running: swaymsg -t get_inputs +# Read `man 5 sway-input` for more information about this section. + +# Set keyboard layout (default US) +input * { + xkb_layout "us" +} + +### Key bindings +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Shift+q kill + + # Start your launcher + bindsym $mod+d exec $menu + + # Drag floating windows by holding down $mod and left mouse button. + # Resize them with right mouse button + $mod. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Exit sway (logs you out of your Wayland session) + bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' +# +# Moving around: +# + # Move your focus around + bindsym $mod+$left focus left + bindsym $mod+$down focus down + bindsym $mod+$up focus up + bindsym $mod+$right focus right + # Or use $mod+[up|down|left|right] + bindsym $mod+Left focus left + bindsym $mod+Down focus down + bindsym $mod+Up focus up + bindsym $mod+Right focus right + + # Move the focused window with the same, but add Shift + bindsym $mod+Shift+$left move left + bindsym $mod+Shift+$down move down + bindsym $mod+Shift+$up move up + bindsym $mod+Shift+$right move right + # Ditto, with arrow keys + bindsym $mod+Shift+Left move left + bindsym $mod+Shift+Down move down + bindsym $mod+Shift+Up move up + bindsym $mod+Shift+Right move right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + bindsym $mod+0 workspace number 10 + # Move focused container to workspace + bindsym $mod+Shift+1 move container to workspace number 1 + bindsym $mod+Shift+2 move container to workspace number 2 + bindsym $mod+Shift+3 move container to workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6 + bindsym $mod+Shift+7 move container to workspace number 7 + bindsym $mod+Shift+8 move container to workspace number 8 + bindsym $mod+Shift+9 move container to workspace number 9 + bindsym $mod+Shift+0 move container to workspace number 10 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. +# +# Layout stuff: +# + # You can "split" the current object of your focus with + # $mod+b or $mod+v, for horizontal and vertical splits + # respectively. + bindsym $mod+b splith + bindsym $mod+v splitv + + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split + + # Make the current focus fullscreen + bindsym $mod+f fullscreen + + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + + # Swap focus between the tiling area and the floating area + bindsym $mod+space focus mode_toggle + + # Move focus to the parent container + bindsym $mod+a focus parent +# +# Scratchpad: +# + # Sway has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show +# +# Resizing containers: +# +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 10px + bindsym $down resize grow height 10px + bindsym $up resize shrink height 10px + bindsym $right resize grow width 10px + + # Ditto, with arrow keys + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px + + # Return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" +} +bindsym $mod+r mode "resize" + +# +# Status Bar: +# +# Read `man 5 sway-bar` for more information about this section. +bar { + position top + + # When the status_command prints a new line to stdout, swaybar updates. + # The default just shows the current date and time. + status_command while date +'%a %e %b %G - %k:%M'; do sleep 1; done + + colors { + background $base00 + separator $base01 + statusline $base04 + + # State Border BG Text + focused_workspace $base05 $base0D $base00 + active_workspace $base05 $base03 $base00 + inactive_workspace $base03 $base01 $base05 + urgent_workspace $base08 $base08 $base00 + binding_mode $base00 $base0A $base00 } +} + +# Basic color configuration using the Base16 variables for windows and borders. +# Property Name Border BG Text Indicator Child Border +client.focused $base05 $base0D $base00 $base0D $base0D +client.focused_inactive $base01 $base01 $base05 $base03 $base01 +client.unfocused $base01 $base00 $base05 $base01 $base01 +client.urgent $base08 $base08 $base00 $base08 $base08 +client.placeholder $base00 $base00 $base05 $base00 $base00 +client.background $base07 + +# Load etc config +include /etc/sway/config.d/* diff --git a/packages/wayland/compositor/sway/config/sway-daemon.conf b/packages/wayland/compositor/sway/config/sway-daemon.conf new file mode 100644 index 0000000000..74c4414bf7 --- /dev/null +++ b/packages/wayland/compositor/sway/config/sway-daemon.conf @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) +# Pass config args to Sway e.g. --unsupported-gpu for NVIDIA GPUs +SWAY_DAEMON_CONF="" diff --git a/packages/wayland/compositor/sway/package.mk b/packages/wayland/compositor/sway/package.mk new file mode 100644 index 0000000000..ce6837b935 --- /dev/null +++ b/packages/wayland/compositor/sway/package.mk @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="sway" +PKG_VERSION="1.7" +PKG_SHA256="0c64536fb2883ec518e75cfb119f9300115fb49b084e3fde62b794fe2c6c8d84" +PKG_LICENSE="MIT" +PKG_SITE="https://swaywm.org/" +PKG_URL="https://github.com/swaywm/sway/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo pango libjpeg-turbo dbus json-c wlroots gdk-pixbuf swaybg foot bemenu" +PKG_LONGDESC="i3-compatible Wayland compositor" + +PKG_MESON_OPTS_TARGET="-Ddefault-wallpaper=false \ + -Dzsh-completions=false \ + -Dbash-completions=false \ + -Dfish-completions=false \ + -Dswaybar=true \ + -Dswaynag=true \ + -Dxwayland=disabled \ + -Dtray=disabled \ + -Dgdk-pixbuf=enabled \ + -Dman-pages=disabled \ + -Dsd-bus-provider=auto" + +pre_configure_target() { + # sway does not build without -Wno flags as all warnings being treated as errors + export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-function -Wno-maybe-uninitialized") +} + +post_makeinstall_target() { + mkdir -p ${INSTALL}/usr/lib/sway + cp ${PKG_DIR}/scripts/sway.sh ${INSTALL}/usr/bin + cp ${PKG_DIR}/scripts/sway-config ${INSTALL}/usr/lib/sway + + # install config & wallpaper + mkdir -p ${INSTALL}/usr/share/sway + cp ${PKG_DIR}/config/* ${INSTALL}/usr/share/sway + find_file_path "splash/splash-2160.png" && cp ${FOUND_PATH} ${INSTALL}/usr/share/sway/libreelec-wallpaper-2160.png + + # clean up + safe_remove ${INSTALL}/etc + safe_remove ${INSTALL}/usr/share/wayland-sessions +} + +post_install() { + enable_service sway.service +} diff --git a/packages/wayland/compositor/sway/patches/sway-100.01-static-ipc-socket.patch b/packages/wayland/compositor/sway/patches/sway-100.01-static-ipc-socket.patch new file mode 100644 index 0000000000..cf95985129 --- /dev/null +++ b/packages/wayland/compositor/sway/patches/sway-100.01-static-ipc-socket.patch @@ -0,0 +1,11 @@ +--- a/sway/ipc-server.c ++++ b/sway/ipc-server.c +@@ -140,7 +140,7 @@ struct sockaddr_un *ipc_user_sockaddr(vo + dir = "/tmp"; + } + if (path_size <= snprintf(ipc_sockaddr->sun_path, path_size, +- "%s/sway-ipc.%u.%i.sock", dir, getuid(), getpid())) { ++ "%s/sway-ipc.%u.sock", dir, getuid())) { + sway_abort("Socket path won't fit into ipc_sockaddr->sun_path"); + } + diff --git a/packages/wayland/compositor/sway/patches/sway-100.02-allow-running-as-root.patch b/packages/wayland/compositor/sway/patches/sway-100.02-allow-running-as-root.patch new file mode 100644 index 0000000000..36526dc558 --- /dev/null +++ b/packages/wayland/compositor/sway/patches/sway-100.02-allow-running-as-root.patch @@ -0,0 +1,13 @@ +--- a/sway/main.c ++++ b/sway/main.c +@@ -152,6 +152,10 @@ static void log_kernel(void) { + + + static bool drop_permissions(void) { ++ if (getuid() == 0 || getgid() == 0) { ++ sway_log(SWAY_INFO, "Running sway as root user"); ++ return true; ++ } + if (getuid() != geteuid() || getgid() != getegid()) { + sway_log(SWAY_ERROR, "!!! DEPRECATION WARNING: " + "SUID privilege drop will be removed in a future release, please migrate to seatd-launch"); diff --git a/packages/wayland/compositor/sway/profile.d/04-sway.conf b/packages/wayland/compositor/sway/profile.d/04-sway.conf new file mode 100644 index 0000000000..8fcea84a5e --- /dev/null +++ b/packages/wayland/compositor/sway/profile.d/04-sway.conf @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +export WAYLAND_DISPLAY=wayland-1 +export XDG_RUNTIME_DIR=/var/run/0-runtime-dir +export SWAYSOCK="${XDG_RUNTIME_DIR}/sway-ipc.0.sock" diff --git a/packages/wayland/compositor/sway/scripts/sway-config b/packages/wayland/compositor/sway/scripts/sway-config new file mode 100755 index 0000000000..65c0ee2b3a --- /dev/null +++ b/packages/wayland/compositor/sway/scripts/sway-config @@ -0,0 +1,47 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +export XDG_RUNTIME_DIR=/var/run/0-runtime-dir +export WAYLAND_DISPLAY=wayland-1 +SWAY_DAEMON_ARGS="" + +SWAY_RUNTIME_DIR=/var/run/sway +SWAY_CONFIG_BASEDIR=/storage/.config/sway +SWAY_CONFIG_SHAREDIR=/usr/share/sway + +SWAY_CONFIG_COLOR=${SWAY_CONFIG_BASEDIR}/colorscheme +SWAY_CONFIG_COLOR_DEFAULT=${SWAY_CONFIG_SHAREDIR}/colorscheme +SWAY_CONFIG_DAEMON=${SWAY_CONFIG_BASEDIR}/sway-daemon.conf +SWAY_CONFIG_DAEMON_DEFAULT=${SWAY_CONFIG_SHAREDIR}/sway-daemon.conf +SWAY_CONFIG_USER=${SWAY_CONFIG_BASEDIR}/config +SWAY_CONFIG_USER_DEFAULT=${SWAY_CONFIG_SHAREDIR}/config +SWAY_CONFIG_RUN=${SWAY_RUNTIME_DIR}/sway-daemon.conf + +if [ ! -d "$XDG_RUNTIME_DIR" ]; then + mkdir "$XDG_RUNTIME_DIR" + chmod 0700 "$XDG_RUNTIME_DIR" +fi + +if [ ! -d "$SWAY_RUNTIME_DIR" ]; then + mkdir "$SWAY_RUNTIME_DIR" +fi + +if [ ! -f ${SWAY_CONFIG_USER} ]; then + mkdir -p ${SWAY_CONFIG_BASEDIR} + cp ${SWAY_CONFIG_USER_DEFAULT} ${SWAY_CONFIG_BASEDIR} +fi + +if [ ! -f ${SWAY_CONFIG_COLOR} ]; then + cp ${SWAY_CONFIG_COLOR_DEFAULT} ${SWAY_CONFIG_BASEDIR} +fi + +if [ ! -f ${SWAY_CONFIG_DAEMON} ]; then + cp ${SWAY_CONFIG_DAEMON_DEFAULT} ${SWAY_CONFIG_BASEDIR} +fi + +if [ -f ${SWAY_CONFIG_DAEMON} ] ; then + SWAY_DAEMON_CONF=$(cat ${SWAY_CONFIG_DAEMON} | grep -E '^SWAY_DAEMON_CONF=' | cut -d "\"" -f2) +fi + +echo SWAY_DAEMON_ARGS=\"${SWAY_DAEMON_CONF} ${SWAY_DAEMON_ARGS}\" > ${SWAY_CONFIG_RUN} diff --git a/packages/wayland/compositor/sway/scripts/sway.sh b/packages/wayland/compositor/sway/scripts/sway.sh new file mode 100755 index 0000000000..2377bb9a79 --- /dev/null +++ b/packages/wayland/compositor/sway/scripts/sway.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +. /run/sway/sway-daemon.conf +SWAY_LOG_FILE=/var/log/sway.log + +if [ ! -z "$(lsmod | grep 'nvidia')" ]; then + export WLR_NO_HARDWARE_CURSORS=1 + SWAY_GPU_ARGS="--unsupported-gpu" +fi + +logger -t Sway "### Starting Sway with -V ${SWAY_GPU_ARGS} ${SWAY_DAEMON_ARGS}" +/usr/bin/sway -V ${SWAY_GPU_ARGS} ${SWAY_DAEMON_ARGS} > ${SWAY_LOG_FILE} 2>&1 diff --git a/packages/wayland/compositor/sway/system.d/sway.service b/packages/wayland/compositor/sway/system.d/sway.service new file mode 100644 index 0000000000..7fea2db30c --- /dev/null +++ b/packages/wayland/compositor/sway/system.d/sway.service @@ -0,0 +1,20 @@ +[Unit] +Description=Sway Wayland Compositor +Before=graphical.target kodi.service +After=multi-user.target +ConditionKernelCommandLine=!installer + +[Service] +Environment=HOME=/storage +Environment=XDG_RUNTIME_DIR=/var/run/0-runtime-dir +EnvironmentFile=/usr/share/sway/sway-daemon.conf +EnvironmentFile=-/run/sway/sway-daemon.conf +WorkingDirectory=/storage +ExecStartPre=-/usr/lib/sway/sway-config +ExecStart=/usr/bin/sway.sh +Restart=always +RestartSec=5 + +[Install] +Alias=display-manager.service +WantedBy=graphical.target From 7aee9c00af9a3c6ee52611de31569dce5fbaaf37 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Fri, 14 Jan 2022 22:18:35 +0100 Subject: [PATCH 02/32] fcft: initial package 2.5.1 --- packages/wayland/lib/fcft/package.mk | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 packages/wayland/lib/fcft/package.mk diff --git a/packages/wayland/lib/fcft/package.mk b/packages/wayland/lib/fcft/package.mk new file mode 100644 index 0000000000..f1ae98484f --- /dev/null +++ b/packages/wayland/lib/fcft/package.mk @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="fcft" +PKG_VERSION="2.5.1" +PKG_SHA256="1b9e9346c884f16bce9548806ea89c5e34ccc98ce27ec6ecff1f5011235de112" +PKG_LICENSE="MIT" +PKG_SITE="https://codeberg.org/dnkl/fcft" +PKG_URL="https://codeberg.org/dnkl/fcft/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain pixman fontconfig freetype tllist" +PKG_LONGDESC="A simple library for font loading and glyph rasterization using FontConfig, FreeType and pixman." + +PKG_MESON_OPTS_TARGET="-Ddocs=disabled \ + -Dgrapheme-shaping=disabled \ + -Drun-shaping=disabled \ + -Dtest-text-shaping=false \ + -Dexamples=false" From 9c54ea49bfd4ed55a250e02f56b403673cceb751 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 15:42:47 +0100 Subject: [PATCH 03/32] seatd: initial package 0.6.3 --- packages/wayland/lib/seatd/package.mk | 27 +++++++++++++++++++ .../wayland/lib/seatd/system.d/seatd.service | 14 ++++++++++ 2 files changed, 41 insertions(+) create mode 100644 packages/wayland/lib/seatd/package.mk create mode 100644 packages/wayland/lib/seatd/system.d/seatd.service diff --git a/packages/wayland/lib/seatd/package.mk b/packages/wayland/lib/seatd/package.mk new file mode 100644 index 0000000000..effc20a9ea --- /dev/null +++ b/packages/wayland/lib/seatd/package.mk @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="seatd" +PKG_VERSION="0.6.3" +PKG_SHA256="5226850c163b485aebe71da0d3f4941761637e146a5c9393cb40c52617ad84a8" +PKG_LICENSE="MIT" +PKG_SITE="https://git.sr.ht/~kennylevinsen/seatd" +PKG_URL="https://git.sr.ht/~kennylevinsen/seatd/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain systemd" +PKG_LONGDESC="A minimal seat management daemon, and a universal seat management library." + +PKG_MESON_OPTS_TARGET="-Dlibseat-logind=systemd \ + -Dlibseat-seatd=enabled \ + -Dlibseat-builtin=disabled \ + -Dserver=enabled \ + -Dexamples=disabled \ + -Dman-pages=disabled" + +pre_configure_target() { + # seatd does not build without -Wno flags as all warnings being treated as errors + export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-unused-parameter") +} + +post_install() { + enable_service seatd.service +} diff --git a/packages/wayland/lib/seatd/system.d/seatd.service b/packages/wayland/lib/seatd/system.d/seatd.service new file mode 100644 index 0000000000..7a821deafa --- /dev/null +++ b/packages/wayland/lib/seatd/system.d/seatd.service @@ -0,0 +1,14 @@ +[Unit] +Description=Seat Management Daemon +Before=graphical.target sway.service +After=multi-user.target +ConditionKernelCommandLine=!installer + +[Service] +ExecStart=/usr/bin/seatd -u root -s /var/run/seatd.sock +Restart=always +RestartSec=1 + +[Install] +Alias=seat-management-daemon.service +WantedBy=graphical.target From 549d7c6a9294eeaa7e652f65c43e6d1adaef47c5 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Fri, 14 Jan 2022 22:19:51 +0100 Subject: [PATCH 04/32] tllist: initial package 1.0.5 --- packages/wayland/lib/tllist/package.mk | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/wayland/lib/tllist/package.mk diff --git a/packages/wayland/lib/tllist/package.mk b/packages/wayland/lib/tllist/package.mk new file mode 100644 index 0000000000..e99e04174d --- /dev/null +++ b/packages/wayland/lib/tllist/package.mk @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="tllist" +PKG_VERSION="1.0.5" +PKG_SHA256="b0f32c9b2c2015c8d8dd068fd4e8b586aa91ca1670badc274ec962559ee0aadd" +PKG_LICENSE="MIT" +PKG_SITE="https://codeberg.org/dnkl/tllist" +PKG_URL="https://codeberg.org/dnkl/tllist/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="A C header file only implementation of a typed linked list." From dfd92b444637f8e03e04a3081efbaa3c9d97eebe Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 12:14:41 +0100 Subject: [PATCH 05/32] wlroots: initial package 0.15.0 --- packages/wayland/lib/wlroots/package.mk | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 packages/wayland/lib/wlroots/package.mk diff --git a/packages/wayland/lib/wlroots/package.mk b/packages/wayland/lib/wlroots/package.mk new file mode 100644 index 0000000000..7390955db4 --- /dev/null +++ b/packages/wayland/lib/wlroots/package.mk @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="wlroots" +PKG_VERSION="0.15.0" +PKG_SHA256="fcb9e9dbbb112f5c527c1c4155994fd97b6b1eb3950316e186e3c293e7a07fc4" +PKG_LICENSE="MIT" +PKG_SITE="https://gitlab.freedesktop.org/wlroots/wlroots/" +PKG_URL="https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.bz2" +PKG_DEPENDS_TARGET="toolchain libinput libxkbcommon pixman libdrm wayland wayland-protocols seatd" +PKG_LONGDESC="A modular Wayland compositor library" + +configure_package() { + # OpenGLES Support + if [ "${OPENGLES_SUPPORT}" = "yes" ]; then + PKG_DEPENDS_TARGET+=" ${OPENGLES}" + fi +} + +PKG_MESON_OPTS_TARGET="-Dxcb-errors=disabled \ + -Dxwayland=disabled \ + -Dexamples=false \ + -Drenderers=gles2" + +pre_configure_target() { + # wlroots does not build without -Wno flags as all warnings being treated as errors + export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-function") +} From 0d54bac49e0d3b0999e07042ea95ca89eff25868 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Fri, 14 Jan 2022 22:21:03 +0100 Subject: [PATCH 06/32] bemenu: initial package 0.6.4 --- packages/wayland/util/bemenu/package.mk | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 packages/wayland/util/bemenu/package.mk diff --git a/packages/wayland/util/bemenu/package.mk b/packages/wayland/util/bemenu/package.mk new file mode 100644 index 0000000000..ac5f5913cb --- /dev/null +++ b/packages/wayland/util/bemenu/package.mk @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="bemenu" +PKG_VERSION="0.6.4" +PKG_SHA256="9b1ad6768a37e3b526ac31e05903b4fc8d95d28870c8fecbe803ccfc8eae1bbe" +PKG_LICENSE="MIT" +PKG_SITE="https://github.com/Cloudef/bemenu" +PKG_URL="https://github.com/Cloudef/bemenu/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain glib wayland wayland-protocols cairo pango libxkbcommon" +PKG_LONGDESC="Dynamic menu library and client program inspired by dmenu" +PKG_TOOLCHAIN="make" + +PKG_MAKE_OPTS_TARGET="PREFIX=/usr clients wayland" + +makeinstall_target(){ + make DESTDIR=${INSTALL} PREFIX=/usr install-libs install-bins install-wayland install-pkgconfig +} + +post_makeinstall_target(){ + ln -sf libbemenu.so.${PKG_VERSION} ${INSTALL}/usr/lib/libbemenu.so.0 +} From 5d8f7e46416223edec40feaf59d4588d40873326 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Fri, 14 Jan 2022 22:21:31 +0100 Subject: [PATCH 07/32] foot: initial package 1.10.3 --- packages/wayland/util/foot/config/foot.ini | 197 +++++++++++++++++++++ packages/wayland/util/foot/package.mk | 31 ++++ packages/wayland/util/foot/scripts/foot.sh | 18 ++ 3 files changed, 246 insertions(+) create mode 100644 packages/wayland/util/foot/config/foot.ini create mode 100644 packages/wayland/util/foot/package.mk create mode 100755 packages/wayland/util/foot/scripts/foot.sh diff --git a/packages/wayland/util/foot/config/foot.ini b/packages/wayland/util/foot/config/foot.ini new file mode 100644 index 0000000000..8c8608e416 --- /dev/null +++ b/packages/wayland/util/foot/config/foot.ini @@ -0,0 +1,197 @@ +# -*- conf -*- + +# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) +term=xterm +# login-shell=no + +# app-id=foot +title=foo terminal +# locked-title=no + +font=monospace:size=12 +# font-bold= +# font-italic= +# font-bold-italic= +# line-height= +# letter-spacing=0 +# horizontal-letter-offset=0 +# vertical-letter-offset=0 +# underline-offset= +# box-drawings-uses-font-glyphs=no +dpi-aware=auto + +# initial-window-size-pixels=700x500 # Or, +# initial-window-size-chars= +# initial-window-mode=windowed +# pad=2x2 # optionally append 'center' +# resize-delay-ms=100 + +# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} + +# bold-text-in-bright=no +# bell=none +# word-delimiters=,│`|:"'()[]{}<> +# selection-target=primary +# workers= + +[bell] +# urgent=no +# notify=no +# command= +# command-focused=no + +[scrollback] +# lines=1000 +# multiplier=3.0 +# indicator-position=relative +# indicator-format= + +[url] +# launch=xdg-open ${url} +# label-letters=sadfjklewcmpgh +# osc8-underline=url-mode +# protocols=http, https, ftp, ftps, file, gemini, gopher +# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="' + +[cursor] +style=beam +color=000000 eeeeee +blink=yes +# beam-thickness=1.5 +# underline-thickness= + +[mouse] +# hide-when-typing=no +# alternate-scroll-mode=yes + +[colors] +alpha=0.95 +background=000000 +foreground=eeeeee +regular0=1c1c1c # black +regular1=af005f # red +regular2=5faf00 # green +regular3=d7af5f # yellow +regular4=5fafd7 # blue +regular5=808080 # magenta +regular6=d7875f # cyan +regular7=d0d0d0 # white +bright0=bcbcbc # bright black +bright1=5faf5f # bright red +bright2=afd700 # bright green +bright3=af87d7 # bright yellow +bright4=ffaf00 # bright blue +bright5=ff5faf # bright magenta +bright6=00afaf # bright cyan +bright7=5f8787 # bright white +#selection-foreground=1c1c1c +#selection-background=af87d7 + +## Normal/regular colors (color palette 0-7) +# regular0=222222 # black +# regular1=cc9393 # red +# regular2=7f9f7f # green +# regular3=d0bf8f # yellow +# regular4=6ca0a3 # blue +# regular5=dc8cc3 # magenta +# regular6=93e0e3 # cyan +# regular7=dcdccc # white + +## Bright colors (color palette 8-15) +# bright0=666666 # bright black +# bright1=dca3a3 # bright red +# bright2=bfebbf # bright green +# bright3=f0dfaf # bright yellow +# bright4=8cd0d3 # bright blue +# bright5=fcace3 # bright magenta +# bright6=b3ffff # bright cyan +# bright7=ffffff # bright white + +## dimmed colors (see foot.ini(5) man page) +# dim0= +# ... +# dim7= + +## The remaining 256-color palette +# 16 = <256-color palette #16> +# ... +# 255 = <256-color palette #255> + +## Misc colors +# selection-foreground= +# selection-background= +# jump-labels= +# urls= +# scrollback-indicator= + +[csd] +# preferred=server +# size=26 +# font= +# color= +# border-width=0 +# border-color= +# button-width=26 +# button-color= +# button-minimize-color= +# button-maximize-color= +# button-close-color= + +[key-bindings] +# scrollback-up-page=Shift+Page_Up +# scrollback-up-half-page=none +# scrollback-up-line=none +# scrollback-down-page=Shift+Page_Down +# scrollback-down-half-page=none +# scrollback-down-line=none +# clipboard-copy=Control+Shift+c +# clipboard-paste=Control+Shift+v +# primary-paste=Shift+Insert +# search-start=Control+Shift+r +# font-increase=Control+plus Control+equal Control+KP_Add +# font-decrease=Control+minus Control+KP_Subtract +# font-reset=Control+0 Control+KP_0 +# spawn-terminal=Control+Shift+n +# minimize=none +# maximize=none +# fullscreen=none +# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none +# pipe-selected=[xargs -r firefox] none +# show-urls-launch=Control+Shift+u +# show-urls-copy=none +# noop=none + +[search-bindings] +# cancel=Control+g Control+c Escape +# commit=Return +# find-prev=Control+r +# find-next=Control+s +# cursor-left=Left Control+b +# cursor-left-word=Control+Left Mod1+b +# cursor-right=Right Control+f +# cursor-right-word=Control+Right Mod1+f +# cursor-home=Home Control+a +# cursor-end=End Control+e +# delete-prev=BackSpace +# delete-prev-word=Mod1+BackSpace Control+BackSpace +# delete-next=Delete +# delete-next-word=Mod1+d Control+Delete +# extend-to-word-boundary=Control+w +# extend-to-next-whitespace=Control+Shift+w +# clipboard-paste=Control+v Control+y +# primary-paste=Shift+Insert + +[url-bindings] +# cancel=Control+g Control+c Control+d Escape +# toggle-url-visible=t + +[mouse-bindings] +# primary-paste=BTN_MIDDLE +# select-begin=BTN_LEFT +# select-begin-block=Control+BTN_LEFT +# select-extend=BTN_RIGHT +# select-extend-character-wise=Control+BTN_RIGHT +# select-word=BTN_LEFT-2 +# select-word-whitespace=Control+BTN_LEFT-2 +# select-row=BTN_LEFT-3 diff --git a/packages/wayland/util/foot/package.mk b/packages/wayland/util/foot/package.mk new file mode 100644 index 0000000000..f9c6226bbd --- /dev/null +++ b/packages/wayland/util/foot/package.mk @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="foot" +PKG_VERSION="1.10.3" +PKG_SHA256="24f57d9926ead7bea491f1bdd97eaceae5fdc10c1cb3435ee588a8f9c9af805a" +PKG_LICENSE="MIT" +PKG_SITE="https://codeberg.org/dnkl/foot/" +PKG_URL="https://codeberg.org/dnkl/foot/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain ncurses wayland wayland-protocols pixman fontconfig libxkbcommon fcft" +PKG_LONGDESC="A fast, lightweight and minimalistic Wayland terminal emulator" + +PKG_MESON_OPTS_TARGET="-Ddocs=disabled \ + -Dthemes=false \ + -Dime=false \ + -Dgrapheme-clustering=auto \ + -Dterminfo=disabled \ + -Ddefault-terminfo=xterm" + +post_makeinstall_target(){ + # clean up + safe_remove ${INSTALL}/usr/share/* + + # install scripts + mkdir -p ${INSTALL}/usr/bin + cp ${PKG_DIR}/scripts/foot.sh ${INSTALL}/usr/bin + + # install config + mkdir -p ${INSTALL}/usr/share/foot + cp ${PKG_DIR}/config/foot.ini ${INSTALL}/usr/share/foot +} diff --git a/packages/wayland/util/foot/scripts/foot.sh b/packages/wayland/util/foot/scripts/foot.sh new file mode 100755 index 0000000000..7e30579dc0 --- /dev/null +++ b/packages/wayland/util/foot/scripts/foot.sh @@ -0,0 +1,18 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +FOOT_CONFIG_DIR=/storage/.config/foot +FOOT_CONFIG_DEFAULT=/usr/share/foot/foot.ini +FOOT_LOG_FILE=/var/log/foot.log + +if [ ! -f ${FOOT_CONFIG_DIR}/foot.ini ]; then + mkdir -p ${FOOT_CONFIG_DIR} + cp ${FOOT_CONFIG_DEFAULT} ${FOOT_CONFIG_DIR} +fi + +if [ -z "${LOCPATH}" ]; then + export LOCPATH="/storage/.cache/locpath" +fi + +/usr/bin/foot > ${FOOT_LOG_FILE} 2>&1 From 5bca66f22a046f8c72744cb3d4b5479b4f81ad09 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Fri, 14 Jan 2022 22:21:46 +0100 Subject: [PATCH 08/32] swaybg: initial package 1.1 --- packages/wayland/util/swaybg/package.mk | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 packages/wayland/util/swaybg/package.mk diff --git a/packages/wayland/util/swaybg/package.mk b/packages/wayland/util/swaybg/package.mk new file mode 100644 index 0000000000..48ff7752b5 --- /dev/null +++ b/packages/wayland/util/swaybg/package.mk @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="swaybg" +PKG_VERSION="1.1" +PKG_SHA256="958f425310514ae2aae064595c3e7efba2187b0d2947136c49188558fdb367b1" +PKG_LICENSE="MIT" +PKG_SITE="https://swaywm.org/" +PKG_URL="https://github.com/swaywm/swaybg/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols cairo pango gdk-pixbuf" +PKG_LONGDESC="Wallpaper tool for Wayland compositors" + +PKG_MESON_OPTS_TARGET="-Dgdk-pixbuf=enabled \ + -Dman-pages=disabled" + +pre_configure_target() { + # swaybg does not build without -Wno flags as all warnings being treated as errors + export TARGET_CFLAGS=$(echo "${TARGET_CFLAGS} -Wno-maybe-uninitialized") +} From 2797f9b7dccb11f271dd8139de9c6132c9c0faf2 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 12:14:51 +0100 Subject: [PATCH 09/32] wlr-randr: initial package 0.2.0 --- packages/wayland/util/wlr-randr/package.mk | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/wayland/util/wlr-randr/package.mk diff --git a/packages/wayland/util/wlr-randr/package.mk b/packages/wayland/util/wlr-randr/package.mk new file mode 100644 index 0000000000..0f10e103be --- /dev/null +++ b/packages/wayland/util/wlr-randr/package.mk @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="wlr-randr" +PKG_VERSION="0.2.0" +PKG_SHA256="12745bc8050a56603bf9bdee70c798b5d6502cf00a795c59fd03e1d786c17ce3" +PKG_LICENSE="MIT" +PKG_SITE="https://git.sr.ht/~emersion/wlr-randr" +PKG_URL="https://git.sr.ht/~emersion/wlr-randr/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain wayland" +PKG_LONGDESC="Utility to manage outputs of a Wayland compositor." From 4d7ae4ac41ffcbc3bf4bf84c0fb8717da1dd1684 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Tue, 1 Feb 2022 19:49:56 +0100 Subject: [PATCH 10/32] nvidia: initial package 510.47.03 --- .../nvidia/modprobe.d/nvidia-modesetting.conf | 1 + packages/graphics/nvidia/package.mk | 129 ++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf create mode 100644 packages/graphics/nvidia/package.mk diff --git a/packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf b/packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf new file mode 100644 index 0000000000..0ea2309390 --- /dev/null +++ b/packages/graphics/nvidia/modprobe.d/nvidia-modesetting.conf @@ -0,0 +1 @@ +options nvidia-drm modeset=1 diff --git a/packages/graphics/nvidia/package.mk b/packages/graphics/nvidia/package.mk new file mode 100644 index 0000000000..9887c4ee65 --- /dev/null +++ b/packages/graphics/nvidia/package.mk @@ -0,0 +1,129 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="nvidia" +PKG_VERSION="510.47.03" +PKG_SHA256="694cda690ecffde7e9987f1fc0985d796a624185a2f5bda0a7e804ca791bf227" +PKG_ARCH="x86_64" +PKG_LICENSE="nonfree" +PKG_SITE="https://www.nvidia.com/en-us/drivers/unix/" +PKG_URL="http://us.download.nvidia.com/XFree86/Linux-x86_64/${PKG_VERSION}/NVIDIA-Linux-x86_64-${PKG_VERSION}-no-compat32.run" +PKG_DEPENDS_TARGET="toolchain util-macros libglvnd" +PKG_LONGDESC="The GBM/Wayland graphic driver for NVIDIA GPUs supporting the GeForce 700 Series & above." +PKG_TOOLCHAIN="manual" + +PKG_IS_KERNEL_PKG="yes" + +if [ "${VULKAN_SUPPORT}" = "yes" ]; then + PKG_DEPENDS_TARGET+=" ${VULKAN} vulkan-tools" +fi + +unpack() { + [ -d ${PKG_BUILD} ] && rm -rf ${PKG_BUILD} + + sh ${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME} --extract-only --target ${PKG_BUILD} +} + +make_target() { + unset LDFLAGS + + cd kernel + make module CC=${CC} LD=${LD} SYSSRC=$(kernel_path) SYSOUT=$(kernel_path) + ${STRIP} --strip-debug nvidia.ko + cd .. +} + +makeinstall_target() { + # Linux kernel modules + mkdir -p ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia.ko ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia-drm.ko ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia-uvm.ko ${INSTALL}/$(get_full_module_dir)/nvidia + cp -P kernel/nvidia-modeset.ko ${INSTALL}/$(get_full_module_dir)/nvidia + + # GBM + mkdir -p ${INSTALL}/usr/lib/gbm + cp -p libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib/liballocator.so.0 + ln -sf ../libnvidia-allocator.so.${PKG_VERSION} ${INSTALL}/usr/lib/gbm/nvidia-drm_gbm.so + + mkdir -p ${INSTALL}/usr/share/egl/egl_external_platform.d + cp -p 15_nvidia_gbm.json ${INSTALL}/usr/share/egl/egl_external_platform.d + cp -p libnvidia-egl-gbm.so.1.1.0 ${INSTALL}/usr/lib + ln -sf libnvidia-egl-gbm.so.1.1.0 ${INSTALL}/usr/lib/libnvidia-egl-gbm.so.1 + ln -sf libnvidia-egl-gbm.so.1 ${INSTALL}/usr/lib/libnvidia-egl-gbm.so + + # GLVND + mkdir -p ${INSTALL}/usr/share/glvnd/egl_vendor.d + cp -p 10_nvidia.json ${INSTALL}/usr/share/glvnd/egl_vendor.d + + # Wayland + mkdir -p ${INSTALL}/usr/lib + cp -p libnvidia-egl-wayland.so.1.1.9 ${INSTALL}/usr/lib/ + ln -sf libnvidia-egl-wayland.so.1.1.9 ${INSTALL}/usr/lib/libnvidia-egl-wayland.so.1 + ln -sf libnvidia-egl-wayland.so.1 ${INSTALL}/usr/lib/libnvidia-egl-wayland.so + + mkdir -p ${INSTALL}/usr/share/egl/egl_external_platform.d + cp -p 10_nvidia_wayland.json ${INSTALL}/usr/share/egl/egl_external_platform.d + + # OpenGL / EGL + mkdir -p ${INSTALL}/usr/lib + cp -p libEGL_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/ + ln -sf libEGL_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/libEGL_nvidia.so.0 + ln -sf libEGL_nvidia.so.0 ${INSTALL}/usr/lib/libEGL_nvidia.so + + # OpenGL core + mkdir -p ${INSTALL}/usr/lib + cp -p libnvidia-eglcore.so.${PKG_VERSION} ${INSTALL}/usr/lib/ + ln -sf libnvidia-eglcore.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-eglcore.so + cp -p libnvidia-glsi.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-glsi.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-glsi.so + + # OpenGL ES + mkdir -p ${INSTALL}/usr/lib + cp -p libGLESv2_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libGLESv2_nvidia.so.${PKG_VERSION} ${INSTALL}/usr/lib/libGLESv2_nvidia.so.2 + ln -sf libGLESv2_nvidia.so.2 ${INSTALL}/usr/lib/libGLESv2_nvidia.so + + # Vulkan + if [ "${VULKAN_SUPPORT}" = "yes" ]; then + mkdir -p ${INSTALL}/usr/lib + cp -P libnvidia-glvkspirv.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-glvkspirv.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-glvkspirv.so + + mkdir -p ${INSTALL}/usr/share/vulkan/implicit_layer.d + cp -P nvidia_layers.json ${INSTALL}/usr/share/vulkan/implicit_layer.d + mkdir -p ${INSTALL}/usr/share/vulkan/icd.d + cp -P nvidia_icd.json ${INSTALL}/usr/share/vulkan/icd.d + fi + + # CUDA + mkdir -p ${INSTALL}/usr/lib + cp -p libcuda.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libcuda.so.${PKG_VERSION} ${INSTALL}/usr/lib/libcuda.so.1 + ln -sf libcuda.so.1 ${INSTALL}/usr/lib/libcuda.so + + # NVDEC + mkdir -p ${INSTALL}/usr/lib + cp -p libnvcuvid.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvcuvid.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvcuvid.so.1 + ln -sf libnvcuvid.so.1 ${INSTALL}/usr/lib/libnvcuvid.so + + # nvidia-tls + mkdir -p ${INSTALL}/usr/lib + cp -P libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-tls.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-tls.so + + # NVML + mkdir -p ${INSTALL}/usr/bin + cp -P nvidia-smi ${INSTALL}/usr/bin + + mkdir -p ${INSTALL}/usr/lib + cp -P libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib + ln -sf libnvidia-ml.so.${PKG_VERSION} ${INSTALL}/usr/lib/libnvidia-ml.so.1 + ln -sf libnvidia-ml.so.1 ${INSTALL}/usr/lib/libnvidia-ml.so + + # App profiles + mkdir -p ${INSTALL}/usr/share/nvidia + cp -P nvidia-application-profiles-${PKG_VERSION}-rc ${INSTALL}/usr/share/nvidia +} From 90df7f436f027c6ab12fc64195e9307fa0f4c5f8 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sat, 15 Jan 2022 20:34:10 +0100 Subject: [PATCH 11/32] gstreamer: initial package 1.18.5 --- .../multimedia/gstreamer/gstreamer/package.mk | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 packages/multimedia/gstreamer/gstreamer/package.mk diff --git a/packages/multimedia/gstreamer/gstreamer/package.mk b/packages/multimedia/gstreamer/gstreamer/package.mk new file mode 100644 index 0000000000..ddeef5da91 --- /dev/null +++ b/packages/multimedia/gstreamer/gstreamer/package.mk @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="gstreamer" +PKG_VERSION="1.18.5" +PKG_SHA256="55862232a63459bbf56abebde3085ca9aec211b478e891dacea4d6df8cafe80a" +PKG_LICENSE="GPL-2.1-or-later" +PKG_SITE="https://gstreamer.freedesktop.org" +PKG_URL="https://gstreamer.freedesktop.org/src/gstreamer/${PKG_NAME}-${PKG_VERSION}.tar.xz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="GStreamer open-source multimedia framework core library" + +pre_configure_target() { + PKG_MESON_OPTS_TARGET="-Dgst_debug=false \ + -Dgst_parse=true \ + -Dregistry=false \ + -Dtracer_hooks=false \ + -Doption-parsing=true \ + -Dpoisoning=false \ + -Dcheck=disabled \ + -Dlibunwind=disabled \ + -Dlibdw=disabled \ + -Ddbghelp=disabled \ + -Dbash-completion=disabled \ + -Dcoretracers=disabled \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dbenchmarks=disabled \ + -Dtools=disabled \ + -Dgtk_doc=disabled \ + -Dintrospection=disabled \ + -Dnls=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dextra-checks=disabled \ + -Dpackage-name="gstreamer" + -Dpackage-origin="LibreELEC.tv" + -Ddoc=disabled" +} + +post_makeinstall_target() { + # clean up + safe_remove ${INSTALL}/usr/share + safe_remove ${INSTALL}/usr/lib/{libgstcontroller-1.0*,libgstnet-1.0*} +} From 9bf3ef36ce0782746e8e6aeca986c737657e5063 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 3 Feb 2022 11:12:11 +0100 Subject: [PATCH 12/32] gst-plugins-base: initial package 1.18.5 --- .../gstreamer/gst-plugins-base/package.mk | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 packages/multimedia/gstreamer/gst-plugins-base/package.mk diff --git a/packages/multimedia/gstreamer/gst-plugins-base/package.mk b/packages/multimedia/gstreamer/gst-plugins-base/package.mk new file mode 100644 index 0000000000..448dc0bd1a --- /dev/null +++ b/packages/multimedia/gstreamer/gst-plugins-base/package.mk @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="gst-plugins-base" +PKG_VERSION="1.18.5" +PKG_SHA256="960b7af4585700db0fdd5b843554e11e2564fed9e061f591fae88a7be6446fa3" +PKG_LICENSE="GPL-2.1-or-later" +PKG_SITE="https://gstreamer.freedesktop.org/modules/gst-plugins-base.html" +PKG_URL="https://gstreamer.freedesktop.org/src/gst-plugins-base/${PKG_NAME}-${PKG_VERSION}.tar.xz" +PKG_DEPENDS_TARGET="toolchain gstreamer" +PKG_LONGDESC="Base GStreamer plugins and helper libraries" +PKG_BUILD_FLAGS="-gold" + +pre_configure_target() { + PKG_MESON_OPTS_TARGET="-Dgl=disabled \ + -Dadder=disabled \ + -Dapp=disabled \ + -Daudioconvert=disabled \ + -Daudiomixer=disabled \ + -Daudiorate=disabled \ + -Daudioresample=disabled \ + -Daudiotestsrc=disabled \ + -Dcompositor=disabled \ + -Dencoding=disabled \ + -Dgio=disabled \ + -Dgio-typefinder=disabled \ + -Doverlaycomposition=disabled \ + -Dpbtypes=disabled \ + -Dplayback=disabled \ + -Drawparse=enabled \ + -Dsubparse=enabled \ + -Dtcp=disabled \ + -Dtypefind=disabled \ + -Dvideoconvert=disabled \ + -Dvideorate=disabled \ + -Dvideoscale=disabled \ + -Dvideotestsrc=disabled \ + -Dvolume=disabled \ + -Dalsa=disabled \ + -Dcdparanoia=disabled \ + -Dlibvisual=disabled \ + -Dogg=disabled \ + -Dopus=disabled \ + -Dpango=disabled \ + -Dtheora=disabled \ + -Dtremor=disabled \ + -Dvorbis=disabled \ + -Dx11=disabled \ + -Dxshm=disabled \ + -Dxvideo=disabled \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dtools=disabled \ + -Dintrospection=disabled \ + -Dnls=disabled \ + -Dorc=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dpackage-name="gst-plugins-base" + -Dpackage-origin="LibreELEC.tv" + -Ddoc=disabled" +} + +post_makeinstall_target(){ + # clean up + safe_remove ${INSTALL} +} From bb66c7d45887d3a19b25adfd4fd2815df0a04a1f Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 3 Feb 2022 11:13:15 +0100 Subject: [PATCH 13/32] gst-plugins-bad: initial package 1.18.5 --- .../gstreamer/gst-plugins-bad/package.mk | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 packages/multimedia/gstreamer/gst-plugins-bad/package.mk diff --git a/packages/multimedia/gstreamer/gst-plugins-bad/package.mk b/packages/multimedia/gstreamer/gst-plugins-bad/package.mk new file mode 100644 index 0000000000..e3bcff686a --- /dev/null +++ b/packages/multimedia/gstreamer/gst-plugins-bad/package.mk @@ -0,0 +1,201 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="gst-plugins-bad" +PKG_VERSION="1.18.5" +PKG_SHA256="a164923b94f0d08578a6fcaeaac6e0c05da788a46903a1086870e9ca45ad678e" +PKG_LICENSE="LGPL-2.1-or-later" +PKG_SITE="https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html" +PKG_URL="https://gstreamer.freedesktop.org/src/gst-plugins-bad/${PKG_NAME}-${PKG_VERSION}.tar.xz" +PKG_DEPENDS_TARGET="toolchain gst-plugins-base" +PKG_LONGDESC="GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared to the rest." + +pre_configure_target() { + PKG_MESON_OPTS_TARGET="-Dgst_player_tests=false \ + -Daccurip=disabled \ + -Dadpcmdec=disabled \ + -Dadpcmenc=disabled \ + -Daiff=disabled \ + -Dasfmux=disabled \ + -Daudiobuffersplit=disabled \ + -Daudiofxbad=disabled \ + -Daudiolatency=disabled \ + -Daudiomixmatrix=disabled \ + -Daudiovisualizers=disabled \ + -Dautoconvert=disabled \ + -Dbayer=disabled \ + -Dcamerabin2=disabled \ + -Dcoloreffects=disabled \ + -Ddebugutils=disabled \ + -Ddvbsubenc=disabled \ + -Ddvbsuboverlay=disabled \ + -Ddvdspu=disabled \ + -Dfaceoverlay=disabled \ + -Dfestival=disabled \ + -Dfieldanalysis=disabled \ + -Dfreeverb=disabled \ + -Dfrei0r=disabled \ + -Dgaudieffects=disabled \ + -Dgdp=disabled \ + -Dgeometrictransform=disabled \ + -Did3tag=disabled \ + -Dinter=disabled \ + -Dinterlace=disabled \ + -Divfparse=disabled \ + -Divtc=disabled \ + -Djp2kdecimator=disabled \ + -Djpegformat=disabled \ + -Dlibrfb=disabled \ + -Dmidi=disabled \ + -Dmpegdemux=disabled \ + -Dmpegpsmux=disabled \ + -Dmpegtsdemux=disabled \ + -Dmpegtsmux=disabled \ + -Dmxf=disabled \ + -Dnetsim=disabled \ + -Donvif=disabled \ + -Dpcapparse=disabled \ + -Dpnm=disabled \ + -Dproxy=disabled \ + -Drawparse=disabled \ + -Dremovesilence=disabled \ + -Drist=disabled \ + -Drtmp2=disabled \ + -Drtp=disabled \ + -Dsdp=disabled \ + -Dsegmentclip=disabled \ + -Dsiren=disabled \ + -Dsmooth=disabled \ + -Dspeed=disabled \ + -Dsubenc=disabled \ + -Dswitchbin=disabled \ + -Dtimecode=disabled \ + -Dvideofilters=disabled \ + -Dvideoframe_audiolevel=disabled \ + -Dvideoparsers=enabled \ + -Dvideosignal=disabled \ + -Dvmnc=disabled \ + -Dy4m=disabled \ + -Dopencv=disabled \ + -Dwayland=disabled \ + -Dx11=disabled \ + -Daom=disabled \ + -Davtp=disabled \ + -Dandroidmedia=disabled \ + -Dapplemedia=disabled \ + -Dassrender=disabled \ + -Dbluez=disabled \ + -Dbs2b=disabled \ + -Dbz2=disabled \ + -Dchromaprint=disabled \ + -Dclosedcaption=disabled \ + -Dcolormanagement=disabled \ + -Dcurl=disabled \ + -Dcurl-ssh2=disabled \ + -Dd3dvideosink=disabled \ + -Dd3d11=disabled \ + -Ddash=disabled \ + -Ddc1394=disabled \ + -Ddecklink=disabled \ + -Ddirectfb=disabled \ + -Ddirectsound=disabled \ + -Ddtls=disabled \ + -Ddts=disabled \ + -Ddvb=disabled \ + -Dfaac=disabled \ + -Dfaad=disabled \ + -Dfbdev=disabled \ + -Dfdkaac=disabled \ + -Dflite=disabled \ + -Dfluidsynth=disabled \ + -Dgl=disabled \ + -Dgme=disabled \ + -Dgsm=disabled \ + -Dipcpipeline=disabled \ + -Diqa=disabled \ + -Dkate=disabled \ + -Dkms=disabled \ + -Dladspa=disabled \ + -Dlibde265=disabled \ + -Dlibmms=disabled \ + -Dlv2=disabled \ + -Dmediafoundation=disabled \ + -Dmicrodns=disabled \ + -Dmodplug=disabled \ + -Dmpeg2enc=disabled \ + -Dmplex=disabled \ + -Dmsdk=disabled \ + -Dmusepack=disabled \ + -Dneon=disabled \ + -Dnvcodec=disabled \ + -Dofa=disabled \ + -Dopenal=disabled \ + -Dopenexr=disabled \ + -Dopenh264=disabled \ + -Dopenjpeg=disabled \ + -Dopenmpt=disabled \ + -Dopenni2=disabled \ + -Dopensles=disabled \ + -Dopus=disabled \ + -Dresindvd=disabled \ + -Drsvg=disabled \ + -Drtmp=disabled \ + -Dsbc=disabled \ + -Dsctp=disabled \ + -Dshm=disabled \ + -Dsmoothstreaming=disabled \ + -Dsndfile=disabled \ + -Dsoundtouch=disabled \ + -Dspandsp=disabled \ + -Dsrt=disabled \ + -Dsrtp=disabled \ + -Dsvthevcenc=disabled \ + -Dteletext=disabled \ + -Dtinyalsa=disabled \ + -Dtranscode=disabled \ + -Dttml=disabled \ + -Duvch264=disabled \ + -Dva=disabled \ + -Dvoaacenc=disabled \ + -Dvoamrwbenc=disabled \ + -Dvulkan=disabled \ + -Dwasapi=disabled \ + -Dwasapi2=disabled \ + -Dwebp=disabled \ + -Dwebrtc=disabled \ + -Dwebrtcdsp=disabled \ + -Dwildmidi=disabled \ + -Dwinks=disabled \ + -Dwinscreencap=disabled \ + -Dx265=disabled \ + -Dzbar=disabled \ + -Dzxing=disabled \ + -Dwpe=disabled \ + -Dmagicleap=disabled \ + -Dv4l2codecs=disabled \ + -Dhls=disabled \ + -Dsctp-internal-usrsctp=disabled \ + -Dexamples=disabled \ + -Dtests=disabled \ + -Dintrospection=disabled \ + -Dnls=disabled \ + -Dorc=disabled \ + -Dgobject-cast-checks=disabled \ + -Dglib-asserts=disabled \ + -Dglib-checks=disabled \ + -Dpackage-name="gst-plugins-bad" + -Dpackage-origin="LibreELEC.tv" + -Ddoc=disabled" +} + +post_makeinstall_target(){ + # clean up + safe_remove ${INSTALL}/usr/bin + for PKG_GST_PLUGINS_BAD in \ + libgstadaptivedemux libgstbadaudio libgstbasecamerabinsrc libgstcodecs libgstinsertbin libgstisoff libgstmpegts libgstphotography libgstplayer \ + libgstsctp libgsttranscoder libgsturidownloader libgstwebrtc + do + safe_remove ${INSTALL}/usr/lib/${PKG_GST_PLUGINS_BAD}-1.0* + done + safe_remove ${INSTALL}/usr/share +} From 4a5398712b8c1b836d2a1da9adf8e3b2dfe849ab Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 3 Feb 2022 11:10:27 +0100 Subject: [PATCH 14/32] nv-codec-headers: initial package 11.1.5.1 --- packages/multimedia/nv-codec-headers/package.mk | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 packages/multimedia/nv-codec-headers/package.mk diff --git a/packages/multimedia/nv-codec-headers/package.mk b/packages/multimedia/nv-codec-headers/package.mk new file mode 100644 index 0000000000..5ef9f37546 --- /dev/null +++ b/packages/multimedia/nv-codec-headers/package.mk @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="nv-codec-headers" +PKG_VERSION="11.1.5.1" +PKG_SHA256="d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c" +PKG_LICENSE="MIT" +PKG_SITE="https://github.com/FFmpeg/nv-codec-headers" +PKG_URL="https://github.com/FFmpeg/nv-codec-headers/archive/n${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="FFmpeg version of headers required to interface with Nvidias codec APIs." +PKG_TOOLCHAIN="make" + +makeinstall_target(){ + make DESTDIR=${SYSROOT_PREFIX} PREFIX=/usr install +} From d5aabe0e94a0a8cf6d1267ad6d391ea1d3858dec Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Tue, 1 Feb 2022 12:16:27 +0100 Subject: [PATCH 15/32] nvidia-vaapi-driver: initial package 0.0.4 --- packages/multimedia/nvidia-vaapi-driver/package.mk | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 packages/multimedia/nvidia-vaapi-driver/package.mk diff --git a/packages/multimedia/nvidia-vaapi-driver/package.mk b/packages/multimedia/nvidia-vaapi-driver/package.mk new file mode 100644 index 0000000000..a4f3dcf970 --- /dev/null +++ b/packages/multimedia/nvidia-vaapi-driver/package.mk @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="nvidia-vaapi-driver" +PKG_VERSION="0.0.4" +PKG_SHA256="8b99c618f530ea388964cdb3e8454de2d89f4354de8d0a0ea7941e88576d7e2a" +PKG_LICENSE="MIT" +PKG_SITE="https://github.com/elFarto/nvidia-vaapi-driver" +PKG_URL="https://github.com/elFarto/nvidia-vaapi-driver/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain nv-codec-headers gst-plugins-bad" +PKG_LONGDESC="A VA-API implemention using NVIDIA's NVDEC" From bd192ed861b9043e629dca419f7fa59a1fe5a60a Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 12:14:24 +0100 Subject: [PATCH 16/32] json-glib: initial package 1.6.6 --- .../chrome-depends/json-glib/package.mk | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 packages/addons/addon-depends/chrome-depends/json-glib/package.mk diff --git a/packages/addons/addon-depends/chrome-depends/json-glib/package.mk b/packages/addons/addon-depends/chrome-depends/json-glib/package.mk new file mode 100644 index 0000000000..cf13889458 --- /dev/null +++ b/packages/addons/addon-depends/chrome-depends/json-glib/package.mk @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="json-glib" +PKG_VERSION="1.6.6" +PKG_SHA256="bf4d1cd6c343ce13b9258e6703a0411a3b659887b65877e85a2aa488ae18b865" +PKG_LICENSE="LGPL-2.1" +PKG_SITE="https://github.com/GNOME/json-glib" +PKG_URL="https://github.com/GNOME/json-glib/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain glib" +PKG_LONGDESC="JSON-GLib implements a full suite of JSON-related tools using GLib and GObject." + +PKG_MESON_OPTS_TARGET="-Dintrospection=disabled \ + -Dgtk_doc=disabled \ + -Dman=false \ + -Dtests=false" From f8a1de3a09f2b1105b8f147cf0cadad2cf68c219 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Wed, 12 Jan 2022 14:37:46 +0100 Subject: [PATCH 17/32] libglvnd: update to 1.4.0 - don't depend on X11 - updated build --- packages/graphics/libglvnd/package.mk | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/graphics/libglvnd/package.mk b/packages/graphics/libglvnd/package.mk index e2ca15d32d..f329a0bf5b 100644 --- a/packages/graphics/libglvnd/package.mk +++ b/packages/graphics/libglvnd/package.mk @@ -2,18 +2,27 @@ # Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) PKG_NAME="libglvnd" -PKG_VERSION="1.3.4" -PKG_SHA256="8f4218d7cdaf89d5b7eced818e810ccbc76f4bb9cba36d66eddac5a7ca892bab" +PKG_VERSION="1.4.0" +PKG_SHA256="1eb5c2be8d213ad5d31cfb4efbb331d42f3d9f5617c885ce7e89f572ec2bb4b8" PKG_LICENSE="GPL" PKG_SITE="https://github.com/NVIDIA/libglvnd" PKG_URL="https://github.com/NVIDIA/libglvnd/archive/v${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain libX11 libXext xorgproto" +PKG_DEPENDS_TARGET="toolchain" PKG_LONGDESC="libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL API calls between multiple vendors." -if [ "${OPENGLES_SUPPORT}" = "no" ]; then - PKG_MESON_OPTS_TARGET="-Dgles1=false \ - -Dgles2=false" -fi +configure_package() { + if [ "${DISPLAYSERVER}" = "x11" ]; then + PKG_DEPENDS_TARGET+=" libX11 libXext xorgproto" + fi +} + +pre_configure_target(){ + PKG_MESON_OPTS_TARGET="-Dgles1=false" + + if [ "${OPENGLES_SUPPORT}" = "no" ]; then + PKG_MESON_OPTS_TARGET+=" -Dgles2=false" + fi +} post_makeinstall_target() { if [ "${DISPLAYSERVER}" = "x11" ]; then From 0cf76756960b6d58a8e24db483792751e9d7daae Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sat, 15 Jan 2022 20:27:03 +0100 Subject: [PATCH 18/32] gdk-pixbuf: don't depend on X11 --- .../addon-depends/chrome-depends/gdk-pixbuf/package.mk | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/addons/addon-depends/chrome-depends/gdk-pixbuf/package.mk b/packages/addons/addon-depends/chrome-depends/gdk-pixbuf/package.mk index 0ab9015a2d..64e73464cd 100644 --- a/packages/addons/addon-depends/chrome-depends/gdk-pixbuf/package.mk +++ b/packages/addons/addon-depends/chrome-depends/gdk-pixbuf/package.mk @@ -8,11 +8,14 @@ PKG_SHA256="c4a6b75b7ed8f58ca48da830b9fa00ed96d668d3ab4b1f723dcf902f78bde77f" PKG_LICENSE="OSS" PKG_SITE="http://www.gtk.org/" PKG_URL="https://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/${PKG_VERSION:0:4}/gdk-pixbuf-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain glib libjpeg-turbo libpng jasper shared-mime-info tiff libX11" +PKG_DEPENDS_TARGET="toolchain glib libjpeg-turbo libpng jasper shared-mime-info tiff" PKG_DEPENDS_CONFIG="shared-mime-info" PKG_LONGDESC="GdkPixbuf is a a GNOME library for image loading and manipulation." -PKG_MESON_OPTS_TARGET="-Ddocs=false \ +PKG_MESON_OPTS_TARGET="-Dbuiltin_loaders=all \ + -Dgtk_doc=false \ + -Ddocs=false \ -Dintrospection=disabled \ -Dman=false \ - -Drelocatable=false" + -Drelocatable=false \ + -Dinstalled_tests=false" From e11ef2509ddf147a457dcef60ce2f7eea11f995f Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 00:27:53 +0100 Subject: [PATCH 19/32] pango: don't depend on X11 - updated dependencies & build opts --- .../chrome-depends/pango/package.mk | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/addons/addon-depends/chrome-depends/pango/package.mk b/packages/addons/addon-depends/chrome-depends/pango/package.mk index af2cf1f297..debf52eeba 100644 --- a/packages/addons/addon-depends/chrome-depends/pango/package.mk +++ b/packages/addons/addon-depends/chrome-depends/pango/package.mk @@ -8,11 +8,20 @@ PKG_SHA256="4add05edf51c1fb375a1ccde7498914120e23cb280dd7395b1aeb441f1838a4c" PKG_LICENSE="GPL" PKG_SITE="http://www.pango.org/" PKG_URL="https://download.gnome.org/sources/pango/${PKG_VERSION:0:4}/pango-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain cairo freetype fontconfig fribidi glib harfbuzz libX11 libXft" -PKG_DEPENDS_CONFIG="libXft cairo" +PKG_DEPENDS_TARGET="toolchain cairo freetype fontconfig fribidi glib json-glib harfbuzz" +PKG_DEPENDS_CONFIG="cairo" PKG_LONGDESC="The Pango library for layout and rendering of internationalized text." -PKG_TOOLCHAIN="meson" -PKG_BUILD_FLAGS="-sysroot" -PKG_MESON_OPTS_TARGET="-Dgtk_doc=false \ - -Dintrospection=disabled" +configure_package() { + # Build with X11 support + if [ ${DISPLAYSERVER} = "x11" ]; then + PKG_DEPENDS_TARGET+=" libX11 libXft" + PKG_DEPENDS_CONFIG+=" libXft" + PKG_BUILD_FLAGS="-sysroot" + fi +} + +pre_configure_target() { + PKG_MESON_OPTS_TARGET="-Dgtk_doc=false \ + -Dintrospection=disabled" +} From b26f26143340c8d5d00b01d6a75ff437be89e1f6 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 2 Dec 2021 17:35:18 +0100 Subject: [PATCH 20/32] shared-mime-info: updated build opts & patches - conditionally install to sysroot & update db for sway - db generation for arm --- .../shared-mime-info/package.mk | 20 ++++++- .../patches/no-man-no-html.patch | 37 ------------ ...-info-999.01-disable-spec-generation.patch | 58 +++++++++++++++++++ 3 files changed, 76 insertions(+), 39 deletions(-) delete mode 100644 packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/no-man-no-html.patch create mode 100644 packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/shared-mime-info-999.01-disable-spec-generation.patch diff --git a/packages/addons/addon-depends/chrome-depends/shared-mime-info/package.mk b/packages/addons/addon-depends/chrome-depends/shared-mime-info/package.mk index eac0c788f7..fe39b8a1d1 100644 --- a/packages/addons/addon-depends/chrome-depends/shared-mime-info/package.mk +++ b/packages/addons/addon-depends/chrome-depends/shared-mime-info/package.mk @@ -7,8 +7,24 @@ PKG_SHA256="37df6475da31a8b5fc63a54ba0770a3eefa0a708b778cb6366dccee96393cb60" PKG_LICENSE="GPL2" PKG_SITE="https://freedesktop.org/wiki/Software/shared-mime-info/" PKG_URL="https://gitlab.freedesktop.org/xdg/${PKG_NAME}/-/archive/${PKG_VERSION}/${PKG_NAME}-${PKG_VERSION}.tar.bz2" -PKG_DEPENDS_TARGET="toolchain glib libxml2 gettext itstool:host" +PKG_DEPENDS_HOST="toolchain:host glib:host libxml2:host gettext:host itstool:host" +PKG_DEPENDS_TARGET="toolchain glib libxml2 gettext shared-mime-info:host" PKG_LONGDESC="The shared-mime-info package contains the core database of common types." -PKG_BUILD_FLAGS="-parallel -sysroot" +PKG_BUILD_FLAGS="-parallel" +configure_package() { + # Sway Support + if [ ! "${WINDOWMANAGER}" = "sway" ]; then + PKG_BUILD_FLAGS+=" -sysroot" + fi +} + +PKG_MESON_OPTS_HOST="-Dupdate-mimedb=false" PKG_MESON_OPTS_TARGET="-Dupdate-mimedb=false" + +post_makeinstall_target() { + # Create /usr/share/mime/mime.cache + if [ "${WINDOWMANAGER}" = "sway" ]; then + ${TOOLCHAIN}/bin/update-mime-database ${INSTALL}/usr/share/mime + fi +} diff --git a/packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/no-man-no-html.patch b/packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/no-man-no-html.patch deleted file mode 100644 index 544b798386..0000000000 --- a/packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/no-man-no-html.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff -Nur shared-mime-info-2.1.orig/data/meson.build shared-mime-info-2.1/data/meson.build ---- shared-mime-info-2.1.orig/data/meson.build 2021-01-01 06:12:16.000000000 +1100 -+++ shared-mime-info-2.1/data/meson.build 2021-01-14 00:25:58.299790452 +1100 -@@ -1,6 +1,4 @@ - --install_man('update-mime-database.1') -- - freedesktop_org_xml = i18n.merge_file( - input: 'freedesktop.org.xml.in', - output: 'freedesktop.org.xml', -@@ -15,15 +13,3 @@ - [ 'its/shared-mime-info.loc', 'its/shared-mime-info.its', ], - install_dir : get_option('datadir') / 'gettext/its' - ) -- --custom_target('shared-mime-info-spec-html', -- input : 'shared-mime-info-spec.xml', -- output: 'shared-mime-info-spec-html', -- command: [ -- xmlto, -- '-o', '@OUTPUT@', -- 'html-nochunks', -- '@INPUT@', -- ], -- build_by_default: true, --) -diff -Nur shared-mime-info-2.1.orig/meson.build shared-mime-info-2.1/meson.build ---- shared-mime-info-2.1.orig/meson.build 2021-01-01 06:12:16.000000000 +1100 -+++ shared-mime-info-2.1/meson.build 2021-01-14 00:24:18.552142696 +1100 -@@ -22,7 +22,6 @@ - - itstool = find_program('itstool') - xmllint = find_program('xmllint') --xmlto = find_program('xmlto') - - ############################################################################### - # Find xdgmime diff --git a/packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/shared-mime-info-999.01-disable-spec-generation.patch b/packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/shared-mime-info-999.01-disable-spec-generation.patch new file mode 100644 index 0000000000..3d43d7e4bf --- /dev/null +++ b/packages/addons/addon-depends/chrome-depends/shared-mime-info/patches/shared-mime-info-999.01-disable-spec-generation.patch @@ -0,0 +1,58 @@ +From baeb49e36bc162bcbd243e733d2a9f1eb9abfefb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ville=20Skytt=C3=A4?= +Date: Sun, 24 Jan 2021 11:45:52 +0200 +Subject: [PATCH] meson: make xmlto optional, build spec only if found + +Refs https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/150 +--- + data/meson.build | 22 ++++++++++++---------- + meson.build | 2 +- + 2 files changed, 13 insertions(+), 11 deletions(-) + +diff --git a/data/meson.build b/data/meson.build +index 263567d..24361c9 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -22,14 +22,16 @@ install_data( + install_dir : get_option('datadir') / 'gettext/its' + ) + +-custom_target('shared-mime-info-spec-html', +- input : 'shared-mime-info-spec.xml', +- output: 'shared-mime-info-spec-html', +- command: [ +- xmlto, +- '-o', '@OUTPUT@', +- 'html-nochunks', +- '@INPUT@', +- ], +- build_by_default: true, ++if xmlto.found() ++ custom_target('shared-mime-info-spec-html', ++ input : 'shared-mime-info-spec.xml', ++ output: 'shared-mime-info-spec-html', ++ command: [ ++ xmlto, ++ '-o', '@OUTPUT@', ++ 'html-nochunks', ++ '@INPUT@', ++ ], ++ build_by_default: true, + ) ++endif +diff --git a/meson.build b/meson.build +index 9a28573..0d08c8a 100644 +--- a/meson.build ++++ b/meson.build +@@ -22,7 +22,7 @@ config.set_quoted('VERSION', meson.project_version()) + + itstool = find_program('itstool') + xmllint = find_program('xmllint') +-xmlto = find_program('xmlto') ++xmlto = find_program('xmlto', required: false) + + ############################################################################### + # Find xdgmime +-- +GitLab + From ba0de399ea59f013f99c563f258a99a5c48ec4c0 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Tue, 30 Nov 2021 18:32:18 +0100 Subject: [PATCH 21/32] mesa: build wayland with libglvnd support --- packages/graphics/mesa/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/graphics/mesa/package.mk b/packages/graphics/mesa/package.mk index cb1171c5ea..f15b153dc1 100644 --- a/packages/graphics/mesa/package.mk +++ b/packages/graphics/mesa/package.mk @@ -38,8 +38,8 @@ if [ "${DISPLAYSERVER}" = "x11" ]; then export X11_INCLUDES= PKG_MESON_OPTS_TARGET+=" -Dplatforms=x11 -Ddri3=enabled -Dglx=dri -Dglvnd=true" elif [ "${DISPLAYSERVER}" = "wl" ]; then - PKG_DEPENDS_TARGET+=" wayland wayland-protocols" - PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland -Ddri3=disabled -Dglx=disabled -Dglvnd=false" + PKG_DEPENDS_TARGET+=" wayland wayland-protocols libglvnd" + PKG_MESON_OPTS_TARGET+=" -Dplatforms=wayland -Ddri3=disabled -Dglx=disabled -Dglvnd=true" else PKG_MESON_OPTS_TARGET+=" -Dplatforms="" -Ddri3=disabled -Dglx=disabled -Dglvnd=false" fi From 8aafe035c378b08893f33a60b6f30a384c9e0dd2 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 01:06:28 +0100 Subject: [PATCH 22/32] Generic/wayland: add & enable nvidia vendor driver --- projects/Generic/devices/wayland/options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Generic/devices/wayland/options b/projects/Generic/devices/wayland/options index ab3cf235bb..f7b3175498 100644 --- a/projects/Generic/devices/wayland/options +++ b/projects/Generic/devices/wayland/options @@ -19,7 +19,7 @@ # set the addon project ADDON_PROJECT="Generic" -# Mesa 3D Graphic drivers to use (all / crocus,i915,iris,r300,r600,radeonsi,vmware,virtio) +# Mesa 3D Graphic / NVIDIA drivers to use (all / crocus,i915,iris,nvidia-ng,r300,r600,radeonsi,vmware,virtio) # Space separated list is supported, # e.g. GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi vmware virtio" - GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi vmware virtio" + GRAPHIC_DRIVERS="crocus i915 iris nvidia-ng r300 r600 radeonsi vmware virtio" From 44c1d43fe519b7a36cc0ad4b7b11d736fe8148ee Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sat, 15 Jan 2022 20:28:29 +0100 Subject: [PATCH 23/32] glmark2: updated build for all WSI --- packages/graphics/glmark2/package.mk | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/graphics/glmark2/package.mk b/packages/graphics/glmark2/package.mk index e91713262d..37e5cf5796 100644 --- a/packages/graphics/glmark2/package.mk +++ b/packages/graphics/glmark2/package.mk @@ -4,17 +4,29 @@ PKG_NAME="glmark2" PKG_VERSION="2021.12" PKG_SHA256="9f111284b2ef1d3fce91928e249e6ca00796a036831b063a549a0f3b03557a95" -PKG_LICENSE="GPLv3" +PKG_LICENSE="GPL-3.0-or-later" PKG_SITE="https://github.com/glmark2/glmark2" PKG_URL="https://github.com/glmark2/glmark2/archive/${PKG_VERSION}.tar.gz" -PKG_DEPENDS_TARGET="toolchain" +PKG_DEPENDS_TARGET="toolchain libjpeg-turbo libpng" PKG_LONGDESC="glmark2 is an OpenGL 2.0 and ES 2.0 benchmark" -if [ "${OPENGLES_SUPPORT}" = "yes" ]; then - PKG_DEPENDS_TARGET+=" ${OPENGLES}" - PKG_MESON_OPTS_TARGET="-Dflavors=drm-glesv2" -elif [ "${OPENGL_SUPPORT}" = "yes" ]; then +if [ "${OPENGL_SUPPORT}" = "yes" ]; then PKG_DEPENDS_TARGET+=" ${OPENGL}" - PKG_MESON_OPTS_TARGET="-Dflavors=drm-gl" +elif [ "${OPENGLES_SUPPORT}" = "yes" ]; then + PKG_DEPENDS_TARGET+=" ${OPENGLES}" fi +case ${DISPLAYSERVER} in + wl) + PKG_DEPENDS_TARGET+=" wayland wayland-protocols" + PKG_MESON_OPTS_TARGET="-Dflavors=wayland-glesv2" + ;; + x11) + PKG_DEPENDS_TARGET+=" libX11" + PKG_MESON_OPTS_TARGET="-Dflavors=x11-gl" + ;; + *) + PKG_DEPENDS_TARGET+=" systemd libdrm" + PKG_MESON_OPTS_TARGET="-Dflavors=drm-glesv2" + ;; +esac From bda3abe8503df7538aa16ff9284bc5749c68cba2 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Fri, 24 Dec 2021 00:22:48 +0100 Subject: [PATCH 24/32] kodi: fix black screen when starting fullscreen --- ...oot-setting-on-res-infos-bFullScreen.patch | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch diff --git a/packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch b/packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch new file mode 100644 index 0000000000..fe64712f3e --- /dev/null +++ b/packages/mediacenter/kodi/patches/kodi-999.16-PR20632-base-m_bFullScreenRoot-setting-on-res-infos-bFullScreen.patch @@ -0,0 +1,66 @@ +From 81a2fb65100b88c31bb0168acc0c3b7bab09475a Mon Sep 17 00:00:00 2001 +From: Dominique Martinet +Date: Sun, 5 Dec 2021 23:46:25 +0900 +Subject: [PATCH] windowing: base m_bFullScreenRoot setting on res info's + bFullScreen + +on wayland, the compositor can ignore fullscreen requests, so even if +application's InitWindow created a window with res >= DESKTOP we have +no guarantee that the actual window created is actually fullscreen. + +CreateNewWindow will fill GetResolutionInfo(res) so we can check that +for bFullScreen and use this information... in theory. + +wayland was inconditionally setting it to the requested fullscreen +state, so also make sure it's set based on the real state by keeping +m_bFullScreen up to date and using that instead. + +Fixes: #20629 +--- + xbmc/windowing/GraphicContext.cpp | 2 +- + xbmc/windowing/wayland/WinSystemWayland.cpp | 5 +++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/xbmc/windowing/GraphicContext.cpp b/xbmc/windowing/GraphicContext.cpp +index 6a90ee28fc05c..83fedbabe1856 100644 +--- a/xbmc/windowing/GraphicContext.cpp ++++ b/xbmc/windowing/GraphicContext.cpp +@@ -409,7 +409,7 @@ void CGraphicContext::SetVideoResolutionInternal(RESOLUTION res, bool forceUpdat + return; + } + +- if (res >= RES_DESKTOP) ++ if (CDisplaySettings::GetInstance().GetResolutionInfo(res).bFullScreen) + { + CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_fullScreen = true; + m_bFullScreenRoot = true; +diff --git a/xbmc/windowing/wayland/WinSystemWayland.cpp b/xbmc/windowing/wayland/WinSystemWayland.cpp +index bd17b44a19e50..02ba323d64817 100644 +--- a/xbmc/windowing/wayland/WinSystemWayland.cpp ++++ b/xbmc/windowing/wayland/WinSystemWayland.cpp +@@ -343,7 +343,7 @@ bool CWinSystemWayland::CreateNewWindow(const std::string& name, + + // Update resolution with real size as it could have changed due to configure() + UpdateDesktopResolution(res, res.strOutput, m_bufferSize.Width(), m_bufferSize.Height(), res.fRefreshRate, 0); +- res.bFullScreen = fullScreen; ++ res.bFullScreen = m_bFullScreen; + + // Now start processing events + // +@@ -787,7 +787,7 @@ void CWinSystemWayland::OnConfigure(std::uint32_t serial, CSizeInt size, IShellS + CLog::LogF(LOGDEBUG, "Initial configure serial {}: size {}x{} state {}", serial, size.Width(), + size.Height(), IShellSurface::StateToString(state)); + m_shellSurfaceState = state; +- if (!size.IsZero()) ++ if (!size.IsZero() || state.test(IShellSurface::STATE_FULLSCREEN)) + { + UpdateSizeVariables(size, m_scale, m_shellSurfaceState, true); + } +@@ -1015,6 +1015,7 @@ CWinSystemWayland::SizeUpdateInformation CWinSystemWayland::UpdateSizeVariables( + m_surfaceSize = sizes.surfaceSize; + m_bufferSize = sizes.bufferSize; + m_configuredSize = sizes.configuredSize; ++ m_bFullScreen = state.test(IShellSurface::STATE_FULLSCREEN); + + SizeUpdateInformation changes{m_surfaceSize != oldSurfaceSize, m_bufferSize != oldBufferSize, m_configuredSize != oldConfiguredSize, m_scale != oldBufferScale}; + From b4bd50432fdbfb2269d1958f006176d8f5d2b398 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 00:37:35 +0100 Subject: [PATCH 25/32] wl: added tools & drivers opts --- packages/virtual/wl/package.mk | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/virtual/wl/package.mk b/packages/virtual/wl/package.mk index 4770867686..5bcacb8585 100644 --- a/packages/virtual/wl/package.mk +++ b/packages/virtual/wl/package.mk @@ -14,3 +14,13 @@ PKG_LONGDESC="Wayland is intended as a simpler replacement for X, easier to deve if [ -n "${WINDOWMANAGER}" -a "${WINDOWMANAGER}" != "no" ]; then PKG_DEPENDS_TARGET+=" ${WINDOWMANAGER}" fi + +# Tools for wlroots based compositors +if [ "${WINDOWMANAGER}" = "sway" ]; then + PKG_DEPENDS_TARGET+=" wlr-randr" +fi + +# NVIDIA drivers for Linux +if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then + PKG_DEPENDS_TARGET+=" nvidia" +fi From e1342c15742bfd964ebf544d0391b936936d9962 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Sun, 16 Jan 2022 00:38:09 +0100 Subject: [PATCH 26/32] mediacenter: added nvidia-vaapi-driver opts --- packages/virtual/mediacenter/package.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/virtual/mediacenter/package.mk b/packages/virtual/mediacenter/package.mk index 40273ec8b2..838c652c7d 100644 --- a/packages/virtual/mediacenter/package.mk +++ b/packages/virtual/mediacenter/package.mk @@ -43,4 +43,7 @@ if [ "${MEDIACENTER}" = "kodi" ]; then PKG_DEPENDS_TARGET+=" intel-vaapi-driver media-driver" fi + if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then + PKG_DEPENDS_TARGET+=" nvidia-vaapi-driver" + fi fi From 001b073fb796851ba193c5d61576b45369ccde51 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Mon, 6 Dec 2021 20:26:32 +0100 Subject: [PATCH 27/32] Generic/wayland: set Sway as default windowmanager --- projects/Generic/devices/wayland/options | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/Generic/devices/wayland/options b/projects/Generic/devices/wayland/options index f7b3175498..70385177d1 100644 --- a/projects/Generic/devices/wayland/options +++ b/projects/Generic/devices/wayland/options @@ -10,8 +10,8 @@ # Displayserver to use (wl / x11 / no) DISPLAYSERVER="wl" -# Windowmanager to use (fluxbox / weston / no) - WINDOWMANAGER="weston" +# Windowmanager to use (fluxbox / sway / weston / no) + WINDOWMANAGER="sway" # KODI Player implementation to use (mesa / default) KODIPLAYER_DRIVER="mesa" From 0bc5bf7b222d6e039969bcef37f351bb2a454f48 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Thu, 13 Jan 2022 11:09:21 +0100 Subject: [PATCH 28/32] libva: add nvidia-drm to the drm driver map --- .../libva-999.02-PR554-nvidia-drm.patch | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 packages/multimedia/libva/patches/libva-999.02-PR554-nvidia-drm.patch diff --git a/packages/multimedia/libva/patches/libva-999.02-PR554-nvidia-drm.patch b/packages/multimedia/libva/patches/libva-999.02-PR554-nvidia-drm.patch new file mode 100644 index 0000000000..eefbf9e8e0 --- /dev/null +++ b/packages/multimedia/libva/patches/libva-999.02-PR554-nvidia-drm.patch @@ -0,0 +1,21 @@ +From f342855b2b489de4141f7d23cfd66b7f243b74b7 Mon Sep 17 00:00:00 2001 +From: Stephen +Date: Tue, 23 Nov 2021 09:10:01 +0000 +Subject: [PATCH] Add nvidia-drm to the drm driver map + +--- + va/drm/va_drm_utils.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/va/drm/va_drm_utils.c b/va/drm/va_drm_utils.c +index 467d9ac9..b3422d19 100644 +--- a/va/drm/va_drm_utils.c ++++ b/va/drm/va_drm_utils.c +@@ -45,6 +45,7 @@ static const struct driver_name_map g_driver_name_map[] = { + { "nouveau", 7, "nouveau" }, // Mesa Gallium driver + { "radeon", 6, "r600" }, // Mesa Gallium driver + { "amdgpu", 6, "radeonsi" }, // Mesa Gallium driver ++ { "nvidia-drm",10, "nvidia" }, // NVIDIA driver + { NULL, 0, NULL } + }; + From ccd90a3a56a9e2a344e0ca64131169d766a39b4e Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Tue, 1 Feb 2022 20:06:46 +0100 Subject: [PATCH 29/32] config/grapic: add VA-API / Vulkan support for nvidia-ng --- config/graphic | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config/graphic b/config/graphic index 22fb88adbb..119d081a1b 100644 --- a/config/graphic +++ b/config/graphic @@ -34,7 +34,7 @@ get_graphicdrivers() { V4L2_SUPPORT="no" if [ "${GRAPHIC_DRIVERS}" = "all" ]; then - GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy vmware virtio vc4" + GRAPHIC_DRIVERS="crocus i915 iris r300 r600 radeonsi nvidia nvidia-legacy nvidia-ng vmware virtio vc4" fi if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then @@ -93,6 +93,11 @@ get_graphicdrivers() { VDPAU_SUPPORT="yes" fi + if listcontains "${GRAPHIC_DRIVERS}" "nvidia-ng"; then + VULKAN_DRIVERS_CONFIG+=" nvidia-ng" + VAAPI_SUPPORT="yes" + fi + if listcontains "${GRAPHIC_DRIVERS}" "panfrost"; then GALLIUM_DRIVERS+=" kmsro panfrost" VULKAN_DRIVERS_MESA+=" panfrost" From 69e731499ddce6193b87f5f24e6a6d4fd69b1568 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Wed, 2 Feb 2022 11:53:00 +0100 Subject: [PATCH 30/32] weston: update to 10.0.0 - https://lists.freedesktop.org/archives/wayland-devel/2022-February/042103.html - updated dependencies & build opts - updated config files - fixed License --- packages/wayland/weston/config/weston.ini | 8 +- packages/wayland/weston/package.mk | 37 +++++++--- ...id-setting-WAYLAND_DISPLAY=wayland-0.patch | 73 ------------------- .../wayland/weston/profile.d/04-weston.conf | 1 + 4 files changed, 31 insertions(+), 88 deletions(-) delete mode 100644 packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch diff --git a/packages/wayland/weston/config/weston.ini b/packages/wayland/weston/config/weston.ini index 196e43484a..dbbb812c29 100644 --- a/packages/wayland/weston/config/weston.ini +++ b/packages/wayland/weston/config/weston.ini @@ -2,10 +2,12 @@ idle-time=0 [shell] -locking=false -background-color=0x00000000 -background-image=/usr/share/weston/splash-2160.png + +background-image=/usr/share/weston/libreelec-wallpaper-2160.png background-type=scale-crop +background-color=0x00000000 +clock-format=minutes-24h +locking=false [launcher] path=/usr/lib/kodi/kodi.bin diff --git a/packages/wayland/weston/package.mk b/packages/wayland/weston/package.mk index c729a35fb1..5b4ccc0fc1 100644 --- a/packages/wayland/weston/package.mk +++ b/packages/wayland/weston/package.mk @@ -2,34 +2,50 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="weston" -PKG_VERSION="9.0.0" -PKG_SHA256="5cf5d6ce192e0eb15c1fc861a436bf21b5bb3b91dbdabbdebe83e1f83aa098fe" -PKG_LICENSE="OSS" +PKG_VERSION="10.0.0" +PKG_SHA256="5c23964112b90238bed39e5dd1e41cd71a79398813cdc3bbb15a9fdc94e547ae" +PKG_LICENSE="MIT" PKG_SITE="https://wayland.freedesktop.org/" PKG_URL="https://wayland.freedesktop.org/releases/${PKG_NAME}-${PKG_VERSION}.tar.xz" -PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo libjpeg-turbo dbus" +PKG_DEPENDS_TARGET="toolchain wayland wayland-protocols libdrm libxkbcommon libinput cairo pango libjpeg-turbo dbus seatd" PKG_LONGDESC="Reference implementation of a Wayland compositor" -PKG_MESON_OPTS_TARGET="-Dbackend-drm-screencast-vaapi=false \ +PKG_MESON_OPTS_TARGET="-Dbackend-drm=true \ + -Dbackend-drm-screencast-vaapi=false \ -Dbackend-headless=false \ -Dbackend-rdp=false \ -Dscreenshare=false \ + -Dbackend-wayland=false \ -Dbackend-x11=false \ - -Dbackend-fbdev=false \ + -Ddeprecated-backend-fbdev=false \ + -Dbackend-default=drm \ + -Drenderer-gl=true \ -Dweston-launch=false \ -Dxwayland=false \ + -Dsystemd=true \ -Dremoting=false \ -Dpipewire=false \ + -Dshell-desktop=true \ -Dshell-fullscreen=false \ -Dshell-ivi=false \ + -Dshell-kiosk=false \ + -Ddesktop-shell-client-default="weston-desktop-shell" \ + -Ddeprecated-wl-shell=false \ -Dcolor-management-lcms=false \ -Dcolor-management-colord=false \ + -Dlauncher-logind=false \ + -Dlauncher-libseat=true \ + -Dimage-jpeg=true \ -Dimage-webp=false \ + -Dtools=['terminal'] -Ddemo-clients=false \ - -Dsimple-clients=egl \ + -Dsimple-clients=[] \ -Dresize-pool=false \ -Dwcap-decode=false \ - -Dtest-junit-xml=false" + -Dtest-junit-xml=false \ + -Dtest-skip-is-failure=false \ + -Dtest-gl-renderer=false \ + -Ddoc=false" pre_configure_target() { # weston does not build with NDEBUG (requires assert for tests) @@ -42,12 +58,9 @@ post_makeinstall_target() { mkdir -p ${INSTALL}/usr/share/weston cp ${PKG_DIR}/config/weston.ini ${INSTALL}/usr/share/weston - find_file_path "splash/splash-2160.png" && cp ${FOUND_PATH} ${INSTALL}/usr/share/weston + find_file_path "splash/splash-2160.png" && cp ${FOUND_PATH} ${INSTALL}/usr/share/weston/libreelec-wallpaper-2160.png safe_remove ${INSTALL}/usr/share/wayland-sessions - safe_remove ${INSTALL}/usr/bin/weston-calibrator - safe_remove ${INSTALL}/usr/bin/weston-simple-* - safe_remove ${INSTALL}/usr/bin/weston-touch-calibrator } post_install() { diff --git a/packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch b/packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch deleted file mode 100644 index 98d152ab83..0000000000 --- a/packages/wayland/weston/patches/weston-999.01-PR486-avoid-setting-WAYLAND_DISPLAY=wayland-0.patch +++ /dev/null @@ -1,73 +0,0 @@ -From ae69381b6eb43ab63992906d1bf29ffd2b4df10d Mon Sep 17 00:00:00 2001 -From: Manuel Stoeckl -Date: Sun, 30 Aug 2020 18:49:18 -0400 -Subject: [PATCH] compositor: avoid setting WAYLAND_DISPLAY=wayland-0 - -This commit alters the way that Weston picks a Wayland display socket -name. Instead of using wl_display_add_socket_auto to look for the first -available name in wayland-0, wayland-1, .... to wayland-32, the code now -checks names wayland-1, wayland-2, .... up to wayland-32. - -This change is a workaround for a suboptimal behavior of -libwayland-client. If a client program calls wl_display_connect(NULL) and -the WAYLAND_DISPLAY environment variable is not set, then the program will -by default try to connect to 'wayland-0'. This is a problem when a -computer has a running Wayland compositor but is being accessed in some -other fashion, such as through an X session on a different virtual -terminal, over ssh, etc. Client programs launched through those means may -attempt to connect to an unrelated compositor. Changing libwayland -behavior to remove the default would also work, but a) libraries have -stronger backward compatibility expectations b) that would likely break -more people's setups than just changing Weston would. - -Signed-off-by: Manuel Stoeckl ---- - compositor/main.c | 23 ++++++++++++++--------- - 1 file changed, 14 insertions(+), 9 deletions(-) - -diff --git a/compositor/main.c b/compositor/main.c -index 2554b7627..0c8c8e027 100644 ---- a/compositor/main.c -+++ b/compositor/main.c -@@ -825,24 +825,29 @@ handle_primary_client_destroyed(struct wl_listener *listener, void *data) - static int - weston_create_listening_socket(struct wl_display *display, const char *socket_name) - { -+ char name_candidate[16]; -+ - if (socket_name) { - if (wl_display_add_socket(display, socket_name)) { - weston_log("fatal: failed to add socket: %s\n", - strerror(errno)); - return -1; - } -+ -+ setenv("WAYLAND_DISPLAY", socket_name, 1); -+ return 0; - } else { -- socket_name = wl_display_add_socket_auto(display); -- if (!socket_name) { -- weston_log("fatal: failed to add socket: %s\n", -- strerror(errno)); -- return -1; -+ for (int i = 1; i <= 32; i++) { -+ sprintf(name_candidate, "wayland-%d", i); -+ if (wl_display_add_socket(display, name_candidate) >= 0) { -+ setenv("WAYLAND_DISPLAY", name_candidate, 1); -+ return 0; -+ } - } -+ weston_log("fatal: failed to add socket: %s\n", -+ strerror(errno)); -+ return -1; - } -- -- setenv("WAYLAND_DISPLAY", socket_name, 1); -- -- return 0; - } - - WL_EXPORT void * --- -GitLab - diff --git a/packages/wayland/weston/profile.d/04-weston.conf b/packages/wayland/weston/profile.d/04-weston.conf index 52ed075aa0..f175f0973b 100644 --- a/packages/wayland/weston/profile.d/04-weston.conf +++ b/packages/wayland/weston/profile.d/04-weston.conf @@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) +export WAYLAND_DISPLAY=wayland-1 export XDG_RUNTIME_DIR=/var/run/0-runtime-dir From 4fc6973a20008e8fba397fcc7b959a55133fcba2 Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Tue, 1 Feb 2022 12:33:07 +0100 Subject: [PATCH 31/32] wayland-protocols: update to 1.25 - https://lists.freedesktop.org/archives/wayland-devel/2022-January/042102.html --- packages/wayland/wayland-protocols/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/wayland/wayland-protocols/package.mk b/packages/wayland/wayland-protocols/package.mk index 4f5ccba242..6dbc5a11f1 100644 --- a/packages/wayland/wayland-protocols/package.mk +++ b/packages/wayland/wayland-protocols/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="wayland-protocols" -PKG_VERSION="1.24" -PKG_SHA256="bff0d8cffeeceb35159d6f4aa6bab18c807b80642c9d50f66cba52ecf7338bc2" +PKG_VERSION="1.25" +PKG_SHA256="f1ff0f7199d0a0da337217dd8c99979967808dc37731a1e759e822b75b571460" PKG_LICENSE="OSS" PKG_SITE="https://wayland.freedesktop.org/" PKG_URL="https://wayland.freedesktop.org/releases/${PKG_NAME}-${PKG_VERSION}.tar.xz" From 53a2c533fbf203248a6a171bd23088bbca7240ea Mon Sep 17 00:00:00 2001 From: SupervisedThinking Date: Wed, 2 Feb 2022 11:56:10 +0100 Subject: [PATCH 32/32] waylandpp: update to 0.29 - https://github.com/NilsBrause/waylandpp/releases/tag/0.2.9 --- packages/wayland/waylandpp/package.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/wayland/waylandpp/package.mk b/packages/wayland/waylandpp/package.mk index d7ef51f5a1..00f8b8b0dd 100644 --- a/packages/wayland/waylandpp/package.mk +++ b/packages/wayland/waylandpp/package.mk @@ -2,8 +2,8 @@ # Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv) PKG_NAME="waylandpp" -PKG_VERSION="0.2.8" -PKG_SHA256="e7f486165d3568c3558b5c7099133aea4a285b82820eeafad329fc10271c654d" +PKG_VERSION="0.2.9" +PKG_SHA256="9d34acd88149897d587b979fc454fd8e5be8021ba3d09ad24c77a4b7acff2ebd" PKG_LICENSE="GPL" PKG_SITE="https://github.com/NilsBrause/waylandpp" PKG_URL="https://github.com/NilsBrause/waylandpp/archive/${PKG_VERSION}.tar.gz"