Dynamic Sparemint Site Redo
Sparemint Dev Site: I suppose some people around here really don't know me. There's not too much to me really. I suppose there's one thing that can really sum up my complete lack of *professional* programming skills - poor planning. The sparemint site was pretty decent but due to some serious errors in the database schema things were pretty limited. An RPM package consists of the following parts. A source rpm, which when built generates one or more binary rpms. I made several assumptions in the code which were very bad. 1. The binary name will always be a derivative of the source name. Nope. Binutils is a prime example. The srpm name is "binutils" but it builds a libiberty rpm. 2. The versioning follows a standard format. No, it doesn't, use caution. 3. It will never be necessary to construct certain relational paths. So I created this design, a design built upon binary packages and pointed only to a source package name and I soon realized that this was going to cause big big problems. Packages were missing, things were just broken in the data. So I rebuilt the whole thing from the ground up. Now source packages have their own entry in the packages database and they are identified as source or binary by a unique column. Rather than strange inheritance flag, each binary package has srpm_id of the source package id, if it's a source package, then this is 0. The initial sparemint import is done very differently now too. The import will traverse the source dir and process one source rpm at a time. For each source, it will traverse the binary directories to find binary rpms which belong to the source package (source package name field is the only true 100% way to group parent and children together). Needless to say, with 300 some packages, this script takes a LONG time to complete. So the database schema is done. The main import script is fixed and the main browsing has been fixed. What needs to be done yet is some fixes to sum for the new format, fixes to the website package upload section and fixes to pretty much everything else. The hard part is done - finding a schema that works and is flexible.