[Cdd-commits] r232 - cdd/trunk/cdd cdd/trunk/cdd/share/cdd/menu cdd/trunk/cdd/templates projects/med/trunk/menu

Andreas Tille debian-custom@lists.debian.org
Sat, 10 Jul 2004 00:38:42 -0600


Author: tille
Date: Sat Jul 10 00:38:41 2004
New Revision: 232

Modified:
   cdd/trunk/cdd/cdd-gen-control
   cdd/trunk/cdd/cdd-install-helper
   cdd/trunk/cdd/share/cdd/menu/cdd-menu
   cdd/trunk/cdd/templates/common.config
   cdd/trunk/cdd/templates/postinst
   cdd/trunk/cdd/templates/postrm
   projects/med/trunk/menu/bio
   projects/med/trunk/menu/dent
Log:
Various changes belonging to the change of the menu handling.   It will not
work but I need a backup before I leave this place for a longer trip.


Modified: cdd/trunk/cdd/cdd-gen-control
==============================================================================
--- cdd/trunk/cdd/cdd-gen-control	(original)
+++ cdd/trunk/cdd/cdd-gen-control	Sat Jul 10 00:38:41 2004
@@ -3,7 +3,7 @@
 # Author: Petter Reinholdtsen <pere@hungry.com>
 # Date:   2001-08-23
 #
-# # $Id: cdd-gen-control,v 1.5 2004/06/29 16:55:46 otavio Exp $
+# # $Id$
 #
 # Generate the control file used by the Debian Edu task package.
 
