[Lunar-commits] <lunar> Backmerge from theedge: bugfixes and older additions only - lvu info shows compile time if possible - structure update in lin (cosmetic/internal) - add auto-manpage compression for /usr/share/man - speedups for dependency and core module functions - minor bugfix in alias code - update to man lin(8) - bugfix to LRESORT mirror file - some prelim updates to updatelog display

Auke Kok sofar at lunar-linux.org
Mon Jul 2 04:43:10 CEST 2012


commit 5cdc93e65acbb5934ca14cd44f27974a5d39ac9c
Author: Auke Kok <sofar at lunar-linux.org>
Date:   Sun Mar 5 21:05:08 2006 +0000

    Backmerge from theedge: bugfixes and older additions only
    - lvu info shows compile time if possible
    - structure update in lin (cosmetic/internal)
    - add auto-manpage compression for /usr/share/man
    - speedups for dependency and core module functions
    - minor bugfix in alias code
    - update to man lin(8)
    - bugfix to LRESORT mirror file
    - some prelim updates to updatelog display
---
 bin/lvu                                 |   17 +++-
 etc/lunar/mirrors/LRESORT               |   11 ++-
 sbin/lin                                |   28 +++---
 usr/share/man/man8/lin.8                |   37 ++-----
 var/lib/lunar/functions/aliases.lunar   |  142 ++++++++++++++-------------
 var/lib/lunar/functions/depends.lunar   |   12 +--
 var/lib/lunar/functions/download.lunar  |    2 +-
 var/lib/lunar/functions/main.lunar      |    9 +-
 var/lib/lunar/functions/misc.lunar      |   27 +++++-
 var/lib/lunar/functions/modules.lunar   |  162 ++++++++++++-------------------
 var/lib/lunar/functions/tracking.lunar  |    2 +-
 var/lib/lunar/functions/updatelog.lunar |    4 +-
 12 files changed, 218 insertions(+), 235 deletions(-)

