From 1ae56929f27a25f8aa925dc6ef4cc7e04cecd6b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B0=D1=88=D0=BA=D0=B8=D0=BD=20=D0=9D=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=BB=D0=B0=D0=B9?= Date: Sat, 20 Jan 2024 01:03:05 +0300 Subject: [PATCH] evdi-1.14.1 + displaylink-driver-5.8.0 added --- x11-drivers/displaylink-driver/Manifest | 8 ++ .../displaylink-driver-5.8.0.ebuild | 88 +++++++++++++++++ .../files/99-displaylink.rules | 9 ++ .../displaylink-driver/files/dlm.service | 14 +++ .../displaylink-driver/files/pm-displaylink | 54 +++++++++++ .../files/rc-displaylink-1.3 | 19 ++++ x11-drivers/displaylink-driver/files/udev.sh | 95 +++++++++++++++++++ x11-drivers/displaylink-driver/metadata.xml | 8 ++ x11-drivers/evdi/Manifest | 3 + x11-drivers/evdi/evdi-1.14.1.ebuild | 41 ++++++++ x11-drivers/evdi/metadata.xml | 11 +++ 11 files changed, 350 insertions(+) create mode 100644 x11-drivers/displaylink-driver/Manifest create mode 100644 x11-drivers/displaylink-driver/displaylink-driver-5.8.0.ebuild create mode 100644 x11-drivers/displaylink-driver/files/99-displaylink.rules create mode 100644 x11-drivers/displaylink-driver/files/dlm.service create mode 100644 x11-drivers/displaylink-driver/files/pm-displaylink create mode 100644 x11-drivers/displaylink-driver/files/rc-displaylink-1.3 create mode 100644 x11-drivers/displaylink-driver/files/udev.sh create mode 100644 x11-drivers/displaylink-driver/metadata.xml create mode 100644 x11-drivers/evdi/Manifest create mode 100644 x11-drivers/evdi/evdi-1.14.1.ebuild create mode 100644 x11-drivers/evdi/metadata.xml diff --git a/x11-drivers/displaylink-driver/Manifest b/x11-drivers/displaylink-driver/Manifest new file mode 100644 index 00000000..0b84e613 --- /dev/null +++ b/x11-drivers/displaylink-driver/Manifest @@ -0,0 +1,8 @@ +AUX 99-displaylink.rules 784 BLAKE2B d90ea5cb237360a40ff995deb1ab7110a5c42536a22c61a6b8c3889684997a8e41586ddcbb18370cf60ac1d4c1ae6ca81e05b2e06b6ccdde5e8172e6b80f94e2 SHA512 9fc44e1d1bf320f095ef0b7473559802bbbc5a1c5a26426f9b7b1f0f8e204f7abf6172a95f6eb2eacde3c03472446bd6b99bfd65a0f1217e5a97d54113919a06 +AUX dlm.service 295 BLAKE2B 196b9f50ab48e554e30d9dd841080fce9ed98c322aae63eb13c2373aa606251d2f58197eed8170d5c03e7b1efb81ffa65019022877618126adef57702babba1a SHA512 a6c8128d92cbc8b14d8bb3f492e601f3f9d8635469be1cc7afaa669d0af48e2db84d8453910c1144e6e72a42afc61ecfbb7cead543a2483ffb3f6cfde73d6f75 +AUX pm-displaylink 981 BLAKE2B 854e07129c29475978a0944296d6c4bd0596c3290418ace98ed6f03814e8fc69cd856021fc80b7e7e6cef898769d7dc756db0bc0067ea47c099d03ef1e762f0d SHA512 1a755fc94fb754f33f1bb8a71ee5d876a062b49e4dd6755a5cd3caa4c7989bcccceec862050a9af849a044a1908e8dfe421970583f413df1e29eacd92fb5eaf6 +AUX rc-displaylink-1.3 430 BLAKE2B afb7a6a8e13b985652ce2f1ca7da67b86b35d909e8363a01d9062d2633b4e9c197d6484c60900f0ff73e10c4be260260f3b5cf4be1abf29ebc1ef8849e7f87d2 SHA512 dff38b6c388de8f2bf5c2bb155a2d115edc6b4a941aa2184b9ece5e2575ff1eab6d3594325579375458dfcc8031e89ef323da225245de07b6fb4b98de15443ee +AUX udev.sh 1773 BLAKE2B 2802fe43e01e91d5613462903e7b974163842bd85546cae0e9ccdbebe8d584d9fcb3ca5898e5826d2e607c1ea0e44a2d58a2b8ea320b95c1c049e7b700f81f8f SHA512 5b7028bd2f3107cc248309661dd09a94426b18f85701fbb7e32a92622a011c5fce67e7be58ba8afd7226756728d60d7b49aa894cf995e84e483b0f0f984c29b1 +DIST displaylink-driver-5.8.0.zip 18341463 BLAKE2B 5dd2eec5f868ee3ebc652f2ff82ed42bc2f0d6064c66ba40e2c324b302e12e7fba995cb047db57cb4644a6fdb900251548b99244c901c9ceedccbc3e1c039bef SHA512 59d470614cb8fdafaf4bea80771a806ad42fa4f1e12661adb4c17fc558bfa5e8e49fe6c3efc5775a8ec98d141a79ed9162b7bc769579f7d0f8f0979031b8d491 +EBUILD displaylink-driver-5.8.0.ebuild 2194 BLAKE2B 32203902ce3b712efeae02db70257ffe9415d7544d40731a7afcd75e89df7f3465a847b6bd05de43cfdea24a967e20177d78ab7f4b4c822f307a9bd495dd5355 SHA512 a26faf26134b04433fda7eef98a32260a18c1343efe6032a106b2771b6b11469aea9bce588ace969d356321dc68a976f0f350343603ba4232b4742cda94f0a4f +MISC metadata.xml 253 BLAKE2B 6ed1c6ee3ee1fba0e494f00ba4f9ac5312f39a5e5e3f557304c55f4bba86338e1e2961a5e2bbf64c9060410e1171b19004a42959df7cef835e4523e8f83f8560 SHA512 be4f98293b1e9e87b12cd381496ae9fd0503c5c84136794c673df2a7cc64a89adc1d4af334751c385d2a2c7deb779ba01b9779bf9176ad156e0a8b22a0a0fc90 diff --git a/x11-drivers/displaylink-driver/displaylink-driver-5.8.0.ebuild b/x11-drivers/displaylink-driver/displaylink-driver-5.8.0.ebuild new file mode 100644 index 00000000..ad4b4804 --- /dev/null +++ b/x11-drivers/displaylink-driver/displaylink-driver-5.8.0.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit systemd udev + +DESCRIPTION="DisplayLink USB Graphics Software" +HOMEPAGE="http://www.displaylink.com/downloads/ubuntu" +SRC_URI="${P}.zip" +LICENSE="DisplayLink-EULA" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86 " +IUSE="systemd" +PV_EXTRA="63.33" + +QA_PREBUILT="/opt/displaylink/DisplayLinkManager" +RESTRICT="fetch bindist" + +DEPEND="app-admin/chrpath + app-arch/unzip" +RDEPEND=">=sys-devel/gcc-6.5.0 + ~x11-drivers/evdi-1.14.1 + virtual/libusb:1 + >=x11-base/xorg-server-1.17.0 + !systemd? ( sys-auth/elogind )" + +pkg_nofetch() { + einfo "Please download DisplayLink USB Graphics Software for Ubuntu${PV}-EXE.zip from" + einfo "http://www.displaylink.com/downloads/ubuntu" + einfo "and rename it to ${P}.zip" +} + +src_unpack() { + default + sh ./"${PN}-${PV}-${PV_EXTRA}".run --noexec --target "${P}" +} + +src_install() { + case "${ARCH}" in + amd64) MY_ARCH="x64-ubuntu-1604" ;; + x86) MY_ARCH="x86-ubuntu-1604" ;; + arm) MY_ARCH="arm-linux-gnueabihf" ;; + arm64) MY_ARCH="aarch64-linux-gnu" ;; + esac + DLM="${S}/${MY_ARCH}/DisplayLinkManager" + + dodir /opt/displaylink + dodir /var/log/displaylink + + exeinto /opt/displaylink + chrpath -d "${DLM}" + doexe "${DLM}" + + insinto /opt/displaylink + doins *.spkg + + udev_dorules "${FILESDIR}/99-displaylink.rules" + + insinto /opt/displaylink + insopts -m0755 + newins "${FILESDIR}/udev.sh" udev.sh + newins "${FILESDIR}/pm-displaylink" suspend.sh + if use systemd; then + dosym ../../../opt/displaylink/suspend.sh /lib/systemd/system-sleep/displaylink.sh + systemd_dounit "${FILESDIR}/dlm.service" + else + dosym ../../../opt/displaylink/suspend.sh /etc/pm/sleep.d/displaylink.sh + newinitd "${FILESDIR}/rc-displaylink-1.3" dlm + fi +} + +pkg_postinst() { + udev_reload + + elog "The DisplayLinkManager Init is now called dlm" + elog "" + elog "You should be able to use xrandr as follows:" + elog "xrandr --setprovideroutputsource 1 0" + elog "Repeat for more screens, like:" + elog "xrandr --setprovideroutputsource 2 0" + elog "Then, you can use xrandr or GUI tools like arandr to configure the screens, e.g." + elog "xrandr --output DVI-1-0 --auto" +} + +pkg_postrm() { + udev_reload +} diff --git a/x11-drivers/displaylink-driver/files/99-displaylink.rules b/x11-drivers/displaylink-driver/files/99-displaylink.rules new file mode 100644 index 00000000..689a57ff --- /dev/null +++ b/x11-drivers/displaylink-driver/files/99-displaylink.rules @@ -0,0 +1,9 @@ +# Copyright (c) 2016 - 2020 DisplayLink (UK) Ltd. +# File autogenerated by udev-installer.sh script + +ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTR{idVendor}=="17e9", IMPORT{builtin}="usb_id", ENV{DISPLAYLINK_DEVNAME}="$env{DEVNAME}", ENV{DISPLAYLINK_DEVICE_ID}="$env{ID_BUS}-$env{BUSNUM}-$env{DEVNUM}-$env{ID_SERIAL}", ENV{REMOVE_CMD}="/opt/displaylink/udev.sh $root $env{DISPLAYLINK_DEVICE_ID} $env{DISPLAYLINK_DEVNAME}" + +ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="17e9", ATTR{bInterfaceClass}=="ff", ATTR{bInterfaceProtocol}=="03", IMPORT{parent}="DISPLAYLINK*", RUN+="/opt/displaylink/udev.sh $root $env{DISPLAYLINK_DEVICE_ID} $env{DISPLAYLINK_DEVNAME}" + +ACTION=="remove", ENV{PRODUCT}=="17e9/*", RUN+="/opt/displaylink/udev.sh $root $env{DEVNAME}" + diff --git a/x11-drivers/displaylink-driver/files/dlm.service b/x11-drivers/displaylink-driver/files/dlm.service new file mode 100644 index 00000000..62d7b94e --- /dev/null +++ b/x11-drivers/displaylink-driver/files/dlm.service @@ -0,0 +1,14 @@ +[Unit] +Description=DisplayLink Manager Service +After=display-manager.service +Conflicts=getty@tty7.service + +[Service] +ExecStartPre=/sbin/modprobe evdi +ExecStart=/opt/displaylink/DisplayLinkManager +Restart=always +WorkingDirectory=/opt/displaylink +RestartSec=5 + +[Install] +WantedBy=graphical.target diff --git a/x11-drivers/displaylink-driver/files/pm-displaylink b/x11-drivers/displaylink-driver/files/pm-displaylink new file mode 100644 index 00000000..d20e1fa5 --- /dev/null +++ b/x11-drivers/displaylink-driver/files/pm-displaylink @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +# Copyright (c) 2015 - 2019 DisplayLink (UK) Ltd. + +suspend_displaylink-driver() +{ + #flush any bytes in pipe + while read -n 1 -t 1 SUSPEND_RESULT < /tmp/PmMessagesPort_out; do : ; done; + + #suspend DisplayLinkManager + echo "S" > /tmp/PmMessagesPort_in + + if [[ -p /tmp/PmMessagesPort_out ]]; then + #wait until suspend of DisplayLinkManager finish + read -n 1 -t 10 SUSPEND_RESULT < /tmp/PmMessagesPort_out + fi +} + +resume_displaylink-driver() +{ + #resume DisplayLinkManager + echo "R" > /tmp/PmMessagesPort_in +} + +main_systemd() +{ + case "$1/$2" in + pre/*) + suspend_displaylink-driver + ;; + post/*) + resume_displaylink-driver + ;; + esac +} +main_pm() +{ + case "$1" in + suspend|hibernate) + suspend_displaylink-driver + ;; + resume|thaw) + resume_displaylink-driver + ;; + esac + true +} + +DIR=$(cd "$(dirname "$0")" && pwd) + +if [[ $DIR == *systemd* ]]; then + main_systemd "$@" +elif [[ $DIR == *pm* ]]; then + main_pm "$@" +fi diff --git a/x11-drivers/displaylink-driver/files/rc-displaylink-1.3 b/x11-drivers/displaylink-driver/files/rc-displaylink-1.3 new file mode 100644 index 00000000..1db2def2 --- /dev/null +++ b/x11-drivers/displaylink-driver/files/rc-displaylink-1.3 @@ -0,0 +1,19 @@ +#!/sbin/openrc-run +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +depend() { + after xdm +} + +start() { + modprobe -q evdi + start-stop-daemon --start --background --chdir /opt/displaylink --make-pidfile --pidfile /run/displaylink.pid --exec /opt/displaylink/DisplayLinkManager + eend $? +} + +stop() { + start-stop-daemon --stop --pidfile /run/displaylink.pid + eend $? +} diff --git a/x11-drivers/displaylink-driver/files/udev.sh b/x11-drivers/displaylink-driver/files/udev.sh new file mode 100644 index 00000000..cbb994ea --- /dev/null +++ b/x11-drivers/displaylink-driver/files/udev.sh @@ -0,0 +1,95 @@ +#!/bin/sh +# Copyright (c) 2016 - 2020 DisplayLink (UK) Ltd. +# File autogenerated by udev-installer.sh script + +get_displaylink_dev_count() +{ + cat /sys/bus/usb/devices/*/idVendor | grep 17e9 | wc -l +} + +get_displaylink_symlink_count() +{ + root=$1 + + if [ ! -d "$root/displaylink/by-id" ]; then + echo "0" + return + fi + + for f in $(find $root/displaylink/by-id -type l -exec realpath {} \; 2> /dev/null); do + test -c $f && echo $f; + done | wc -l +} + +start_displaylink() +{ + if [ "$(get_displaylink_dev_count)" != "0" ]; then + start_service + fi +} + +stop_displaylink() +{ + root=$1 + + if [ "$(get_displaylink_symlink_count $root)" = "0" ]; then + stop_service + fi +} + +remove_dldir_if_empty() +{ + root=$1 + (cd $root; rmdir -p --ignore-fail-on-non-empty displaylink/by-id) +} + +create_displaylink_symlink() +{ + root=$1 + device_id=$2 + devnode=$3 + + mkdir -p $root/displaylink/by-id + ln -sf $devnode $root/displaylink/by-id/$device_id +} + +unlink_displaylink_symlink() +{ + root=$1 + devname=$2 + + for f in $root/displaylink/by-id/*; do + if [ ! -e "$f" ] || ([ -L "$f" ] && [ "$f" -ef "$devname" ]); then + unlink "$f" + fi + done + (cd $root; rmdir -p --ignore-fail-on-non-empty displaylink/by-id) +} + +prune_broken_links() +{ + root=$1 + + dir="$root/displaylink/by-id" + find -L "$dir" -name "$dir" -o type d -prune -o -type -l -exec rm {} + + remove_dldir_if_empty $root +} + +main() +{ + action=$1 + root=$2 + devnode=$4 + + if [ "$action" = "add" ]; then + device_id=$3 + create_displaylink_symlink $root $device_id $devnode + start_displaylink + elif [ "$action" = "remove" ]; then + devname=$3 + unlink_displaylink_symlink "$root" "$devname" + stop_displaylink "$root" + elif [ "$action" = "START" ]; then + start_displaylink + fi +} diff --git a/x11-drivers/displaylink-driver/metadata.xml b/x11-drivers/displaylink-driver/metadata.xml new file mode 100644 index 00000000..26a0cef6 --- /dev/null +++ b/x11-drivers/displaylink-driver/metadata.xml @@ -0,0 +1,8 @@ + + + + + kabi-bugz.gentoo@zyrenth.com + Amy Nagle + + diff --git a/x11-drivers/evdi/Manifest b/x11-drivers/evdi/Manifest new file mode 100644 index 00000000..80bea9f0 --- /dev/null +++ b/x11-drivers/evdi/Manifest @@ -0,0 +1,3 @@ +DIST evdi-1.14.1.tar.gz 80554 BLAKE2B 4e574b9722050221603007b730efd31dc5c93e4a4fabaf369e47444d59b8a8a031004561c53daa25a239666da6f8e499ebf8d949b39ac8eecea5e610ffb26945 SHA512 a4eee90a395856b524b596989c24637cb328ddabc841d3f5a0d14fc0481f1c288a164d97cf9bb448c8dbae64a6b264425d793185625a5503726d396d91975c3f +EBUILD evdi-1.14.1.ebuild 926 BLAKE2B 032849d7f8f7da457287b6311d5a5282925d93198f9af280c5493178872c22ddc3bdfe7bc87c5045ec70fa1a127f016d0f3fefb3c3b50680422ae3346c7698cc SHA512 fc5b03be9811e7af85e3fe4b14633ed87db3fb8df75c8dd9102af82a52758cfe107c8f1c5b02d18dd732d88ddb8be7fa0517f42d631962499a6ea1d8a323e7d9 +MISC metadata.xml 334 BLAKE2B 14e6e341ca6811e61ff7fdb34ed128b51b80a8516f817b24598173d6ef723ca77ac990c68a01a3ffdf6a5d2e4cf8b8e766eaabad5ffc3b1fd68f5aef5cbc827a SHA512 ae847ea569d82e9b8c4f9df494f4e26f19a9e5090abe51a6ca9cf7271c0931ec34818a64f15f32d405962659e9933af9ed3a5add2cb730b2c2a1de95b4e1b686 diff --git a/x11-drivers/evdi/evdi-1.14.1.ebuild b/x11-drivers/evdi/evdi-1.14.1.ebuild new file mode 100644 index 00000000..b2ce7a1f --- /dev/null +++ b/x11-drivers/evdi/evdi-1.14.1.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit linux-mod + +DESCRIPTION="Extensible Virtual Display Interface" +HOMEPAGE="https://github.com/DisplayLink/evdi" +SRC_URI="https://github.com/DisplayLink/evdi/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" + +RDEPEND="x11-libs/libdrm" +DEPEND="${RDEPEND} + sys-kernel/linux-headers" + +MODULE_NAMES="evdi(video:${S}/module)" + +#CONFIG_CHECK="~FB_VIRTUAL ~!INTEL_IOMMU" +CONFIG_CHECK="~FB_VIRTUAL ~I2C DRM ~USB_SUPPORT USB_ARCH_HAS_HCD" + +pkg_setup() { + linux-mod_pkg_setup +} + +src_compile() { + linux-mod_src_compile + cd "${S}/library" + default + #mv libevdi.so libevdi.so.${PV} +} + +src_install() { + linux-mod_src_install + dolib.so library/libevdi.so.${PV} + dosym libevdi.so.${PV} "/usr/$(get_libdir)/libevdi.so.1" + dosym libevdi.so.1 "/usr/$(get_libdir)/libevdi.so" +} diff --git a/x11-drivers/evdi/metadata.xml b/x11-drivers/evdi/metadata.xml new file mode 100644 index 00000000..970d6f99 --- /dev/null +++ b/x11-drivers/evdi/metadata.xml @@ -0,0 +1,11 @@ + + + + + kabi-bugz.gentoo@zyrenth.com + Amy Nagle + + + DisplayLink/evdi + +