Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Apr 2007 12:07:30 -0400
From:      Howard Goldstein <hg@queue.to>
To:        freebsd-x11@freebsd.org
Cc:        brooks@freebsd.org
Subject:   PATCH for 6.2-R backwards compat (was Re: rc.conf startup dirs vs X11R6 symlink)
Message-ID:  <462B8842.5020205@queue.to>
In-Reply-To: <20070419141721.GA74693@lor.one-eyed-alien.net>
References:  <4626D7CE.6070909@queue.to> <20070419141721.GA74693@lor.one-eyed-alien.net>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------070907080002000004020202
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Brooks Davis wrote:
> On Wed, Apr 18, 2007 at 10:45:34PM -0400, Howard Goldstein wrote:
>> Heads up, when not overridden locally the /usr/X11R6->/usr/local symlink
>> will cause everything in /usr/local/etc/rc.d twice on startup.  The
>> trivial patch for /etc/defaults/rc.conf fixes this.   All sorts of
>> ports-related ugliness will surely ensue at sites that have populated
>> /usr/local/etc/rc.d directories
> 
> Hmm, I can't decide if this is the right fix or if we should add a step
> in processing local_startup where we run realpath on the names and
> remove dupes.  I worry this is going to cause problems for 6.2-RELEASE
> users post switch so something we could apply as an eratta that would
> work either way might be nice.
> 

Follows is the patch that should be backwards compatible with 6.2-R for 
use when reconfiguring a site for X11BASE==/usr/local with the symlink.

Although a trivial sort | uniq solution works it didn't seem like the 
right approach because it wouldn't preserve the local_startup ordering.

There's probably better ways to do this but my sh script fu is not up to it.




--------------070907080002000004020202
Content-Type: text/plain;
 name="uniq_local_startup.dif"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="uniq_local_startup.dif"

*** etc/rc.subr.orig	Sat Mar 31 20:35:33 2007
--- etc/rc.subr	Sun Apr 22 11:55:00 2007
***************
*** 1454,1465 ****
  	echo ${devices2}
  }
  
! # Find scripts in local_startup directories that use the old syntax
  #
  find_local_scripts_old () {
  	zlist=''
  	slist=''
! 	for dir in ${local_startup}; do
  		if [ -d "${dir}" ]; then
  			for file in ${dir}/[0-9]*.sh; do
  				grep '^# PROVIDE:' $file >/dev/null 2>&1 &&
--- 1454,1466 ----
  	echo ${devices2}
  }
  
! # Find scripts in unique local_startup directories that use the old syntax
  #
  find_local_scripts_old () {
+ 	find_uniq_local_startup
  	zlist=''
  	slist=''
! 	for dir in ${uniq_local_startup}; do
  		if [ -d "${dir}" ]; then
  			for file in ${dir}/[0-9]*.sh; do
  				grep '^# PROVIDE:' $file >/dev/null 2>&1 &&
***************
*** 1476,1483 ****
  }
  
  find_local_scripts_new () {
  	local_rc=''
! 	for dir in ${local_startup}; do
  		if [ -d "${dir}" ]; then
  			for file in `grep -l '^# PROVIDE:' ${dir}/* 2>/dev/null`; do
  				case "$file" in
--- 1477,1485 ----
  }
  
  find_local_scripts_new () {
+ 	find_uniq_local_startup
  	local_rc=''
! 	for dir in ${uniq_local_startup}; do
  		if [ -d "${dir}" ]; then
  			for file in `grep -l '^# PROVIDE:' ${dir}/* 2>/dev/null`; do
  				case "$file" in
***************
*** 1489,1494 ****
--- 1491,1513 ----
  				esac
  			done
  		fi
+ 	done
+ }
+ 
+ # Resolve local_startup directories into unique real pathnames
+ find_uniq_local_startup () {
+ 	uniq_local_startup=''
+ 	for dir in ${local_startup}; do
+ 	    if [ -d "${dir}" ]; then
+ 		target_dir=`realpath ${dir}`
+ 		for udir in ${uniq_local_startup}; do
+ 		    if [ "x${target_dir}" = "x${udir}" ]; then
+ 			target_dir=''
+ 			break
+ 		    fi
+ 		done
+ 		uniq_local_startup="$uniq_local_startup $target_dir"
+     		fi
  	done
  }
  

--------------070907080002000004020202--



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