From fae0f9500ad4e223d2a4f6694cb3c62a57478ad9 Mon Sep 17 00:00:00 2001 From: moparisthebest Date: Sun, 12 Dec 2021 12:01:11 -0500 Subject: [PATCH] update displaylink+evdi --- src/displaylink/.gitignore | 1 + src/displaylink/PKGBUILD | 74 +++++++++++--------- src/displaylink/release-note.txt | 112 ------------------------------- src/evdi-git/PKGBUILD | 68 +++++++++++-------- src/evdi-git/evdi-git.Changelog | 12 ---- src/evdi-git/evdi-git.install | 21 ------ src/evdi/.gitignore | 1 + src/evdi/PKGBUILD | 12 ++-- src/evdi/evdi.Changelog | 25 +++++++ 9 files changed, 114 insertions(+), 212 deletions(-) delete mode 100644 src/displaylink/release-note.txt delete mode 100644 src/evdi-git/evdi-git.Changelog delete mode 100644 src/evdi-git/evdi-git.install diff --git a/src/displaylink/.gitignore b/src/displaylink/.gitignore index ed7b9c3..89d2fb5 100644 --- a/src/displaylink/.gitignore +++ b/src/displaylink/.gitignore @@ -1,6 +1,7 @@ *.swp *.tar.gz *.tar.xz +*.tar.zst *.zip pkg/ src/ diff --git a/src/displaylink/PKGBUILD b/src/displaylink/PKGBUILD index 7b551dd..9e8410c 100644 --- a/src/displaylink/PKGBUILD +++ b/src/displaylink/PKGBUILD @@ -1,30 +1,36 @@ # Maintainer: rHermes +# Maintainer: bnavigator # Contributor: PlusMinus # Contributor: rhabbachi pkgname=displaylink -pkgver=5.2.14 +pkgver=5.4.1 +_releasedate=2021-09 +_pkgfullver=5.4.1-55.174 pkgrel=1 pkgdesc="Linux driver for DL-6xxx, DL-5xxx, DL-41xx and DL-3x00" -arch=('i686' 'x86_64') -url="http://www.displaylink.com/downloads/ubuntu.php" +arch=('i686' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64') +url="" license=('custom' 'GPL2' 'LGPL2.1') -depends=('evdi>=1.5.0' 'libusb>=1.0.0') +depends=('evdi>=1.9.1' + 'libusb>=1.0.0') makedepends=('grep' 'gawk' 'wget') install= -changelog="release-note.txt" -source=(displaylink-driver-$pkgver.zip::https://www.displaylink.com/downloads/file?id=1369 - udev.sh +changelog="displaylink-release-notes-${pkgver}.txt" +source=(displaylink-driver-${pkgver}.zip::https://www.synaptics.com/sites/default/files/exe_files/${_releasedate}/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu${pkgver}-EXE.zip + displaylink-release-notes-${pkgver}.txt::https://www.synaptics.com/sites/default/files/release_notes/${_releasedate}/DisplayLink%20USB%20Graphics%20Software%20for%20Ubuntu${pkgver}-Release%20Notes.txt + DISPLAYLINK-EULA + udev.sh 99-displaylink.rules displaylink.service displaylink-sleep.sh) -md5sums=('a96ae6fc0d244ec4f9a8e9482f6c1535' - 'd5de775e41af06edbd8073adc490139d' - '20495d81c7d2540910ef86dc437b7fac' - 'c141a15e973481c7d961f8e135627ca4' - '7cbd9ab2ac79ba66e8297689c6e5483e') - -DLAGENTS=('https::/usr/bin/wget -O %o --post-data=fileId=1369&accept_submit=Accept %u') +sha256sums=('0cc71807122d7bcafab422d7b4bd707018a2f28005bce4fae9f585f4e5e63aae' + '895a2100cdebf217f43873761554cd179e9eaa498649c9eb68f1f007797fbf83' + '2f81fea43332a62b2cf1dd47e56ea01caf1e886bcd16c3f82b18bfe148fb21a9' + 'dc41ae8a2c287fc50fdda65bad8b0ffd76726f7773c25e1b0c5b7de95cecbdb6' + 'c08a4726cf4e2f92c7cab00168ae9cc8d69d36a67c570609396a4a674934245a' + '342e83abfe2a38d5635ea928345e933d2ad127ebd3f7caca476663d4f583684b' + '8be4ab7616e38f91746bdd3e7fafe9004322a8be8e6722389746df9868d576e0') # Update with > updpkgsums @@ -42,33 +48,35 @@ package() { install -d -m755 "$pkgdir/var/log/displaylink" echo "Extracting DisplayLink Driver Package" - cd $srcdir - chmod +x displaylink-driver-$pkgver.run - ./displaylink-driver-$pkgver.run --target $pkgname-$pkgver --noexec - cd "$pkgname-$pkgver" + pushd $srcdir + chmod +x displaylink-driver-${_pkgfullver}.run + ./displaylink-driver-${_pkgfullver}.run \ + --noexec \ + --target $pkgname-$pkgver \ + --nox11 \ + --noprogress + test -d $pkgname-$pkgver || (echo "Extracting the driver with the .run installer failed"; exit 1) + pushd $pkgname-$pkgver - if [ "$CARCH" == "i686" ]; then - ARCH="x86" - elif [ "$CARCH" == "x86_64" ]; then - ARCH="x64" - fi - - ARCH+="-ubuntu-1604" + case $CARCH in + i686) + ARCH="x86-ubuntu-1604" ;; + x86_64) + ARCH="x64-ubuntu-1604" ;; + arm|armv6h|armv7h|aarch64) + ARCH="arm-linux-gnueabihf" ;; + esac echo "Installing DisplayLink Manager $ARCH" install -D -m755 $ARCH/DisplayLinkManager $COREDIR/DisplayLinkManager - # I wonder if this is even necessary but I'm too lazy to find out - echo "Creating symlinks for evdi and libusb" - ln -s $(ldconfig -p | grep libevdi | awk 'NR==1{print $4}') $COREDIR/libevdi.so - - ln -s $(ldconfig -p | grep libusb- | awk 'NR==1{print $4}') $COREDIR/libusb-1.0.so.0.1.0 - ln -s $(ldconfig -p | grep libusb- | awk 'NR==1{print $4}') $COREDIR/libusb-1.0.so.0 - ln -s $(ldconfig -p | grep libusb- | awk 'NR==1{print $4}') $COREDIR/libusb-1.0.so - echo "Installing firmware packages" install -D -m644 *.spkg $COREDIR echo "Installing license file" install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + popd + popd + install -D -m644 DISPLAYLINK-EULA "${pkgdir}/usr/share/licenses/${pkgname}/DISPLAYLINK-EULA" + } diff --git a/src/displaylink/release-note.txt b/src/displaylink/release-note.txt deleted file mode 100644 index 0985618..0000000 --- a/src/displaylink/release-note.txt +++ /dev/null @@ -1,112 +0,0 @@ -============================================================================= -============================================================================= - -DisplayLink Ubuntu Software Release Note - -Version: 4.2.29 -Date: 23th Feb 2018 - -DisplayLink DL-3xx0 / DL-5xx0 Firmware Version: 9.5.18.93117 -DisplayLink DL-41xx Firmware Version: 9.5.20.93215 -DisplayLink DL-6xxx Firmware Version: 9.5.18.93117 -Extensible Virtual Display Interface version included: 1.5.0-r2 - -============================================================================= -============================================================================= - - -A. Introduction -=============== - -This is DisplayLink Driver Software 4.2.0 for Ubuntu. It provides production quality support for DisplayLink USB 3.0 devices on specific variants of desktop Ubuntu Linux. - -The driver enables video support for products using DisplayLink USB 3.0 technology. Standard native Ubuntu drivers provide support for DisplayLink audio and Ethernet interfaces. - - -A1. Important notes about DL-6xxx, DL5xxx, DL-3x00 and DL-41xx Firmware -======================================================================= - -This software release contains an embedded firmware image. DL-6xxx, DL-5xxx, DL-3xxx and DL-41xx devices will be automatically upgraded with this firmware upon connection if required. - -The upgrade is silent, therefore screens connected to DL-6xxx, DL-5xxx, DL-3xxx or DL-41xx devices may require a few seconds to appear when devices are connected for the first time, or after devices have been used on other platforms and OSes. - -B. Contents -=========== - -A. Introduction -A1. Important notes about DL-6xxx, DL-5xxx, DL-3xxx and DL-41xx Firmware -B. Contents -C. Issues fixed -D. Supported O/S variants -E. Release components -F. How to Install -G. Supported Features & Hardware -H. Limitations & Known issues -I. Future Development - -C. Issues fixed -=============== - -Issues fixed since DisplayLink Driver Software v4.1.0 for Ubuntu (4.1.9) --------------------------------------------------------------------------- - -Sometimes PC may become unresponsive when a DisplayLink display is connected. (27139) - -D. Supported O/S variants -========================= - -This release has been prepared to be compatible with Ubuntu 17.10 and Ubuntu 16.04. Other variants and editions may be compatible if they meet minimum O/S requirements, but are not supported by DisplayLink. - -The Software contains binaries which work on Intel x86 platform (32 bit and 64 bit). -Minimum supported Linux Kernel version is 3.16. -Minimum supported Xorg version is 1.16. - -E. Release components -===================== -The Software consists of an open-source kernel mode driver (EVDI) with an accompanying library (libevdi), and a supporting binary application compatible with Intel x86 platform. -Source code for the open-source components can be found at DisplayLink's GitHub, https://github.com/DisplayLink - -F. How to Install -================= - -To install the release, from a terminal window, with root permissions use the command: - -sudo ./displaylink-driver-XXXX.run - -Where displaylink-driver-XXXX.run is the name of the extracted DisplayLink driver. - -The dkms framework is required for installation of DisplayLink. This can be installed with the command: sudo apt-get install dkms - -More detailed information on installation can be found at http://support.displaylink.com/knowledgebase/articles/615714#ubuntu - -G. Supported Features & Hardware -================================ - -This driver will support up to 2 displays connected to DisplayLink devices. More than 2 DisplayLink displays may work, but not supported or tested by DisplayLink. - -Resolutions up to 4K are supported on the appropriate DisplayLink hardware. - -Device families supported: -- DL-6xxx -- DL-5xxx -- DL-41xx -- DL-3xxx - -DL-1x5 and DL-1x0 devices use the open source udl driver, which is not developed or maintained by DisplayLink. - -H. Limitations & Known issues -============================= - -A list of limitations and known issues can be found here: -http://support.displaylink.com/knowledgebase/articles/641668 - -I. Future Development -====================== - -DisplayLink are open to suggestions and feedback on improving the proposed architecture and will gladly review patches or proposals from the developer community. Please find a current list of areas we identify as requiring attention below. - -- In this release, the user mode driver service is running with root permissions. In future versions, we would like to reduce the privilege level required for this process – e.g. by using a separate low-privileged user and a separate group, to ensure the permissions needed for driving DisplayLink screens are as low as possible. - -- The communication between the EVDI kernel module and the wrapper libevdi library is not access-controlled or authenticated. This could be improved in future releases, making it harder to compromise the data EVDI is sending and receiving. - -- EVDI kernel module driver is currently a platform_driver, for multiple reasons; most importantly because virtual displays are not discoverable, i.e. cannot be enumerated at the hardware level. EVDI is also a generic device, not tied to any particular kind of device, transport layer or a bus. diff --git a/src/evdi-git/PKGBUILD b/src/evdi-git/PKGBUILD index 97f8d8a..6397bc7 100644 --- a/src/evdi-git/PKGBUILD +++ b/src/evdi-git/PKGBUILD @@ -3,71 +3,85 @@ # Tested with Kernel 4.16, Dell D3000 SuperSpeed USB 3.0 Docking Station, 17e9:4318 DisplayLink -set -u pkgname='evdi-git' -pkgver=1.6.2.r2.g75536ec +pkgver=1.9.1.r48.gd6b2841 _pkgver="${pkgver%%.r*}" pkgrel=1 pkgdesc='kernel module that enables management of multiple screens, primarily for DisplayLink USB VGA DVI HDMI DisplayPort video' -pkgdesc+=' git version.' arch=('i686' 'x86_64') url='https://github.com/DisplayLink/evdi' license=('GPL') depends=('dkms') makedepends=('git' 'libdrm') +makedepends+=('linux-headers') provides=("evdi=${_pkgver}") conflicts=('evdi') -install=${pkgname}.install -changelog="${pkgname}.Changelog" _srcdir="${pkgname%-git}" source=( - 'git+https://github.com/DisplayLink/evdi/' - 'relro.patch' + 'git+https://github.com/DisplayLink/evdi' ) -md5sums=('SKIP' - '05e64dd295a66c030139d0c8f6f7013b') -sha256sums=('SKIP' - 'ff03b5a804af826e6b0678cd4d821b5ecd2c5bf04ea7c465751f83b28e928786') +source[0]+='#branch=devel' +md5sums=('SKIP') +sha256sums=('SKIP') pkgver() { - set -u cd "${_srcdir}" - git describe --long --tags | sed -e 's/^v//' -e 's/\([^-]*-g\)/r\1/' -e 's/-/./g' - set +u + local _modver _rev + #_modver="$(awk -F '=' '/MODVER=/ {print $2}' module/Makefile)" + _rev="$(git describe --long --tags | sed -e 's/^v//' -e 's/\([^-]*-g\)/r\1/' -e 's/-/./g')" + if [ -z "${_modver:-}" ]; then + printf '%s\n' "${_rev}" + else + printf '%s.r%s\n' "${_modver}" "${_rev##*.r}" + fi } prepare() { - set -u cd "${_srcdir}" local _src - for _src in "${source[@]}"; do - _src="${_src%%::*}" + for _src in "${source[@]%%::*}"; do _src="${_src##*/}" if [[ "${_src}" = *.patch ]]; then + msg2 "Patch ${_src}" patch -Np1 -i "../${_src}" fi done - set +u + + # Fix build for kernel 5.4 + #sed -E -e 's:SUBDIRS=([^ ]+) :M=\1 &:g' -i 'module/Makefile' + + sed -e 's:-Werror::g' -i 'Makefile' } build() { - set -u - # We only need to build the library in this step, dmks will build the module - #cd "${_srcdir}/library" - # DKMS builds are hard to debug. We build it here and throw it away. cd "${_srcdir}" + # DKMS builds are hard to debug. We can build it here to debug the errors. + if :; then + # We only need to build the library in this step, dmks will build the module + cd 'library' + fi + CFLAGS="${CFLAGS/-fno-plt/}" make - set +u } package() { - set -u cd "${_srcdir}" - install -Dpm755 "library/lib${pkgname%-git}.so" -t "${pkgdir}/usr/lib/" + install -Dpm755 "library/lib${pkgname%-git}.so"* -t "${pkgdir}/usr/lib/" + + pushd "${pkgdir}/usr/lib/" > /dev/null + local _libs=(*.so.*) + if [ "${#_libs[@]}" -ne 1 ]; then + echo "Too many libs" + false + fi + _libs="${_libs[0]}" + local _libase="${_libs%.so*}.so" + ln -sf "${_libs}" "${_libase}" + ln -sf "${_libs}" "${_libase}.0" # bad soname + popd > /dev/null local _DKMS="${pkgdir}/usr/src/${pkgname%-git}-${_pkgver}" install -Dpm644 module/* -t "${_DKMS}/" make -j1 -C "${_DKMS}" clean - set +u + rm -f "${_DKMS}/evdi.mod" } -set +u diff --git a/src/evdi-git/evdi-git.Changelog b/src/evdi-git/evdi-git.Changelog deleted file mode 100644 index 30bbda7..0000000 --- a/src/evdi-git/evdi-git.Changelog +++ /dev/null @@ -1,12 +0,0 @@ -v1.3.43 -Adding support for indicating an area limit a client that connects to EVDI has. - -v1.3.42 -Fixes for Kernels 4.9 and 4.10. -API change: Extension of evdi_connect function, allowing to register modes that the client supports, regardless of the fact they are not necessarily listed in the EDID of a monitor. - -v1.2.64 -Highlights: fixes for kernel 4.8. - -v1.2.55 -Module and library code to be included in DisplayLink USB Graphics Software for Ubuntu, version 1.2. diff --git a/src/evdi-git/evdi-git.install b/src/evdi-git/evdi-git.install deleted file mode 100644 index 088935d..0000000 --- a/src/evdi-git/evdi-git.install +++ /dev/null @@ -1,21 +0,0 @@ -# old version (without -$pkgrel): ${1%%-*} -# new version (without -$pkgrel): ${2%%-*} - -post_install() { - cat << EOF -Steps: - -0. Install this package - -1. Install display driver package - -2. Reboot or - -2a. sudo modprobe evdi -2b. dmesg -w # watch for evdi messages -2c. Replug USB display device - -3. Enable screen -EOF -} - diff --git a/src/evdi/.gitignore b/src/evdi/.gitignore index b20752a..a6b8c85 100644 --- a/src/evdi/.gitignore +++ b/src/evdi/.gitignore @@ -1,4 +1,5 @@ *.tar.gz *.tar.xz +*.tar.zst pkg/ src/ diff --git a/src/evdi/PKGBUILD b/src/evdi/PKGBUILD index 848e499..c889d74 100644 --- a/src/evdi/PKGBUILD +++ b/src/evdi/PKGBUILD @@ -1,15 +1,15 @@ -# Maintainer: mwawrzyniak +# Maintainer: mwawrzyniak # Contributor: PlusMinus pkgname=evdi -pkgver=1.6.2 +pkgver=1.9.1 pkgrel=1 pkgdesc="A Linux® kernel module that enables management of multiple screens." arch=('i686' 'x86_64') url="https://github.com/DisplayLink/evdi" license=('GPL') groups=() -depends=(dkms libdrm) +depends=(glibc dkms libdrm) makedepends=() optdepends=() provides=() @@ -19,11 +19,9 @@ backup=() options=() install=$pkgname.install changelog=$pkgname.Changelog -source=($pkgname-$pkgver-$pkgrel.tar.gz::https://github.com/DisplayLink/evdi/archive/v$pkgver.tar.gz - relro.patch) +source=($pkgname-$pkgver-$pkgrel.tar.gz::https://github.com/DisplayLink/evdi/archive/v$pkgver.tar.gz) noextract=() -md5sums=('11e968a27f2432d2c50738976b7f847f' - '05e64dd295a66c030139d0c8f6f7013b') +md5sums=('e56d5acf08d67706e297a9a8c09e0a20') prepare() { cd "$pkgname-$pkgver" diff --git a/src/evdi/evdi.Changelog b/src/evdi/evdi.Changelog index 101d853..e326515 100644 --- a/src/evdi/evdi.Changelog +++ b/src/evdi/evdi.Changelog @@ -1,3 +1,28 @@ +v1.9.1 +- Add support for 5.11 and 5.12 kernels + +v1.9.0 +- Fix evdi build on v5.10 kernel + +v1.7.2 +- Add support for kernel 5.9 and 5.10 + +v1.8.0 +- add i2c adapter when creating an EVDI node + +v1.7.0 +- support for kernels 5.3, 5.4, 5.5, 5.6 +- drop support for kernels pre-4.15 +- various crashes fixes +- per card hardware cursor option +- install/uninstall targets in Makefiles + +v1.6.4 +- Retry drop drm master when previous attempt failed + +v1.6.3 +- reset IOCTL on EAGAIN and EINTR + v1.6.2 - support for 5.2 kernel - Intel-IOMMU workaround