diff options
Diffstat (limited to 'pcitool.spec.in')
-rw-r--r-- | pcitool.spec.in | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/pcitool.spec.in b/pcitool.spec.in new file mode 100644 index 0000000..a8b1d9b --- /dev/null +++ b/pcitool.spec.in @@ -0,0 +1,204 @@ +%define modname pciDriver + +%{!?__python2: %global __python2 /usr/bin/python2} +%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} + +Summary: Universal PCI driver +Name: pcitool +Version: ${CPACK_PACKAGE_VERSION} +Release: csa +License: GPL-3.0 +Group: Development/Libraries +Source: ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.bz2 +BuildRoot: %{_tmppath}/%{name}-%{version}-root +URL: http://darksoft.org +Prefix: %{_prefix} +Docdir: %{_docdir} +BuildRequires: libfastwriter-devel libxml2-devel uthash +BuildRequires: python python-devel swig +BuildRequires: kernel-devel dkms +BuildRequires: doxygen +BuildRequires: pkg-config libtool cmake +Vendor: Institute for Data Processing and Electronics, KIT +Packager: Suren A. Chilingaryan <csa@suren.me> + +%description +pcitool is a command line tool to manipulate PCI hardware. It provides ability +to get/set registers, read/write data using DMA engine, and debug hardware +operation. + +%package -n libpcilib${PCILIB_ABI_VERSION} +Summary: User-space PCI library +Group: Development/Libraries +Requires: pcilib-python >= %{version} +Requires: pcilib-dkms >= %{version} + +%description -n libpcilib${PCILIB_ABI_VERSION} +pcilib is a user-space library providing structured access to the PCI hardware. +API exposes 4 API layers. + - PCI memory access - allows to map PCI bar memory into the address space of + user application and manipulate it directly. + - Register access - allows to read and write device registers. The register + model is defined using XML. Besides the direct hardware access, the register + values can be filtered using Python scripts. This allows to convert hardware + reading to standard units, make consistency checking, and create meta registers + setting multiple registers from a single parameter. + - DMA engine - allows high-speed reading and writting using DMA. The DMA + engines are implemented in user-space as plugins. + - Event engine - allows polling for hardware events and grabbing the data + associated with the event in multiple supported formats. The event engines + are implemented as plugins and are not part of this package. + +%package -n libpcilib-devel +Summary: Development files for pcilib +Group: Development/Libraries +Requires: libpcilib${PCILIB_ABI_VERSION} = %{version} + +%description -n libpcilib-devel +Development files for user-space PCI library + +%package -n pcilib-test +Summary: Testing files for pcilib +Group: Development/Libraries +Requires: libpcilib${PCILIB_ABI_VERSION} = %{version} + +%description -n pcilib-test +Sample XML register model and a few applications for testing pcilib + +%package -n pcilib-python +Summary: Python wrapper for pcilib +Group: Development/Libraries +Requires: libpcilib${PCILIB_ABI_VERSION} = %{version} + +%description -n pcilib-python +Python wrapper for pcilib. The python wrapper is used + - By register scripts which are used to convert hardware reading to standard + units, make consistency checking, and create meta registers setting multiple + registers from a single parameter. + - pcilib web api which used to provide register and dma access from remote + applications. + +%package -n pcilib-dkms +Summary: Kernel module providing low-level PCI access +Group: Development/Libraries +Requires: dkms bash gcc make + +%description -n pcilib-dkms +Minimalistic driver used by pcilib to + - Handle interrupts + - Map PCI regions into the user space + - Allocate persistent page-locked memory for DMA operations + and map it into the user-space + - Ensure access syncrhonization between multiple applications + +%package -n pcilib-server +Summary: Pcilib Web API +Group: Development/Libraries +Requires: pcilib-python = %{version} +Requires: python + +%description -n pcilib-server +Pcilib Web API and small demo web server. + +%prep +%setup -q -n pcitool-%{version} + +%build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \ + -DPCILIB_PLUGIN_DIR=%{_libdir}/pcilib${PCILIB_ABI_VERSION}/ -DPCILIB_DATA_DIR=%{_datadir}/pcilib${PCILIB_ABI_VERSION}/ \ + -DLIB_INSTALL_DIR=%{_libdir} -DBIN_INSTALL_DIR=%{_bindir} -DDATA_INSTALL_DIR=%{_datadir} -DINCLUDE_INSTALL_DIR=%{_includedir} -DPYTHON_INSTALL_DIR=%{python2_sitearch} . +make +make docs + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/%{_libdir}/pcilib${PCILIB_ABI_VERSION}/ + +# scripts +install -m 755 tests/reload.sh $RPM_BUILD_ROOT/%{_bindir}/pci-reload + +# udev +mkdir -p $RPM_BUILD_ROOT/usr/lib/udev/rules.d +install -m 644 misc/50-pcidriver.rules $RPM_BUILD_ROOT/%{_udevrulesdir} + +# DKMS +mkdir -p $RPM_BUILD_ROOT/%{_includedir}/linux/ +install -m 644 driver/ioctl.h $RPM_BUILD_ROOT/%{_includedir}/linux/pcidriver.h +mkdir -p $RPM_BUILD_ROOT/usr/src/%{modname}-%{version}/pcilib/ +install -m 644 misc/dkms.conf $RPM_BUILD_ROOT/%{_prefix}/src/%{modname}-%{version}/ +install -m 644 pcilib/*.h $RPM_BUILD_ROOT/%{_prefix}/src/%{modname}-%{version}/pcilib/ +cp -r driver $RPM_BUILD_ROOT/usr/src/%{modname}-%{version}/ + +# Sample model +cp -r xml/test $RPM_BUILD_ROOT/%{_datadir}/pcilib${PCILIB_ABI_VERSION}/models/ + +# Servers +cp -r pyserver $RPM_BUILD_ROOT/%{_datadir}/pcilib${PCILIB_ABI_VERSION}/ + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -n libpcilib${PCILIB_ABI_VERSION} -p /sbin/ldconfig + +%postun -n libpcilib${PCILIB_ABI_VERSION} -p /sbin/ldconfig + +%post -n pcilib-dkms +if [ -z "`dkms status -m %{modname} -v %{version}`" ]; then + echo "Add module source to dkms" + dkms add -m %{modname} -v %{version} --rpm_safe_upgrade + + echo "Build module with dkms" + dkms build -m %{modname} -v %{version} + dkms install -m %{modname} -v %{version} +fi +exit 0 + +%preun -n pcilib-dkms +/usr/sbin/dkms remove -m %{modname} -v %{version} --all --rpm_safe_upgrade +exit 0 + +%files +%defattr(-, root, root) +%{_bindir}/pci +%{_bindir}/pci-reload + +%files -n libpcilib${PCILIB_ABI_VERSION} +%defattr(-, root, root) +%doc docs/README +%doc docs/HARDWARE +%dir %{_libdir}/pcilib${PCILIB_ABI_VERSION}/ +%dir %{_datadir}/pcilib${PCILIB_ABI_VERSION}/models/ +%{_datadir}/pcilib${PCILIB_ABI_VERSION}/models/*.xsd +%{_libdir}/libpcilib.so.* + +%files -n libpcilib-devel +%defattr(-, root, root) +%doc docs/html +%{_includedir}/linux/pcidriver.h +%{_includedir}/pcilib.h +%{_includedir}/pcilib/ +%{_libdir}/lib*.so +%{_libdir}/pkgconfig/*.pc + +%files -n pcilib-test +%defattr(-, root, root) +%{_datadir}/pcilib${PCILIB_ABI_VERSION}/models/test + +%files -n pcilib-dkms +%defattr(-, root, root) +%{_udevrulesdir} +%{_prefix}/src/%{modname}-%{version}/ + +%files -n pcilib-python +%defattr(-, root, root) +%{python2_sitearch}/* + +%files -n pcilib-server +%defattr(-, root, root) +%{_datadir}/pcilib${PCILIB_ABI_VERSION}/pyserver + +%changelog +* Fri Mar 4 2016 Suren A. Chilingaryan <csa@suren.me> - ${CPACK_PACKAGE_VERSION} +- Added spec file to the sources |