Revision tags: v25.01-rc1 |
|
#
66289a6d |
| 06-Dec-2024 |
Konrad Sztyber <konrad.sztyber@intel.com> |
build: use VERSION file for storing version
This reduces the number of places to update whenever a version is bumped and also gives us an easy way to check the current version from scripts.
Signed-
build: use VERSION file for storing version
This reduces the number of places to update whenever a version is bumped and also gives us an easy way to check the current version from scripts.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I01d7240b6e07467548c211f1e505c1e1a34360af Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25523 Community-CI: Mellanox Build Bot Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <ben@nvidia.com> Reviewed-by: Jim Harris <jim.harris@nvidia.com>
show more ...
|
Revision tags: v24.09, v25.01-pre, v24.09-rc1, v24.05, v24.09-pre, v24.05-rc1, LTS, v24.01, v24.05-pre, v24.01-rc1, v23.09, v24.01-pre, v23.09-rc1 |
|
#
1e46e023 |
| 06-Sep-2023 |
Maciej Mis <maciej.mis@intel.com> |
go/rpc: Build configuration for go-rpc folder
Introduces new flags in configuration: --with-golang --without-golang
Change-Id: I5783b4ddfa53fc34ef7e921a6ee2aae0f4aadd44 Signed-off-by: Maciej Mis <m
go/rpc: Build configuration for go-rpc folder
Introduces new flags in configuration: --with-golang --without-golang
Change-Id: I5783b4ddfa53fc34ef7e921a6ee2aae0f4aadd44 Signed-off-by: Maciej Mis <maciej.mis@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19774 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
Revision tags: v23.05, v23.09-pre, v23.01.1 |
|
#
91c64673 |
| 16-Feb-2023 |
Sebastian Brzezinka <sebastian.brzezinka@intel.com> |
build: install python modules using setup.py
Add Makefile to install Python spdk modules, since python module path depend on distribution, add `pydir` variable to allow specify custom path.
Signed-
build: install python modules using setup.py
Add Makefile to install Python spdk modules, since python module path depend on distribution, add `pydir` variable to allow specify custom path.
Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com> Change-Id: I2a2ba50142d2804eb56a98fe092098e7f3a53fdc Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16950 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Community-CI: Mellanox Build Bot
show more ...
|
Revision tags: v23.01, v23.05-pre, v23.01-rc1, v22.01.2 |
|
#
784b9d48 |
| 04-Oct-2022 |
Alexey Marchuk <alexeymar@nvidia.com> |
isa-l_crypto: Add submodule
Add a new config option CONFIG_ISAL_CRYPTO which is set if both isa-l and isa-l-crypto are enabled. This config option will be used in next patch to enable SW crypto oper
isa-l_crypto: Add submodule
Add a new config option CONFIG_ISAL_CRYPTO which is set if both isa-l and isa-l-crypto are enabled. This config option will be used in next patch to enable SW crypto operations in accel fw
Signed-off-by: Alexey Marchuk <alexeymar@nvidia.com> Change-Id: I9cf6b754fb3888e21c05aa20bade21cf90d5d090 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14857 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com> Reviewed-by: <qun.wan@intel.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
show more ...
|
#
a6dbe372 |
| 01-Nov-2022 |
paul luse <paul.e.luse@intel.com> |
update Intel copyright notices
per Intel policy to include file commit date using git cmd below. The policy does not apply to non-Intel (C) notices.
git log --follow -C90% --format=%ad --date defa
update Intel copyright notices
per Intel policy to include file commit date using git cmd below. The policy does not apply to non-Intel (C) notices.
git log --follow -C90% --format=%ad --date default <file> | tail -1
and then pull just the 4 digit year from the result.
Intel copyrights were not added to files where Intel either had no contribution ot the contribution lacked substance (ie license header updates, formatting changes, etc). Contribution date used "--follow -C95%" to get the most accurate date.
Note that several files in this patch didn't end the license/(c) block with a blank comment line so these were added as the vast majority of files do have this last blank line. Simply there for consistency.
Signed-off-by: paul luse <paul.e.luse@intel.com> Change-Id: Id5b7ce4f658fe87132f14139ead58d6e285c04d4 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15192 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Community-CI: Mellanox Build Bot
show more ...
|
#
c996aff2 |
| 17-Oct-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
build: move protobuf files to a top-level directory
Up until now, the protobuf files were all located under `python/spdk/sma/proto`. This was fine, as they were only used in SMA and we only generat
build: move protobuf files to a top-level directory
Up until now, the protobuf files were all located under `python/spdk/sma/proto`. This was fine, as they were only used in SMA and we only generated python code. However, now, we would also like to to output code for other (e.g. go) languages too, so it no longer make sense to keep them under `python`.
Only the protobuf files will be stored under `proto`. The autogenerated python code will remain under `python`, while the go code will be put in the `go` directory.
While here, simplified the Makefile by removing a function generating rules based on a directory, because we keep all protobuf files in the same location.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I4dcb7b33cd6f2930732f04dee62e35571b09315b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15016 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Community-CI: Mellanox Build Bot
show more ...
|
Revision tags: v22.09, v23.01-pre, v22.09-rc1 |
|
#
b5689b38 |
| 22-Sep-2022 |
Michal Berger <michal.berger@intel.com> |
build: Make sure isa-l is built prior building dependent libs
In case SPDK is built with --with-dpdk[=*] rather than the submodule it starts building libs and isa-l together leading to:
SO libspd
build: Make sure isa-l is built prior building dependent libs
In case SPDK is built with --with-dpdk[=*] rather than the submodule it starts building libs and isa-l together leading to:
SO libspdk_util.so.5.1 /usr/bin/ld.bfd: cannot find -lisal collect2: error: ld returned 1 exit status make[2]: *** [/root/spdk/mk/spdk.lib.mk:86: /root/spdk/build/lib/libspdk_util.so.5.1] Error 1 make[1]: *** [/root/spdk/mk/spdk.subdirs.mk:16: util] Error 2 make: *** [/root/spdk/mk/spdk.subdirs.mk:16: lib] Error 2
To avoid this make sure that isa-l, being a hard dependency now, is always build before anything else.
Signed-off-by: Michal Berger <michal.berger@intel.com> Change-Id: I933900a756924458324062cd740d99e5ccb370f6 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14621 Reviewed-by: Pawel Piatek <pawelx.piatek@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
Revision tags: v22.05, v22.09-pre, v22.05-rc1, v22.01.1, v22.01, v22.01-rc1 |
|
#
6f338d4b |
| 19-Jan-2022 |
Krishna Kanth Reddy <krish.reddy@samsung.com> |
bdev : xNVMe BDEV module implementation
This implementation of xNVMe BDEV module supports the char-device / ioctl-over-uring, along with the "regular" io_uring, libaio, POSIX aio, emulated aio (via
bdev : xNVMe BDEV module implementation
This implementation of xNVMe BDEV module supports the char-device / ioctl-over-uring, along with the "regular" io_uring, libaio, POSIX aio, emulated aio (via threadpools) etc.
Code changes done : a. Addition of xNVMe submodule to SPDK b. Modification of RPC scripts to Create / Delete xNVMe BDEVs c. Implementation of xNVMe BDEV module
Signed-off-by: Krishna Kanth Reddy <krish.reddy@samsung.com> Change-Id: If814ca1c784124df429d283015a6570068b44f87 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11161 Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
#
488570eb |
| 03-Jun-2022 |
Jim Harris <james.r.harris@intel.com> |
Replace most BSD 3-clause license text with SPDX identifier.
Many open source projects have moved to using SPDX identifiers to specify license information, reducing the amount of boilerplate code in
Replace most BSD 3-clause license text with SPDX identifier.
Many open source projects have moved to using SPDX identifiers to specify license information, reducing the amount of boilerplate code in every source file. This patch replaces the bulk of SPDK .c, .cpp and Makefiles with the BSD-3-Clause identifier.
Almost all of these files share the exact same license text, and this patch only modifies the files that contain the most common license text. There can be slight variations because the third clause contains company names - most say "Intel Corporation", but there are instances for Nvidia, Samsung, Eideticom and even "the copyright holder".
Used a bash script to automate replacement of the license text with SPDX identifier which is checked into scripts/spdx.sh.
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Iaa88ab5e92ea471691dc298cfe41ebfb5d169780 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12904 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Dong Yi <dongx.yi@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: <qun.wan@intel.com>
show more ...
|
#
048fb36a |
| 05-Jan-2022 |
Konrad Sztyber <konrad.sztyber@intel.com> |
sma: initial Storage Management Agent structures
Storage Management Agent is a gRPC server that provides an abstraction layer above the SPDK RPC interface. The interface aims to provide a set of me
sma: initial Storage Management Agent structures
Storage Management Agent is a gRPC server that provides an abstraction layer above the SPDK RPC interface. The interface aims to provide a set of methods for managing various protocols (e.g. NVMe, virtio-blk) while hiding the details of a particular transport.
The external API is defined by `lib/python/spdk/sma/proto/sma.proto` protobuf file. It defines the generic gRPC service methods and their requests/responses. Device-specific messages are defined in their own files. This patch also defines messages for creating NVMe and NVMe/TCP devices.
This patch implements a gRPC service that delegates the work to a specific device type. A DeviceManager is a class that implements some of the methods defined by the service for a given type of devices (e.g. NVMe, virtio-blk, NVMe/TCP, etc.). For now, only the RPC for creating a device is implemented, others are added in subsequent patches.
The series implements the generic calls as well as their NVMe/TCP implementation. Support for other devce types could be easily added by creating a new device manager and defining its protobuf parameter definition.
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I17cde3b31d3514878f1027cfcd112b48848f6123 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10273 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
Revision tags: v21.10, v21.10-rc1 |
|
#
92e75dfc |
| 12-Aug-2021 |
Jim Harris <james.r.harris@intel.com> |
build: remove lib/.gitignore
This isn't required - we already have the whole build/ directory in the top level .gitignore.
When we remove build/lib/.gitignore, it means build/lib directory must be
build: remove lib/.gitignore
This isn't required - we already have the whole build/ directory in the top level .gitignore.
When we remove build/lib/.gitignore, it means build/lib directory must be created somewhere before we try to place a library there. Top-level builds get this directory created automatically, but building directly from a sub-directory's Makefile means we need to explicitly create build/lib. So add a mkdir -p to the LIB_C macro to do exactly that to cover these cases.
Also simplify 'make clean' at the top level Makefile. A lot of work went in there to work around this .gitignore file that's not needed now that we've fixed the underlying problem by getting rid of it.
Suggested-by: John Levon <john.levon@nutanix.com> Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ibb92ff84d8c2a9bbe3e193c84f15ef3866f07b1f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9169 Reviewed-by: Nick Connolly <nick.connolly@mayadata.io> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
show more ...
|
Revision tags: v21.07, v21.07-rc1 |
|
#
7232c450 |
| 15-Jun-2021 |
Michal Berger <michalx.berger@intel.com> |
configure: Build against installed DPDK instance
Interpret bare --with-dpdk opt as user's request to find installed (provided by the distro) DPDK's libs|include files and use them during the build.
configure: Build against installed DPDK instance
Interpret bare --with-dpdk opt as user's request to find installed (provided by the distro) DPDK's libs|include files and use them during the build.
Signed-off-by: Michal Berger <michalx.berger@intel.com> Change-Id: I9da99671b95af0121194b3a6d53636b0ded71f1b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8348 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Tom Nabarro <tom.nabarro@intel.com> Reviewed-by: <tomasz.rochumski@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
Revision tags: v21.04, v21.04-rc1 |
|
#
119158cd |
| 17-Apr-2021 |
Rajarshi Chowdhury <rajarshi.chowdhury@oracle.com> |
configure: Added --disable-apps option.
Together with options to disable examples, tests and unit-tests this will enable us to build SPDK without linking any executables.
This is useful for packagi
configure: Added --disable-apps option.
Together with options to disable examples, tests and unit-tests this will enable us to build SPDK without linking any executables.
This is useful for packaging SPDK in applications - especially those using own ENV.
Fixes #1877
Signed-off-by: Rajarshi Chowdhury <rajarshi.chowdhury@oracle.com> Change-Id: I0467ec497d2abe2fad40cdb4ba723a240bee46d6 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7462 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
show more ...
|
Revision tags: v21.01.1 |
|
#
6e2c2306 |
| 10-Feb-2021 |
Jacek Kalwas <jacek.kalwas@intel.com> |
build: install generated pkg-config files
Signed-off-by: Jacek Kalwas <jacek.kalwas@intel.com> Change-Id: I191ad5e3b153fb563256eba1aa695716f66db788 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/
build: install generated pkg-config files
Signed-off-by: Jacek Kalwas <jacek.kalwas@intel.com> Change-Id: I191ad5e3b153fb563256eba1aa695716f66db788 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6377 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
show more ...
|
#
9854c138 |
| 03-Mar-2021 |
Nick Connolly <nick.connolly@mayadata.io> |
mk: add support for mingw builds
MinGW builds require a thin layer above the standard libraries to provide POSIX functionality that is missing on Windows. Add support for building this.
MinGW cross
mk: add support for mingw builds
MinGW builds require a thin layer above the standard libraries to provide POSIX functionality that is missing on Windows. Add support for building this.
MinGW cross builds are experimental and work is ongoing to integrate them into the CI and test environment. Including the changes at this stage is being done to facilitate that process.
The layer has been arranged in the same way as DPDK and is accessed as an external build using ./configure --with-wpdk=<dir>. Support has also been added for using a default ./wpdk in preparation for reaching the required level of stability.
The help text for ./configure indicates that support for --with-wpdk is experimental.
Further details and instructions can be found at https://wpdk.github.io.
Signed-off-by: Nick Connolly <nick.connolly@mayadata.io> Change-Id: Iff0f705789f19fb193dcb3c9090c3e90613a8d9a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6589 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|
Revision tags: v21.01, v21.01-rc1, v20.10, v20.10-rc1 |
|
#
79f9a7f5 |
| 24-Sep-2020 |
Jim Harris <james.r.harris@intel.com> |
build: generate pkg-config files for SPDK
Users can now generate the necessary linker args for their own applications using something like:
PKG_CONFIG_PATH=build/lib/pkgconfig pkg-config --libs spd
build: generate pkg-config files for SPDK
Users can now generate the necessary linker args for their own applications using something like:
PKG_CONFIG_PATH=build/lib/pkgconfig pkg-config --libs spdk_nvme
Dependencies between libraries are included in the generated .pc files, so the user only needs to pass the top-level subsystems or individual SPDK libraries they are using in their application.
Modules will automatically be added to the output if the associated library is specified. For example, specifying "spdk_bdev" will include the libraries not only for spdk_bdev, but also all of the bdev modules.
Users still need to supply the -Wl,--no-as-needed or -Wl,--whole-archive flags. They cannot be added to the .pc files without increasing the length of the argument string by a factor of 15x to 20x.
Modify the test/external_code/hello_world Makefile to use pkg-config to ensure this gets tested at some level in our autotest environment.
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ie48a75f11969d5d775d514cf10bcb82d197eabfd Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4371 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
show more ...
|
#
b30d57cd |
| 02-Nov-2020 |
Changpeng Liu <changpeng.liu@intel.com> |
libvfio-user: include libvfio-user as a submodule with SPDK
Also add a CONFIG_VFIO_USER config flag, it's enabled by default.
Change-Id: I18b44c024a264516a60f743d5c366a4c7f7c6785 Signed-off-by: Cha
libvfio-user: include libvfio-user as a submodule with SPDK
Also add a CONFIG_VFIO_USER config flag, it's enabled by default.
Change-Id: I18b44c024a264516a60f743d5c366a4c7f7c6785 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5000 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
fe87dcad |
| 31-Aug-2020 |
Alexey Marchuk <alexeymar@mellanox.com> |
mk: Remove the content of build/lib in "clean" target
Leaving old libraries leads to incorrectly generated libspdk.so - e.g. when we configure spdk using --with-uring and after that using --without-
mk: Remove the content of build/lib in "clean" target
Leaving old libraries leads to incorrectly generated libspdk.so - e.g. when we configure spdk using --with-uring and after that using --without-uring then libspdk_bdev_uring.so will remain in build/lib and will become part of spdk.so built using --without-uring
Change-Id: If482e9cf323b58f3f588b7c3bdb629425ae0ceeb Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3986 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom CI Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
show more ...
|
Revision tags: v20.07, v20.07-rc1, v20.04.1, v20.01.2, v20.04, v20.04-rc1 |
|
#
6b41a086 |
| 23-Mar-2020 |
Darek Stojaczyk <dariusz.stojaczyk@intel.com> |
dpdkbuild: build dpdk with meson+ninja
Makefile support in DPDK was deprecated and will be removed soon, so switch to the officially supported way of building DPDK - with meson and ninja. Two new to
dpdkbuild: build dpdk with meson+ninja
Makefile support in DPDK was deprecated and will be removed soon, so switch to the officially supported way of building DPDK - with meson and ninja. Two new tools. Basically, our Makefiles will invoke meson+ninja for DPDK, no other SPDK components are affected.
Apparently DPDK wanted to move away from an octopus-like config system and the ideology behind meson configuration is simple now: build everything by default. Some PMDs can be explicitly disabled with meson command line, but all libraries (both static and shared versions) and test apps are built unconditionally.
How long does it take to build minimal DPDK with meson? Too much. On my machine half of the total build time is spent on libraries we don't need at all. (I have some hacks up my sleeve to disable building those libraries - see the subsequent patch.) As for the official way of building a minimal DPDK, there was a patch [1] on dpdk mailing list to introduce more specific configuration, but it was rejected:
> We talked about this a few times in the past, and it was actually one > of the design goals to _avoid_ replicating the octopus-like config > system of the makefiles. That's because it makes the test matrix > insanely complicated, not to mention the harm to user friendliness, > among other things. > > If someone doesn't want to use a PMD, they can just avoid installing it > - it's simple enough. > > Sorry, but from me it's a very strong NACK.
Let's not follow that direction, hack the DPDK build system instead.
As for advantages of meson+ninja over Makefiles? I can't find any. It's another build system that does a lot for you with some functions, magic options, and a built-in dependency system. It seems nice if you know the syntax, but it's another component that you need to learn, debug, and possibly find bugs in (there's a lot of github issues open for meson). I would compare it to CMake.
As for changes in this patch: rather that explicitly disabling PMDs we don't need, specify a list of PMDs we do need and disable everything else found in ./dpdk/drivers/*. This way we won't have to disable the new PMDs as they're added to DPDK.
Meson configuration also sets RTE_EAL_PMD_PATH #define to a valid directory with built PMD shared libs. When it's set, DPDK dynamically loads all shared libraries inside. The drivers there depend on DPDK shared libs and fail to load in static SPDK builds, so we disable them altogether by unsetting RTE_EAL_PMD_PATH in the meson-generated config file - just like DPDK Makefiles did. EAL checks for RTE_EAL_PMD_PATH being empty and skips loading any external PMDs then. We do it for both static and shared libs. We specify all PMDs at build time for now, so there's just no need to load them dynamically.
We have three more hacks in our submodule: * disable building dpdk apps by commenting-out a line in dpdk/meson.build * disable building unnecessary libs (build everything that spdk *may* need) * build isa-l compress pmd with `-L[...] -lisal`. DPDK expects to find libisal with pkg-config. We don't want to prepare a pkg-config file, so comment-out a failing check in another meson.build file and provide isa-l through CFLAGS and LDFLAGS.
We also need to make some changes to our test/external_code. First of all, -ldpdk is no more. Meson build generates a pkg-config file with all libs, but we'll switch to it in a separate patch - for now just specify all -lrte_ libs one by one. -Wl,--no-as-needed has to be added to some test cases, otherwise rte_mempool_ring isn't loaded. We don't use any APIs from this library, it only has a static constructor that provides a few callbacks used by rte_mempool_create(). Also, since DPDK now builds both static and shared libraries, we need to add -Wl,-Bstatic to force using static libswhere required. It's only needed for DPDK libs, but we use it for SPDK libs as well since there's no harm.
As for performance: $ ./configure --enable-debug --with-crypto --with-reduce $ time make -j40 -C dpdkbuild all with meson: real 0m8.287s user 1m7.983s sys 0m10.548s
before, with the old DPDK makefiles: real 0m20.232s user 0m55.921s sys 0m16.491s
The subsequent builds are much faster too: $ time make -j40 -C dpdkbuild all meson: real 0m0.876s user 0m0.663s sys 0m0.217s
makefiles: real 0m10.150s user 0m11.740s sys 0m6.772s
[1] http://inbox.dpdk.org/dev/1a07d1cd59d84dce84e56c10fdabf5e5504560a6.camel@debian.org/
Change-Id: Ic65db563014100bafb12e61ee0530cc2ae64401d Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1440 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
3352b2a7 |
| 11-May-2020 |
Ben Walker <benjamin.walker@intel.com> |
build: Copy headers to build/include on build
For completeness, now all output is placed into build/ in the appropriate location. In the future, 'make install' can be changed to simply copy from the
build: Copy headers to build/include on build
For completeness, now all output is placed into build/ in the appropriate location. In the future, 'make install' can be changed to simply copy from there instead of rebuilding.
Signed-off-by: Ben Walker <benjamin.walker@intel.com> Change-Id: I236b37868b5f4a2d5c5b910090aeaa9dff0501e2 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2381 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
#
85bdd43b |
| 11-May-2020 |
Ben Walker <benjamin.walker@intel.com> |
build: Example applications build to build/example
This mirrors build/bin and build/lib
Change-Id: Ide1d17dfc8b425adfbe67f381c93c236653bd301 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Re
build: Example applications build to build/example
This mirrors build/bin and build/lib
Change-Id: Ide1d17dfc8b425adfbe67f381c93c236653bd301 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2380 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
show more ...
|
#
c3b5ae0c |
| 28-May-2020 |
Ben Walker <benjamin.walker@intel.com> |
build: Place fio plugins into build/fio
This makes them easier to find. They are now named spdk_nvme and spdk_bdev.
Signed-off-by: Ben Walker <benjamin.walker@intel.com> Change-Id: I1f6736d8f7f5b96
build: Place fio plugins into build/fio
This makes them easier to find. They are now named spdk_nvme and spdk_bdev.
Signed-off-by: Ben Walker <benjamin.walker@intel.com> Change-Id: I1f6736d8f7f5b9669583731fb0b710ba54f0d50a Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2679 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
show more ...
|
#
6b9b448e |
| 11-May-2020 |
Ben Walker <benjamin.walker@intel.com> |
build: Output executables from the app directory to build/bin
Automatically place binaries produced from the app directory into build/bin. This matches with the output in build/lib that already exis
build: Output executables from the app directory to build/bin
Automatically place binaries produced from the app directory into build/bin. This matches with the output in build/lib that already exists.
Change-Id: I13cd2da71d2f88592e22308fe8a907bf458458b5 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2379 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
show more ...
|
#
290d058a |
| 20-May-2020 |
Ben Walker <benjamin.walker@intel.com> |
build: Make (DIRS-y) depend on mk/cc.mk
In parallel make, it was previously possible for sub-directories to start compiling before mk/cc.mk was checked. This doesn't really cause a problem, but set
build: Make (DIRS-y) depend on mk/cc.mk
In parallel make, it was previously possible for sub-directories to start compiling before mk/cc.mk was checked. This doesn't really cause a problem, but set up the dependencies to ensure it is always checked before proceeding with the compilation.
Signed-off-by: Ben Walker <benjamin.walker@intel.com> Change-Id: I9152095eaebf21e242aa5472f800f036fe8d0751 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2554 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
show more ...
|
Revision tags: v20.01.1 |
|
#
9fcb1cb0 |
| 06-Mar-2020 |
Tomasz Zawadzki <tomasz.zawadzki@intel.com> |
build: add option to disable building unit tests
If unit tests are not required, add option to disable them.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I387ec043fd47d3033
build: add option to disable building unit tests
If unit tests are not required, add option to disable them.
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I387ec043fd47d3033726a51ab673752a521d45c0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1171 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
show more ...
|