summaryrefslogtreecommitdiffstats
path: root/pcitool.spec.in
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2016-03-04 16:43:14 +0100
committerSuren A. Chilingaryan <csa@suren.me>2016-03-04 16:43:14 +0100
commit4c17aa5a10ffc232e7e4de45d8ab0b52cfc3010b (patch)
treedce4520f69b3124da7afa76c2bbe5fc1f08313f7 /pcitool.spec.in
parent195c28f3074486165b6e0935362810f8a1fb9531 (diff)
downloadpcitool-4c17aa5a10ffc232e7e4de45d8ab0b52cfc3010b.tar.gz
pcitool-4c17aa5a10ffc232e7e4de45d8ab0b52cfc3010b.tar.bz2
pcitool-4c17aa5a10ffc232e7e4de45d8ab0b52cfc3010b.tar.xz
pcitool-4c17aa5a10ffc232e7e4de45d8ab0b52cfc3010b.zip
RPM generation
Diffstat (limited to 'pcitool.spec.in')
-rw-r--r--pcitool.spec.in204
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