@@ -88,8 +88,9 @@
 
     for $task (sort keys %taskinfo) {
 	print "Package: $task\n";
+	print "Architecture: all\n";
 	my $header;
-	for $header (qw(Section Architecture Priority)) {
+	for $header (qw(Section XBCS-Task Priority)) {
 	    print "$header: $taskinfo{$task}{$header}\n"
 		if (defined $taskinfo{$task}{$header});
 	}
@@ -244,7 +245,9 @@
 
 	$_ = $line;
 	$taskinfo{$curpkg}{'Section'}      = $1 if (m/^Section:\s+(.+)$/);
-	$taskinfo{$curpkg}{'Architecture'} = $1 if (m/^Architecture:\s+(.+)$/);
+	# This task name is needed in the Menu file but the former tag "Architecture"
+	# is never used and was left out here
+	$taskinfo{$curpkg}{'XBCS-Task'}    = $1 if (m/^Task:\s+(.+)$/);
 
 	$taskinfo{$curpkg}{'Priority'}     = $1 if (m/^Priority:\s+(.+)$/);
 

Modified: cdd/trunk/cdd/cdd-install-helper
==============================================================================
--- cdd/trunk/cdd/cdd-install-helper	(original)
+++ cdd/trunk/cdd/cdd-install-helper	Sat Jul 10 00:38:41 2004
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 cdd=`grep "^Package:" debian/control.stub | sed "s/Package: \+//"`
-menudir=etc/cdd/"$cdd"/menu
+menudir=usr/share/cdd/"$cdd"/menu
 
 SubstCDDName () {
     sed -e "s/#CDD#/${cdd}/g" \
@@ -10,76 +10,62 @@
 	debian/$2
 }
 
-# if there is no directory named menu ignore the menu stuff
-if [ -d menu ] ; then
-  # copy user menu file
-  for pkg in `ls menu docs | grep -v "^[a-z]*:$*" | grep -v "^$" | sort | uniq` ; do
-    if [ -d debian/"$cdd"-"$pkg" ] ; then
-      mkdir -p debian/"$cdd"-"$pkg"/"$menudir"
+# Make dependency from menu containing packages to the right #CDD#-common version
+version="(>= `dpkg-parsechangelog | grep "^Version:" | sed -e "s/^Version:[[:space:]]\+\([\.0-9]*\)[[:space:]]*/\1/"`)"
+
+# General Task registry, menu registration and post{inst,rm} preparation
+for pkg in `ls tasks | grep -v "^[a-z]*:$*" | grep -v "^$" | sort | uniq` ; do
+    # registration
+    if ! grep -q -w "^Task:" tasks/$pkg ; then
+	echo "Control file template tasks/$pkg does not contain 'Task:' field."
+	exit -1
     fi
-    if [ -d menu/"$pkg" ] ; then
-      cp -a menu/"$pkg" debian/"$cdd"-"$pkg"/"$menudir"/"$cdd"-"$pkg"
+    task=`grep -w "^Task:" tasks/$pkg | sed "s/^Task:[[:space:]]*\([^[:space]]*\)/\1/"`
+    mkdir -p debian/"$cdd"-"$pkg"/usr/share/cdd/"$cdd"/
+    echo "$task" > debian/"$cdd"-"$pkg"/usr/share/cdd/tasks/"$cdd"/"$pkg"
+
+    # if we provide an extra menu which overrides some menus provided by
+    # the maintainers of the dependand packages move them now to the right
+    # directory
+    if [ -d menu -a -x menu/"$pkg" ] ; then
+	mkdir -p debian/"$cdd"-"$pkg"/"$menudir"
+	cp -a menu/"$pkg" debian/"$cdd"-"$pkg"/"$menudir"/"$cdd"-"$pkg"
     fi
+
+    # Provide a README.Debian in any case
+    mkdir -p debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+    [ ! -s docs/"$pkg"/README.Debian ] && cp -a /usr/share/cdd/templates/README.Debian debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
     # Check for documentation of packages which should be viewed in
     # case of missing GUI
-    if [ -d docs -a -d docs/"$pkg" ] ; then
-      for dep in `ls docs/"$pkg"/[a-z]*.txt` ; do
-        # first check, whether this package is really listed in the
-	# dependencies
-	depmenu=`basename ${dep} .txt`
-	if ! grep -A 3 "Package: $cdd-$pkg" debian/control  | grep "Depends:" | grep -q -w ${depmenu} ; then
-	   echo "Package ${depmenu} seems not to be in dependencies"
-	   continue
-	fi
-        menuhead=`head -n 1 $dep`
-	title=`echo "$menuhead" | sed "s/[[:space:]]*:[[:space:]]\+.*//"`
-	hint=`echo "$menuhead" | sed "s/.*:[[:space:]]\+//"`
-	section=`echo "$cdd/$pkg" | perl -ne '@s = split ?/?; print "\u\L$s[0]/"."\u\L$s[1]";'`
-	if [ _"$hint" != _"$title" ] ; then
-	  cat >> debian/"$cdd"-"$pkg"/"$menudir"/"$cdd"-"$pkg" <<EOT
-?package(${cdd}-${pkg}): needs="text" \\
-    section="${section}" \\
-    title="${title}" \\
-    command="pager /usr/share/doc/${cdd}-${pkg}/${depmenu}.txt" \\
-    hints="$hint"
-EOT
-        else
-	  echo "Menu entry ${dep} for package ${cdd}-${pkg} has wrong format."
-	  title=`echo ${depmenu} | perl -ne 'print "\u\L$_";'`
-	  cat >> debian/"$cdd"-"$pkg"/"$menudir"/"$cdd"-"$pkg" <<EOT
-?package(${cdd}-${pkg}): needs="text" \\
-    section="${section}" \\
-    title="${title}" \\
-    command="view /usr/share/doc/${cdd}-${pkg}/${depmenu}"
-EOT
-	fi
-      done
+    if [ -d menu/docs -a -d menu/docs/"$pkg" ] ; then
+	for dep in `ls menu/docs/"$pkg"/[a-z]*.txt` ; do
+            # Formerly here was checked, whether this package is really listed in the
+	    # dependencies, with more clever menu handling it is enough to verify
+	    # whether it is mentioned at all in the package relations and the menu
+	    # system cares about whether a sugested package is installed or not
+	    depmenu=`basename ${dep} .txt`
+	    if ! grep -A 5 "Package: $cdd-$pkg" debian/control | grep -q -w ${depmenu} ; then
+		## echo "Package ${depmenu} seems not to be in dependencies"
+		continue
+	    fi
+	    cp -a "$dep" debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
+	done
     fi
+
+    # post{inst/rm} template are appended if some extra scripts are provided or just created
     sed -e "s/#CDD#/${cdd}/g" \
         -e "s/#PKG#/${cdd}-${pkg}/g" \
-       /usr/share/cdd/templates/postinst > debian/"$cdd"-"$pkg".postinst
+       /usr/share/cdd/templates/postinst >> debian/"$cdd"-"$pkg".postinst
     sed -e "s/#CDD#/${cdd}/g" \
         -e "s/#PKG#/${cdd}-${pkg}/g" \
-       /usr/share/cdd/templates/postrm > debian/"$cdd"-"$pkg".postrm
-  done
+       /usr/share/cdd/templates/postrm >> debian/"$cdd"-"$pkg".postrm
 
-  # check for packages without menu
-  for pkg in `ls tasks` ; do
-    if [ ! -d debian/"$cdd"-"$pkg"/"$menudir" -a ! -d docs/"$pkg" ] ; then
-      echo "Warning: Please provide a menu for package ${cdd}-${pkg}."
-    else
-      # If there is a menu then we have to depend from ${cdd}-common
-      mv debian/control debian/control.bak
-      # If there is a file named VERSION we have to uses versioned dependency
-      # if [ -s VERSION ] ; then version="(>= `head -n 1 VERSION`)" ; else version='' ; fi
-      # I decided to use versioned Build-Depends in any case:
-      version="(>= `dpkg-parsechangelog | grep "^Version:" | sed -e "s/^Version:[[:space:]]\+\([\.0-9]*\)[[:space:]]*/\1/"`)"
-      sed -e "/^Package: ${cdd}-${pkg}/{;N;N;N;s/\(Package: ${cdd}-${pkg}\n.*Depends: .*\)\(\n\)/\1, $cdd-common $version\2/;}" \
+    # Now add the versioned dependencies on the #CDD#-common package
+    mv debian/control debian/control.bak
+    sed -e "/^Package: ${cdd}-${pkg}/{;N;N;N;s/\(Package: ${cdd}-${pkg}\n.*Depends: .*\)\(\n\)/\1, $cdd-common $version\2/;}" \
            debian/control.bak >  debian/control
-      rm -f debian/control.bak
-    fi
-  done
-fi
+    rm -f debian/control.bak
+done
 
 # if common/common exists use this as general helper script
 if [ -s common/common ] ; then
@@ -123,11 +109,3 @@
   fi
 fi
 
-# if docs exists copy relevant docs
-if [ -d docs ] ; then
-  for pkg in `ls docs` ; do
-    mkdir -p debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
-    [ ! -s docs/"$pkg"/README.Debian ] && cp -a /usr/share/cdd/templates/README.Debian debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
-    cp -a docs/"$pkg"/[a-z]* debian/"$cdd"-"$pkg"/usr/share/doc/"$cdd"-"$pkg"
-  done
-fi

Modified: cdd/trunk/cdd/share/cdd/menu/cdd-menu
==============================================================================
--- cdd/trunk/cdd/share/cdd/menu/cdd-menu	(original)
+++ cdd/trunk/cdd/share/cdd/menu/cdd-menu	Sat Jul 10 00:38:41 2004
@@ -17,25 +17,175 @@
 
 CDDUSER=`whoami`
 
+tasksdir=/usr/share/cdd/tasks
+
 # it has to be run only by unprivileged users via update-menus
 test "${CDDUSER}" == "root" && exit 0
 
+# Upper case the first letter of a string to have a nicer menu
+NameToUpper() {
+	if [ $# -ne 1 ] ; then
+		RET=64 # EX_USAGE
+		return ${RET}
+	fi
+	echo $1 | perl -ne 'print "\u\L$_";'
+	return 0
+}
+
+# Obtain title from HTML page for menu hints
+GetHTMLTitle () {
+        if [ $# -ne 1 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+        perl -ne 'while (<>) {chomp; $all.="$_ ";}
+                    ($title) = ($all =~ /.*\<title\>(.*)\<\/title\>.*/i);
+                    $title =~ s/\s+/ /g ;
+                    print $title ; exit 0;' $1
+	return 0
+}
+
+# Obtain title (= first line) from text file for menu hints
+GetTxtTitle () {
+        if [ $# -ne 1 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+	head -1 $1 | sed -e "s/[[:space:]]\+/ /g" -e "s/^[[:space:]]*\(.*\)[[:space:]]*$$/\1/"
+	return 0
+}
+
+# Strip CDD-name from meta package name
+GetTaskNameFromPackage () {
+        if [ $# -ne 2 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+	CDD=$1  # CDD - name
+	PKG=$2  # meta package name
+	echo $PKG | sed "s/^$CDD-//"
+	return 0
+}
+
+# Obtain task title which has to be defined in the meta package control templates
+GetTaskTitle () {
+        if [ $# -ne 1 ] ; then
+                RET=64 # EX_USAGE
+                return ${RET}
+        fi
+	PKG=$1  # meta package name
+	cat "$tasksdir"/"$CDD"/`GetTaskNameFromPackage "$CDD" "$PKG"`
+	return 0
+}
+
+getMenuEntriesFromDependencies() {
+	RET=""
+	if [ $# -ne 1 ] ; then
+		RET=64 # EX_USAGE
+		return ${RET}
+	fi
+	PKG=$1
+	TASK=`GetTaskTitle $PKG`
+	SECTION=`NameToUpper "$CDD"`/`NameToUpper "$TASK"`
+
+	# find the list of Depends / Recommends / Suggests
+	DepPkgs=`dpkg --status "$PKG" | \
+		sed -e "/^Description/,$$d" -e "/^Conffiles/,$$d" | \
+		grep -v ^[A-CE-QT-Z] | \
+		grep -v ^S[eot] | \
+		sed -e "s/([^)]*)//" \
+		    -e "s/,* *${CDD}-common//" \
+		    -e "s/^[^:]*: *//" \
+		    -e "s/, */\\n/g" | \
+		sort | uniq`
+
+	# check whether CDD-maintainer provided menu override different from
+	# package maintainers menu file
+	cddmenufile=""
+	if   [ -s "$HOME"/.menu/"$PKG" ] ; then
+		cddmenufile="$HOME"/.menu/"$PKG"
+	elif [ -s /etc/cdd/"$CDD"/menu/"$PKG" ] ; then
+		cddmenufile=/etc/cdd/"$CDD"/menu/"$PKG"
+	elif [ -s /usr/lib/cdd/"$CDD"/menu/"$PKG" ] ; then
+		cddmenufile=/usr/lib/cdd/"$CDD"/menu/"$PKG"
+	elif [ -s /usr/share/cdd/"$CDD"/menu/"$PKG" ] ; then
+		cddmenufile=/usr/share/cdd/"$CDD"/menu/"$PKG"
+	fi
+
+	for pkg in $DepPkgs ; do
+	    # if CDD maintainer provided override just continue
+	    [ ! -z "$cddmenufile" ] && grep -q -i "?package($pkg)" "$cddmenufile" && continue
+
+	    # check for documentation text of CDD maintainer which should
+	    # be prefered over package maintainers menu
+	    docfile=""
+	    if   [ -s /usr/share/doc/"$PKG"/"$pkg".html ] ; then
+		docfile=/usr/share/doc/"$PKG"/"$pkg".html
+	    elif [ -s /usr/share/doc/"$PKG"/"$pkg".txt ] ; then
+		docfile=/usr/share/doc/"$PKG"/"$pkg".txt
+	    elif [ -s /usr/share/doc/"$PKG"/"$pkg" ] ; then
+		docfile=/usr/share/doc/"$PKG"/"$pkg"
+	    fi
+	    # if CDD maintainer provides documentation view this as menu entry ...
+	    if [ ! -z "$docfile" -a -s "$docfile" ] ; then
+		hint=""
+		if file "$docfile" | grep -q HTML ; then
+		    senspager=sensible-browser
+		    hint=`GetHTMLTitle "$docfile"`
+		else
+		    senspager=sensible-pager
+		    hint=`GetTxtTitle "$docfile"`
+		fi
+		if [ ! -z "$hint" ] ; then
+		    hint="hints=\""$hint"\""
+		fi
+		cat <<EOT
+?package($pkg): needs="text" \\
+        section="$SECTION" \\
+	title="`NameToUpper "$pkg"`" $hint \\
+	command="$senspager $docfile"
+EOT
+	    fi
+	    
+	    pkgmenufile=""
+	    if   [ -s "$HOME"/.menu/"$pkg" ] ; then
+		pkgmenufile="$HOME"/.menu/"$pkg"
+	    elif [ -s /etc/menu/$pkg ] ; then
+		pkgmenufile=/etc/menu/$pkg
+	    elif [ -s /usr/lib/menu/$pkg ] ; then
+		pkgmenufile=/usr/lib/menu/$pkg
+	    elif [ -s /usr/lib/share/$pkg ] ; then
+		pkgmenufile=/usr/share/menu/$pkg
+	    fi
+	    if [ ! -z "$pkgmenufile" ] ; then
+		sed -e "/^[[:space:]]*$$/d" \
+		    -e "s?\(section\)[[:space:]]*=[[:space:]]*\"*[^\"]*\"*?\1=\""$SECTION"\"?" $pkgmenufile
+	    fi
+	done
+	
+	[ -s "$cddmenufile" ] && cat "$cddmenufile"
+}
+
 ALLCDD=`getCDDList`
 for CDD in ${ALLCDD}; do
 	# read per CDD conf
 	test -f  ${CONFBASE}/${CDD}/${CDD}.conf && \
 		source ${CONFBASE}/${CDD}/${CDD}.conf
-	
-	# print on STDOUT menu generic entries if user belongs to CDD
-	checkUserInCDD ${CDD} ${CDDUSER} && \
-		test -d ${CONFBASE}/${CDD}/menu/ && \
-			find ${CONFBASE}/${CDD}/menu/ -maxdepth 1 -mindepth 1 -type f \
-				-exec cat {} \;
-
-	# and role specific menu entries
-	for ROLE in `getUserRoles ${CDD} ${CDDUSER}`; do
-		test -d ${CONFBASE}/${CDD}/menu/${ROLE} &&
-			find ${CONFBASE}/${CDD}/menu/${ROLE} -maxdepth 1 -mindepth 1 \
-				-type f -exec cat {} \;
+
+	for PKG in `ls "$tasksdir"/"$CDD"` ; do
+		getMenuEntriesFromDependencies "$PKG"
 	done
+
+#	# print on STDOUT menu generic entries if user belongs to CDD
+#	checkUserInCDD ${CDD} ${CDDUSER} && \
+#		test -d ${CONFBASE}/${CDD}/menu/ && \
+#			find ${CONFBASE}/${CDD}/menu/ -maxdepth 1 -mindepth 1 -type f \
+#				-exec cat {} \;
+#
+#	# and role specific menu entries
+#	for ROLE in `getUserRoles ${CDD} ${CDDUSER}`; do
+#		test -d ${CONFBASE}/${CDD}/menu/${ROLE} &&
+#			find ${CONFBASE}/${CDD}/menu/${ROLE} -maxdepth 1 -mindepth 1 \
+#				-type f -exec cat {} \;
+#	done
 done

Modified: cdd/trunk/cdd/templates/common.config
==============================================================================
--- cdd/trunk/cdd/templates/common.config	(original)
+++ cdd/trunk/cdd/templates/common.config	Sat Jul 10 00:38:41 2004
@@ -1,9 +1,11 @@
 #!/bin/sh -e
 
-. /usr/share/debconf/confmodule
-
-db_version 2.0
-db_capb backup
+# Initialize debconf if not yet done
+if [ ! -z "$DEBCONF_REDIR" ]; then
+    . /usr/share/debconf/confmodule
+    db_version 2.0
+    db_capb backup
+fi
 
 db_input "medium" "shared/#CDD#-common/usermenus" || true
 db_go

Modified: cdd/trunk/cdd/templates/postinst
==============================================================================
--- cdd/trunk/cdd/templates/postinst	(original)
+++ cdd/trunk/cdd/templates/postinst	Sat Jul 10 00:38:41 2004
@@ -1,9 +1,20 @@
 #!/bin/bash -e
 
+# This is the default postinst file from the cdd-dev package which is used
+# in all meta packages.  If there is a certain need to provide extra
+# postinst files for some meta packages this template will be appended.  Thus
+# it will be checked whether debconf was just initialized.
+#
+# You should not insert the #DEBHELPER# template in the special postscript
+# file because it is in the end of this template anyway.
+
 test -x /usr/sbin/cdd-update-menus && /usr/sbin/cdd-update-menus -d #CDD#
 
-. /usr/share/debconf/confmodule
-db_version 2.0
+# Initialize debconf if not yet done
+if [ ! -z "$DEBCONF_REDIR" ]; then
+    . /usr/share/debconf/confmodule
+    db_version 2.0
+fi
 
 . /etc/cdd/cdd.conf
 if [ -s /etc/cdd/#CDD#/#CDD#.conf ] ; then . /etc/cdd/#CDD#/#CDD#.conf ; fi
@@ -11,7 +22,7 @@
 case "$1" in
     abort-deconfigure|abort-remove|abort-upgrade)
 	;;
-    configure)
+    configure|upgrade)
 	db_get "shared/#CDD#-common/usermenus" || true
 	case "$RET" in
     	    "Each package installation")
@@ -28,23 +39,8 @@
 	;;
 esac
 
-# Version 0.3 changed ${HOME}/.menu which is not necessary any more and
-# thus files will be removed now
-# This code should be removed for the stable release because we can not
-# care for clean updates to old testing verisons for endless time ...
-for ROLE in `getCDDRoleList #CDD#`; do
-        for CDDUSER in `getUsersInRole #CDD# ${ROLE} 1`; do
-		USERHOME="`getUserHome ${CDDUSER}`"
-		if [ -d ${USERHOME}/.menu ] ; then
-		    OLDENTRY="${USERHOME}/.menu/cdd-menu"
-		    test -L ${OLDENTRY} && rm -f ${OLDENTRY} \
-			    && cddLog "Removing old menu entry for ${CDDUSER}"
-		fi
-        done
-done
+db_stop
 
 #DEBHELPER#
 
-db_stop
-
 exit 0

Modified: cdd/trunk/cdd/templates/postrm
==============================================================================
--- cdd/trunk/cdd/templates/postrm	(original)
+++ cdd/trunk/cdd/templates/postrm	Sat Jul 10 00:38:41 2004
@@ -1,14 +1,24 @@
 #!/bin/bash -e
 
+# This is the default postrm file from the cdd-dev package which is used
+# in all meta packages.  If there is a certain need to provide extra
+# postrm files for some meta packages this template will be appended.  Thus
+# it will be checked whether debconf was just initialized.
+#
+# You should not insert the #DEBHELPER# template in the special postscript
+# file because it is in the end of this template anyway.
+
 test -x /usr/sbin/cdd-update-menus && /usr/sbin/cdd-update-menus -d #CDD# 
 
 test -s /etc/cdd/cdd.conf         && . /etc/cdd/cdd.conf
 test -s /etc/cdd/#CDD#/#CDD#.conf && . /etc/cdd/#CDD#/#CDD#.conf
 
-
 if [ -x /usr/sbin/cdd-update-usermenus ] ; then
-    . /usr/share/debconf/confmodule
-    db_version 2.0
+    # Initialize debconf if not yet done
+    if [ ! -z "$DEBCONF_REDIR" ]; then
+        . /usr/share/debconf/confmodule
+        db_version 2.0
+    fi
 
     . /etc/cdd/cdd.conf
     if [ -s /etc/cdd/#CDD#/#CDD#.conf ] ; then . /etc/cdd/#CDD#/#CDD#.conf ; fi

Modified: projects/med/trunk/menu/bio
==============================================================================
--- projects/med/trunk/menu/bio	(original)
+++ projects/med/trunk/menu/bio	Sat Jul 10 00:38:41 2004
@@ -1,19 +1,2 @@
 ?package(med-bio):needs="text" section="Med/Microbiology"\
   title="Boxshade" command="/usr/bin/boxshade"
-?package(med-bio):needs="X11" section="Med/Microbiology"\
-  title="Bugsx"  command="/usr/bin/bugsx -g +0+0" hints="Evolve Biomorphs"
-?package(med-bio):needs="X11" section="Med/Microbiology"\
-  title="Garlic" command="/usr/bin/garlic" hints="Molecular Visualization"
-?package(med-bio):needs="X11" section="Med/Microbiology"\
-  title="ghemical" command="/usr/bin/ghemical"
-?package(med-bio):needs="X11" section="Med/Microbiology"\
-  title="NjPlot" command="/usr/bin/njplot" hints="Tree Drawing"
-?package(med-bio):needs="x11" section="Med/Microbiology" \
-  title="PyMOL" command="/usr/bin/pymol" \
-  hints="PyMOL Molecular Graphics System"
-?package(med-bio):needs="x11" section="Med/Microbiology" \
-  title="rasmol" command="/usr/bin/rasmol" \
-  hints="Molecule visualization and rendering"
-?package(med-bio):needs="text" section="Med/Microbiology"\
-  title="Tree-Puzzle" command="/usr/bin/tree-puzzle"\
-  hints="Reconstruction of Phylogenetic Trees"

Modified: projects/med/trunk/menu/dent
==============================================================================
--- projects/med/trunk/menu/dent	(original)
+++ projects/med/trunk/menu/dent	Sat Jul 10 00:38:41 2004
@@ -1,4 +1,4 @@
 ?package(med-dent):needs="X11" section="Med/Dent"\
   title="OdontoLinux"\
-  command="/usr/bin/med-dent"\
+  command="/usr/bin/odontolinux"\
   hints="Web-Browser viewing OdontoLinux"