Conversation
tldahlgren
left a comment
There was a problem hiding this comment.
Confirmed the branch and 14 tags exist. Have a quick question about a possible conflict.
| variant("vhost", default=False, description="Build vhost target") | ||
| variant( | ||
| "virtio", default=False, description="Build vhost initiator and virtio-pci bdev modules" | ||
| ) |
There was a problem hiding this comment.
Given the description, should there be a conflict if ~vhost+virtio?
There was a problem hiding this comment.
@tldahlgren , that's a good catch!
I thought it will fail but test passed with ~vhost+virtio:
@soumagne wrote the initial code for this package.
Thus, I'd like to defer to @soumagne 's opinion.
There was a problem hiding this comment.
@mchaarawi, can you answer my question since @soumagne is not responding?
There was a problem hiding this comment.
i am not familiar with this. you better ask the spdk community: https://spdk.io/community/
There was a problem hiding this comment.
@hyoklee sorry I had missed your earlier question. Same comment here as for the other packages, you want to remove the previous versions first and clean up the options. This package is particularly problematic because earlier versions were lacking install rules etc. The options passed here are based on what daos uses and some of these options only exist in specific spdk versions.
|
Looks like there's an issue with a dependency: |
@tldahlgren , I think Action ran before 9f3f4b3 is merged. @spackbot run pipeline |
|
I'm sorry, gitlab does not have your latest revision yet, I can't run that pipeline for you right now. One likely possibility is that your PR pipeline has been temporarily deferred, in which case, it is awaiting a Please check the gitlab commit status message to see if more information is available. DetailsUnexpected response from gitlab: {'message': '404 Commit Not Found'} |
|
See #35647 for dpdk dependency error. |
| "vtune", | ||
| ) | ||
|
|
||
| depends_on("[email protected]:") |
There was a problem hiding this comment.
are you using an external dpdk in that case also ? where is it specified in the command line ?
| if os.path.isfile(join_path("dpdk", "build", "lib", file)): | ||
| install(join_path("dpdk", "build", "lib", file), prefix.lib) | ||
| mkdir(join_path(prefix.include, "dpdk")) | ||
| install_tree("dpdk/build/include", join_path(prefix.include, "dpdk")) |
There was a problem hiding this comment.
this part was previously added to install the dpdk module from spdk. So maybe you should make a variant, something like +dpdk that installs all those files as an option ? This way you don't need the dependency on dpdk anymore and daos should be happy with it. You might want to also add a conflict with dpdk if the variant is enabled (just in case someone is using the dpdk package somewhere else).
There was a problem hiding this comment.
Thanks again for the review. So, I can delete those lines if I use +dpdk variant. Did I understand your comment correctly?
|
@tldahlgren would you please merge this? |
It needs to pass the required CI check. Let me see what I can do. |
DAOS doesn't link dpdk properly if it tires to use spdk-built dpdk. I think it's the nature of Spack Scons package that daos uses. It's similar to failure that Spack-installed hwloc is not being picked up by DAOS. |
|
@tldahlgren , would you please merge this package since all checks passed? I don't see any further comment from @soumagne . |
|
@hyoklee unfortunately it will be difficult for me to find sufficient time to set GitHub actions and work on that issue. The package as it is right now is incorrect because you are adding a dependency on the wrong |
|
@soumagne , here's the error output: |
|
I see thanks @hyoklee let me have a look, we should be able to fix that. |
| maintainers("hyoklee") | ||
|
|
||
| version("master", branch="master", submodules=True) | ||
| version("23.01", tag="v23.01", submodules=True) |
There was a problem hiding this comment.
This is the version used by DAOS 2.2, see: https://github.com/daos-stack/daos/blob/v2.2.0/utils/build.config
| version("23.01", tag="v23.01", submodules=True) | |
| version("22.01.1", tag="v22.01.1", submodules=True) |
| def install_dpdk_files(self): | ||
| spec = self.spec | ||
| prefix = self.prefix | ||
|
|
||
| dpdk_build_dir = join_path(spec["dpdk"].prefix, "lib") | ||
|
|
||
| install_tree(join_path(dpdk_build_dir, "pkgconfig"), join_path(prefix.lib, "pkgconfig")) | ||
|
|
||
| for file in os.listdir(dpdk_build_dir): | ||
| f = join_path(dpdk_build_dir, file) | ||
| if os.path.isfile(f): | ||
| install(f, prefix.lib) | ||
|
|
||
| mkdir(join_path(prefix.include, "dpdk")) | ||
| install_tree(join_path(spec["dpdk"].prefix, "include"), join_path(prefix.include, "dpdk")) | ||
|
|
||
| @run_after("install") | ||
| def install_additional_files(self): | ||
| spec = self.spec | ||
| prefix = self.prefix | ||
| if "+dpdk" in spec: | ||
| self.install_dpdk_files() | ||
| # Copy the config.h file, as some packages might require it. | ||
| mkdir(prefix.share) | ||
| mkdir(join_path(prefix.share, "spdk")) | ||
| install_tree("examples/nvme/fio_plugin", join_path(prefix.share, "spdk", "fio_plugin")) | ||
| install_tree("include", join_path(prefix.share, "spdk", "include")) | ||
| install_tree("scripts", join_path(prefix.share, "spdk", "scripts")) |
There was a problem hiding this comment.
I think we can remove all these if we do the dpdk dependency method, this way there won't be any conflict and that should allow you to build. You'll just need to track the dpdk version used whenever you add a newer version of spdk.
| def install_dpdk_files(self): | |
| spec = self.spec | |
| prefix = self.prefix | |
| dpdk_build_dir = join_path(spec["dpdk"].prefix, "lib") | |
| install_tree(join_path(dpdk_build_dir, "pkgconfig"), join_path(prefix.lib, "pkgconfig")) | |
| for file in os.listdir(dpdk_build_dir): | |
| f = join_path(dpdk_build_dir, file) | |
| if os.path.isfile(f): | |
| install(f, prefix.lib) | |
| mkdir(join_path(prefix.include, "dpdk")) | |
| install_tree(join_path(spec["dpdk"].prefix, "include"), join_path(prefix.include, "dpdk")) | |
| @run_after("install") | |
| def install_additional_files(self): | |
| spec = self.spec | |
| prefix = self.prefix | |
| if "+dpdk" in spec: | |
| self.install_dpdk_files() | |
| # Copy the config.h file, as some packages might require it. | |
| mkdir(prefix.share) | |
| mkdir(join_path(prefix.share, "spdk")) | |
| install_tree("examples/nvme/fio_plugin", join_path(prefix.share, "spdk", "fio_plugin")) | |
| install_tree("include", join_path(prefix.share, "spdk", "include")) | |
| install_tree("scripts", join_path(prefix.share, "spdk", "scripts")) |
|
@soumagne , do you have any patch for the errors that I reported? |
|
yes I explicitly made suggestions to fix the package and address the errors. Did you not see them ? Have you included those and addressed my comments? |
I applied them and they did not work. Please see the inline replies that I've already made. |
|
which inline replies ? I do not see anything. |
Sorry, they were pending. I submitted them and I think you can see them now. |
|
It's weird. My comment is still "Pending" |
|
I still cannot see anything except that you marked some of the comments as resolved although they are not. |
|
ok I'll have a look at that compile error. |
| "vtune", | ||
| ) | ||
|
|
||
| depends_on("[email protected]:") |
| if os.path.isfile(join_path("dpdk", "build", "lib", file)): | ||
| install(join_path("dpdk", "build", "lib", file), prefix.lib) | ||
| mkdir(join_path(prefix.include, "dpdk")) | ||
| install_tree("dpdk/build/include", join_path(prefix.include, "dpdk")) |
There was a problem hiding this comment.
Thanks again for the review. So, I can delete those lines if I use +dpdk variant. Did I understand your comment correctly?
|
@soumagne , any progress? |
|
no sorry I haven't been able to get to that yet. In the meantime I would suggest you just delete the part that installs the additional files, that should not be needed. |
|
@tldahlgren , would you please merge this PR? |
|
Thank you so much, @tldahlgren and @soumagne ! |

The Storage Performance Development Kit (SPDK) provides a set of tools
and libraries for writing high performance, scalable, user-mode storage
applications.