Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Jul 1997 05:24:27 -0700
From:      "Jordan K. Hubbard" <jkh@time.cdrom.com>
To:        asami@cs.berkeley.edu (Satoshi Asami)
Cc:        torstenb@ramsey.tb.9715.org, current@FreeBSD.ORG, hans@brandinnovators.com
Subject:   Re: Heads up and and a call for a show of hands. 
Message-ID:  <7882.868710267@time.cdrom.com>
In-Reply-To: Your message of "Sat, 12 Jul 1997 03:00:42 PDT." <199707121000.DAA06924@silvia.HIP.Berkeley.EDU> 

next in thread | previous in thread | raw e-mail | index | archive | help
> The point is that, either way, there is an existing mechanism that can 
> easily be used without a need for additional features added to
> ldconfig and/or /etc/rc.

While this is true, I don't see it as an effective argument for
mandating only _one_ way of doing things.

More to the point, I think that it's actually far more of a stretch to
have the local package startup mechanism setting the ldconfig path
than it is to have a specific mechanism for that purpose.  I've had
users ask me why, for example, that "modula3 needed a daemon."  It
doesn't, of course, but their confusion stems from the fact that
during boot, the user sees something like:
	Local package initialization: apache m3 sshd

And jumps to the obvious conclusion.  /etc/ld.so.conf also appears in
other UN*X environments, it's hardly a BSD first, and a growing number
of admins are beginning to look there for override control.  Our
${prefix}/etc/rc.d hack is, by contrast, something very FreeBSD
specific.

As to the question of "override vs overlay", after listening to
various people's comments, I'm thinking that the following compromise
scenario would also make some sense:

First, we change:

local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d"	# startup script dirs.

To:

local_dirs="/usr/local /usr/X11R6"	# local hierarchies of importance.
local_startup=YES			# NO to deactivate local scripts.

And then change this code in rc to:

if [ "X${local_startup}" != X"NO" ]; then
	echo -n 'Local package initialization:'
	for dir in ${local_dirs}; do
		[ -d ${dir} ] && for script in ${dir}/etc/rc.d/*.sh; do
			[ -x ${script} ] && ${script} start
		done
	done
	echo .
fi

Once that's done, we can build the initial ld path by saying:

if [ -f /etc/ld.so.conf ]; then
	_LDC=/etc/ld.so.conf
else
	_LDC=/usr/lib
	if [ -d /usr/lib/compat ]; then _LDC="${_LDC} /usr/lib/compat" ; fi
	if [ -d /usr/X11R6/lib ]; then _LDC="${_LDC} /usr/X11R6/lib" ; fi
	if [ -d /usr/local/lib ]; then _LDC="${_LDC} /usr/local/lib" ; fi
	for dir in ${local_dirs}; do
		if [ -f ${dir}/etc/ld.so.conf ]; then
			_LDC="${dir}/etc/ld.so.conf ${_LDC}"
		fi
	done
fi

and that gives you both an engineer's override and configurable,
vendor-editable files which follow the default ldpath.

					Jordan




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7882.868710267>