xref: /spdk/doc/rpm.md (revision 0791d4ae5c82b2c7bb4c16c9c92bc602068e1818)
1dc672e78SMichal Berger# RPMs {#rpms}
2dc672e78SMichal Berger
31e1fd9acSwawryk## In this document {#rpms_toc}
4dc672e78SMichal Berger
5dc672e78SMichal Berger* @ref building_rpms
6*0791d4aeSMichal Berger* @ref dpdk_devel
7dc672e78SMichal Berger
81e1fd9acSwawryk## Building SPDK RPMs {#building_rpms}
9dc672e78SMichal Berger
10dc672e78SMichal BergerTo build basic set of RPM packages out of the SPDK repo simply run:
11dc672e78SMichal Berger
12dc672e78SMichal Berger~~~{.sh}
13dc672e78SMichal Berger# rpmbuild/rpm.sh
14dc672e78SMichal Berger~~~
15dc672e78SMichal Berger
16dc672e78SMichal BergerAdditional configuration options can be passed directly as arguments:
17dc672e78SMichal Berger
18dc672e78SMichal Berger~~~{.sh}
19dc672e78SMichal Berger# rpmbuild/rpm.sh --with-shared --with-dpdk=/path/to/dpdk/build
20dc672e78SMichal Berger~~~
21dc672e78SMichal Berger
22dc672e78SMichal BergerThere are several options that may be passed via environment as well:
23dc672e78SMichal Berger
24dc672e78SMichal Berger- DEPS          - Install all needed dependencies for building RPM packages.
25dc672e78SMichal Berger                Default: "yes"
26dc672e78SMichal Berger- MAKEFLAGS     - Flags passed to make
27dc672e78SMichal Berger- RPM_RELEASE   - Target release version of the RPM packages. Default: 1
28dc672e78SMichal Berger- REQUIREMENTS  - Extra set of RPM dependencies if deemed as needed
29dc672e78SMichal Berger- SPDK_VERSION  - SPDK version. Default: currently checked out tag
30*0791d4aeSMichal Berger- GEN_SPEC      - Orders rpm.sh to only generate a valid .spec and print
31*0791d4aeSMichal Berger                it on stdout. The content of the .spec is determined based
32*0791d4aeSMichal Berger                mainly on the ./configure cmdline passed to rpm.sh.
33*0791d4aeSMichal Berger- USE_DEFAULT_DIRS - Normally, rpm.sh will order rpmbuild to build under
34*0791d4aeSMichal Berger                   customizable set of directories. Since this may be not
35*0791d4aeSMichal Berger                   desired, especially when used together with GEN_SPEC,
36*0791d4aeSMichal Berger                   this option will preserve the default set of directories.
37dc672e78SMichal Berger
38dc672e78SMichal Berger~~~{.sh}
39dc672e78SMichal Berger# DEPS=no MAKEFLAGS="-d -j1" rpmbuild/rpm.sh --with-shared
40dc672e78SMichal Berger~~~
41dc672e78SMichal Berger
42dc672e78SMichal BergerBy default, all RPM packages should be created under $HOME directory of the
43dc672e78SMichal Bergertarget user:
44dc672e78SMichal Berger
45dc672e78SMichal Berger~~~{.sh}
46dc672e78SMichal Berger# printf '%s\n' /root/rpmbuild/RPMS/x86_64/*
47dc672e78SMichal Berger/root/rpmbuild/RPMS/x86_64/spdk-devel-v21.01-1.x86_64.rpm
48dc672e78SMichal Berger/root/rpmbuild/RPMS/x86_64/spdk-dpdk-libs-v21.01-1.x86_64.rpm
49dc672e78SMichal Berger/root/rpmbuild/RPMS/x86_64/spdk-libs-v21.01-1.x86_64.rpm
50dc672e78SMichal Berger/root/rpmbuild/RPMS/x86_64/spdk-v21.01-1.x86_64.rpm
51dc672e78SMichal Berger#
52dc672e78SMichal Berger~~~
53dc672e78SMichal Berger
54dc672e78SMichal Berger- spdk            - provides all the binaries, common tooling, etc.
55dc672e78SMichal Berger- spdk-devel      - provides development files
56dc672e78SMichal Berger- spdk-libs       - provides target lib, .pc files (--with-shared)
57dc672e78SMichal Berger- spdk-dpdk-libs  - provides dpdk lib files (--with-shared|--with-dpdk)
58*0791d4aeSMichal Berger
59*0791d4aeSMichal Berger## Special case for dpdk-devel {#dpdk_devel}
60*0791d4aeSMichal Berger
61*0791d4aeSMichal BergerWhen rpm.sh finds a bare --with-dpdk argument on the cmdline it will try to
62*0791d4aeSMichal Bergeradjust the behavior of the rpmbuild to make sure only SPDK RPMs are built.
63*0791d4aeSMichal BergerSince this argument requests SPDK to be built against installed DPDK (e.g.
64*0791d4aeSMichal Bergerdpdk-devel package) the spdk-dpdk-libs RPM won't be included.  Moreover, the
65*0791d4aeSMichal Berger.spec will be armed with a build requirement to make sure dpdk-devel is
66*0791d4aeSMichal Bergerpresent on the building system. The minimum required version of dpdk-devel
67*0791d4aeSMichal Bergeris set to 19.11.
68