Hi Nick, so following up on the idea we discussed in #-dev: Since the make.conf is getting large and largely overwhelming, and new things are constantly being added, some simplification and user-friendliness might be in order. I put forward that the make.conf file can easily be divided into sections. That being the case, each section can be its own little file in a directory called /etc/make.conf.d Sections could include, for example: arch-specific (where CHOST and compiler flags are defined); use-specific (where global and local USE settings are defined); features-specific (where FEATURES are defined); languages (Where a user can define MAIN_LANG and ACCEPTED_LANGS -- see bug #9988); and either a set of package specific files (where local USE could go as well, come to thing of it) or one file for package specific settings (alsa-driver, for example has the option to set the ALSA_CARDS env. var, and I have an experimental xfree ebuild which could take heavy advantage of such a thing as well). Obviously, the slightly sticky issue is one of putting the arch-specific defaults. Anyway, I think it should improve readability. Not sure on this next point, but is it possible to mask out a file so that config file protection is hard-enabled -- that is to say, no updates are even given? Just a thought, not important. Reproducible: Always Steps to Reproduce: 1. 2. 3.
Created attachment 10809 [details] update-make.conf--updates make.conf from make.conf.d This is a simple program that updates make.conf from the files in make.conf.d. As the comments show, it is based on update-modules.
Created attachment 10812 [details, diff] Patch to ufed to make is use new file This is a small patch to ufed to make it edit make.conf.d/use instad of make.conf. It then runs update-modules to throw the information into make.conf.
Created attachment 10813 [details] Sample make.conf.d folder This is a sample make.conf.d folder. I just formed it by splitting the information from make.conf into several files. The only important split, and this is changeble, is use, as my patched ufed will look for make.conf.d/use.
BSD style of 'makefile' vs 'makefile.local' ... rather than having make.conf and make.globals, we have 'make.d/chost' and 'make.d/chost.global' ... then when portage updates it only updates the .global file ... no more pain-in-the-ass updates of make.conf and going 'i-hope-i-didnt-nuke-a-var-by-accident' ... we could put a lot more docs in each file and give a better explanation too for example, the default use file could be a copy of 'use.desc' from '/usr/portage/profiles/use.desc' ... then portage would just parse out $1 from each line in the file ... would allow users from going 'what the hell does this flag mean and how do i figure it out'
not likely to happen