-
Notifications
You must be signed in to change notification settings - Fork 25
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
Add documentation on how to build a hotfix #505
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -127,6 +127,47 @@ docker cp ${CONTAINER}:/root/BUILD/rpms/x86_64/ ./rpms/ | |
docker rm ${CONTAINER} | ||
``` | ||
|
||
## Building a Hotfix | ||
|
||
Sometimes it is necessary to apply a patch without rebuilding the whole release in order to | ||
deliver a fix quickly. This can be accomplished by building a hotfix rpm which will apply | ||
a series of patches. | ||
|
||
Create a patch file using `git format-patch` and copy to `rpm_spec/patches/`. You will have to modify the path to be relative to the RPM BUILDDIR. | ||
|
||
For example if we wanted to create a hotfix to apply a commit in radjabov `1286aa34992340cad7a0778df01a845f1772e561` we would run: | ||
```sh | ||
git format-patch -1 1286aa34992340cad7a0778df01a845f1772e561 | ||
``` | ||
|
||
Which will create a patch file: `0001-Merge-pull-request-23123-from-agrare-fix_miq_request.patch` | ||
|
||
Make sure to remove any changes to spec files, as these are not packaged with the RPMs and will cause a conflict when | ||
the patch is applied. | ||
|
||
Next we have to change the file location to match the RPM BUILDDIR, for a patch in the core rpm this will be e.g. `manageiq-core-18.0-1` | ||
|
||
``` | ||
diff --git a/manageiq-core-18.0-1/app/models/miq_provision_request_template.rb b/manageiq-core-18.0-1/app/models/miq_provision_request_template.rb | ||
index 621f20b7e7..f62f454ac5 100644 | ||
--- a/manageiq-core-18.0-1/app/models/miq_provision_request_template.rb | ||
+++ b/manageiq-core-18.0-1/app/models/miq_provision_request_template.rb | ||
``` | ||
|
||
This ensures that the hotfix patch will apply correctly when it is run. Then move that patch | ||
file to `rpm_spec/patches/` in the rpm_build repo. | ||
|
||
`docker build --pull --tag $USER/rpm_build:radjabov-hotfix .` | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FYI, I needed to supply the arch when building on my mac since we don't have aarch64 rpms in our manageiq rpm repository and my platform isn't the most common target arch: x86_64:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's probably an issue for all of the docker examples in this README. Maybe we split out a PR to update all of them to work on a mac? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh for sure... I'm trying to validate it since I'm in this neck of the woods anyway. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is podman the way to go on mac silicon macs now? Maybe we can drop the docker commands here now too There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not sure. That's what I'm using. 😉 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FYI, the next command also worked with podman:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah would be awesome if we could get one set of instructions that work for all, don't want to end up with another developer_setup with mac+ubuntu+centos yum+centos dnf for everything There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm using podman desktop, but docker is still "common" |
||
|
||
Create a `BUILD/hotfix` directory and copy the .src.rpm for the release that you want to | ||
build a hotfix against, for example `manageiq-release-18.0-1.el9.src.rpm` | ||
|
||
```sh | ||
docker run --rm -v `pwd`/OPTIONS:/root/OPTIONS -v `pwd`/BUILD:/root/BUILD $USER/rpm_build:radjabov-hotfix build_hotfix | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. NOTE instead of a separate volume map for the hotfix dir it seemed easier to just map There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I thought we already had this documented, but maybe not. @bdunne Please review. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah I didn't see any so this started as me just taking notes on what I had to do so we had something to reference in the future There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Having the docker command here is helpful So much time goes between needing to build rpms that I often forget. Re: "I thought we already had this documented" On the mac, mapping the I remember putting together documentation on this a while back but people seemed to disagree on the best approach. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Oh did you have hotfix documentation? Or you mean documentation on how to build rpms on a mac? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. My only addition is that I needed to manually clean the hotfix directory of everything but the srpm. It was listing the patch file multiple times in the rpm spec. I'll open a PR. We should just clean it before we copy over things. EDIT: Shockingly, I didn't get it to patch the files the first time, so I was getting:
I cleaned up the directory manually but then decided to fix the code so I'll open a PR with my changes. We can discuss it there. EDIT 2: Opened a PR to clean the hotfix directory to resolve this problem: #537 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sorry, one last thing... Note, I couldn't actually build a hotfix patch manageiq srpm. Everything else seems to be working, although the manageiq release value of 1 in the spec doesn't line up with the expectation of a date format seen here. I had to use the product srpm to actually test building a hotfix. |
||
``` | ||
|
||
The rpms for the hotfix will be in `BUILD/rpms`. | ||
|
||
## Versioning | ||
|
||
Branch `morphy` == v13 | ||
|
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'm not totally sure what you did here.
Can you show us a diff of the
fix_miq_request.patch
?Was it just a change to first line?
Yes, meta, a diff of a diff, but just trying to understand what was done here.
or maybe show it as a
sed
command?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.
We also need to mention that you should remove any spec files from the patches.
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.
@agrare Can you add the note about removing specs from the patch file?
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.
👍 done