File displaylink-driver.spec of Package displaylink-driver
#
# spec file for package displaylink-driver
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define _dllibexecdirorig /usr/libexec/displaylink
%define _dllibexecdir %{_libexecdir}/displaylink
%define _dllibdir %{_libdir}/displaylink
%define _name displaylink
%define _daemon_version 5.8.0-63.33
Name: displaylink-driver
Release: 0
Version: 5.8.0
Summary: DisplayLink VGA/HDMI driver for DL-6xxx, DL-5xxx, DL-41xx and DL-3xxx adapters
License: MIT and NonFree
Group: System/Kernel
URL: https://github.com/displaylink-rpm/displaylink-rpm
Source0: DisplayLink_USB_Graphics_Software_for_Ubuntu5.8-EXE.zip
Source1: displaylink-driver.service
Source2: 99-displaylink.rules
Source3: 20-displaylink.conf
Source4: 95-displaylink.preset
Source5: displaylink.logrotate
Source6: evdi.conf
Source7: displaylink-sleep-extractor.sh
Source8: displaylink-udev-extractor.sh
Source9: displaylink-driver-rpmlintrc
BuildRequires: chrpath
BuildRequires: systemd-rpm-macros
BuildRequires: udev
BuildRequires: unzip
Requires: libevdi1
%description
This adds support for HDMI/VGA adapters built upon the DisplayLink DL-6xxx,
DL-5xxx, DL-41xx and DL-3xxx series of chipsets. This includes numerous
docking stations, USB monitors, and USB adapters.
%prep
unzip "%{SOURCE0}"
chmod +x displaylink-driver-%{_daemon_version}.run
./displaylink-driver-%{_daemon_version}.run --noexec --keep
%build
%install
mkdir -p %{buildroot}%{_dllibexecdir}/ \
%{buildroot}%{_unitdir}/ \
%{buildroot}%{_prefix}/lib/systemd/system-preset \
%{buildroot}%{_prefix}/lib/systemd/system-sleep \
%{buildroot}%{_sysconfdir}/logrotate.d/ \
%{buildroot}%{_sysconfdir}/modprobe.d/ \
%{buildroot}%{_prefix}/lib/udev/rules.d/ \
%{buildroot}%{_sysconfdir}/X11/xorg.conf.d/ \
%{buildroot}%{_localstatedir}/log/%{_name}/ \
%{buildroot}%{_sbindir}
ln -s service %{buildroot}%{_sbindir}/rcdisplaylink-driver
pushd displaylink-driver-%{_daemon_version}
sed -i 's/\r//' LICENSE
chmod -x LICENSE
cp -a LICENSE ../
%ifarch x86_64
cp -a x64-ubuntu-1604/DisplayLinkManager %{buildroot}%{_dllibexecdir}/
%endif
%ifarch %ix86
cp -a x86-ubuntu-1604/DisplayLinkManager %{buildroot}%{_dllibexecdir}/
%endif
chrpath -r %{_dllibdir} %{buildroot}%{_dllibexecdir}/DisplayLinkManager
# Firmwares
cp -a ella-dock-release.spkg firefly-monitor-release.spkg navarro-dock-release.spkg ridge-dock-release.spkg %{buildroot}%{_dllibexecdir}/
# systemd/udev
sed -i "s_%{_dllibexecdirorig}_%{_dllibexecdir}_" %{SOURCE1}
sed -i "s_%{_dllibexecdirorig}_%{_dllibexecdir}_" %{SOURCE2}
cp -a %{SOURCE1} %{buildroot}%{_unitdir}/
cp -a %{SOURCE2} %{buildroot}%{_prefix}/lib/udev/rules.d/
cp -a %{SOURCE3} %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/
cp -a %{SOURCE4} %{buildroot}%{_presetdir}/
cp -a %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
# evdi module options
cp -a %{SOURCE6} %{buildroot}%{_sysconfdir}/modprobe.d/
# pm-util
bash %{SOURCE7} service-installer.sh > %{buildroot}%{_prefix}/lib/systemd/system-sleep/%{_name}.sh
chmod +x %{buildroot}%{_prefix}/lib/systemd/system-sleep/%{_name}.sh
# udev trigger scripts
bash %{SOURCE8} udev-installer.sh > %{buildroot}%{_dllibexecdir}/udev.sh
chmod +x %{buildroot}%{_dllibexecdir}/udev.sh
%pre
%service_add_pre displaylink-driver.service
%post
%service_add_post displaylink-driver.service
%preun
%service_del_preun displaylink-driver.service
%postun
%service_del_postun_without_restart displaylink-driver.service
%posttrans
# Trigger udev if devices are connected
%{_bindir}/grep -lw 17e9 /sys/bus/usb/devices/*/idVendor | while IFS= read -r device; do
%{_bindir}/udevadm trigger --action=add "$(dirname "$device")"
done
%files
%license LICENSE
%ghost %{_sysconfdir}/X11/xorg.conf.d
%config %{_sysconfdir}/X11/xorg.conf.d/20-displaylink.conf
%config %{_sysconfdir}/logrotate.d/%{name}
%config %{_sysconfdir}/modprobe.d/evdi.conf
%{_unitdir}/displaylink-driver.service
%{_prefix}/lib/udev/rules.d/99-displaylink.rules
%{_prefix}/lib/systemd/system-preset/95-displaylink.preset
%{_prefix}/lib/systemd/system-sleep/%{_name}.sh
%dir %{_dllibexecdir}/
%{_dllibexecdir}/DisplayLinkManager
%{_dllibexecdir}/ella-dock-release.spkg
%{_dllibexecdir}/firefly-monitor-release.spkg
%{_dllibexecdir}/navarro-dock-release.spkg
%{_dllibexecdir}/ridge-dock-release.spkg
%{_dllibexecdir}/udev.sh
%{_sbindir}/rcdisplaylink-driver
%dir %{_localstatedir}/log/%{_name}/
%changelog