NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: misc/50216: USB, PCI ID data grow quadratically in the repository

The following reply was made to PR misc/50216; it has been noted by GNATS.

From: (Christos Zoulas)
To:,,,, (Andreas Gustafsson)
Subject: Re: misc/50216: USB, PCI ID data grow quadratically in the repository
Date: Fri, 27 Oct 2017 08:10:59 -0400

 On Oct 27, 11:55am, kre%munnari.OZ.AU@localhost (Robert Elz) wrote:
 -- Subject: Re: misc/50216: USB, PCI ID data grow quadratically in the reposi
 |  and I understand that.   I see two ways that could be resolved.  First,
 |  the files (as well as being used in the build) could be installed
 |  somewhere (not in an include directory, somewhere like /usr/share/misc)
 |  so they'd be available ... but that means only after the system has been
 |  built and installed, so is probably not the solution that will satisfy.
 |  Or second, there are two files generated (for each *devs file).  That is,
 |  for pcidevs we get pcidevs.h and pcidevs_data.h
 |  The first one I don't think is too much of a problem (and a little tweaking
 |  might be able to reduce the churn in that one even more.)
 |  The _data.h file is the one that really causes the problem, and frankly
 |  I can't see anyone wanting to grep that (or even keep it visible more than
 |  a few seconds so it can be included in whatever #includes it.)  If
 |  for some reason you do, you can always generate it - obviously a method
 |  to do that is going to be needed.
 |  So, for now the solution I am going to suggest, at least as a first
 |  quick fix, is that we change the procedure to only generate and check in
 |  the namedevs.h files when namedevs is altered, and we fix the Makefiles
 |  to generate namedevs_data.h on the fly during compilation (in the obj
 |  directories).
 |  Then we cvs delete the namedevs_data.h files, and arrange with the admins to
 |  make them all read only in the repo, so there can be no more commits to them,
 |  ever, from any release - any of the older releases that wants to change the
 |  device lists will need to adopt the new procedure first. Then after NetBSD-8
 |  has faded from memory (years from now) we simply nuke them.
 |  I mean rm namedevs_data.h,v so they are simply gone!  Anyone wanting to
 |  checkout an older source tree after that will need to regenerate the files
 |  (we could make a script for that to make life easier) before building, using
 |  the appropriate devlist2h.awk scripts that match the distribution in question.
 |  I think this is a much better solution than looking for a more stable
 |  compression algorithm for the _data.h files (and then having to debug
 |  the code to extract data from it) where what we have now seems to work
 |  well enough ... but doing this would also make it much easier for someone
 |  with the desire to create better algorithms, and experiment.
 |  Any objections to this strategy?   [The nuking the files from the repo
 |  part is kind of an optional extra, just to reduce the repo size, it is
 |  not crucial to the rest of the plan.]
 |  If not, I'll start the process making all of this happen.   I'll also look
 |  at why we seem to need 15 devlist2h.awk files in the tree.  That seems
 |  a little excessive, I find it hard to believe that they're all so
 |  different from each other that every single one of them is needed.
 I am happy with the plan to move the foo_data.h file to be
 auto-generated during the build, and cvs delete it from head.
 Perhaps it should build both files (foo.h foo_data.h) int the obj
 directory and check that the committed foo.h matches the newly
 generated one.
 I would not do anything at the repo level until that stabilizes;
 any read-only decision etc, can be deferred.
 As for merging them further, by all means. I tried and merged some
 of them a while ago, the problem is that they are not all the same

Home | Main Index | Thread Index | Old Index