[LU-5903] make lbuild work without any command line arguments Created: 11/Nov/14 Updated: 13/Nov/14 |
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Bob Glossman (Inactive) | Assignee: | WC Triage |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | llnl | ||
| Rank (Obsolete): | 16493 |
| Description |
|
After some discussion on Skype with Brian Murrell I'm entering this ticket for lbuild. Currently lbuild works well for reproducibly building kernel and lustre rpms in our Jenkins build environment. If it could be made to perform argument free it would be more useful for manual builds in other than Jenkins. This would have a number of advantages over other documented methods like those on our wiki pages: It would also be nice if lbuild could optionally keep around the patched kernel source tree after the build finishes instead of cleaning it all up and deleting it. Having the sources around for reference is an invaluable resource for many developers. Brian advises "nothing comes to mind immediately about why that cannot work" |
| Comments |
| Comment by Christopher Morrone [ 11/Nov/14 ] |
|
I am going to vote a big thumbs down for this approach. I agree that lbuild builds things in a weird way that is unlike what anyone else would do at the command line, or anywhere else. But the solution is not to make lbuild the One Tool To Rule Them All. Instead, you should put that effort into moving the Intel Jenkins build system in a direction that is more in line with what everyone else in the world does to build packages. For the rpm builds, that means not dissembling the rpms with rpm2cpio/cpio. It also most likely means moving to a some kind of mock-based build system. The more you focus on expanding the usage of lbuild's bizarre way of building things, the less exposure the core Intel Lustre team will have to the completely normal ways of building things that other people use. You'll break things for normal build patterns even more often than you currently do (quite often). Please, just don't do it. We're already at our wits' end with the Lustre build system, and this is just going to take things further in the wrong direction. |
| Comment by Andreas Dilger [ 13/Nov/14 ] |
|
Two suggestions I've made about lbuild before and can make again here:
|
| Comment by Brian Behlendorf [ 13/Nov/14 ] |
|
For whatever it's worth let me offer a few observations and my personal lessons learned based on my experience building kmods for ZFS.
|
| Comment by Brian Murrell (Inactive) [ 13/Nov/14 ] |
|
adilger: Or turn it around so that lbuild uses make rpms for it's Lustre building part of the process rather than doing it's own thing. At least then make rpms gets regular testing and is known to produce the same thing that lbuild will produce as far as RPMs for Lustre itself. behlendorf: Absolutely agreed about avoiding patching the kernel. That would remove the entire need to [re-]build a kernel in lbuild. But sadly, patching the kernel is still a requirement for Lustre. I'm not sure where we stand on eliminating that. adilger would have a much better idea on that than I. Also agreed on make {dist,srpms,rpms}. I think that's how it works already. Admittedly though it's been a while since I had my fingers in Lustre's Makefile though. |
| Comment by Christopher Morrone [ 13/Nov/14 ] |
Yes, that would make much more sense. lbuild is a high level script that builds many packages (e.g. Linux, Lustre, IB packages, ZFS.) It is part of the Intel automated build system, not part of the Lustre build system. That is why lbuild was relocated to the contrib subdirectory. Nothing in lbuild is necessary to build Lustre, and we should strive to keep it that way. Lustre's internal build system calling out to lbuild would be a laying violation.
Currently that is not the case. make srpm makes a source rpm. make rpm ignores make srpm's product entirely and goes ahead and rebuilds the source rpm in addition to building the binary rpms. Livermore's 2.5.3-llnl branch has a patch that accomplishes that (see github.com/chaos/lustre). There are three patches on that branch labelled " In the mean time, I created |