Cardoe wrote this mid-morning:
So since GLEP 54 is at the fore front of everyone’s minds I figured I’d weigh in on it. The two main issues I’ve wanted to see addressed with GLEP 54 are:
- a consistent method for exposing the revision ID of the sources that was used. This would most likely have to be exposed via a hook that the underlying scm functions (eclass) would provide
- Information how this can be integrated with Portage (will Zac code this or will be something we’ll have to find someone to code?). Additionally information/API how we could expose the revision (i.e. equery list pkg)
While I know my approach is very Portage centric there are two reasons for this. Paludis already supports this stuff and Portage is the predominate package manager in use by Gentoo users today. While many would simply chalk it up to me being another anti-Paludis developer it’s far from the case. To potentially the surprise of some, I am a paludis user, however I am not a paludis user on my Gentoo commit machine. I feel that since Portage is our predominate package manager in use by users, it’s the package manager I should be using to ensure my ebuilds work. While 99% of the time a test with paludis is good enough, there are always situations where paludis and Portage have different behaviors and it needs to be caught.
While I think that everyone involved in GLEP 54 has the best interest in mind. I see a package that I have maintained for years being used as the example package in the back and forth debates on the topic and to be honest I wish it would stop. I’ve seen a lot of assumptions made about MythTV and back and forth comments about what would be the best for the package. So, I will state the needs of Gentoo’s MythTV packages here once and for all.
MythTV upstream has stated time and time again that they prefer people to use SVN pulls of the code instead of tarballs since tarballs get stale and they’re constantly committing necessary updates without rolling a new tarball. For a long while it worked to apply patches on top of the tarball but this is no longer a viable solution since there’s a lot of changes that actually happen to binary blobs which diff can’t catch. Upstream wants to be able to find out exactly what SVN revision a user is currently using and direct the user to use a different revision very easily. MythTV has a “stable” branch (which isn’t necessarily any more or less stable then their trunk branch) which most distros use but hardly any MythTV developers use and their trunk branch where all their commits and activity takes place. This is what most developers use and they’ll be quick to tell you that it’s more solid then the “stable” branch, until one day when its not and it eats all your programming and preferences and babies. So to remedy this, beandog, myself and now joining in tanderson have implemented functionality to handle the following example ebuilds:
- mythtv-0.21_p19800
- mythtv-0.22_alpha20500
- mythtv-0.22_beta21400
In the above examples, the _p is evaluted and based on that we know that we’re on a stable branch. It then grabs the version, which is 0.21 and converts it to “release-0-21-fixes”, which is the branch name, then we take 19800 as the SVN revision to checkout. For the alpha version the following happens, the _alpha is evaluted to mean “trunk” branch, then 20500 is checked out from trunk. The fictional beta version is supported for the special cases when the developers branch the trunk version for an impending release but haven’t moved it to the normal place yet. Unfortunately over the years they’ve used different places to store these impending releases each time so I just tweak the eclass everytime for this.
There’s two features which I’m hoping will be handled nicely.
- Have a nice way to fetch the source code outside of src_unpack. How I’ve handled this is managing to get upstream to enable tarballs (well they turned on zip only, not tarballs…) for specific revisions using a specific URL. This will appear in the tree shortly. The downside of this is that we’re having upstream’s server build a tarball of each revision and every revision will require over a 30mb download.
- Have an easy way to provide a “live” ebuild for trunk. The current GLEP 54 proposal handles this with -scm, however as I stated above. It doesn’t address the storage of the SVN revision which is a must.
UPDATE
I would like to point out to everyone that is sending me mailing list comments that what’s presented to the council is NOT a mailing list comment but in fact the GLEP. The council is not taking up “GLEP 54 + message ID xxxx on gentoo-yyy ML”. The council is being asked simply about GLEP 54 and I am stating what I feel are the shortcomings of the GLEP. If you have an idea that you are suggesting that would bridge the shortfall in GLEP 54, grab the source to the GLEP and add your ideas and re-submit that as the GLEP to be approved.