+++ /dev/null
-#!/bin/bash
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-############################################
-############################################
-# ENVIRONMENT SETUP
-############################################
-
-if [[ ${EUID} -ne 0 ]] ; then
- echo "$0: must be root."
- exit 1
-fi
-
-# Make sure our environment is sane
-if [[ ! -z "${MAKELINKS}" ]] ; then
- export MAKELINKS=0
-else
- export MAKELINKS=1
-fi
-export ROOT="${ROOT:=/}"
-[[ ${ROOT} == */ ]] || export ROOT="${ROOT}/"
-
-export ENVDIR="${ROOT}etc/env.d"
-mkdir -p ${ENVDIR}
-chmod 755 ${ENVDIR}
-specials="
- KDEDIRS PATH CLASSPATH LDPATH MANPATH INFODIR INFOPATH ROOTPATH
- CONFIG_PROTECT CONFIG_PROTECT_MASK PRELINK_PATH PYTHONPATH
- PRELINK_PATH_MASK ADA_INCLUDE_PATH ADA_OBJECTS_PATH"
-colon_separated="
- ADA_INCLUDE_PATH ADA_OBJECTS_PATH LDPATH PATH MANPATH ROOTPATH
- PRELINK_PATH PRELINK_PATH_MASK PYTHON_PATH"
-
-export LDSOCONF="${ROOT}etc/ld.so.conf"
-
-export PRELINKCONF="${ROOT}etc/prelink.conf"
-defaultprelinkpaths=":/bin:/sbin:/usr/bin:/usr/sbin:/lib:/usr/lib"
-
-export PROFILEENV="${ROOT}etc/profile.env"
-export CSHENV="${ROOT}etc/csh.env"
-
-# make sure we aren't tricked with previous 'my_envd_' variables
-unset $(set | grep '^my_envd_' | cut -d= -f1)
-
-############################################
-############################################
-# ENV.D PARSING
-############################################
-
-do_has() {
- local x
- local me="$1"
- shift
-
- for x in "$@" ; do
- [[ ${x} == ${me} ]] && return 0
- done
- return 1
-}
-has() {
- local ret
- local ifs="${IFS}"
- unset IFS
- do_has $1 ${!2}
- ret=$?
- export IFS="${ifs}"
- return ${ret}
-}
-is_special() {
- has $1 specials
-}
-is_colon_separated() {
- has $1 colon_separated
-}
-
-for envd in $(ls ${ENVDIR} | sort) ; do
- # make sure file is a vaild env'd entry and not a backup file
- num="${envd:0:2}"
- if [[ ! -z ${num//[0-9]} ]] ; then
- continue
- elif [[ ${envd} == *~ || ${envd} == *.bak ]] ; then
- continue
- fi
-
- # use bash to make sure the file is valid
- envd="${ENVDIR}/${envd}"
- if ! (source "${envd}") ; then
- echo "!!! Error parsing ${envd}!"
- exit 1
- fi
-
- # parse env.d entries
- cnfvars="$(grep '^[[:alpha:]_][[:alnum:]_]*=' "${envd}")"
- export IFS=$'\n'
- for cnfv in ${cnfvars} ; do
- var="${cnfv/=*}"
- val="${cnfv:${#var}+1}"
- if [ "${val:0:1}" == "\"" ] ; then
- val="${val:1:${#val}-2}"
- fi
- myvar="my_envd_${var}"
- if is_special ${var} ; then
- if [[ ! -z "${!myvar}" ]] ; then
- if is_colon_separated ${var} ; then
- sep=":"
- else
- sep=" "
- fi
- else
- sep=""
- fi
- export ${myvar}="${!myvar}${sep}${val}"
- else
- export ${myvar}="${val}"
- fi
- done
- unset IFS
-done
-
-############################################
-############################################
-# LD.SO.CONF HANDLING
-############################################
-
-# create a : sep list from ld.so.conf
-export OLD_LDPATH=""
-if [ -s "${LDSOCONF}" ] ; then
- while read line ; do
- if [[ "${line:0:1}" == "#" ]] ; then
- continue
- fi
- export OLD_LDPATH="${OLD_LDPATH}:${line}"
- done < ${LDSOCONF}
- export OLD_LDPATH="${OLD_LDPATH:1}"
-fi
-
-# has the ldpath changed ? if so, recreate
-if [[ "${OLD_LDPATH}" != "${my_envd_LDPATH}" ]] ; then
- cat << EOF > ${LDSOCONF}
-# ld.so.conf autogenerated by env-update; make all changes to
-# contents of /etc/env.d directory
-${my_envd_LDPATH//:/
-}
-EOF
-fi
-
-############################################
-############################################
-# HANDLE PRELINK PATHS
-############################################
-
-if prelink --version >& /dev/null ; then
- # we assume LDPATH and PATH aren't empty ... if they were, we got other problems
- envdprelinkcheckpaths="${my_envd_LDPATH}:${my_envd_PATH}"
- if [[ ! -z "${my_envd_PRELINK_PATH}" ]] ; then
- envdprelinkcheckpaths="${envdprelinkcheckpaths}:${my_envd_PRELINK_PATH}"
- fi
-
- if [[ ! -z "${my_envd_PRELINK_PATH_MASK}" ]] ; then
- export prelink_mask=":${PRELINK_PATH_MASK}:"
- envdprelinkpaths=""
- export IFS=":"
- for dir in ${envdprelinkcheckpaths} ; do
- if [[ ${dir:0-1} == / ]] ; then
- noslashdir="${dir:0:${#dir}-1}"
- else
- dir="${dir}/"
- noslashdir="${dir}"
- fi
- if [[ ${prelink_mask/:${dir}:/} == ${prelink_mask} \
- && ${prelink_mask/:${noslashdir}:/} == ${prelink_mask} ]] ; then
- envdprelinkpaths="${envdprelinkpaths}:${dir}"
- fi
- done
- unset IFS
- else
- envdprelinkpaths=":${envdprelinkcheckpaths}"
- fi
-
- cat << EOF > ${PRELINKCONF}
-# prelink.conf autogenerated by env-update; make all changes to
-# contents of /etc/env.d directory
-${defaultprelinkpaths//:/
--l }
-${envdprelinkpaths//:/
--h }
-EOF
-fi
-unset my_envd_LDPATH
-
-############################################
-############################################
-# RUN EXTERNAL PROGRAMS NOW
-############################################
-
-echo ">>> Regenerating ${ROOT}etc/ld.so.cache..."
-if [[ ${MAKELINKS} -eq 0 ]] ; then
- (cd / ; /sbin/ldconfig -X -r ${ROOT} >& /dev/null)
-else
- (cd / ; /sbin/ldconfig -r ${ROOT} >& /dev/null)
-fi
-
-cat << EOF > ${PROFILEENV}
-# THIS FILE IS AUTOMATICALLY GENERATED BY env-update.
-# DO NOT EDIT THIS FILE. CHANGES TO STARTUP PROFILES
-# GO INTO /etc/profile NOT /etc/profile.env
-
-$(set | grep '^my_envd_' | sed -e 's:^my_envd_:export :')
-EOF
-
-cat << EOF > ${CSHENV}
-# THIS FILE IS AUTOMATICALLY GENERATED BY env-update.
-# DO NOT EDIT THIS FILE. CHANGES TO STARTUP PROFILES
-# GO INTO /etc/csh.cshrc NOT /etc/csh.env
-
-$(set | grep '^my_envd_' | sed -e 's:^my_envd_\([[:alpha:]_][[:alnum:]_]*\)=:setenv \1 :')
-EOF