Closed benlwalker closed 9 months ago
Just a note, food for thought. :)
Our packaging (rpmbuild) is sort of covering this since, for instance, we build an extra package with dpdk libs inside (some other, like isa-l's, are explicitly included in the main lib package) and we do have tests which do cover that.
That said, the scope is minimal as we don't build these rpms with "full" SPDK inside. But the use-case like --with-shared --with-fio
can definitely work. Also, our docker/*
stuff also depends on these RPMs.
So essentially this:
./rpmbuild/rpm.sh --with-shared --with-fio
rpm -i "$HOME/rpmbuild/rpm/"*/spdk-*
would deploy a working SPDK base under your distro (rpm-like that is, though there's nothing wrong with extracting these packages under any other non-rpm distro). Dirty view of what's get installed from the example above:
[root@test-hostname ~]# rpm -qa | grep spdk
spdk-libs-v24.01-1.x86_64
spdk-dpdk-libs-v24.01-1.x86_64
spdk-v24.01-1.x86_64
spdk-devel-v24.01-1.x86_64
[root@test-hostname ~]# rpm -ql $(rpm -qa | grep spdk) | grep -v build-id
/etc/ld.so.conf.d/spdk.conf
/usr/local/lib/libspdk.so.5.0
/usr/local/lib/libspdk_accel.a
/usr/local/lib/libspdk_accel.so.13.0
/usr/local/lib/libspdk_accel_ioat.a
/usr/local/lib/libspdk_accel_ioat.so.5.0
/usr/local/lib/libspdk_bdev.a
/usr/local/lib/libspdk_bdev.so.13.0
/usr/local/lib/libspdk_bdev_aio.a
/usr/local/lib/libspdk_bdev_aio.so.5.0
/usr/local/lib/libspdk_bdev_delay.a
/usr/local/lib/libspdk_bdev_delay.so.5.0
/usr/local/lib/libspdk_bdev_error.a
/usr/local/lib/libspdk_bdev_error.so.5.0
/usr/local/lib/libspdk_bdev_ftl.a
/usr/local/lib/libspdk_bdev_ftl.so.5.0
/usr/local/lib/libspdk_bdev_gpt.a
/usr/local/lib/libspdk_bdev_gpt.so.5.0
/usr/local/lib/libspdk_bdev_lvol.a
/usr/local/lib/libspdk_bdev_lvol.so.5.0
/usr/local/lib/libspdk_bdev_malloc.a
/usr/local/lib/libspdk_bdev_malloc.so.5.0
/usr/local/lib/libspdk_bdev_null.a
/usr/local/lib/libspdk_bdev_null.so.5.0
/usr/local/lib/libspdk_bdev_nvme.a
/usr/local/lib/libspdk_bdev_nvme.so.6.0
/usr/local/lib/libspdk_bdev_passthru.a
/usr/local/lib/libspdk_bdev_passthru.so.5.0
/usr/local/lib/libspdk_bdev_raid.a
/usr/local/lib/libspdk_bdev_raid.so.5.0
/usr/local/lib/libspdk_bdev_split.a
/usr/local/lib/libspdk_bdev_split.so.5.0
/usr/local/lib/libspdk_bdev_virtio.a
/usr/local/lib/libspdk_bdev_virtio.so.5.0
/usr/local/lib/libspdk_bdev_zone_block.a
/usr/local/lib/libspdk_bdev_zone_block.so.5.0
/usr/local/lib/libspdk_blob.a
/usr/local/lib/libspdk_blob.so.10.0
/usr/local/lib/libspdk_blob_bdev.a
/usr/local/lib/libspdk_blob_bdev.so.10.0
/usr/local/lib/libspdk_blobfs.a
/usr/local/lib/libspdk_blobfs.so.9.0
/usr/local/lib/libspdk_blobfs_bdev.a
/usr/local/lib/libspdk_blobfs_bdev.so.5.0
/usr/local/lib/libspdk_conf.a
/usr/local/lib/libspdk_conf.so.5.0
/usr/local/lib/libspdk_dma.a
/usr/local/lib/libspdk_dma.so.3.0
/usr/local/lib/libspdk_env_dpdk.a
/usr/local/lib/libspdk_env_dpdk.so.12.0
/usr/local/lib/libspdk_env_dpdk_rpc.a
/usr/local/lib/libspdk_env_dpdk_rpc.so.5.0
/usr/local/lib/libspdk_event.a
/usr/local/lib/libspdk_event.so.12.0
/usr/local/lib/libspdk_event_accel.a
/usr/local/lib/libspdk_event_accel.so.5.0
/usr/local/lib/libspdk_event_bdev.a
/usr/local/lib/libspdk_event_bdev.so.5.0
/usr/local/lib/libspdk_event_iobuf.a
/usr/local/lib/libspdk_event_iobuf.so.2.0
/usr/local/lib/libspdk_event_iscsi.a
/usr/local/lib/libspdk_event_iscsi.so.5.0
/usr/local/lib/libspdk_event_nbd.a
/usr/local/lib/libspdk_event_nbd.so.5.0
/usr/local/lib/libspdk_event_nvmf.a
/usr/local/lib/libspdk_event_nvmf.so.5.0
/usr/local/lib/libspdk_event_scheduler.a
/usr/local/lib/libspdk_event_scheduler.so.3.0
/usr/local/lib/libspdk_event_scsi.a
/usr/local/lib/libspdk_event_scsi.so.5.0
/usr/local/lib/libspdk_event_sock.a
/usr/local/lib/libspdk_event_sock.so.4.0
/usr/local/lib/libspdk_event_vhost_blk.a
/usr/local/lib/libspdk_event_vhost_blk.so.2.0
/usr/local/lib/libspdk_event_vhost_scsi.a
/usr/local/lib/libspdk_event_vhost_scsi.so.2.0
/usr/local/lib/libspdk_event_vmd.a
/usr/local/lib/libspdk_event_vmd.so.5.0
/usr/local/lib/libspdk_ftl.a
/usr/local/lib/libspdk_ftl.so.7.0
/usr/local/lib/libspdk_init.a
/usr/local/lib/libspdk_init.so.4.0
/usr/local/lib/libspdk_ioat.a
/usr/local/lib/libspdk_ioat.so.6.0
/usr/local/lib/libspdk_iscsi.a
/usr/local/lib/libspdk_iscsi.so.7.0
/usr/local/lib/libspdk_json.a
/usr/local/lib/libspdk_json.so.5.0
/usr/local/lib/libspdk_jsonrpc.a
/usr/local/lib/libspdk_jsonrpc.so.5.1
/usr/local/lib/libspdk_log.a
/usr/local/lib/libspdk_log.so.6.1
/usr/local/lib/libspdk_lvol.a
/usr/local/lib/libspdk_lvol.so.9.0
/usr/local/lib/libspdk_nbd.a
/usr/local/lib/libspdk_nbd.so.6.0
/usr/local/lib/libspdk_notify.a
/usr/local/lib/libspdk_notify.so.5.0
/usr/local/lib/libspdk_nvme.a
/usr/local/lib/libspdk_nvme.so.11.0
/usr/local/lib/libspdk_nvmf.a
/usr/local/lib/libspdk_nvmf.so.16.0
/usr/local/lib/libspdk_rpc.a
/usr/local/lib/libspdk_rpc.so.5.0
/usr/local/lib/libspdk_scheduler_dpdk_governor.a
/usr/local/lib/libspdk_scheduler_dpdk_governor.so.3.0
/usr/local/lib/libspdk_scheduler_dynamic.a
/usr/local/lib/libspdk_scheduler_dynamic.so.3.0
/usr/local/lib/libspdk_scheduler_gscheduler.a
/usr/local/lib/libspdk_scheduler_gscheduler.so.3.0
/usr/local/lib/libspdk_scsi.a
/usr/local/lib/libspdk_scsi.so.7.0
/usr/local/lib/libspdk_sock.a
/usr/local/lib/libspdk_sock.so.8.0
/usr/local/lib/libspdk_sock_posix.a
/usr/local/lib/libspdk_sock_posix.so.5.0
/usr/local/lib/libspdk_thread.a
/usr/local/lib/libspdk_thread.so.8.1
/usr/local/lib/libspdk_trace.a
/usr/local/lib/libspdk_trace.so.8.0
/usr/local/lib/libspdk_trace_parser.a
/usr/local/lib/libspdk_trace_parser.so.4.0
/usr/local/lib/libspdk_ut_mock.a
/usr/local/lib/libspdk_ut_mock.so.5.0
/usr/local/lib/libspdk_util.a
/usr/local/lib/libspdk_util.so.7.0
/usr/local/lib/libspdk_vfio_user.a
/usr/local/lib/libspdk_vfio_user.so.4.0
/usr/local/lib/libspdk_vhost.a
/usr/local/lib/libspdk_vhost.so.7.0
/usr/local/lib/libspdk_virtio.a
/usr/local/lib/libspdk_virtio.so.6.0
/usr/local/lib/libspdk_vmd.a
/usr/local/lib/libspdk_vmd.so.5.0
/usr/local/lib/pkgconfig/spdk_accel.pc
/usr/local/lib/pkgconfig/spdk_accel_ioat.pc
/usr/local/lib/pkgconfig/spdk_accel_modules.pc
/usr/local/lib/pkgconfig/spdk_bdev.pc
/usr/local/lib/pkgconfig/spdk_bdev_aio.pc
/usr/local/lib/pkgconfig/spdk_bdev_delay.pc
/usr/local/lib/pkgconfig/spdk_bdev_error.pc
/usr/local/lib/pkgconfig/spdk_bdev_ftl.pc
/usr/local/lib/pkgconfig/spdk_bdev_gpt.pc
/usr/local/lib/pkgconfig/spdk_bdev_lvol.pc
/usr/local/lib/pkgconfig/spdk_bdev_malloc.pc
/usr/local/lib/pkgconfig/spdk_bdev_modules.pc
/usr/local/lib/pkgconfig/spdk_bdev_null.pc
/usr/local/lib/pkgconfig/spdk_bdev_nvme.pc
/usr/local/lib/pkgconfig/spdk_bdev_passthru.pc
/usr/local/lib/pkgconfig/spdk_bdev_raid.pc
/usr/local/lib/pkgconfig/spdk_bdev_split.pc
/usr/local/lib/pkgconfig/spdk_bdev_virtio.pc
/usr/local/lib/pkgconfig/spdk_bdev_zone_block.pc
/usr/local/lib/pkgconfig/spdk_blob.pc
/usr/local/lib/pkgconfig/spdk_blob_bdev.pc
/usr/local/lib/pkgconfig/spdk_blobfs.pc
/usr/local/lib/pkgconfig/spdk_blobfs_bdev.pc
/usr/local/lib/pkgconfig/spdk_conf.pc
/usr/local/lib/pkgconfig/spdk_dma.pc
/usr/local/lib/pkgconfig/spdk_dpdklibs.pc
/usr/local/lib/pkgconfig/spdk_env_dpdk.pc
/usr/local/lib/pkgconfig/spdk_env_dpdk_rpc.pc
/usr/local/lib/pkgconfig/spdk_event.pc
/usr/local/lib/pkgconfig/spdk_event_accel.pc
/usr/local/lib/pkgconfig/spdk_event_bdev.pc
/usr/local/lib/pkgconfig/spdk_event_iobuf.pc
/usr/local/lib/pkgconfig/spdk_event_iscsi.pc
/usr/local/lib/pkgconfig/spdk_event_nbd.pc
/usr/local/lib/pkgconfig/spdk_event_nvmf.pc
/usr/local/lib/pkgconfig/spdk_event_scheduler.pc
/usr/local/lib/pkgconfig/spdk_event_scsi.pc
/usr/local/lib/pkgconfig/spdk_event_sock.pc
/usr/local/lib/pkgconfig/spdk_event_vhost_blk.pc
/usr/local/lib/pkgconfig/spdk_event_vhost_scsi.pc
/usr/local/lib/pkgconfig/spdk_event_vmd.pc
/usr/local/lib/pkgconfig/spdk_ftl.pc
/usr/local/lib/pkgconfig/spdk_init.pc
/usr/local/lib/pkgconfig/spdk_ioat.pc
/usr/local/lib/pkgconfig/spdk_iscsi.pc
/usr/local/lib/pkgconfig/spdk_json.pc
/usr/local/lib/pkgconfig/spdk_jsonrpc.pc
/usr/local/lib/pkgconfig/spdk_log.pc
/usr/local/lib/pkgconfig/spdk_lvol.pc
/usr/local/lib/pkgconfig/spdk_nbd.pc
/usr/local/lib/pkgconfig/spdk_notify.pc
/usr/local/lib/pkgconfig/spdk_nvme.pc
/usr/local/lib/pkgconfig/spdk_nvmf.pc
/usr/local/lib/pkgconfig/spdk_rpc.pc
/usr/local/lib/pkgconfig/spdk_scheduler_dpdk_governor.pc
/usr/local/lib/pkgconfig/spdk_scheduler_dynamic.pc
/usr/local/lib/pkgconfig/spdk_scheduler_gscheduler.pc
/usr/local/lib/pkgconfig/spdk_scheduler_modules.pc
/usr/local/lib/pkgconfig/spdk_scsi.pc
/usr/local/lib/pkgconfig/spdk_sock.pc
/usr/local/lib/pkgconfig/spdk_sock_modules.pc
/usr/local/lib/pkgconfig/spdk_sock_posix.pc
/usr/local/lib/pkgconfig/spdk_syslibs.pc
/usr/local/lib/pkgconfig/spdk_thread.pc
/usr/local/lib/pkgconfig/spdk_trace.pc
/usr/local/lib/pkgconfig/spdk_trace_parser.pc
/usr/local/lib/pkgconfig/spdk_ut_mock.pc
/usr/local/lib/pkgconfig/spdk_util.pc
/usr/local/lib/pkgconfig/spdk_vfio_user.pc
/usr/local/lib/pkgconfig/spdk_vhost.pc
/usr/local/lib/pkgconfig/spdk_virtio.pc
/usr/local/lib/pkgconfig/spdk_vmd.pc
/usr/local/lib/dpdk
/usr/local/lib/dpdk/dpdk
/usr/local/lib/dpdk/dpdk/pmds-23.2
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_bus_pci.so
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_bus_pci.so.23
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_bus_pci.so.23.2
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_bus_vdev.so
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_bus_vdev.so.23
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_bus_vdev.so.23.2
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_mempool_ring.so
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_mempool_ring.so.23
/usr/local/lib/dpdk/dpdk/pmds-23.2/librte_mempool_ring.so.23.2
/usr/local/lib/dpdk/librte_bus_pci.a
/usr/local/lib/dpdk/librte_bus_pci.so
/usr/local/lib/dpdk/librte_bus_pci.so.23
/usr/local/lib/dpdk/librte_bus_pci.so.23.2
/usr/local/lib/dpdk/librte_bus_vdev.a
/usr/local/lib/dpdk/librte_bus_vdev.so
/usr/local/lib/dpdk/librte_bus_vdev.so.23
/usr/local/lib/dpdk/librte_bus_vdev.so.23.2
/usr/local/lib/dpdk/librte_cmdline.a
/usr/local/lib/dpdk/librte_cmdline.so
/usr/local/lib/dpdk/librte_cmdline.so.23
/usr/local/lib/dpdk/librte_cmdline.so.23.2
/usr/local/lib/dpdk/librte_compressdev.a
/usr/local/lib/dpdk/librte_compressdev.so
/usr/local/lib/dpdk/librte_compressdev.so.23
/usr/local/lib/dpdk/librte_compressdev.so.23.2
/usr/local/lib/dpdk/librte_cryptodev.a
/usr/local/lib/dpdk/librte_cryptodev.so
/usr/local/lib/dpdk/librte_cryptodev.so.23
/usr/local/lib/dpdk/librte_cryptodev.so.23.2
/usr/local/lib/dpdk/librte_dmadev.a
/usr/local/lib/dpdk/librte_dmadev.so
/usr/local/lib/dpdk/librte_dmadev.so.23
/usr/local/lib/dpdk/librte_dmadev.so.23.2
/usr/local/lib/dpdk/librte_eal.a
/usr/local/lib/dpdk/librte_eal.so
/usr/local/lib/dpdk/librte_eal.so.23
/usr/local/lib/dpdk/librte_eal.so.23.2
/usr/local/lib/dpdk/librte_ethdev.a
/usr/local/lib/dpdk/librte_ethdev.so
/usr/local/lib/dpdk/librte_ethdev.so.23
/usr/local/lib/dpdk/librte_ethdev.so.23.2
/usr/local/lib/dpdk/librte_hash.a
/usr/local/lib/dpdk/librte_hash.so
/usr/local/lib/dpdk/librte_hash.so.23
/usr/local/lib/dpdk/librte_hash.so.23.2
/usr/local/lib/dpdk/librte_kvargs.a
/usr/local/lib/dpdk/librte_kvargs.so
/usr/local/lib/dpdk/librte_kvargs.so.23
/usr/local/lib/dpdk/librte_kvargs.so.23.2
/usr/local/lib/dpdk/librte_mbuf.a
/usr/local/lib/dpdk/librte_mbuf.so
/usr/local/lib/dpdk/librte_mbuf.so.23
/usr/local/lib/dpdk/librte_mbuf.so.23.2
/usr/local/lib/dpdk/librte_mempool.a
/usr/local/lib/dpdk/librte_mempool.so
/usr/local/lib/dpdk/librte_mempool.so.23
/usr/local/lib/dpdk/librte_mempool.so.23.2
/usr/local/lib/dpdk/librte_mempool_ring.a
/usr/local/lib/dpdk/librte_mempool_ring.so
/usr/local/lib/dpdk/librte_mempool_ring.so.23
/usr/local/lib/dpdk/librte_mempool_ring.so.23.2
/usr/local/lib/dpdk/librte_meter.a
/usr/local/lib/dpdk/librte_meter.so
/usr/local/lib/dpdk/librte_meter.so.23
/usr/local/lib/dpdk/librte_meter.so.23.2
/usr/local/lib/dpdk/librte_net.a
/usr/local/lib/dpdk/librte_net.so
/usr/local/lib/dpdk/librte_net.so.23
/usr/local/lib/dpdk/librte_net.so.23.2
/usr/local/lib/dpdk/librte_pci.a
/usr/local/lib/dpdk/librte_pci.so
/usr/local/lib/dpdk/librte_pci.so.23
/usr/local/lib/dpdk/librte_pci.so.23.2
/usr/local/lib/dpdk/librte_power.a
/usr/local/lib/dpdk/librte_power.so
/usr/local/lib/dpdk/librte_power.so.23
/usr/local/lib/dpdk/librte_power.so.23.2
/usr/local/lib/dpdk/librte_rcu.a
/usr/local/lib/dpdk/librte_rcu.so
/usr/local/lib/dpdk/librte_rcu.so.23
/usr/local/lib/dpdk/librte_rcu.so.23.2
/usr/local/lib/dpdk/librte_reorder.a
/usr/local/lib/dpdk/librte_reorder.so
/usr/local/lib/dpdk/librte_reorder.so.23
/usr/local/lib/dpdk/librte_reorder.so.23.2
/usr/local/lib/dpdk/librte_ring.a
/usr/local/lib/dpdk/librte_ring.so
/usr/local/lib/dpdk/librte_ring.so.23
/usr/local/lib/dpdk/librte_ring.so.23.2
/usr/local/lib/dpdk/librte_security.a
/usr/local/lib/dpdk/librte_security.so
/usr/local/lib/dpdk/librte_security.so.23
/usr/local/lib/dpdk/librte_security.so.23.2
/usr/local/lib/dpdk/librte_telemetry.a
/usr/local/lib/dpdk/librte_telemetry.so
/usr/local/lib/dpdk/librte_telemetry.so.23
/usr/local/lib/dpdk/librte_telemetry.so.23.2
/usr/local/lib/dpdk/librte_timer.a
/usr/local/lib/dpdk/librte_timer.so
/usr/local/lib/dpdk/librte_timer.so.23
/usr/local/lib/dpdk/librte_timer.so.23.2
/usr/local/lib/dpdk/librte_vhost.a
/usr/local/lib/dpdk/librte_vhost.so
/usr/local/lib/dpdk/librte_vhost.so.23
/usr/local/lib/dpdk/librte_vhost.so.23.2
/usr/local/lib/dpdk/pkgconfig
/usr/local/lib/dpdk/pkgconfig/libdpdk-libs.pc
/usr/local/lib/dpdk/pkgconfig/libdpdk.pc
/etc/bash_completion.d/spdk
/etc/profile.d/spdk_path.sh
/usr/lib/python3.11/site-packages/spdk-24.1rc0-py3.11.egg-info/PKG-INFO
/usr/lib/python3.11/site-packages/spdk-24.1rc0-py3.11.egg-info/SOURCES.txt
/usr/lib/python3.11/site-packages/spdk-24.1rc0-py3.11.egg-info/dependency_links.txt
/usr/lib/python3.11/site-packages/spdk-24.1rc0-py3.11.egg-info/top_level.txt
/usr/lib/python3.11/site-packages/spdk/__init__.py
/usr/lib/python3.11/site-packages/spdk/__pycache__
/usr/lib/python3.11/site-packages/spdk/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc
/usr/lib/python3.11/site-packages/spdk/rpc/__init__.py
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/accel.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/app.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/bdev.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/blobfs.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/client.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/cmd_parser.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/compressdev.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/dpdk_cryptodev.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/dsa.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/env_dpdk.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/helpers.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/iaa.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/ioat.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/iobuf.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/iscsi.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/log.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/lvol.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/mlx5.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/nbd.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/notify.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/nvme.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/nvmf.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/sock.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/subsystem.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/trace.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/ublk.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/vfio_user.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/vhost.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/__pycache__/vmd.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/rpc/accel.py
/usr/lib/python3.11/site-packages/spdk/rpc/app.py
/usr/lib/python3.11/site-packages/spdk/rpc/bdev.py
/usr/lib/python3.11/site-packages/spdk/rpc/blobfs.py
/usr/lib/python3.11/site-packages/spdk/rpc/client.py
/usr/lib/python3.11/site-packages/spdk/rpc/cmd_parser.py
/usr/lib/python3.11/site-packages/spdk/rpc/compressdev.py
/usr/lib/python3.11/site-packages/spdk/rpc/dpdk_cryptodev.py
/usr/lib/python3.11/site-packages/spdk/rpc/dsa.py
/usr/lib/python3.11/site-packages/spdk/rpc/env_dpdk.py
/usr/lib/python3.11/site-packages/spdk/rpc/helpers.py
/usr/lib/python3.11/site-packages/spdk/rpc/iaa.py
/usr/lib/python3.11/site-packages/spdk/rpc/ioat.py
/usr/lib/python3.11/site-packages/spdk/rpc/iobuf.py
/usr/lib/python3.11/site-packages/spdk/rpc/iscsi.py
/usr/lib/python3.11/site-packages/spdk/rpc/log.py
/usr/lib/python3.11/site-packages/spdk/rpc/lvol.py
/usr/lib/python3.11/site-packages/spdk/rpc/mlx5.py
/usr/lib/python3.11/site-packages/spdk/rpc/nbd.py
/usr/lib/python3.11/site-packages/spdk/rpc/notify.py
/usr/lib/python3.11/site-packages/spdk/rpc/nvme.py
/usr/lib/python3.11/site-packages/spdk/rpc/nvmf.py
/usr/lib/python3.11/site-packages/spdk/rpc/sock.py
/usr/lib/python3.11/site-packages/spdk/rpc/subsystem.py
/usr/lib/python3.11/site-packages/spdk/rpc/trace.py
/usr/lib/python3.11/site-packages/spdk/rpc/ublk.py
/usr/lib/python3.11/site-packages/spdk/rpc/vfio_user.py
/usr/lib/python3.11/site-packages/spdk/rpc/vhost.py
/usr/lib/python3.11/site-packages/spdk/rpc/vmd.py
/usr/lib/python3.11/site-packages/spdk/sma
/usr/lib/python3.11/site-packages/spdk/sma/__init__.py
/usr/lib/python3.11/site-packages/spdk/sma/__pycache__
/usr/lib/python3.11/site-packages/spdk/sma/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/__pycache__/common.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/__pycache__/qmp.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/__pycache__/qos.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/__pycache__/sma.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/common.py
/usr/lib/python3.11/site-packages/spdk/sma/device
/usr/lib/python3.11/site-packages/spdk/sma/device/__init__.py
/usr/lib/python3.11/site-packages/spdk/sma/device/__pycache__
/usr/lib/python3.11/site-packages/spdk/sma/device/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/device/__pycache__/device.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/device/__pycache__/nvmf_tcp.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/device/__pycache__/nvmf_vfiouser.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/device/__pycache__/vhost_blk.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/device/device.py
/usr/lib/python3.11/site-packages/spdk/sma/device/nvmf_tcp.py
/usr/lib/python3.11/site-packages/spdk/sma/device/nvmf_vfiouser.py
/usr/lib/python3.11/site-packages/spdk/sma/device/vhost_blk.py
/usr/lib/python3.11/site-packages/spdk/sma/proto
/usr/lib/python3.11/site-packages/spdk/sma/proto/__init__.py
/usr/lib/python3.11/site-packages/spdk/sma/proto/__pycache__
/usr/lib/python3.11/site-packages/spdk/sma/proto/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/qmp.py
/usr/lib/python3.11/site-packages/spdk/sma/qos.py
/usr/lib/python3.11/site-packages/spdk/sma/sma.py
/usr/lib/python3.11/site-packages/spdk/sma/volume
/usr/lib/python3.11/site-packages/spdk/sma/volume/__init__.py
/usr/lib/python3.11/site-packages/spdk/sma/volume/__pycache__
/usr/lib/python3.11/site-packages/spdk/sma/volume/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/volume/__pycache__/crypto.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/volume/__pycache__/crypto_bdev.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/volume/__pycache__/volume.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/sma/volume/crypto.py
/usr/lib/python3.11/site-packages/spdk/sma/volume/crypto_bdev.py
/usr/lib/python3.11/site-packages/spdk/sma/volume/volume.py
/usr/lib/python3.11/site-packages/spdk/spdkcli
/usr/lib/python3.11/site-packages/spdk/spdkcli/__init__.py
/usr/lib/python3.11/site-packages/spdk/spdkcli/__pycache__
/usr/lib/python3.11/site-packages/spdk/spdkcli/__pycache__/__init__.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/spdkcli/__pycache__/ui_node.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/spdkcli/__pycache__/ui_node_iscsi.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/spdkcli/__pycache__/ui_node_nvmf.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/spdkcli/__pycache__/ui_root.cpython-311.pyc
/usr/lib/python3.11/site-packages/spdk/spdkcli/ui_node.py
/usr/lib/python3.11/site-packages/spdk/spdkcli/ui_node_iscsi.py
/usr/lib/python3.11/site-packages/spdk/spdkcli/ui_node_nvmf.py
/usr/lib/python3.11/site-packages/spdk/spdkcli/ui_root.py
/usr/libexec/spdk/include
/usr/libexec/spdk/scripts
/usr/libexec/spdk/scripts/ar-xnvme-fixer
/usr/libexec/spdk/scripts/arm_cross_compile.sh
/usr/libexec/spdk/scripts/backport.sh
/usr/libexec/spdk/scripts/bash-completion
/usr/libexec/spdk/scripts/bash-completion/spdk
/usr/libexec/spdk/scripts/bpf
/usr/libexec/spdk/scripts/bpf/gen.py
/usr/libexec/spdk/scripts/bpf/gen_enums.sh
/usr/libexec/spdk/scripts/bpf/intr-wakeups.bt
/usr/libexec/spdk/scripts/bpf/nvme.bt
/usr/libexec/spdk/scripts/bpf/nvmf.bt
/usr/libexec/spdk/scripts/bpf/nvmf_path.bt
/usr/libexec/spdk/scripts/bpf/nvmf_timeout.bt
/usr/libexec/spdk/scripts/bpf/readv.bt
/usr/libexec/spdk/scripts/bpf/sched.bt
/usr/libexec/spdk/scripts/bpf/send_msg.bt
/usr/libexec/spdk/scripts/bpf/syscalls.bt
/usr/libexec/spdk/scripts/bpf/trace.py
/usr/libexec/spdk/scripts/bpftrace.sh
/usr/libexec/spdk/scripts/calc-iobuf.py
/usr/libexec/spdk/scripts/ceph
/usr/libexec/spdk/scripts/ceph/ceph.conf
/usr/libexec/spdk/scripts/ceph/start.sh
/usr/libexec/spdk/scripts/ceph/stop.sh
/usr/libexec/spdk/scripts/check_format.sh
/usr/libexec/spdk/scripts/common
/usr/libexec/spdk/scripts/common.sh
/usr/libexec/spdk/scripts/common/setup
/usr/libexec/spdk/scripts/common/setup/interactive.sh
/usr/libexec/spdk/scripts/core-collector.sh
/usr/libexec/spdk/scripts/detect_cc.sh
/usr/libexec/spdk/scripts/dpdk_mem_info.py
/usr/libexec/spdk/scripts/env_dpdk
/usr/libexec/spdk/scripts/env_dpdk/22.07
/usr/libexec/spdk/scripts/env_dpdk/22.07/22.07-rte_bus_pci.h.patch
/usr/libexec/spdk/scripts/env_dpdk/22.11
/usr/libexec/spdk/scripts/env_dpdk/22.11/23.07-rte_bus_pci.h.patch
/usr/libexec/spdk/scripts/env_dpdk/22.11/23.11-rte_dev.h.patch
/usr/libexec/spdk/scripts/env_dpdk/README.md
/usr/libexec/spdk/scripts/env_dpdk/check_dpdk_pci_api.sh
/usr/libexec/spdk/scripts/eofnl
/usr/libexec/spdk/scripts/fio-wrapper
/usr/libexec/spdk/scripts/gdb_macros.py
/usr/libexec/spdk/scripts/gen_ftl.sh
/usr/libexec/spdk/scripts/gen_nvme.sh
/usr/libexec/spdk/scripts/gen_sma_goapi.sh
/usr/libexec/spdk/scripts/genconfig.py
/usr/libexec/spdk/scripts/get-pmr
/usr/libexec/spdk/scripts/histogram.py
/usr/libexec/spdk/scripts/iostat.py
/usr/libexec/spdk/scripts/ledctl.sh
/usr/libexec/spdk/scripts/lspci
/usr/libexec/spdk/scripts/pc.sh
/usr/libexec/spdk/scripts/pc_libs.sh
/usr/libexec/spdk/scripts/pc_modules.sh
/usr/libexec/spdk/scripts/perf
/usr/libexec/spdk/scripts/perf/nvme
/usr/libexec/spdk/scripts/perf/nvme/README
/usr/libexec/spdk/scripts/perf/nvme/fio_test.conf
/usr/libexec/spdk/scripts/perf/nvme/run_fio_test.py
/usr/libexec/spdk/scripts/perf/nvme/run_fio_test.sh
/usr/libexec/spdk/scripts/perf/nvmf
/usr/libexec/spdk/scripts/perf/nvmf/README.md
/usr/libexec/spdk/scripts/perf/nvmf/common.py
/usr/libexec/spdk/scripts/perf/nvmf/config.json
/usr/libexec/spdk/scripts/perf/nvmf/run_nvmf.py
/usr/libexec/spdk/scripts/perf/nvmf/set_xps_rxqs
/usr/libexec/spdk/scripts/perf/pm
/usr/libexec/spdk/scripts/perf/pm/collect-bmc-pm
/usr/libexec/spdk/scripts/perf/vhost
/usr/libexec/spdk/scripts/perf/vhost/conf-generator
/usr/libexec/spdk/scripts/perf/vhost/run_vhost_test.sh
/usr/libexec/spdk/scripts/pkgdep
/usr/libexec/spdk/scripts/pkgdep.sh
/usr/libexec/spdk/scripts/pkgdep/arch.sh
/usr/libexec/spdk/scripts/pkgdep/centos.sh
/usr/libexec/spdk/scripts/pkgdep/common.sh
/usr/libexec/spdk/scripts/pkgdep/debian.sh
/usr/libexec/spdk/scripts/pkgdep/fedora.sh
/usr/libexec/spdk/scripts/pkgdep/freebsd.sh
/usr/libexec/spdk/scripts/pkgdep/openeuler.sh
/usr/libexec/spdk/scripts/pkgdep/requirements.txt
/usr/libexec/spdk/scripts/pkgdep/rhel.sh
/usr/libexec/spdk/scripts/pkgdep/sles.sh
/usr/libexec/spdk/scripts/pkgdep/ubuntu.sh
/usr/libexec/spdk/scripts/posix.txt
/usr/libexec/spdk/scripts/prep_benchmarks.sh
/usr/libexec/spdk/scripts/qat_setup.sh
/usr/libexec/spdk/scripts/rpc.py
/usr/libexec/spdk/scripts/rpc_http_proxy.py
/usr/libexec/spdk/scripts/rxe_cfg_small.sh
/usr/libexec/spdk/scripts/setup.sh
/usr/libexec/spdk/scripts/sma-client.py
/usr/libexec/spdk/scripts/sma.py
/usr/libexec/spdk/scripts/spdk-gpt.py
/usr/libexec/spdk/scripts/spdkcli.py
/usr/libexec/spdk/scripts/spdx.sh
/usr/libexec/spdk/scripts/sync_dev_uevents.sh
/usr/libexec/spdk/scripts/vagrant
/usr/libexec/spdk/scripts/vagrant/README.md
/usr/libexec/spdk/scripts/vagrant/Vagrantfile
/usr/libexec/spdk/scripts/vagrant/autorun-spdk.conf
/usr/libexec/spdk/scripts/vagrant/create_nvme_img.sh
/usr/libexec/spdk/scripts/vagrant/create_vbox.sh
/usr/libexec/spdk/scripts/vagrant/local.conf
/usr/libexec/spdk/scripts/vagrant/run-autorun.sh
/usr/libexec/spdk/scripts/vagrant/update.sh
/usr/local/bin/fio
/usr/local/bin/fio/spdk_bdev
/usr/local/bin/fio/spdk_nvme
/usr/local/bin/iscsi_tgt
/usr/local/bin/nvmf_tgt
/usr/local/bin/spdk_dd
/usr/local/bin/spdk_lspci
/usr/local/bin/spdk_nvme_discovery_aer
/usr/local/bin/spdk_nvme_identify
/usr/local/bin/spdk_nvme_perf
/usr/local/bin/spdk_tgt
/usr/local/bin/spdk_top
/usr/local/bin/spdk_trace
/usr/local/bin/spdk_trace_record
/usr/local/bin/vhost
/usr/local/include/spdk
/usr/local/include/spdk/accel.h
/usr/local/include/spdk/accel_module.h
/usr/local/include/spdk/assert.h
/usr/local/include/spdk/barrier.h
/usr/local/include/spdk/base64.h
/usr/local/include/spdk/bdev.h
/usr/local/include/spdk/bdev_module.h
/usr/local/include/spdk/bdev_zone.h
/usr/local/include/spdk/bit_array.h
/usr/local/include/spdk/bit_pool.h
/usr/local/include/spdk/blob.h
/usr/local/include/spdk/blob_bdev.h
/usr/local/include/spdk/blobfs.h
/usr/local/include/spdk/blobfs_bdev.h
/usr/local/include/spdk/conf.h
/usr/local/include/spdk/config.h
/usr/local/include/spdk/cpuset.h
/usr/local/include/spdk/crc16.h
/usr/local/include/spdk/crc32.h
/usr/local/include/spdk/crc64.h
/usr/local/include/spdk/dif.h
/usr/local/include/spdk/dma.h
/usr/local/include/spdk/endian.h
/usr/local/include/spdk/env.h
/usr/local/include/spdk/env_dpdk.h
/usr/local/include/spdk/event.h
/usr/local/include/spdk/fd.h
/usr/local/include/spdk/fd_group.h
/usr/local/include/spdk/file.h
/usr/local/include/spdk/ftl.h
/usr/local/include/spdk/gpt_spec.h
/usr/local/include/spdk/hexlify.h
/usr/local/include/spdk/histogram_data.h
/usr/local/include/spdk/idxd.h
/usr/local/include/spdk/idxd_spec.h
/usr/local/include/spdk/init.h
/usr/local/include/spdk/ioat.h
/usr/local/include/spdk/ioat_spec.h
/usr/local/include/spdk/iscsi_spec.h
/usr/local/include/spdk/json.h
/usr/local/include/spdk/jsonrpc.h
/usr/local/include/spdk/likely.h
/usr/local/include/spdk/log.h
/usr/local/include/spdk/lvol.h
/usr/local/include/spdk/memory.h
/usr/local/include/spdk/mmio.h
/usr/local/include/spdk/nbd.h
/usr/local/include/spdk/notify.h
/usr/local/include/spdk/nvme.h
/usr/local/include/spdk/nvme_intel.h
/usr/local/include/spdk/nvme_ocssd.h
/usr/local/include/spdk/nvme_ocssd_spec.h
/usr/local/include/spdk/nvme_spec.h
/usr/local/include/spdk/nvme_zns.h
/usr/local/include/spdk/nvmf.h
/usr/local/include/spdk/nvmf_cmd.h
/usr/local/include/spdk/nvmf_fc_spec.h
/usr/local/include/spdk/nvmf_spec.h
/usr/local/include/spdk/nvmf_transport.h
/usr/local/include/spdk/opal.h
/usr/local/include/spdk/opal_spec.h
/usr/local/include/spdk/pci_ids.h
/usr/local/include/spdk/pipe.h
/usr/local/include/spdk/queue.h
/usr/local/include/spdk/queue_extras.h
/usr/local/include/spdk/reduce.h
/usr/local/include/spdk/rpc.h
/usr/local/include/spdk/scheduler.h
/usr/local/include/spdk/scsi.h
/usr/local/include/spdk/scsi_spec.h
/usr/local/include/spdk/sock.h
/usr/local/include/spdk/stdinc.h
/usr/local/include/spdk/string.h
/usr/local/include/spdk/thread.h
/usr/local/include/spdk/trace.h
/usr/local/include/spdk/trace_parser.h
/usr/local/include/spdk/tree.h
/usr/local/include/spdk/ublk.h
/usr/local/include/spdk/util.h
/usr/local/include/spdk/uuid.h
/usr/local/include/spdk/version.h
/usr/local/include/spdk/vfio_user_pci.h
/usr/local/include/spdk/vfio_user_spec.h
/usr/local/include/spdk/vfu_target.h
/usr/local/include/spdk/vhost.h
/usr/local/include/spdk/vmd.h
/usr/local/include/spdk/xor.h
/usr/local/include/spdk/zipf.h
/usr/local/lib/libspdk.so
/usr/local/lib/libspdk_accel.so
/usr/local/lib/libspdk_accel_ioat.so
/usr/local/lib/libspdk_bdev.so
/usr/local/lib/libspdk_bdev_aio.so
/usr/local/lib/libspdk_bdev_delay.so
/usr/local/lib/libspdk_bdev_error.so
/usr/local/lib/libspdk_bdev_ftl.so
/usr/local/lib/libspdk_bdev_gpt.so
/usr/local/lib/libspdk_bdev_lvol.so
/usr/local/lib/libspdk_bdev_malloc.so
/usr/local/lib/libspdk_bdev_null.so
/usr/local/lib/libspdk_bdev_nvme.so
/usr/local/lib/libspdk_bdev_passthru.so
/usr/local/lib/libspdk_bdev_raid.so
/usr/local/lib/libspdk_bdev_split.so
/usr/local/lib/libspdk_bdev_virtio.so
/usr/local/lib/libspdk_bdev_zone_block.so
/usr/local/lib/libspdk_blob.so
/usr/local/lib/libspdk_blob_bdev.so
/usr/local/lib/libspdk_blobfs.so
/usr/local/lib/libspdk_blobfs_bdev.so
/usr/local/lib/libspdk_conf.so
/usr/local/lib/libspdk_dma.so
/usr/local/lib/libspdk_env_dpdk.so
/usr/local/lib/libspdk_env_dpdk_rpc.so
/usr/local/lib/libspdk_event.so
/usr/local/lib/libspdk_event_accel.so
/usr/local/lib/libspdk_event_bdev.so
/usr/local/lib/libspdk_event_iobuf.so
/usr/local/lib/libspdk_event_iscsi.so
/usr/local/lib/libspdk_event_nbd.so
/usr/local/lib/libspdk_event_nvmf.so
/usr/local/lib/libspdk_event_scheduler.so
/usr/local/lib/libspdk_event_scsi.so
/usr/local/lib/libspdk_event_sock.so
/usr/local/lib/libspdk_event_vhost_blk.so
/usr/local/lib/libspdk_event_vhost_scsi.so
/usr/local/lib/libspdk_event_vmd.so
/usr/local/lib/libspdk_ftl.so
/usr/local/lib/libspdk_init.so
/usr/local/lib/libspdk_ioat.so
/usr/local/lib/libspdk_iscsi.so
/usr/local/lib/libspdk_json.so
/usr/local/lib/libspdk_jsonrpc.so
/usr/local/lib/libspdk_log.so
/usr/local/lib/libspdk_lvol.so
/usr/local/lib/libspdk_nbd.so
/usr/local/lib/libspdk_notify.so
/usr/local/lib/libspdk_nvme.so
/usr/local/lib/libspdk_nvmf.so
/usr/local/lib/libspdk_rpc.so
/usr/local/lib/libspdk_scheduler_dpdk_governor.so
/usr/local/lib/libspdk_scheduler_dynamic.so
/usr/local/lib/libspdk_scheduler_gscheduler.so
/usr/local/lib/libspdk_scsi.so
/usr/local/lib/libspdk_sock.so
/usr/local/lib/libspdk_sock_posix.so
/usr/local/lib/libspdk_thread.so
/usr/local/lib/libspdk_trace.so
/usr/local/lib/libspdk_trace_parser.so
/usr/local/lib/libspdk_ut_mock.so
/usr/local/lib/libspdk_util.so
/usr/local/lib/libspdk_vfio_user.so
/usr/local/lib/libspdk_vhost.so
/usr/local/lib/libspdk_virtio.so
/usr/local/lib/libspdk_vmd.so
With some core apps available:
[root@test-hostname spdk]# LIST_LIBS=yes ./rpmbuild/rpm-deps.sh spdk_tgt
/usr/local/bin/spdk_tgt
/usr/lib64/libaio.so.1:libaio-0.3.111-15.fc38.x86_64
/usr/lib64/libcrypto.so.3:openssl-libs-3.0.9-2.fc38.x86_64
/usr/lib64/libc.so.6:glibc-2.37-4.fc38.x86_64
/usr/lib64/libgcc_s.so.1:libgcc-13.2.1-1.fc38.x86_64
/usr/lib64/libm.so.6:glibc-2.37-4.fc38.x86_64
/usr/lib64/libnuma.so.1:numactl-libs-2.0.16-2.fc38.x86_64
/usr/lib64/libssl.so.3:openssl-libs-3.0.9-2.fc38.x86_64
/usr/lib64/libuuid.so.1:libuuid-2.38.1-4.fc38.x86_64
/usr/lib64/libz.so.1:zlib-1.2.13-3.fc38.x86_64
/usr/local/lib/dpdk/librte_bus_pci.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_cryptodev.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_dmadev.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_eal.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_ethdev.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_hash.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_kvargs.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_mbuf.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_mempool_ring.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_mempool.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_meter.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_net.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_pci.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_power.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_rcu.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_ring.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_telemetry.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_timer.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/dpdk/librte_vhost.so.23:spdk-dpdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_accel_ioat.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_accel.so.13.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_aio.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_delay.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_error.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_ftl.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_gpt.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_lvol.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_malloc.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_null.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_nvme.so.6.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_passthru.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_raid.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev.so.13.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_split.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_virtio.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_bdev_zone_block.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_blob_bdev.so.10.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_blobfs_bdev.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_blobfs.so.9.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_blob.so.10.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_conf.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_dma.so.3.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_env_dpdk_rpc.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_env_dpdk.so.12.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_accel.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_bdev.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_iobuf.so.2.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_iscsi.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_nbd.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_nvmf.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_scheduler.so.3.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_scsi.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event.so.12.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_sock.so.4.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_vhost_blk.so.2.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_vhost_scsi.so.2.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_event_vmd.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_ftl.so.7.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_init.so.4.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_ioat.so.6.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_iscsi.so.7.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_jsonrpc.so.5.1:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_json.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_log.so.6.1:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_lvol.so.9.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_nbd.so.6.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_notify.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_nvme.so.11.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_nvmf.so.16.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_rpc.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_scheduler_dpdk_governor.so.3.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_scheduler_dynamic.so.3.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_scheduler_gscheduler.so.3.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_scsi.so.7.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_sock_posix.so.5.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_sock.so.8.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_thread.so.8.1:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_trace.so.8.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_util.so.7.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_vfio_user.so.4.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_vhost.so.7.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_virtio.so.6.0:spdk-libs-v24.01-1.x86_64
/usr/local/lib/libspdk_vmd.so.5.0:spdk-libs-v24.01-1.x86_64
[root@test-hostname spdk]# setup.sh
cleanup config help interactive reset status
[root@test-hostname spdk]# rpc.py
Display all 262 possibilities? (y or n)
accel_assign_opc bdev_lvol_decouple_parent bdev_nvme_stop_mdns_discovery blobfs_create iscsi_set_options rpc_get_methods
accel_crypto_key_create bdev_lvol_delete bdev_ocf_create blobfs_detect iscsi_start_portal_group save_config
accel_crypto_key_destroy bdev_lvol_delete_lvstore bdev_ocf_delete blobfs_mount iscsi_target_node_add_lun save_subsystem_config
accel_crypto_keys_get bdev_lvol_get_lvols bdev_ocf_flush_start blobfs_set_cache_size iscsi_target_node_add_pg_ig_maps scsi_get_devices
accel_get_module_info bdev_lvol_get_lvstores bdev_ocf_flush_status compressdev_scan_accel_module iscsi_target_node_remove_pg_ig_maps sock_impl_get_options
accel_get_opc_assignments bdev_lvol_grow_lvstore bdev_ocf_get_bdevs dpdk_cryptodev_get_driver iscsi_target_node_request_logout sock_impl_set_options
accel_get_stats bdev_lvol_inflate bdev_ocf_get_stats dpdk_cryptodev_scan_accel_module iscsi_target_node_set_auth sock_set_default_impl
accel_set_driver bdev_lvol_rename bdev_ocf_reset_stats dpdk_cryptodev_set_driver iscsi_target_node_set_redirect spdk_get_version
accel_set_options bdev_lvol_rename_lvstore bdev_ocf_set_cache_mode dsa_scan_accel_module load_config spdk_kill_instance
bdev_aio_create bdev_lvol_resize bdev_ocf_set_seqcutoff env_dpdk_get_mem_stats load_subsystem_config thread_get_io_channels
bdev_aio_delete bdev_lvol_set_read_only bdev_opal_create framework_disable_cpumask_locks log_clear_flag thread_get_pollers
bdev_aio_rescan bdev_lvol_snapshot bdev_opal_delete framework_enable_cpumask_locks log_enable_timestamps thread_get_stats
bdev_compress_create bdev_malloc_create bdev_opal_get_info framework_get_config log_get_flags thread_set_cpumask
bdev_compress_delete bdev_malloc_delete bdev_opal_new_user framework_get_pci_devices log_get_level trace_clear_tpoint_mask
bdev_compress_get_orphans bdev_null_create bdev_opal_set_lock_state framework_get_reactors log_get_print_level trace_disable_tpoint_group
bdev_crypto_create bdev_null_delete bdev_passthru_create framework_get_scheduler log_set_flag trace_enable_tpoint_group
bdev_crypto_delete bdev_null_resize bdev_passthru_delete framework_get_subsystems log_set_level trace_get_info
bdev_daos_create bdev_nvme_add_error_injection bdev_raid_create framework_monitor_context_switch log_set_print_level trace_get_tpoint_group_mask
bdev_daos_delete bdev_nvme_apply_firmware bdev_raid_delete framework_set_scheduler mlx5_scan_accel_module trace_set_tpoint_mask
bdev_daos_resize bdev_nvme_attach_controller bdev_raid_get_bdevs framework_start_init nbd_get_disks ublk_create_target
bdev_delay_create bdev_nvme_cuse_register bdev_raid_remove_base_bdev framework_wait_init nbd_start_disk ublk_destroy_target
bdev_delay_delete bdev_nvme_cuse_unregister bdev_rbd_create iaa_scan_accel_module nbd_stop_disk ublk_get_disks
bdev_delay_update_latency bdev_nvme_detach_controller bdev_rbd_delete ioat_scan_accel_module notify_get_notifications ublk_start_disk
bdev_enable_histogram bdev_nvme_disable_controller bdev_rbd_get_clusters_info iobuf_set_options notify_get_types ublk_stop_disk
bdev_error_create bdev_nvme_enable_controller bdev_rbd_register_cluster iscsi_auth_group_add_secret nvmf_create_subsystem vfu_tgt_set_base_path
bdev_error_delete bdev_nvme_get_controller_health_info bdev_rbd_resize iscsi_auth_group_remove_secret nvmf_create_transport vfu_virtio_create_blk_endpoint
bdev_error_inject_error bdev_nvme_get_controllers bdev_rbd_unregister_cluster iscsi_create_auth_group nvmf_delete_subsystem vfu_virtio_create_scsi_endpoint
bdev_examine bdev_nvme_get_discovery_info bdev_reset_iostat iscsi_create_initiator_group nvmf_get_stats vfu_virtio_delete_endpoint
bdev_ftl_create bdev_nvme_get_io_paths bdev_set_options iscsi_create_portal_group nvmf_get_subsystems vfu_virtio_scsi_add_target
bdev_ftl_delete bdev_nvme_get_mdns_discovery_info bdev_set_qd_sampling_period iscsi_create_target_node nvmf_get_transports vfu_virtio_scsi_remove_target
bdev_ftl_get_stats bdev_nvme_get_path_iostat bdev_set_qos_limit iscsi_delete_auth_group nvmf_set_config vhost_controller_set_coalescing
bdev_ftl_load bdev_nvme_get_transport_statistics bdev_split_create iscsi_delete_initiator_group nvmf_set_crdt vhost_create_blk_controller
bdev_ftl_unload bdev_nvme_opal_init bdev_split_delete iscsi_delete_portal_group nvmf_set_max_subsystems vhost_create_scsi_controller
bdev_ftl_unmap bdev_nvme_opal_revert bdev_uring_create iscsi_delete_target_node nvmf_subsystem_add_host vhost_delete_controller
bdev_get_bdevs bdev_nvme_remove_error_injection bdev_uring_delete iscsi_get_auth_groups nvmf_subsystem_add_listener vhost_get_controllers
bdev_get_histogram bdev_nvme_reset_controller bdev_virtio_attach_controller iscsi_get_connections nvmf_subsystem_add_ns vhost_scsi_controller_add_target
bdev_get_iostat bdev_nvme_send_cmd bdev_virtio_blk_set_hotplug iscsi_get_initiator_groups nvmf_subsystem_allow_any_host vhost_scsi_controller_remove_target
bdev_iscsi_create bdev_nvme_set_hotplug bdev_virtio_detach_controller iscsi_get_options nvmf_subsystem_get_controllers virtio_blk_create_transport
bdev_iscsi_delete bdev_nvme_set_multipath_policy bdev_virtio_scsi_get_devices iscsi_get_portal_groups nvmf_subsystem_get_listeners virtio_blk_get_transports
bdev_iscsi_set_options bdev_nvme_set_options bdev_wait_for_examine iscsi_get_target_nodes nvmf_subsystem_get_qpairs vmd_enable
bdev_lvol_clone bdev_nvme_set_preferred_path bdev_xnvme_create iscsi_initiator_group_add_initiators nvmf_subsystem_listener_set_ana_state vmd_remove_device
bdev_lvol_clone_bdev bdev_nvme_start_discovery bdev_xnvme_delete iscsi_initiator_group_remove_initiators nvmf_subsystem_remove_host vmd_rescan
bdev_lvol_create bdev_nvme_start_mdns_discovery bdev_zone_block_create iscsi_portal_group_set_auth nvmf_subsystem_remove_listener
bdev_lvol_create_lvstore bdev_nvme_stop_discovery bdev_zone_block_delete iscsi_set_discovery_auth nvmf_subsystem_remove_ns
[root@test-hostname spdk]# nvmf_tgt --
--base-virtaddr --env-context --iova-mode --limit-coredump --mem-channels --num-trace-entries --rpc-socket --tpoint-group
--config --help --json --logflag --mem-size --pci-allowed --shm-id --version
--cpumask --huge-dir --json-ignore-init-errors --main-core --msg-mempool-size --pci-blocked --silence-noticelog --vfio-vf-token
--disable-cpumask-locks --huge-unlink --lcores --max-delay --no-pci --rpcs-allowed --single-file-segments --wait-for-rpc
# fio plugins are included as well (albeit their location is not best)
[root@test-hostname spdk]# echo /usr/local/bin/fio/spdk_@(nvme|bdev)
/usr/local/bin/fio/spdk_bdev /usr/local/bin/fio/spdk_nvme
The reason I mention rpmbuild here is because as a end-user, I would not consider src installation as my first choice. Even on the embedded side, this installation would be wrapped by some env which puts everything in the right place (yocto|bitbake), without relaying solely on make install
(having robust targets makes everything way easier though). And distro-wise, the first try is also usually packaging. In my mind I actually consider src installation as a last resort - mainly dedicated for testing, debugging, hotfixing, etc. but definitely not for regular deployment.
That said, having a bit more robust make targets wouldn't of course do any harm (as long as their complexity doesn't render the entire build|Makefile* infra incomprehensible). :)
The source install is nice because I can install into some other prefix under $HOME and keep the base system clean. I don't really want to get into containers because it adds extra steps to my workflow. I'm basically a developer making a pseudo-customer-environment for quick testing in this scenario.
I'm going to try to use the rpmbuild and see where I get now. The first obvious thing I see is that it requires rpmbuild, so doesn't that make this approach RH/CentOS/Fedora specific? That happens to be fine for me at the moment but Debian-variants are common enough that we may need something there too.
I was looking at this for alpine linux, and found arch linux spdk packaging renames some of the python scripts and manually installs them https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=spdk
But I found several scripts in spdk need rpc.py to be called rpc.py
[Bug scrub] @benlwalker will be working on some of the previously mentioned enhancements, to make sure that make install covers the right bases. Some of the ideas are: moving some examples (bdevperf/perf/etc) to apps, explore moving DPDK libs from rpmbuild.
Debian-variants are common enough that we may need something there too.
I believe there's a series of patches on gerrit which introduce .deb packaging for SPDK. :)
I'm going to try to use the rpmbuild and see where I get now. The first obvious thing I see is that it requires rpmbuild, so doesn't that make this approach RH/CentOS/Fedora specific?
To build these, yes, it does. But for installation, not necessarily. Container-based POC below:
# Under ubuntu2204
$ git clone https://github.com/spdk/spdk --recurse-submodules
$ cd docker/build_base
$ tar -czf spdk.tar.gz --exclude=spdk.tar.gz -C ../../ . # building from local repo
# Build .rpms. configure's cmdline can be adjusted directly inside Dockerfile (it could be parametrized as well)
$ docker build --build-arg PROXY=$http_proxy --force-rm -t spdk-rpms:latest --target base .
# Fetch the rpms to the host side
$ mkdir -p rpms
$ docker run --name rpms --rm -v "$PWD/rpms:/rpms" spdk-rpms:latest bash -c 'cp /tmp/*.rpm /rpms/'
# Deploy - --directory is your DESTDIR
# This of course assumes that ubuntu2204 can provide compatible env similar to fedora image that was used for building these packages. This is mainly relevant for base|system set of libraries (like libssl, libnuma, etc.) since this is what actual rpm packages|SPDK would depend on
$ for r in rpms/*.rpm; do rpm2cpio "$r" | cpio -i --directory=/ --make-directories --no-absolute-filenames; done
All the above is HACKy of course, so the more streamlined way would be to simply install rpmbuild
under your non-rhel distro - for debian|ubuntu this is quite easy since these do provide rpm-related tooling in their repos (some minor tweaks would be necessary for the full build to work, but it's doable). Having completely separate set of .deb packages would be best of course.
POC showing use of rpm infra under debian|ubuntu:
# It would go more or less like this
$ apt-get install -y rpm
$ ln -sf /bin/bash /bin/sh # ubuntu|debian tends to link sh to dash by default. rpmbuild creates scripts with a shebang pointing at /bin/sh but to make sure they all run smoothly, it should provide access to bash
$ git diff # some extra tweaks are needed on our side
diff --git a/rpmbuild/rpm.sh b/rpmbuild/rpm.sh
index 667422c77..4e3f246de 100755
--- a/rpmbuild/rpm.sh
+++ b/rpmbuild/rpm.sh
@@ -14,15 +14,6 @@ source /etc/os-release
id_ok=no
-for id in $ID $ID_LIKE; do
- [[ "$id" =~ ^(fedora|centos|rhel) ]] && id_ok=yes
-done
-
-if [[ "$id_ok" != "yes" ]]; then
- printf '%s not supported\n' "$ID" >&2
- exit 1
-fi
-
get_config() {
# Intercept part of the ./configure's cmdline we are interested in
configure_opts=($(getopt -l "$1::" -o "" -- $configure 2> /dev/null)) || true
@@ -61,6 +52,7 @@ fedora_python_sys_path_workaround() {
PYTHONPATH="$(python3 -c "import sys; print('%s' % ':'.join(sys.path)[1:])")"
export PYTHONPATH
+ macros+=(-D "python3_sitelib $(python3 -c "import sysconfig; print(sysconfig.get_paths()['purelib'])")") # this macro won't be available under ubuntu|debian by default
}
get_version() {
diff --git a/rpmbuild/spdk.spec b/rpmbuild/spdk.spec
index bf9a1fb5d..f48bb423b 100644
--- a/rpmbuild/spdk.spec
+++ b/rpmbuild/spdk.spec
@@ -36,8 +36,6 @@ Requires: zlib
Requires: %(echo "%{requirements_list}")
%endif
-BuildRequires: python3-devel # this is not needed at all really
-
%if %{build_requirements}
BuildRequires: %(echo "%{build_requirements_list}")
%endif
$ DEPS=no ./rpmbuild/rpm.sh --with-shared # e.g.
$ rpm -i --nodeps /root/rpmbuild/rpm/x86_64/spdk-* # --nodeps since some of the dependencies simply won't exist under debian|ubuntu (won't exist in the sense that the naming of these packages would simply not match).
Also, just to note, this whole packaging effort was done purely for convenience's sake it definitely does not mean to enforce any specific approach to how SPDK should be installed|shipped in general. :)
Sighting report
Most of us use SPDK that we built ourselves and we don't bother to install it. However, when building SPDK and installing it onto a system several things show up very quickly:
1) If you are building shared libraries and you used the DPDK submodule, DPDK does not get installed, so all of the SPDK applications won't run. 2) Same as 1, but for ISA-L. 3) The fio plugins don't get installed 4) bdevperf doesn't get installed (should we promote this to an official tool and put it into /bin?)
Expected Behavior
I don't know. If you are building SPDK with shared libraries against the DPDK submodule, DPDK needs to get installed on the system somehow. But what if the system already has DPDK installed?
The fio plugins seem like they should get installed, but where do we put them?
For bdevperf, if we decide it's time to promote this to an official tool, then we need to rename it to spdk_bdev_perf and put it into bin/ like everything else. This is just a decision to make - the mechanics of this one are easy.
Current Behavior
These things don't get installed.
Possible Solution
Maybe it shouldn't automatically install DPDK, but instead add a special
make install dpdk
? Maybe the fio plugins just go into the library install path?Steps to Reproduce
./configure --with-shared --with-fio=<> && make && make install
Context (Environment including OS version, SPDK version, etc.)
Pretend you're an end-user on a fresh Linux system and building a software package provided as source to be included into a container or to a system provided to other users.