%define base_name device-scanner %define prefix_name iml-%{base_name} %define proxy_base_name scanner-proxy %define proxy_prefix_name iml-%{proxy_base_name} Name: %{prefix_name} Version: 2.1.0 Release: 2%{?dist} Summary: Maintains data of block and ZFS devices License: MIT Group: System Environment/Libraries URL: https://github.com/intel-hpdd/%{base_name} # Forcing local source because rpkg in copr does not seem to have a way # to build source in the same way a package manager would. Source0: %{prefix_name}-%{version}.tgz ExclusiveArch: %{nodejs_arches} BuildRequires: nodejs-packaging BuildRequires: nodejs BuildRequires: npm BuildRequires: mono-devel BuildRequires: %{?scl_prefix}rh-dotnet20 BuildRequires: systemd Requires: nodejs Requires: iml-node-libzfs Requires: socat %description device-scanner-daemon builds an in-memory representation of devices using udev and zed. %package proxy Summary: Forwards device-scanner updates to device-aggregator License: MIT Group: System Environment/Libraries Requires: %{prefix_name} = %{version}-%{release} %description proxy scanner-proxy-daemon forwards device-scanner updates received on local socket to the device aggregator over HTTPS. %prep %setup %build mozroots --import --sync scl enable rh-dotnet20 - << EOF set -e export DOTNET_CLI_TELEMETRY_OPTOUT=1 npm i --ignore-scripts npm run restore dotnet fable npm-build EOF %install mkdir -p %{buildroot}%{_unitdir} cp dist/device-scanner-daemon/%{base_name}.socket %{buildroot}%{_unitdir} cp dist/device-scanner-daemon/%{base_name}.service %{buildroot}%{_unitdir} cp dist/scanner-proxy-daemon/%{proxy_base_name}.service %{buildroot}%{_unitdir} cp dist/scanner-proxy-daemon/%{proxy_base_name}.path %{buildroot}%{_unitdir} mkdir -p %{buildroot}%{_libdir}/%{prefix_name}-daemon cp dist/device-scanner-daemon/device-scanner-daemon %{buildroot}%{_libdir}/%{prefix_name}-daemon mkdir -p %{buildroot}%{_libdir}/%{proxy_prefix_name}-daemon cp dist/scanner-proxy-daemon/scanner-proxy-daemon %{buildroot}%{_libdir}/%{proxy_prefix_name}-daemon mkdir -p %{buildroot}/lib/udev cp dist/listeners/udev-listener %{buildroot}/lib/udev/udev-listener mkdir -p %{buildroot}%{_sysconfdir}/udev/rules.d cp dist/listeners/99-iml-device-scanner.rules %{buildroot}%{_sysconfdir}/udev/rules.d mkdir -p %{buildroot}%{_libexecdir}/zfs/zed.d/ cp dist/listeners/history_event-scanner.sh %{buildroot}%{_libexecdir}/zfs/zed.d/history_event-scanner.sh cp dist/listeners/pool_create-scanner.sh %{buildroot}%{_libexecdir}/zfs/zed.d/pool_create-scanner.sh cp dist/listeners/pool_destroy-scanner.sh %{buildroot}%{_libexecdir}/zfs/zed.d/pool_destroy-scanner.sh cp dist/listeners/pool_export-scanner.sh %{buildroot}%{_libexecdir}/zfs/zed.d/pool_export-scanner.sh cp dist/listeners/pool_import-scanner.sh %{buildroot}%{_libexecdir}/zfs/zed.d/pool_import-scanner.sh cp dist/listeners/vdev_add-scanner.sh %{buildroot}%{_libexecdir}/zfs/zed.d/vdev_add-scanner.sh mkdir -p %{buildroot}%{_sysconfdir}/zfs/zed.d/ ln -sf %{_libexecdir}/zfs/zed.d/history_event-scanner.sh %{buildroot}%{_sysconfdir}/zfs/zed.d/history_event-scanner.sh ln -sf %{_libexecdir}/zfs/zed.d/pool_create-scanner.sh %{buildroot}%{_sysconfdir}/zfs/zed.d/pool_create-scanner.sh ln -sf %{_libexecdir}/zfs/zed.d/pool_destroy-scanner.sh %{buildroot}%{_sysconfdir}/zfs/zed.d/pool_destroy-scanner.sh ln -sf %{_libexecdir}/zfs/zed.d/pool_export-scanner.sh %{buildroot}%{_sysconfdir}/zfs/zed.d/pool_export-scanner.sh ln -sf %{_libexecdir}/zfs/zed.d/pool_import-scanner.sh %{buildroot}%{_sysconfdir}/zfs/zed.d/pool_import-scanner.sh ln -sf %{_libexecdir}/zfs/zed.d/vdev_add-scanner.sh %{buildroot}%{_sysconfdir}/zfs/zed.d/vdev_add-scanner.sh %clean rm -rf %{buildroot} %files %dir %{_libdir}/%{prefix_name}-daemon %attr(0755,root,root)%{_libdir}/%{prefix_name}-daemon/device-scanner-daemon %attr(0644,root,root)%{_unitdir}/%{base_name}.service %attr(0644,root,root)%{_unitdir}/%{base_name}.socket %attr(0755,root,root)/lib/udev/udev-listener %attr(0644,root,root)%{_sysconfdir}/udev/rules.d/99-iml-device-scanner.rules %attr(0755,root,root)%{_libexecdir}/zfs/zed.d/history_event-scanner.sh %attr(0755,root,root)%{_libexecdir}/zfs/zed.d/pool_create-scanner.sh %attr(0755,root,root)%{_libexecdir}/zfs/zed.d/pool_destroy-scanner.sh %attr(0755,root,root)%{_libexecdir}/zfs/zed.d/pool_export-scanner.sh %attr(0755,root,root)%{_libexecdir}/zfs/zed.d/pool_import-scanner.sh %attr(0755,root,root)%{_libexecdir}/zfs/zed.d/vdev_add-scanner.sh %{_sysconfdir}/zfs/zed.d/*.sh %files proxy %dir %{_libdir}/%{proxy_prefix_name}-daemon %attr(0755,root,root)%{_libdir}/%{proxy_prefix_name}-daemon/scanner-proxy-daemon %attr(0644,root,root)%{_unitdir}/%{proxy_base_name}.service %attr(0644,root,root)%{_unitdir}/%{proxy_base_name}.path %triggerin -- zfs >= 0.7.5 echo '{"ZedCommand":"Init"}' | socat - UNIX-CONNECT:/var/run/device-scanner.sock %post if [ $1 -eq 1 ]; then systemctl enable %{base_name}.socket systemctl start %{base_name}.socket udevadm trigger --action=change --subsystem-match=block elif [ $1 -eq 2 ]; then systemctl daemon-reload systemctl stop %{base_name}.socket systemctl stop %{base_name}.service systemctl start %{base_name}.socket udevadm trigger --action=change --subsystem-match=block fi %post proxy if [ $1 -eq 1 ]; then systemctl enable %{proxy_base_name}.path systemctl start %{proxy_base_name}.path elif [ $1 -eq 2 ]; then systemctl daemon-reload systemctl stop %{proxy_base_name}.service if [ -f "/var/lib/chroma/settings" ]; then touch /var/lib/chroma/settings fi fi %preun if [ $1 -eq 0 ]; then systemctl stop %{base_name}.socket systemctl disable %{base_name}.socket systemctl stop %{base_name}.service systemctl disable %{base_name}.service rm /var/run/%{base_name}.sock fi %preun proxy if [ $1 -eq 0 ]; then systemctl stop %{proxy_base_name}.path systemctl disable %{proxy_base_name}.path systemctl stop %{proxy_base_name}.service systemctl disable %{proxy_base_name}.service fi %changelog * Mon Feb 26 2018 Tom Nabarro - 2.1.0-2 - Make scanner-proxy a sub-package (separate rpm) - Handle upgrade scenarios * Thu Feb 15 2018 Tom Nabarro - 2.1.0-1 - Minor change, integrate scanner-proxy project * Mon Jan 22 2018 Joe Grund - 2.0.0-1 - Breaking change, the API has changed output format * Wed Sep 27 2017 Joe Grund - 1.1.1-1 - Fix bug where devices weren't removed. - Cast empty IML_SIZE string to None. * Thu Sep 21 2017 Joe Grund - 1.1.0-1 - Exclude unneeded devices. - Get device ro status. - Remove manual udev parsing. - Remove socat as dep, device-scanner will listen to change events directly. * Mon Sep 18 2017 Joe Grund - 1.0.2-1 - Fix missing keys to be option types. - Add rules for scsi ids - Add keys on change|add so we can `udevadm trigger` after install - Trigger udevadm change event after install - Read new state into scanner after install * Tue Aug 29 2017 Joe Grund - 1.0.1-1 - initial package