Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
None
-
None
-
5154
Description
I think that we need to take a step back and address some fundamental problems with the lustre spec file.
My number one complaint is that lustre source rpms are not buildable (using rpmbuild) in any sane fashion. This has been a constant source of work for folks here at Livermore, because our entire automated build infrastructure is built around the concept of taking source rpms as input and generating binary rpms.
Because the lustre srpms are not buildable, no one tries to do that (except for us). So we fix things for us, but then almost every time the spec file is touched, it breaks something for us again.
I think we need to get on the same page, and finally clean up the lustre spec file. I think the requirements here are:
1) lustre srpm must be rebuildable
2) spec file must take sane options, to allow configuration of lustre at srpm rebuild time
3) must make no attempt to parse options out of configure_args
I think the greatest area of pain will be dealing with "make rpms". The current way that the build system passes option from the initial configuration step down through make rpms and into the spec file is, at best, jerry-rigged. Passing a single giant "configure_args" define into rpmbuild and then parsing out options to set rpm variables is just backwards from the way that that an rpm spec file SHOULD work.
A spec file should take options (rpmbuild -with/-without options when applicable), and then assemble a configure line based on THAT.
Another example of the spec file having it the wrong-way around is "is_client". In order to perform a build that leaves out the server code and rpm dependencies, you set the package NAME! Thats crazy, for not the least reason that now no one can choose to name the package differently when they want a client-only build.
A better approach is to have an rpmbuild "--without servers" option. That sets a variable in the spec file. The spec file uses that flag to conditionally include Requires directives and such, and the lustre package name is changed to "lustre-client" IFF the lustre_name variable has not already been set. This would allow me, for instance, to generate a set of binary rpms with a package name of "lustre-orion", and also make it a client-only build. I cannot accomplish that with the current spec file.
So now the big question: Do we need "make rpms" at all? Where is it really needed? I suspect that Whamcloud's build farm uses it, but I think that you guys should really switch to generating binary rpms from a single source rpm once we get that working reliably.
If we do, I think there are ways that we can make that work with a spec file and source rpm that are done the Right Way, but if we can just drop it altogether that would certainly be easier.
I see little value in having the tracking ticket marked fixed in a release where the work is clearly unfinished. Further, what bothers me more than duplicating the tracking ticket is the cloning of all of the subtasks, which serves no clear purpose. The subtask cloning just makes everything very hard to understand in jira.
The subtask is usually much more simple and clean. There is no good reason to have it appear under two different tracking tickets. We have two main subtask states: finished and unfinished.
Finished subtasks should not be cloned forward to the new tracker. There is no value there. They were finished and closed under the old tracker, no need to clone.
Then there are the unfinished tasks, there is no reason for them to remain connected to the old tracker since they were not completed there. There is very little value (none that I can see) in closing the unfinished ticket under the old tracker and having an new clone ticket opened under the new tracker.
Ultimately I don't really understand the desire to close the tracking ticket against a particular Fix Version when the work is incomplete. I would argue that simply leaving the Fix Version field empty for tracking tickets that are long lived makes more sense.
But if I can't get you folks to agree to that, hopefully you can change your procedures to handle the subtasks more sanely next time.