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