96e6f0fd66af6521ade1afc2b6828b48e98e4515
[vpp.git] / build-root / rpm / vpp.spec
1 %define _vpp_install_dir ../%{_install_dir}
2 %define _vpp_build_dir   ../build-tool-native
3 %define _unitdir         /lib/systemd/system
4 %define _topdir          %(pwd)
5 %define _builddir        %{_topdir}
6 %define _version         %(../scripts/version rpm-version)
7 %define _release         %(../scripts/version rpm-release)
8
9 Name: vpp
10 Summary: Vector Packet Processing
11 License: MIT
12 Version: %{_version}
13 Release: %{_release}
14 Requires: vpp-lib = %{_version}-%{_release}, net-tools, pciutils
15
16 %description
17 This package provides VPP executables: vpp, vpp_api_test, vpp_json_test
18 vpp - the vector packet engine
19 vpp_api_test - vector packet engine API test tool
20 vpp_json_test - vector packet engine JSON test tool
21
22 %package lib
23 Summary: VPP libraries
24 Group: System Environment/Libraries
25
26 %description lib
27 This package contains the VPP shared libraries, including:
28 vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting.
29 dpdk - Intel DPDK library
30 svm - vm library
31 vlib - vector processing library
32 vlib-api - binary API library
33 vnet -  network stack library
34
35 %package devel
36 Summary: VPP header files, static libraries
37 Group: Development/Libraries
38 Requires: vpp-lib
39
40 %description devel
41 This package contains the header files and static libraries for
42 vppinfra.  Install this package if you want to write or compile a
43 program that needs vpp.
44 Do we need to list those header files or just leave it blank ? 
45 dynamic vectors (vec.c), dynamic bitmaps (bitmap.h), allocation heap of
46 objects (heap.c), allocation pool(pool.h), dynamic hash tables (hash.c), memory
47 allocator (mheap.c), extendable printf-like interface built on top of vectors
48 (format.c), formats for data structures (std-formats.c), and support for clock
49 time-based function calls (timer.c).
50 TODO: reference and describe only the .h files
51
52 %package plugins
53 Summary: Vector Packet Processing--runtime plugins
54 Group: System Environment/Libraries
55 Requires: vpp = %{_version}-%{_release}
56 %description plugins
57 This package contains VPP plugins
58
59 %pre
60 # Add the vpp group
61 groupadd -f -r vpp
62
63 %install
64 #
65 # binaries
66 #
67 mkdir -p -m755 %{buildroot}%{_bindir}
68 mkdir -p -m755 %{buildroot}%{_unitdir}
69 install -p -m 755 %{_vpp_install_dir}/*/bin/* %{buildroot}%{_bindir}
70 install -p -m 755 %{_vpp_build_dir}/vppapigen/vppapigen %{buildroot}%{_bindir}
71 #
72 # configs
73 #
74 mkdir -p -m755 %{buildroot}/etc/vpp
75 mkdir -p -m755 %{buildroot}/etc/sysctl.d
76 install -p -m 644 vpp.service %{buildroot}%{_unitdir}
77 install -p -m 644 ../../vpp/conf/startup.uiopcigeneric.conf %{buildroot}/etc/vpp/startup.conf
78 install -p -m 644 ../../vpp/conf/80-vpp.conf %{buildroot}/etc/sysctl.d
79 #
80 # libraries
81 #
82 mkdir -p -m755 %{buildroot}%{_libdir}
83 for file in $(find %{_vpp_install_dir}/*/lib* -type f -name '*.so.*.*.*' -print )
84 do
85         install -p -m 755 $file %{buildroot}%{_libdir}
86 done
87 for file in $(cd %{buildroot}%{_libdir} && find . -type f -print | sed -e 's/^\.\///')
88 do
89         # make lib symlinks
90         ( cd %{buildroot}%{_libdir} && 
91           ln -fs $file $(echo $file | sed -e 's/\(\.so\.[0-9]\+\).*/\1/') )
92         ( cd %{buildroot}%{_libdir} && 
93           ln -fs $file $(echo $file | sed -e 's/\(\.so\)\.[0-9]\+.*/\1/') )
94 done
95
96 #
97 # devel
98 #
99 for dir in $(find %{_vpp_install_dir}/*/include/ -maxdepth 0 -type d -print | grep -v dpdk)
100 do
101         for subdir in $(cd ${dir} && find . -type d -print)
102         do
103                 mkdir -p -m755 %{buildroot}/usr/include/${subdir}
104         done
105         for file in $(cd ${dir} && find . -type f -print)
106         do
107                 install -p -m 644 $dir/$file %{buildroot}%{_includedir}/$file
108         done
109 done
110
111 mkdir -p -m755 %{buildroot}%{python2_sitelib}/jvppgen
112 install -p -m755 ../../vpp-api/java/jvpp/gen/jvpp_gen.py %{buildroot}/usr/bin
113 for i in $(ls ../../vpp-api/java/jvpp/gen/jvppgen/*.py); do
114    install -p -m666 ${i} %{buildroot}%{python2_sitelib}/jvppgen
115 done;
116
117 # sample plugin
118 mkdir -p -m755 %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/sample
119 for file in $(cd %{_vpp_install_dir}/../../sample-plugin && find -type f -print)
120 do
121         install -p -m 644 %{_vpp_install_dir}/../../sample-plugin/$file \
122            %{buildroot}/usr/share/doc/vpp/examples/sample-plugin/$file
123 done
124
125
126 #
127 # vpp-plugins
128
129 mkdir -p -m755 %{buildroot}%{_libdir}/vpp_plugins
130 mkdir -p -m755 %{buildroot}%{_libdir}/vpp_api_test_plugins
131 for file in $(cd %{_vpp_install_dir}/plugins/lib64/vpp_plugins && find -type f -print)
132 do
133         install -p -m 644 %{_vpp_install_dir}/plugins/lib64/vpp_plugins/$file \
134            %{buildroot}%{_libdir}/vpp_plugins/$file
135 done
136
137 for file in $(cd %{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins && find -type f -print)
138 do
139         install -p -m 644 %{_vpp_install_dir}/plugins/lib64/vpp_api_test_plugins/$file \
140            %{buildroot}%{_libdir}/vpp_api_test_plugins/$file
141 done
142
143 %post
144 sysctl --system
145 %systemd_post vpp.service
146
147 %postun
148 %systemd_postun_with_restart vpp.service
149
150 %files
151 %defattr(-,bin,bin)
152 %{_unitdir}/vpp.service
153 /usr/bin/vpp*
154 /usr/bin/svm*
155 /usr/bin/elftool
156 %config /etc/sysctl.d/80-vpp.conf
157 %config /etc/vpp/startup.conf
158
159 %files lib
160 %defattr(-,bin,bin)
161 %exclude %{_libdir}/vpp_plugins
162 %exclude %{_libdir}/vpp_api_test_plugins
163 %{_libdir}/*
164
165 %files devel
166 %defattr(-,bin,bin)
167 /usr/bin/vppapigen
168 /usr/bin/jvpp_gen.py
169 %{_includedir}/*
170 %{python2_sitelib}/jvppgen/*
171 /usr/share/doc/vpp/examples/sample-plugin
172
173 %files plugins
174 %defattr(-,bin,bin)
175 %{_libdir}/vpp_plugins/*
176 %{_libdir}/vpp_api_test_plugins/*