-
Notifications
You must be signed in to change notification settings - Fork 301
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SRE-2452 rpms: Script to build RPMs from scratch #15419
base: master
Are you sure you want to change the base?
Conversation
Errors are Unable to load ticket data |
Test stage Unit Test on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/5/display/redirect |
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/5/display/redirect |
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/9/display/redirect |
Test stage Unit Test bdev on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/20/display/redirect |
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/20/display/redirect |
Test stage Unit Test with memcheck on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/20/display/redirect |
Test stage Unit Test on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/20/display/redirect |
Test stage Unit Test bdev with memcheck on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/20/display/redirect |
Test stage Unit Test bdev on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/23/display/redirect |
Test stage Unit Test bdev on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/24/display/redirect |
Test stage NLT on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/31/display/redirect |
Test stage Unit Test with memcheck on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/31/display/redirect |
Test stage Unit Test on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/31/display/redirect |
Test stage Unit Test bdev with memcheck on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/31/display/redirect |
Test stage Unit Test bdev on EL 8.8 completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/31/display/redirect |
f580fdf
to
f0a36da
Compare
Script to build all RPMs, including dependencies on RockyLinux 8 and 9. Introduces a new GHA workflow file for running the script. Signed-off-by: Ryon Jensen <ryon.jensen@intel.com> Doc-only: true
f0a36da
to
9df01c7
Compare
Signed-off-by: Ryon Jensen <ryon.jensen@intel.com> Doc-only: true
0405f72
to
c717e40
Compare
5c6335f
to
7aaed8c
Compare
Signed-off-by: Ryon Jensen <ryon.jensen@intel.com> Doc-only: true
7aaed8c
to
93b3ad5
Compare
Signed-off-by: Ryon Jensen <ryon.jensen@intel.com>
Test stage Functional Hardware Medium Verbs Provider completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/43/display/redirect |
Test stage Functional Hardware Medium completed with status FAILURE. https://build.hpdd.intel.com/job/daos-stack/job/daos/job/PR-15419/43/display/redirect |
utils/build_rpms_from_scratch.sh
Outdated
rpmdevtools \ | ||
createrepo_c \ | ||
make \ | ||
python3-Sphinx |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any idea what are requiring this? If it's failing rpmbuild
s that's a packaging bug.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a comment for python3-Sphinx:
# python3-Sphinx is needed by dpdk. The file /usr/bin/sphinx-build is listed as a dependency in the spec file,
# however, zypper isn't able to resolve a filename to a package and the scripting to handle that case is pretty
# messy, especially because "zypper what-provides" actually returns three options for sphinx-build. So, forgoing
# automation here and simply hardcoding the dependency.
I recognize it's not ideal, but weighing the effort and complexity (at least for me) for managing the dependency dynamically compared to hardcoding it and dealing with the impact on maintainability, I chose this approach. Definitely open to suggestions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So that dpdk
needs it means that the BuildRequires:
in dpdk.spec
should specify it. Did you get a failure to build dpdk
without it? If you had a link to the failure that'd be awesome.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BuildRequires:
specifies /usr/bin/sphinx-build
, however, zypper doesn't resolve filenames to packages to install.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The other approach is that even if you want to continue to use zypper
for the bulk of this script, recognize that zypper
is inferior (or we are just ignorant) in regards to installing build-dependencies and install and use dnf
for that. Perhaps if we are more obvious about this short-coming (or our ignorance) in zypper
, somebody with more knowledge of zypper
that is using and looking at this script can find/suggest a better way.
But I think by simply adding python3-Sphinx
as an exception to the package install list here we are making the issue much (much!) more subtle than if we were to use dnf
with a nice big comment about why we are using it.
git clone https://github.com/daos-stack/"$repo_name".git | ||
cd "$repo_name" | ||
install_dependencies "$repo_name".spec | ||
make rpms RPM_BUILD_OPTIONS="--nocheck" # --nocheck = don't run tests during rpm build process |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
make rpms RPM_BUILD_OPTIONS="--nocheck" # --nocheck = don't run tests during rpm build process | |
MAKEARGS=() | |
if [ -f Makefile-rpm.mk ]; then | |
MAKEARGS=(-f Makefile-rpm.mk) | |
fi | |
if [ -d utils/rpms ]; then | |
MAKEARGS+=(-C utils/rpms) | |
fi | |
make "${MAKEARGS[@]}" rpms RPM_BUILD_OPTIONS="--nocheck" # --nocheck = don't run tests during rpm build process |
will let you use this for raft and daos also and be future-proof against any other project that utilizes these exceptions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's a little more complicated than this. build_and_copy_rpm also clones the repo and because raft is a submodule of daos, the daos repo must be cloned first, then raft rpms built, then daos rpms can be built. So a bit of a chicken and egg issue with the way I wrote build_and_copy_rpms. I appreciate the help trying to remove the redundancy, though. I've probably already spent too much time trying to figure out how to remove the duplicate code without making things too complicated.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's a little more complicated than this.
I don't think it is.
build_and_copy_rpm also clones the repo and because raft is a submodule of daos, the daos repo must be cloned first, then raft rpms built, then daos rpms can be built.
You can clone and build the raft repo independently of daos just like you do the other dozen repos. There is no need to clone daos and build raft out of the daos clone.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My concern is getting the correct raft commit that's actually used for daos. The 'fun' of it being a submodule is it doesn't have to be the tip of master. Right now it looks like the submodule daos uses is 1 commit behind the tip of master.
Doc-only: true Signed-off-by: Ryon Jensen <ryon.jensen@intel.com>
3fd1c84
to
fe221af
Compare
os: ["rockylinux:8.6", | ||
"rockylinux:8.8", | ||
"rockylinux:8.10", | ||
"rockylinux:9.2", | ||
"rockylinux:9.3", | ||
"opensuse/leap:15.4", | ||
"opensuse/leap:15.5", | ||
"opensuse/leap:15.6"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if using our self-hosted runner and therefore our own docker hub/cache, you will find more of these older versions. @JohnMalmberg Would we have these old point releases in our docker runners?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the docker runners we are only keeping rockylinux8 and 9 up to date, no dot releases.
We have opensuse/leap:15.[2-5] and opensuse/leap-dnf:15.[4-5]
Just updated so that soon they will have leap and leap-dnf 15.6 and Fedora:41
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the docker runners we are only keeping rockylinux8 and 9 up to date, no dot releases.
This is a good case why it would be useful if we were keeping the EL point releases in our docker hub.
Doc-only: true Signed-off-by: Ryon Jensen <ryon.jensen@intel.com>
- DRY-ed some stuff - Fixed use of wrong variable - Fixed miss of directory change Doc-only: true Signed-off-by: Ryon Jensen <ryon.jensen@intel.com>
Doc-only: true Signed-off-by: Ryon Jensen <ryon.jensen@intel.com>
Script to build all RPMs, including dependencies.
Before requesting gatekeeper:
Features:
(orTest-tag*
) commit pragma was used or there is a reason documented that there are no appropriate tags for this PR.Gatekeeper: