diff --git a/scst.spec.in b/scst.spec.in index cec6fdbc1..538974ccd 100644 --- a/scst.spec.in +++ b/scst.spec.in @@ -47,6 +47,7 @@ # Make command with or without flags. %define make %{expand:%%(echo ${MAKE:-make})} %define pkgrel 1 +%define dkms_version %{rpm_version}-%{pkgrel}%{?dist} Name: %{kmod_name} Version: %{rpm_version} @@ -80,6 +81,22 @@ Authors: -------- Vladislav Bolkhovitin, Bart Van Assche and others +%package userspace +Summary: SCST mid-layer user space software +Group: Development/Kernel +Requires: scst-dkms + +%description userspace +A generic SCSI target subsystem for Linux that allows to convert any Linux +server into a sophisticated storage server. The three layers in SCST are the +target driver layer; the SCSI target core and the device handler layer. SCST +target drivers realize communication with an initiator and implement a storage +protocol like iSCSI, FC or SRP. SCST device handlers implement a SCSI +interface on top of local storage. Examples of such local storage are SCSI +RAID controller (dev_disk handler), block device (vdisk_blockio handler), file +(vdisk_fileio handler) or custom block device behavior implemented in user +space (scst_user). + %package devel Summary: SCST mid-layer kernel driver development package Group: Development/Kernel @@ -93,6 +110,25 @@ provide access to a local SCSI RAID controller (dev_disk), block device (vdisk_blockio), file (vdisk_fileio) or custom block device behavior implemented in user space (scst_user). +Authors: +-------- + Vladislav Bolkhovitin, Bart Van Assche and others + +%package dkms +Summary: DKMS-enabled SCST source code package +Group: System/Kernel +BuildArch: noarch +Requires(pre): dkms gcc make +Requires(post): dkms + +%description dkms +A generic SCSI target subsystem for Linux (SCST) that allows to convert +any Linux server into a sophisticated storage server. SCST target drivers +implement protocols like iSCSI, FC or SRP. SCST device handlers either +provide access to a local SCSI RAID controller (dev_disk), block device +(vdisk_blockio), file (vdisk_fileio) or custom block device behavior +implemented in user space (scst_user). + Authors: -------- Vladislav Bolkhovitin, Bart Van Assche and others @@ -119,6 +155,53 @@ for d in fcst iscsi-scst qla2x00t/qla2x00-target scst_local srpt; do done rm -f %{buildroot}/lib/modules/%{kversion}/[Mm]odule* +install -d -m 755 %{buildroot}/usr/src/%{kmod_name}-%{dkms_version} +( + cd %{buildroot}/usr/src/%{kmod_name}-%{dkms_version} && + tar --strip-components=1 -xaf %{SOURCE0} +) +cat >%{buildroot}/usr/src/%{kmod_name}-%{dkms_version}/dkms.conf <<"EOF" +PACKAGE_VERSION="%{dkms_version}" +PACKAGE_NAME="%{kmod_name}" +AUTOINSTALL=yes +MAKE[0]="export KVER=${kernelver} KDIR=${kernel_source_dir} BUILD_2X_MODULE=y CONFIG_SCSI_QLA_FC=y CONFIG_SCSI_QLA2XXX_TARGET=y && make -sC scst && make -sC fcst && make -sC iscsi-scst && make -sC qla2x00t/qla2x00-target && make -sC scst_local && make -sC srpt && cp */*.ko */*/*.ko */*/*/*.ko ." +CLEAN="make clean" +# Remove any existing ib_srpt.ko kernel modules +PRE_INSTALL="find /lib/modules/${kernelver} -name ib_srpt.ko -exec rm {} \;" +BUILT_MODULE_NAME[ 0]="fcst" +BUILT_MODULE_NAME[ 1]="ib_srpt" +BUILT_MODULE_NAME[ 2]="iscsi-scst" +BUILT_MODULE_NAME[ 3]="qla2x00tgt" +BUILT_MODULE_NAME[ 4]="qla2xxx_scst" +BUILT_MODULE_NAME[ 5]="scst" +BUILT_MODULE_NAME[ 6]="scst_local" +BUILT_MODULE_NAME[ 7]="scst_cdrom" +BUILT_MODULE_NAME[ 8]="scst_changer" +BUILT_MODULE_NAME[ 9]="scst_disk" +BUILT_MODULE_NAME[10]="scst_modisk" +BUILT_MODULE_NAME[11]="scst_processor" +BUILT_MODULE_NAME[12]="scst_raid" +BUILT_MODULE_NAME[13]="scst_tape" +BUILT_MODULE_NAME[14]="scst_user" +BUILT_MODULE_NAME[15]="scst_vdisk" +DEST_MODULE_LOCATION[ 0]="/extra" +DEST_MODULE_LOCATION[ 1]="/extra" +DEST_MODULE_LOCATION[ 2]="/extra" +DEST_MODULE_LOCATION[ 3]="/extra" +DEST_MODULE_LOCATION[ 4]="/extra" +DEST_MODULE_LOCATION[ 5]="/extra" +DEST_MODULE_LOCATION[ 6]="/extra" +DEST_MODULE_LOCATION[ 7]="/extra/dev_handlers" +DEST_MODULE_LOCATION[ 8]="/extra/dev_handlers" +DEST_MODULE_LOCATION[ 9]="/extra/dev_handlers" +DEST_MODULE_LOCATION[10]="/extra/dev_handlers" +DEST_MODULE_LOCATION[11]="/extra/dev_handlers" +DEST_MODULE_LOCATION[12]="/extra/dev_handlers" +DEST_MODULE_LOCATION[13]="/extra/dev_handlers" +DEST_MODULE_LOCATION[14]="/extra/dev_handlers" +DEST_MODULE_LOCATION[15]="/extra/dev_handlers" +EOF + %clean rm -rf %{buildroot} @@ -133,9 +216,27 @@ rm -f /usr/local/sbin/iscsi-scst-adm rm -f /usr/local/sbin/iscsi-scstd rm -rf /usr/local/include/scst +%pre userspace +# Remove files installed by "make install" +rm -f /usr/local/man/man5/iscsi-scstd.conf.5 +rm -f /usr/local/man/man8/iscsi-scst-adm.8 +rm -f /usr/local/man/man8/iscsi-scstd.8 +rm -f /usr/local/sbin/iscsi-scst-adm +rm -f /usr/local/sbin/iscsi-scstd +rm -rf /usr/local/include/scst + %post /sbin/depmod -a %{kversion} +%post dkms +dkms add -m %{kmod_name} -v %{dkms_version} --rpm_safe_upgrade +dkms build -m %{kmod_name} -v %{dkms_version} +dkms install -m %{kmod_name} -v %{dkms_version} + +%preun dkms +dkms remove -m %{kmod_name} -v %{dkms_version} --rpm_safe_upgrade --all +true + %files %defattr(-,root,root) %dir /lib/modules/%{kversion}/extra @@ -164,6 +265,15 @@ rm -rf /usr/local/include/scst %dir /var/lib/scst/pr %dir /var/lib/scst/vdev_mode_pages +%files userspace +%{_mandir}/man5/iscsi-scstd.conf.5.gz +%{_mandir}/man8/iscsi-scst-adm.8.gz +%{_mandir}/man8/iscsi-scstd.8.gz +%{_sbindir}/iscsi-scst-adm +%{_sbindir}/iscsi-scstd +%dir /var/lib/scst/pr +%dir /var/lib/scst/vdev_mode_pages + %files devel %defattr(-,root,root) %dir /usr/include/scst @@ -175,6 +285,12 @@ rm -rf /usr/local/include/scst /usr/include/scst/scst_sgv.h /usr/include/scst/scst_user.h +%files dkms +%defattr(-,root,root) +/usr/src/%{kmod_name}-%{dkms_version}/ + %changelog +* Fri Jan 16 2015 Bart Van Assche +- Added DKMS support. * Fri Nov 22 2013 Bart Van Assche - Initial spec file.