diff --git a/bin/lvu b/bin/lvu
index f85c131..a604d84 100755
--- a/bin/lvu
+++ b/bin/lvu
@@ -700,15 +700,24 @@ show_info() {
     echo ""
     echo "Installation Info"
     if module_installed $1 ; then
-      echo -n "  Installed Version: $(installed_version $1)"
+      IVERSION=$(installed_version $1)
+      echo -n "  Installed Version: $IVERSION"
       if module_is_expired $1 ; then
-        echo "  (updated module available!)"
+        echo "  (updated module available: $VERSION!)"
       else
         echo ""
       fi
-      echo "  Approx. Size:      $(main size $1)"
+      echo -n "  Last compile time: "
+      if module_installed "TimeDate" ; then
+        CTIME=$(main compile $1 | grep 'Mark Compile ' | cut -d \" -f6 | perl -e 'use Date::Parse; my $start = <> ; my $stop = <> ; print str2time($stop) - str2time($start) . "\n";')
+        echo "$((CTIME / 60))m$((CTIME % 60))s"
+      else
+        echo "(unable to calculate without \"TimeDate\" installed)"
+      fi
+      echo -n "  Approx. Size:      "
+      main size $1
       echo -n "  Files Installed:   "
-      echo "`echo "$(main install $1)" | wc -l`"
+      main install $1 | wc -l
     else
       echo "  Module not installed."
     fi
diff --git a/etc/lunar/mirrors/LRESORT b/etc/lunar/mirrors/LRESORT
index aebe83c..655aa46 100644
--- a/etc/lunar/mirrors/LRESORT
+++ b/etc/lunar/mirrors/LRESORT
@@ -1,8 +1,9 @@
-Custom      			Custom
+Custom				Custom
 Mirror site - TX-US		http://tx-us.lunar-linux.org/lunar/cache/
-Mirror site - SE                http://jkp-se.lunar-linux.org/lunar/cache/
-Mirror site - SE                http://vxj-se.lunar-linux.org/lunar/cache/
-Mirror site - SE                http://su-se.lunar-linux.org/lunar/cache/
+Mirror site - SE		http://jkp-se.lunar-linux.org/lunar/cache/
+Mirror site - SE		http://vxj-se.lunar-linux.org/lunar/cache/
+Mirror site - SE		http://su-se.lunar-linux.org/lunar/cache/
+Mirror site - BE		http://be.lunar-linux.org/lunar/cache/
 Mirror site - DE		http://de.lunar-linux.org/lunar/cache/
-Mirror site - DE		http://k-de.lunar-linux.org/lunar/cache/
+Mirror site - DE		http://fr-de.lunar-linux.org/lunar/cache/
 Master site - NL		http://lunar-linux.org/lunar/cache/
diff --git a/sbin/lin b/sbin/lin
index c52dd76..5bde67c 100755
--- a/sbin/lin
+++ b/sbin/lin
@@ -125,7 +125,21 @@ main() {
       # no strange stuff should happen here anymore
       for MODULE in $MODULES ; do
         if ! module_installed $MODULE || [ ! -n "$PROBE" ] || ( [ -n "$PROBE" ] && [ "$PROBE_EXPIRED" == "on" ] && module_is_expired $MODULE ) ; then
-          if ! module_held $MODULE && ! module_exiled $MODULE && module_license_accepted $MODULE ; then
+	  # 3 more conditions to stop processing this module:
+          if module_held $MODULE ; then
+	    error_message "${LRM_COLOR}Notice:${DEFAULT_COLOR}${MESSAGE_COLOR} Skipping compile and install for held module ${MODULE_COLOR}$MODULE${DEFAULT_COLOR}"
+            continue
+	  elif module_exiled $MODULE ; then
+            error_message "${LRM_COLOR}Notice:${DEFAULT_COLOR}${MESSAGE_COLOR} Skipping compile and install for exiled module ${MODULE_COLOR}$MODULE${DEFAULT_COLOR}"
+            continue
+	  elif ! module_license_accepted $MODULE ; then
+	    error_message "${LRM_COLOR}Notice:${DEFAULT_COLOR}${MESSAGE_COLOR} The license of module ${MODULE_COLOR}$MODULE${DEFAULT_COLOR}${MESSAGE_COLOR} is incompatible with the list of"
+            error_message "allowed and/or rejected licenses. Please adjust the ACCEPTED_LICENSES or"
+            error_message "REJECTED_LICENSES variables to include or not include the specific"
+            error_message "license of this module.${DEFAULT_COLOR}"
+            continue
+	  else
+            # we're good now, start installing
             linING="/var/lock/installing.$MODULE"
             verbose_msg "starting lin \"$MODULE\""
             if ! ( SINGLE_MODULE=1 main $MODULE ) ; then
@@ -138,18 +152,6 @@ main() {
                 echo "$MODULE" >> $TMP_LIN_SUCCESS
               fi
             fi
-          else
-            # split up error messages
-            if module_held $MODULE; then
-              verbose_msg "Skipping compile and install for held module \"$MODULE\""
-            elif module_exiled $MODULE; then
-              verbose_msg "Skipping compile and install for exiled module \"$MODULE\""
-            else
-              message "${MESSAGE_COLOR}The license of this module is incompatible with the list of"
-              message "allowed and/or rejected licenses. Please adjust the ACCEPTED_LICENSES or"
-              message "REJECTED_LICENSES variables to include or not include the specific"
-              message "license of this module.${DEFAULT_COLOR}"
-            fi
           fi
         fi
       done
diff --git a/usr/share/man/man8/lin.8 b/usr/share/man/man8/lin.8
index c0d89e1..5670be3 100644
--- a/usr/share/man/man8/lin.8
+++ b/usr/share/man/man8/lin.8
@@ -41,9 +41,15 @@ Only lin if the module was not previously installed.
 .B "\-r, \-\-reconfigure"
 Select new configuration and dependencies for modules.
 .TP 
+.B "\-\-opts (configure flags)"
+Add arbitrary options to the configure stage of the module. The options are saved for future upgrades but will be erased by using "-r".
+.TP
 .B "\-R, \-\-resurrect"
 Reinstalls a module which has been removed but still has the compiled version available.
 .TP
+.B "\-w, \-\-want (version number)"
+Try to install a different version than the current one in moonbase. Integrity checking is turned off. Success not guaranteed.
+.TP
 .B "\-s, \-\-silent"
 Decreases the level of message output.
 .TP
@@ -84,8 +90,6 @@ The following settings can be altered in
 .I /etc/lunar/local/config 
 It is easier, faster and less error prone to edit them with
 .B lunar.
-.IP AUTODEPENDS
-If set to yes this turns on autodepends, that is lin automatically resolves and installs dependencies.
 .IP GNU_URL
 The GNU Mirror (default: ftp.gnu.org).
 .IP KERNEL_URL
@@ -99,13 +103,11 @@ The KDE mirror (default: ftp.kde.org).
 .IP SFORGE_URL
 The Sourceforge mirror. (default: none).
 .IP PATCH_URL
-The default patch mirror. (default: www.lunar\-linux.org/lunar/patches).
+The default patch mirror. (default: download.lunar\-linux.org/lunar/patches).
 .IP LRESORT_URL
-The default lunar mirror. If all else fails go here! (default: www.lunar\-linux.org/lunar/cache)
+The default lunar mirror. If all else fails go here! (default: download.lunar\-linux.org/lunar/cache)
 .IP MOONBASE_URL
-The lunar moonbase mirrors. (default: www.lunar\-linux.org/lunar/).
-.IP optimise
-The optimise setting. Used to configure what optimisations are used while compiling. These are the available options i586, pentium, i686, pentiumpro, k6, athlon, speedy, risky and nostrip.
+The lunar moonbase mirrors. (default: download.lunar\-linux.org/lunar/).
 .IP color
 If set to yes lin outputs nice colour. Green for messages, gray for compiling, yellow for questions, and red for errors.
 .IP PROMPT_DELAY
@@ -142,27 +144,6 @@ lin
 .B \-\-from
 /root/spool/lunar
 emacs
-.SH "NOTES"
-Do not include 
-.SM section
-name when specifying a package. 
-.B Lin
-normally installs the
-.B default version
-of the package in the 
-.B moonbase.
-Alternate versions of a module may be specified
-either as 
-.B package/version 
-or
-.B --Version version
-(where a /version exists in the moonbase). Package versions are required to begin with
-a numeral ([0-9]). 
-To get complete listing of software packages type
-.I lvu moonbase
-.TP 
-If module fails during a lin, try reinstalling it with \-r \-c to reconfigure and recompile.
-.SH "COMMENTS"
 Unless the
 .B \-from
 option is specified lin will always check the
diff --git a/var/lib/lunar/functions/aliases.lunar b/var/lib/lunar/functions/aliases.lunar
index 50e6c90..6d11c82 100644
--- a/var/lib/lunar/functions/aliases.lunar
+++ b/var/lib/lunar/functions/aliases.lunar
@@ -13,88 +13,92 @@
 # and add it to the dependency chain if needed
 unalias() {
   local TARGET TARGETS TARGETBYNUM N CHOICE
+  # quick exit code
+  if [ "${1:0:1}" != "%" ] ; then
+    echo $1
+    return
+  fi
+
+  debug_msg "unalias($@)"
   # try to figure out where the aliases file is:
-  if [ -z "$ALIASES" -o ! -f "$ALIASES" ]; then
+  if [[ -z "$ALIASES" ]] || [[ ! -f "$ALIASES" ]]; then
     if [ -f "$MOONBASE/aliases" ] ; then
-	  ALIASES="$MOONBASE/aliases"
-	else
-	  ALIASES="/var/lib/lunar/aliases"
-	fi
+      ALIASES="$MOONBASE/aliases"
+    else
+      ALIASES="/var/lib/lunar/aliases"
+    fi
   fi
-  if [ "${1:0:1}" == "%" ] ; then
-    debug_msg "unalias($@)"
-    TARGETS=$(grep "^$1:" $ALIASES | cut -d: -f2-)
-    # dumb algorithm: pick the first installed one
+  
+  TARGETS=$(awk -F: -v mod=$1 '{if ($1==mod){print $2}}' $ALIASES)
+  # dumb algorithm: pick the first installed one
+  for TARGET in $TARGETS ; do
+    if module_installed $TARGET ; then
+      debug_msg "unaliased \"$1\"->\"$TARGET\""
+      echo $TARGET
+      return
+    fi
+  done
+  # shortcut out: in the satisfy_depends stage we should NOT ask this again
+  if [[ -z "$DEPS_ONLY" ]] ; then
+    # first we check if this dependency is already existant in the exact
+    # way: does this MODULE depends on TARGET already ?
     for TARGET in $TARGETS ; do
-      if $(module_installed $TARGET) ; then
+      if in_depends $MODULE $TARGET ; then
         debug_msg "unaliased \"$1\"->\"$TARGET\""
         echo $TARGET
-	return
+        return
       fi
     done
-    # shortcut out: in the satisfy_depends stage we should NOT ask this again
-    if [ -z "$DEPS_ONLY" ] ; then
-      # first we check if this dependency is already existant in the exact
-      # way: does this MODULE depends on TARGET already ?
-      for TARGET in $TARGETS ; do
-        if in_depends $MODULE $TARGET ; then
-          debug_msg "unaliased \"$1\"->\"$TARGET\""
-          echo $TARGET
-          return
-        fi
-      done
-      # not so... other possibility is that something else already depends
-      # on TARGET?
-      for TARGET in $TARGETS ; do
-        if is_depends $TARGET ; then
-          debug_msg "unaliased \"$1\"->\"$TARGET\""
-          echo $TARGET
-          return
-        fi
-      done
-      # also not so. our last attempt is for a DISABLED dependency, but
-      # we can only use this method for OPTIONAL dependencies
-      for TARGET in $TARGETS ; do
-        # there's no function for this yet
-        if grep -q ":$TARGET:off:" $DEPENDS_STATUS ; then
-          debug_msg "unaliased \"$1\"->\"$TARGET\""
-          echo $TARGET
-          return
-        fi
-      done
-    fi
-
-    # shortcut out when explicitly instructed so
-    if [ -n "$NEVER_ASK" ] ; then
-      echo $1
-      return
-    fi
-
-    # propose one and let the user pick it from a list:
-    debug_msg "unalias: starting selection loop"
-    error_message "${MODULE_COLOR}$MODULE${DEFAULT_COLOR}${MESSAGE_COLOR} depends on ${DEFAULT_COLOR}${QUERY_COLOR}\"${1:1}\"${DEFAULT_COLOR}${MESSAGE_COLOR} which is an alias${DEFAULT_COLOR}"
-    while true ; do
-      error_message "${MESSAGE_COLOR}Please select a substitute ! Enter the number or the name of the module${DEFAULT_COLOR}"
-      ((N=0))
-      for TARGET in $TARGETS ; do
-        ((N++))
-	TARGETBYNUM[$N]=$TARGET
-        error_message "  ${QUERY_COLOR}$N${MESSAGE_COLOR} - ${DEFAULT_COLOR}${MODULE_COLOR}$TARGET${DEFAULT_COLOR}"
-      done
-      read CHOICE
-      # test directly first
-      if $(echo $TARGETS | grep -qw "$CHOICE") ; then
+    # not so... other possibility is that something else already depends
+    # on TARGET?
+    for TARGET in $TARGETS ; do
+      if is_depends $TARGET ; then
+        debug_msg "unaliased \"$1\"->\"$TARGET\""
         echo $TARGET
-	return
-      # then the number
-      elif [ -n "$CHOICE" -a -n "${TARGETBYNUM[$CHOICE]}" ] ; then
-        echo ${TARGETBYNUM[$CHOICE]}
         return
       fi
-      error_message "${MESSAGE_COLOR}Sorry, I can't do anything with \"${DEFAULT_COLOR}${QUERY_COLOR}$CHOICE${DEFAULT_COLOR}${MESSAGE_COLOR}\", please try again${DEFAULT_COLOR}"
     done
-  else
+    # also not so. our last attempt is for a DISABLED dependency, but
+    # we can only use this method for OPTIONAL dependencies
+    for TARGET in $TARGETS ; do
+      # there's no function for this yet
+      if grep -q ":$TARGET:off:" $DEPENDS_STATUS ; then
+        debug_msg "unaliased \"$1\"->\"$TARGET\""
+        echo $TARGET
+        return
+      fi
+    done
+  fi
+
+  # shortcut out when explicitly instructed so
+  if [[ -n "$NEVER_ASK" ]] ; then
     echo $1
     return
   fi
+
+  # propose one and let the user pick it from a list:
+  debug_msg "unalias: starting selection loop"
+  error_message "${MODULE_COLOR}$MODULE${DEFAULT_COLOR}${MESSAGE_COLOR} depends on ${DEFAULT_COLOR}${QUERY_COLOR}\"${1:1}\"${DEFAULT_COLOR}${MESSAGE_COLOR} which is an alias${DEFAULT_COLOR}"
+  while true ; do
+    error_message "${MESSAGE_COLOR}Please select a substitute ! Enter the number or the name of the module${DEFAULT_COLOR}"
+    ((N=0))
+    for TARGET in $TARGETS ; do
+      ((N++))
+      TARGETBYNUM[$N]=$TARGET
+      error_message "  ${QUERY_COLOR}$N${MESSAGE_COLOR} - ${DEFAULT_COLOR}${MODULE_COLOR}$TARGET${DEFAULT_COLOR}"
+    done
+    read CHOICE
+    # test directly first
+    if echo $TARGETS | grep -qw "$CHOICE" ; then
+      echo $TARGET
+      return
+    # then the number
+    elif [[ -n "$CHOICE" ]] && [[ -n "${TARGETBYNUM[$CHOICE]}" ]] ; then
+      echo ${TARGETBYNUM[$CHOICE]}
+      return
+    fi
+    error_message "${MESSAGE_COLOR}Sorry, I can't do anything with \"${DEFAULT_COLOR}${QUERY_COLOR}$CHOICE${DEFAULT_COLOR}${MESSAGE_COLOR}\", please try again${DEFAULT_COLOR}"
+  done
 }
+
+
diff --git a/var/lib/lunar/functions/depends.lunar b/var/lib/lunar/functions/depends.lunar
index c4cb5c7..4297966 100644
--- a/var/lib/lunar/functions/depends.lunar
+++ b/var/lib/lunar/functions/depends.lunar
@@ -30,15 +30,13 @@ function find_depends() {
 
   find_depends_intern() {
     local DEP STATE LINE
-    grep "^$1:" $DEPENDS_CACHE | while read LINE ; do
-      DEP=$(echo $LINE | cut -d: -f2)
+    awk -F: -v mod=$1 '{if ($1==mod){print $2,$3}}' $DEPENDS_CACHE | while read DEP STATE ; do
       DEP=$(unalias $DEP)
       # this is our shortcut out:
       if ! grep -qx "$DEP" $TMP_FDEPS ; then
-      debug_msg "$DEP"
+        debug_msg "$DEP"
         echo "$DEP" >> $TMP_FDEPS
-        STATE=$(echo $LINE | cut -d: -f3)
-        if [ "$STATE" == "required" ] ; then
+        if [[ "$STATE" == "required" ]] ; then
           echo $DEP
           find_depends_intern $DEP
         elif module_installed $DEP ; then
@@ -71,7 +69,7 @@ sort_by_dependency() {
 
   # tsort the existing dep relations in all of moonbase
   TMP_TSRT=$(temp_create "dependency.sort")
-  cat $DEPENDS_CACHE | cut -d: -f1,2 --output-delimiter=" " | while read A B ; do
+  awk -F: '{print $1,$2}' $DEPENDS_CACHE | while read A B ; do
     B=$(MODULE=$A NEVER_ASK=1 DEPS_ONLY= unalias $B)
     echo "$A $B" >> $TMP_TSRT
   done
@@ -145,7 +143,7 @@ add_depends() {
 	fi
                                                                                 
     echo "$1:$2:$3:$4:$5:$6" >> $DEPENDS_STATUS            &&
-    cat $DEPENDS_STATUS > $DEPENDS_STATUS_BACKUP           &&
+    cp $DEPENDS_STATUS $DEPENDS_STATUS_BACKUP              &&
     unlock_file $DEPENDS_STATUS                            &&
     unlock_file $DEPENDS_STATUS_BACKUP
   fi
diff --git a/var/lib/lunar/functions/download.lunar b/var/lib/lunar/functions/download.lunar
index ee6313a..f0ccf5c 100644
--- a/var/lib/lunar/functions/download.lunar
+++ b/var/lib/lunar/functions/download.lunar
@@ -36,7 +36,7 @@ lget_unlock() {
 download_url() {
     local RETVAL
 	debug_msg "download_url($@)"
-	verbose_msg "trying to download \"$1\""
+	verbose_msg "trying to download \"$1/$2\""
 	connect &&
 	plugin_call SOURCE_DOWNLOAD $1 $2 $3
 	RETVAL=$?
diff --git a/var/lib/lunar/functions/main.lunar b/var/lib/lunar/functions/main.lunar
index b64cea8..d2b0c35 100644
--- a/var/lib/lunar/functions/main.lunar
+++ b/var/lib/lunar/functions/main.lunar
@@ -40,7 +40,7 @@ renew() {
     prune
   fi
 
-  display_update_log
+  display_update_log renew
 
   temp_destroy $TMP_LIN_SUCCESS
   temp_destroy $TMP_LIN_FAIL
@@ -110,8 +110,15 @@ rebuild()  {
   temp_destroy $TMP_QUEUE
 
   if [ -n "$QUEUE" ] ; then
+    export TMP_LIN_SUCCESS=$(temp_create "successful")
+    export TMP_LIN_FAIL=$(temp_create "failed")
+  
     message "${MESSAGE_COLOR}Starting rebuild of modules${DEFAULT_COLOR}"
     lin -c $QUEUE
+
+    display_update_log rebuild
+    temp_destroy $TMP_LIN_SUCCESS
+    temp_destroy $TMP_LIN_FAIL
   fi
 }
 
diff --git a/var/lib/lunar/functions/misc.lunar b/var/lib/lunar/functions/misc.lunar
index b9b9ac5..baa2ceb 100644
--- a/var/lib/lunar/functions/misc.lunar
+++ b/var/lib/lunar/functions/misc.lunar
@@ -116,9 +116,10 @@ filter() {
 
 unmap_device()
 {
-    local DEVICE
+    local DEVICE REAL
+	REAL=$(readlink -f $1)
     for DEVICE in $(ls -1d /dev/[hs]d* 2> /dev/null); do
-        if [ "$(readlink -f $DEVICE)" == "$(readlink -f $1)" ]; then
+        if [[ "$(readlink -f $DEVICE)" == "$REAL" ]]; then
             echo $DEVICE
             return 0
         fi
@@ -142,3 +143,25 @@ find_pam_aware()  {
 }
 
 
+custom_filters()
+{
+	local FILE
+	if [[ "${COMPRESS_MANPAGES:=on}" == "on" ]]; then
+		while read FILE; do
+			if [[ -f "$FILE" ]] ; then
+				if echo "$FILE" | grep '^/usr/share/man/man' | grep -q -v '\.gz$'; then
+					gzip -9 < "$FILE" > "$FILE.gz"
+					debug_msg "Compressing man page \"$FILE\""
+					rm -f "$FILE"
+					echo "$FILE.gz"
+				else
+					echo "$FILE"
+				fi
+			else
+				echo "$FILE"
+			fi
+		done
+	else
+		cat -
+	fi
+}
diff --git a/var/lib/lunar/functions/modules.lunar b/var/lib/lunar/functions/modules.lunar
index 76c3d39..f4cbc96 100644
--- a/var/lib/lunar/functions/modules.lunar
+++ b/var/lib/lunar/functions/modules.lunar
@@ -40,7 +40,7 @@ list_sections() {
 # purpose  : list the modules in a section, filter out the specific files
 list_modules() {
   debug_msg "list_modules ($@)"
-  if [ -z "$1" ] ; then
+  if [[ -z "$1" ]] ; then
     error_message "${PROBLEM_COLOR}list_modules(): no SECTION defined!${DEFAULT_COLOR}"
     exit 1
   fi
@@ -84,14 +84,14 @@ create_module_index() {
   debug_msg "create_module_index ($@)"
   # make sure it exists before trying to see it's writeable
   # this also assures that depends.cache gets remade
-  if [ ! -f $MODULE_INDEX ] ; then
+  if [[ ! -f $MODULE_INDEX ]] ; then
     touch $MODULE_INDEX &> /dev/null
   fi
   
   # silently fail if we cannot write to $MODULE_INDEX, it is okay
   # for this to fail in case we are a mere user using lvu's search
   # functionality
-  if [ ! -w "$MODULE_INDEX" ] ; then
+  if [[ ! -w "$MODULE_INDEX" ]] ; then
     return 0
   fi
  
@@ -101,7 +101,7 @@ create_module_index() {
   TMP_INDEX=$(temp_create "module.index")
 
   # here we have two options: system moonbase or custom:
-  if [ "$MOONBASE" == "/var/lib/lunar/moonbase" -a -f $INSTALL_LOGS/moonbase-$(installed_version moonbase) ] ; then
+  if [[ "$MOONBASE" == "/var/lib/lunar/moonbase" ]] && [[ -f $INSTALL_LOGS/moonbase-$(installed_version moonbase) ]] ; then
     # short way out:
     debug_msg "Quick generating \$MODULE_INDEX..."
     grep "/DETAILS$" $INSTALL_LOGS/moonbase-$(installed_version moonbase) | \
@@ -136,13 +136,22 @@ create_module_index() {
 function check_module_index() {
 (
   debug_msg "check_module_index ($@)"
-  if [ ! -e $MODULE_INDEX -o ! -e $DEPENDS_CACHE -o -n "$(find $MOONBASE -type f -name "DETAILS" -cnewer $MODULE_INDEX)" ] ; then
+  local RESULT=1
+  if [[ ! -e $MODULE_INDEX ]] || [[ ! -e $DEPENDS_CACHE ]]; then
     create_module_index
     create_depends_cache
-    return 0
+    RESULT=0
   else
-    return 1
+    if [[ -n "$(find $MOONBASE -type f -name "DEPENDS" -cnewer $DEPENDS_CACHE)" ]]; then
+      create_depends_cache
+      RESULT=0
+    fi
+    if [[ -n "$(find $MOONBASE -type f -name "DETAILS" -cnewer $MODULE_INDEX)" ]]; then
+      create_module_index
+      RESULT=0
+    fi
   fi
+  return $RESULT
 )
 }
 
@@ -155,48 +164,32 @@ find_section() {
   local SECTION SECTIONS
   debug_msg "find_section ($@)"
 
-  ZLOCAL_OVERRIDES=${ZLOCAL_OVERRIDES:=off}
-  if [ "$ZLOCAL_OVERRIDES" == "on" ] ; then
-    if SECTION=$(find "$MOONBASE/zlocal/" -type d -name $1 | sed -e "s|$MOONBASE/||" -e "s|/$1$||" ) ; then
-	  if [ -n "$SECTION" ]; then
-	    echo $SECTION
+  if [[ "${ZLOCAL_OVERRIDES:=off}" == "on" ]] ; then
+    if SECTION=$(find "$MOONBASE/zlocal/" -type d -name $1 | sed -e "s|$MOONBASE/||;s|/$1$||" ) ; then
+      if [[ -n "$SECTION" ]]; then
+        echo $SECTION
         return 0
-	  fi
+      fi
     fi
   fi
 
-  SECTION=$(grep ^$1: $MODULE_INDEX 2>/dev/null | head -n 1 | cut -d: -f2)
-  if [ -n "$SECTION" ] ; then
-    if [ -d "$MOONBASE/$SECTION/$1" ] ; then
-      echo "$SECTION"
-      return 0
-    fi
+  SECTION=$(awk -F: "(\$1==\"$1\"){print \$2;exit 0}" $MODULE_INDEX)
+  if [[ -n "$SECTION" ]] && [[ -d "$MOONBASE/$SECTION/$1" ]] ; then
+    echo "$SECTION"
+    return 0
   fi
 
   if ! check_module_index ; then
     # shave some time off not trying the rest of the code below since that
-	# is useless
-	return 1
-  fi
-
-  SECTION=$(grep ^$1: $MODULE_INDEX 2>/dev/null | head -n 1 | cut -d: -f2)
-  if [ -n "$SECTION" ] ; then
-    if [ -d "$MOONBASE/$SECTION/$1" ] ; then
-      echo "$SECTION"
-      return 0
-    fi
+    # is useless
+    return 1
   fi
 
-  if ! SECTIONS=$(list_sections) ; then
+  SECTION=$(awk -F: "(\$1==\"$1\"){print \$2;exit 0}" $MODULE_INDEX)
+  if [[ -n "$SECTION" ]] && [[ -d "$MOONBASE/$SECTION/$1" ]] ; then
+    echo "$SECTION"
     return 0
   fi
-           
-  for SECTION in $SECTIONS ; do
-    if [ -n "$(list_modules $SECTION | grep ^$MODULE$ )" ] ; then
-      echo "$SECTION"
-      return 0
-    fi
-  done
 
   return 1
 }
@@ -214,24 +207,24 @@ run_details() {
   # if this is a problem or not... -sofar
 
   SECTION=$(find_section $1)
-  if [ -z "$SECTION" ] ; then
+  if [[ -z "$SECTION" ]] ; then
     error_message  "${PROBLEM_COLOR}Unable to find module ${MODULE_COLOR}${1}${DEFAULT_COLOR}"  \
              "${PROBLEM_COLOR}in ${FILE_COLOR}$MOONBASE${DEFAULT_COLOR}"
     return 1
   else
-    if [ ! -f "$MOONBASE/$SECTION/$1/DETAILS" ] ; then
+    SCRIPT_DIRECTORY=$MOONBASE/$SECTION/$1
+    if [[ ! -f $SCRIPT_DIRECTORY/DETAILS ]] ; then
       error_message  "${PROBLEM_COLOR}Module ${MODULE_COLOR}${1}" \
                "${DEFAULT_COLOR}${PROBLEM_COLOR}has no ${FILE_COLOR}DETAILS" \
                "${DEFAULT_COLOR}${PROBLEM_COLOR}file!${DEFAULT_COLOR}"
       return 1
     fi
    
-    SCRIPT_DIRECTORY=$MOONBASE/$SECTION/$1
-    if [ -z "$WANT_VERSION" ] ; then
-      run_module_file $1 DETAILS &> /dev/null || return -1
+    if [[ -z "$WANT_VERSION" ]] ; then
+      . $SCRIPT_DIRECTORY/DETAILS &> /dev/null || return -1
     else
       TMP_DETAILS=$(temp_create "details.version")
-      cat $MOONBASE/$SECTION/$1/DETAILS | sed '/^[ ]*VERSION=/d' > $TMP_DETAILS
+      cat $MOONBASE/$SECTION/$1/DETAILS | sed '/^\s*VERSION=/d' > $TMP_DETAILS
       VERSION="$WANT_VERSION"
       . $TMP_DETAILS &> /dev/null || return -1
       temp_destroy $TMP_DETAILS
@@ -271,7 +264,7 @@ run_module_file() {
 # usage    : module_installed $MODULE
 # purpose  : check if $MODULE is installed (or held)
 module_installed() {
-  $(cat $MODULE_STATUS | cut -d: -f1,3 | grep -q -e "^$1:installed" -e "^$1:held")
+  $(cut -d: -f1,3 $MODULE_STATUS | grep -q -e "^$1:installed" -e "^$1:held")
 }
 
 
@@ -280,7 +273,7 @@ module_installed() {
 # purpose  : check if $MODULE is held
 module_held() {
   debug_msg "module_held ($@)"
-  $(cat $MODULE_STATUS | cut -d: -f1,3 | grep -q "^$1:held")
+  $(cut -d: -f1,3 $MODULE_STATUS | grep -q "^$1:held")
 }
 
 
@@ -313,9 +306,9 @@ module_license_accepted() {
   # REJECTED_LICESES is set, must _NOT_ be listed
   # * accept "osi" will accept all osi licenses
   # * accept "all" will accept anything
-  if [ -n "$ACCEPTED_LICENSES" ]; then
+  if [[ -n "$ACCEPTED_LICENSES" ]]; then
     for L in $ACCEPTED_LICENSES; do
-      if [ "$L" == "osi" -a "$IS_OSI" == "yes" ] || [ "$L" == "all" ] || [ "$LICENSE" == "$L" ] ; then
+      if [[ "$L" == "osi" ]] && "$IS_OSI" == "yes" ]] || [ "$L" == "all" ] || [ "$LICENSE" == "$L" ] ; then
         # explicitly accepted license!
 	debug_msg "module_license_accepted: \"$LICENSE\" is explicitly accepted"
         return 0
@@ -324,9 +317,9 @@ module_license_accepted() {
     # it was not explicitly accepted
     error_message "${MODULE_COLOR}$1${DEFAULT_COLOR}: ${PROBLEM_COLOR}License \"$LICENSE\" is not explicitly accepted${DEFAULT_COLOR}"
     return 1
-  elif [ -n "$REJECTED_LICENSES" ]; then
+  elif [[ -n "$REJECTED_LICENSES" ]]; then
     for L in $REJECTED_LICENSES; do
-      if [ "$LICENSE" == "$L" ]; then
+      if [[ "$LICENSE" == "$L" ]]; then
         # explicitly rejected license!
 	error_message "${MODULE_COLOR}$1${DEFAULT_COLOR}: ${PROBLEM_COLOR}License \"$LICENSE\" is explicitly rejected${DEFAULT_COLOR}"
 	return 1
@@ -337,7 +330,7 @@ module_license_accepted() {
     return 0
   else ## if [ -z "${ACCEPTED_LICENSES}${REJECTED_LICESES}" ]; then
     # so now we have a problem - the user didn't set their prefs
-    if [ "$IS_OSI" != "yes" ] ; then
+    if [[ "$IS_OSI" != "yes" ]]; then
       error_message "${MODULE_COLOR}$1${DEFAULT_COLOR}: ${PROBLEM_COLOR}License \"$LICENSE\" cannot be accepted by default${DEFAULT_COLOR}"
       return 1
     fi
@@ -350,7 +343,7 @@ module_license_accepted() {
 # purpose  : check if $MODULE is exiled
 module_exiled() {
   debug_msg "module_exiled ($@)"
-  $(cat $MODULE_STATUS | cut -d: -f1,3 | grep -q "^$1:exiled")
+  $(cut -d: -f1,3 $MODULE_STATUS | grep -q "^$1:exiled")
 }
 
 
@@ -382,12 +375,11 @@ module_version() {
 hold_modules() {
   local MODULE
   debug_msg "hold_modules ($@)"
-  if [ -n "$1" ] ; then
+  if [[ -n "$1" ]] ; then
     lock_file $MODULE_STATUS_BACKUP &&
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
-      grep -v "^$MODULE:" $MODULE_STATUS > $MODULE_STATUS_BACKUP
-      grep "^$MODULE:" $MODULE_STATUS | sed "s:installed:held:" >> $MODULE_STATUS_BACKUP
+      awk -F: -v mod=$MODULE '{if ($1==mod && $3 == "installed") {print $1":"$2":held:"$4":"$5}  else print;}' $MODULE_STATUS > $MODULE_STATUS_BACKUP
       cp $MODULE_STATUS_BACKUP $MODULE_STATUS
     done
     unlock_file $MODULE_STATUS
@@ -401,13 +393,12 @@ hold_modules() {
 # purpose  : put modules on hold back to normal
 unhold_modules () {
   local MODULE
-  debug_msg "unhold_modules  ($@)"
-  if [ -n "$1" ] ; then
+  debug_msg "unhold_modules ($@)"
+  if [[ -n "$1" ]] ; then
     lock_file $MODULE_STATUS_BACKUP &&
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
-      grep -v "^$MODULE:" $MODULE_STATUS > $MODULE_STATUS_BACKUP
-      grep "^$MODULE:" $MODULE_STATUS | sed "s:held:installed:" >> $MODULE_STATUS_BACKUP
+      awk -F: -v mod=$MODULE '{if ($1==mod && $3 == "held") {print $1":"$2":installed:"$4":"$5}  else print;}' $MODULE_STATUS > $MODULE_STATUS_BACKUP
       cp $MODULE_STATUS_BACKUP $MODULE_STATUS
     done
     unlock_file $MODULE_STATUS
@@ -422,17 +413,16 @@ unhold_modules () {
 exile_modules() {
   local MODULE
   debug_msg "exile_modules ($@)"
-  if [ -n "$1" ] ; then
+  if [[ -n "$1" ]] ; then
     lock_file $MODULE_STATUS_BACKUP &&
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
-      if $(module_installed $MODULE) ; then
-        grep -v "^$MODULE:" $MODULE_STATUS > $MODULE_STATUS_BACKUP
-        grep "^$MODULE:" $MODULE_STATUS | sed "s:installed:exiled:" >> $MODULE_STATUS_BACKUP
+      if $(module_installed $MODULE); then
+        error_message "${PROBLEM_COLOR}Cannot exile installed module ${MODULE_COLOR}$MODULE${DEFAULT_COLOR}"
       else
-        echo "$MODULE::exiled:0.0" >> $MODULE_STATUS_BACKUP
+        echo "$MODULE::exiled::" >> $MODULE_STATUS_BACKUP
+        cp $MODULE_STATUS_BACKUP $MODULE_STATUS
       fi
-      cp $MODULE_STATUS_BACKUP $MODULE_STATUS
     done
     unlock_file $MODULE_STATUS
     unlock_file $MODULE_STATUS_BACKUP
@@ -451,7 +441,6 @@ unexile_modules () {
     lock_file $MODULE_STATUS &&
     for MODULE in "$@" ; do
       grep -v "^$MODULE:" $MODULE_STATUS > $MODULE_STATUS_BACKUP
-      grep "^$MODULE:" $MODULE_STATUS | sed "s:exiled:installed:" >> $MODULE_STATUS_BACKUP
       cp $MODULE_STATUS_BACKUP $MODULE_STATUS
     done
     unlock_file $MODULE_STATUS
@@ -474,20 +463,10 @@ remove_module() {
   verbose_msg "updating lunar state files after module removal"
   lock_file $MODULE_STATUS_BACKUP                              &&
   lock_file $MODULE_STATUS                                     && 
-  grep  -v  "^$1:" $MODULE_STATUS_BACKUP  >  $MODULE_STATUS 2>/dev/null
-  cat $MODULE_STATUS >  $MODULE_STATUS_BACKUP               2>/dev/null
+  grep -v "^$1:" $MODULE_STATUS > $MODULE_STATUS_BACKUP
+  cp $MODULE_STATUS_BACKUP $MODULE_STATUS
   unlock_file $MODULE_STATUS
   unlock_file $MODULE_STATUS_BACKUP
-
-  if [ -n "$EXILE" ] ; then
-     exile_modules "$1"                                  &&
-     lock_file $DEPENDS_STATUS_BACKUP                    &&
-     lock_file $DEPENDS_STATUS                           &&
-     grep  -v  ":$1:" $DEPENDS_STATUS_BACKUP  >   $DEPENDS_STATUS  &&
-     cat $DEPENDS_STATUS >  $DEPENDS_STATUS_BACKUP
-     unlock_file $DEPENDS_STATUS
-     unlock_file $DEPENDS_STATUS_BACKUP
-  fi
 }
 
 
@@ -545,10 +524,10 @@ module_is_expired() {
     LINE=$(grep "^$MODULE:" $MODULE_STATUS | grep -v "^moonbase" | awk -F: '{print "IDATE="$2" STATUS="$3" IVERSION="$4}')
     eval $LINE
     if run_details $MODULE &> /dev/null ; then
-      if [ "$STATUS" == "installed" ] ; then
-        if [ "$VERSION" != "$IVERSION" ] || [ -z "$IDATE" ] ||
+      if [[ "$STATUS" == "installed" ]] ; then
+        if [[ "$VERSION" != "$IVERSION" ]] || [[ -z "$IDATE" ]] ||
 	  (( "$UPDATED" > "$IDATE" )) ; then
-	  if [ "$MODULE" != "lunar" ] && [ "$MODULE" != "theedge" ] ; then
+	  if [[ "$MODULE" != "lunar" ]] && [[ "$MODULE" != "theedge" ]] ; then
 	    return 0
 	  fi
 	fi
@@ -617,32 +596,11 @@ update_modules() {
 
 check_blacklist() {
   debug_msg "check_blacklist ($@)"
-  # Copyrighted Jason Johnston  2002 under GPLv2
-
-  # This checks the /var/state/lunar/gcc.<platform>
-  # file to see if it exists.  If it does exist then
-  # we grep it to see the names of the modules that
-  # DO NOT compile with gcc 3x.  If the module is
-  # on the list, we set the path so that gcc 3x is
-  # NOT used.
-
-  # If you find a module that does not compile with
-  # gcc 3x please email your findings to
-  # maintainer at lunar-linux.org.
-
-  if [ -z "$PLATFORM" ] ; then
-    eval $(grep PLATFORM= /etc/lunar/local/optimizations)
-  fi
-
-  # Usage check_checklist $MODULES
-  PLATFORM=${PLATFORM:-x86}
   if [ -f /var/state/lunar/blacklist.$PLATFORM ] ; then
     if grep "^$MODULE$" /var/state/lunar/blacklist.$PLATFORM ; then
-      message "${PROBLEM_COLOR}! Module ${DEFAULT_COLOR}${MODULE_COLOR}$MODULE${DEFAULT_COLOR}${PROBLEM_COLOR} is blacklisted and will not be installed${DEFAULT_COLOR}"
+      error_message "${PROBLEM_COLOR}ERROR:${DEFAULT_COLOR}${MESSAGE_COLOR} Module ${DEFAULT_COLOR}${MODULE_COLOR}$MODULE${DEFAULT_COLOR}${MESSAGE_COLOR} is blacklisted and will not be installed!${DEFAULT_COLOR}"
       exit 0
     fi
-  else
-    touch /var/state/lunar/blacklist.$PLATFORM
   fi
 }
 
diff --git a/var/lib/lunar/functions/tracking.lunar b/var/lib/lunar/functions/tracking.lunar
index df6c4e1..7e140d1 100644
--- a/var/lib/lunar/functions/tracking.lunar
+++ b/var/lib/lunar/functions/tracking.lunar
@@ -73,7 +73,7 @@ create_install_log() {
 
   export IFS="$TAB_ENTER_IFS"
 
-  parse_iw | sort | uniq | filter  "$LOCAL_EXCLUDED" | exists > $TMP_INST_LOG
+  parse_iw | sort | uniq | filter "$LOCAL_EXCLUDED" | custom_filters | exists > $TMP_INST_LOG
   echo "$INSTALL_LOGS/$MODULE-$VERSION"                 >> $TMP_INST_LOG
   echo "$COMPILE_LOGS/$MODULE-$VERSION.bz2"             >> $TMP_INST_LOG
   echo "$MD5SUM_LOGS/$MODULE-$VERSION"                  >> $TMP_INST_LOG
diff --git a/var/lib/lunar/functions/updatelog.lunar b/var/lib/lunar/functions/updatelog.lunar
index c27eeef..54aa6eb 100644
--- a/var/lib/lunar/functions/updatelog.lunar
+++ b/var/lib/lunar/functions/updatelog.lunar
@@ -24,7 +24,7 @@ display_update_log() {
   rm -f /var/log/lunar/update 
   { 
     if [ -e "$TMP_LIN_SUCCESS" -a -e "$TMP_LIN_FAIL" ] ; then 
-      display_success_info
+      display_success_info $1
     fi
   } | tee /var/log/lunar/update 
 }
@@ -41,7 +41,7 @@ display_success_info() {
   NUMFAILURES=$(cat $TMP_LIN_FAIL | wc -l)
 
   message
-  message  "${MESSAGE_COLOR}Lunar renew completed at `date`${DEFAULT_COLOR}"
+  message  "${MESSAGE_COLOR}Lunar $1 completed at `date`${DEFAULT_COLOR}"
   message  "Successful  : " $NUMSUCCESS
   message  "Failed      : " $NUMFAILURES  
   message  


More information about the Lunar-commits mailing list