On 09/02/2011 05:27 PM, Jeremy Huntwork wrote:
> Dan Nicholson also did much work to get them ready. This has all been 
> discussed and agreed upon by the community from years ago. It's crazy 
> that they should still be rejected and not part of the major reason 
> for releasing a 7.0. 

Don't forget that Alexander and Nathan jointly wrote the original 
initd_functions script back in 2006. Mine, Dan, and Jeremy's work were 
an extension of that single script (a complete rewrite of the original 
package and tools to take advantage of Nathan and Alexander's work) 
which was started several years ago. Bruce's work, while also a complete 
rewrite, is a further continuation of that still. Now that I've actually 
put a little time into reviewing Bruce's work, and although this is not 
a thorough review, I have five major objections to considering them 
release ready (one of which is unfortunately irreparable without major 
disruption to the release cycle), and two additional minor objections 
that can be easily fixed. Most of these are due to the immaturity and 
lack of community interest/time in the rewrite. I'll present them in a 
1:1 comparison with the LSB scripts which I'd consider fairly mature in 
its fifth year of development (with the exception of the new networking 
scripts).

First, as evidenced by the lack of participation in dev, the new scripts 
really have not been tested enough to be considered for release. This is 
a major change and should be committed immediately after a release, or 
at latest around the middle of the release cycle, not a month before 
release. This is why the discussion in early May, and all the time spent 
in May on the LSB variant while interest was high. Since the new scripts 
are already in there and LFS is preparing for release, my suggestion is 
to fix what can be easily fixed before release and just roll with it. 
Regardless of maturity, since they've already appeared in the RC, a 
roll-back would likely be sloppy and be yet another dismissal of 
expended effort.

Second, the lfs-functions script does not leverage the LSB defined 
functions either by wrapping the LSB functions in LFS specific functions 
or by direct use. The benefit of using the LSB defined functions is that 
output consistency is guaranteed no matter the source of the script (if 
it is written to spec, which admittedly, hasn't always been the case 
with many of the scripts found in the wild). The benefit here, if it is 
not obvious, is that compliant vendor provided scripts need not be 
rewritten to work on {B}LFS or any other consumers of the base LFS for 
various appliances such as IPCop, or IPFire, or any other distribution 
such as LightCube that choose to use the LSB scripts. One of the core 
goals of the bootscripts project, back when it was a separate project, 
was to be completely distribution independent. This goal should not be 
lost to down stream consumers. Additionally, the lfs-functions should 
use the LSB defined return values to provide more intelligent output 
besides the basic OK, WARN, and FAIL messages (an added benefit of using 
wrappers around the LSB functions). Strings such as 'invalid argument', 
'file not found', or 'excessive arguments' aide in troubleshooting 
problems with a new script.

Third, the work that went into the networking scripts and the long 
discussion threads about them was almost completely omitted in the new 
scripts. The relocation was the only discussed item that was kept 
AFAICS. At present, with Jeremy's additions, the network scripts 
contained in the LSB bootscripts, while still immature, handle almost 
every possible expectation of users coming from other distributions, 
with ease. Yes, that functionality comes at the price of mild difficulty 
in reading, but the coding style IMO is far more readable than any other 
examples I've found in the wild, while maintaining or exceeding the 
level of functionality for competing implementations, and yet still 
providing ease of extension for various other services (and only minor 
changes to the services contained in BLFS currently).

Fourth, now that ifup and ifdown are installed in a system location 
(/sbin), they need to have a -h|--help switch with help text (or 
man/info pages added). At least intelligent error handling was retained 
from the previous networking discussion. Help text and argument 
processing absolutely *must* be added before you can possibly consider 
those scripts a final product if you intend to put them in a system 
location.

Fifth, as far as I've seen, no effort has been put into writing 
compatible scripts for BLFS yet, only the dhcp service script has been 
discussed. The LSB scripts already have about 60% coverage (most of 
those are already in the contrib directory in the blfs-bootscripts pacakge).

The sixth (minor) point, is that /run is mounted at mountvirtfs instead 
of in rc directly. There were a couple of reasons for having the tempfs 
mounted prior to running any other scripts, the major one being that the 
temp directory is available for early boot logging (sysinit) and other 
early accounting tasks such as storing an interactive boot flag when 
switching from sysinit to the default runlevel.

The seventh (minor) point, is that boot logging still runs after boot. 
In my personal opinion, it should only run if PREVLEVEL is N or S, 
though I had actually compromised on the exception of RUNLEVEL 0 or 6 by 
request (well prior to the LSB bootscripts) due to the possibility of 
changing run level on remote (or headless) systems. This seems very 
unlikely in hind sight, except for maybe the test runlevel 4, but even 
that output would likely be on screen unless you are replacing your 
method of remote access.

More to come (along with suggested fixes) when I actually put them into 
use over the next couple of days.

-- DJ Lucas


-- 
This message has been scanned for viruses and
dangerous content, and is believed to be clean.

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to