diff --git a/opensm-3.3.20.tar.gz b/opensm-3.3.20.tar.gz new file mode 100644 index 0000000..c866755 Binary files /dev/null and b/opensm-3.3.20.tar.gz differ diff --git a/opensm.launch b/opensm.launch new file mode 100644 index 0000000..ba21a71 --- /dev/null +++ b/opensm.launch @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Launch the necessary OpenSM daemons for systemd +# +# sysconfig: /etc/sysconfig/opensm +# config: /etc/rdma/opensm.conf +# + +shopt -s nullglob + +prog=/usr/sbin/opensm +[ -f /etc/sysconfig/opensm ] && . /etc/sysconfig/opensm + +[ -n "$PRIORITY" ] && prio="-p $PRIORITY" + +if [ -z "$GUIDS" ]; then + CONFIGS="" + CONFIG_CNT=0 + for conf in /etc/rdma/opensm.conf.[0-9]*; do + CONFIGS="$CONFIGS $conf" + let CONFIG_CNT++ + done +else + GUID_CNT=0 + for guid in $GUIDS; do + let GUID_CNT++ + done +fi +# Start opensm +if [ -n "$GUIDS" ]; then + SUBNET_COUNT=0 + for guid in $GUIDS; do + SUBNET_PREFIX=`printf "0xfe800000000000%02d" $SUBNET_COUNT` + (while true; do $prog $prio -g $guid --subnet_prefix $SUBNET_PREFIX; sleep 30; done) & + let SUBNET_COUNT++ + done +elif [ -n "$CONFIGS" ]; then + for config in $CONFIGS; do + (while true; do $prog $prio -F $config; sleep 30; done) & + done +else + (while true; do $prog $prio; sleep 30; done) & +fi +exit 0 diff --git a/opensm.logrotate b/opensm.logrotate new file mode 100644 index 0000000..e16e227 --- /dev/null +++ b/opensm.logrotate @@ -0,0 +1,7 @@ +/var/log/opensm.log { + missingok + notifempty + copytruncate + weekly + compress +} diff --git a/opensm.rwtab b/opensm.rwtab new file mode 100644 index 0000000..c298bac --- /dev/null +++ b/opensm.rwtab @@ -0,0 +1 @@ +empty /var/cache/opensm diff --git a/opensm.service b/opensm.service new file mode 100644 index 0000000..b085a95 --- /dev/null +++ b/opensm.service @@ -0,0 +1,13 @@ +[Unit] +Description=Starts the OpenSM InfiniBand fabric Subnet Manager +Documentation=man:opensm +DefaultDependencies=false +Before=network.target remote-fs-pre.target +After=rdma.service + +[Service] +Type=forking +ExecStart=/usr/libexec/opensm-launch + +[Install] +WantedBy=network.target diff --git a/opensm.spec b/opensm.spec new file mode 100644 index 0000000..b2f566e --- /dev/null +++ b/opensm.spec @@ -0,0 +1,114 @@ +Name: opensm +Version: 3.3.20 +Release: 11 +Summary: InfiniBand Subnet Manager and Administrator +License: GPLv2 or BSD +URL: https://www.openfabrics.org/ + +Source0: https://www.openfabrics.org/downloads/management/%{name}-%{version}.tar.gz +Source1: opensm.logrotate +Source2: opensm.service +Source3: opensm.launch +Source4: opensm.rwtab +BuildRequires: byacc flex libibumad-devel + +Requires: logrotate rdma +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +ExcludeArch: %{arm} + +Provides: opensm-libs = %{version}-%{release} +Provides: opensm-libs%{?_isa} = %{version}-%{release} +Obsoletes: opensm-libs < %{version}-%{release} + +%description +OpenSM provides an implementation for an InfiniBand Subnet Manager and +Administrator. Such a software entity is required to run for in order +to initialize the InfiniBand hardware (at least one per each +InfiniBand subnet). + +The full list of OpenSM features is described in the user manual +provided in the doc sub directory. + +%package devel +Summary: Development files for opensm +Requires: %{name} = %{version}-%{release} +Provides: opensm-static = %{version}-%{release} +Provides: opensm-static%{?_isa} = %{version}-%{release} +Obsoletes: opensm-static < %{version}-%{release} + +%description devel +This package contains libraries for developing applications that use +opensm and static version of opensm libraries + +%package_help + +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +%configure --with-opensm-conf-sub-dir=rdma \ + CFLAGS="$CFLAGS -fno-strict-aliasing" + +make %{?_smp_mflags} + +cd opensm +./opensm -c ../opensm-%{version}.conf + +%install +%make_install + +%delete_la + +rm -fr %{buildroot}%{_sysconfdir}/init.d +install -D -m644 opensm-%{version}.conf %{buildroot}%{_sysconfdir}/rdma/opensm.conf +install -D -m644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/opensm +install -D -m644 %{SOURCE2} %{buildroot}%{_unitdir}/opensm.service +install -D -m755 %{SOURCE3} %{buildroot}%{_libexecdir}/opensm-launch +install -D -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/rwtab.d/opensm +mkdir -p ${RPM_BUILD_ROOT}/var/cache/opensm + +%preun +%systemd_preun opensm.service + +%post +%systemd_post opensm.service + +/sbin/ldconfig + +%postun +rm -rf /var/cache/opensm + +%systemd_postun_with_restart opensm.service + +/sbin/ldconfig + +%files +%defattr(-,root,root) +%doc COPYING AUTHORS +%dir /var/cache/opensm +%config(noreplace) %{_sysconfdir}/logrotate.d/opensm +%config(noreplace) %{_sysconfdir}/rdma/opensm.conf +%{_sysconfdir}/rwtab.d/opensm +%{_unitdir}/* +%{_libdir}/*.so.* +%{_libexecdir}/opensm-launch +%{_sbindir}/opensm +%{_sbindir}/osmtest + +%files devel +%defattr(-,root,root) +%{_libdir}/lib*.so +%{_includedir}/infiniband +%{_libdir}/lib*.a + +%files help +%defattr(-,root,root) +%doc ChangeLog INSTALL README NEWS +%{_mandir}/man5/*5* +%{_mandir}/man8/*8* + +%changelog +* Mon Nov 18 2019 openEuler Buildteam - 3.3.20-10 +- Package init