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 6.0.0-24

Name:           displaylink-driver
Release:        0
Version:        6.0.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_Ubuntu6.0-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
Suggests:       logrotate

%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-%{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
openSUSE Build Service is sponsored by