[svn] r5786: nemerle/trunk/misc/packages/unix-binary: . Makefile assembly-name.n install-nemerle.sh uninst...

malekith svnadmin at nemerle.org
Sun Oct 2 13:24:39 CEST 2005


Log:
More work on binary installer. It seems to mostly work.

Author: malekith
Date: Sun Oct  2 13:24:37 2005
New Revision: 5786

Modified:
   nemerle/trunk/misc/packages/unix-binary/   (props changed)
   nemerle/trunk/misc/packages/unix-binary/Makefile
   nemerle/trunk/misc/packages/unix-binary/assembly-name.n
   nemerle/trunk/misc/packages/unix-binary/install-nemerle.sh
   nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.foot
   nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.head

Modified: nemerle/trunk/misc/packages/unix-binary/Makefile
==============================================================================
--- nemerle/trunk/misc/packages/unix-binary/Makefile	(original)
+++ nemerle/trunk/misc/packages/unix-binary/Makefile	Sun Oct  2 13:24:37 2005
@@ -19,6 +19,7 @@
 	cp -f ../../../tools/nemerlish/nemish.exe $(DIR)/bin/
 	cp -f ../../../doc/ncc.1 $(DIR)/misc/
 	cp -f ../../../tools/nant-task/Nemerle.NAnt.Tasks.dll $(DIR)/misc/
+	cp -f ../../print-dir.build $(DIR)/misc/
 	sed \
 		-e 's/@version@/$(VERSION).$(REVISION)/' \
 		-e "s/@build_info@/`date` on `hostname` by `whoami`/" \

Modified: nemerle/trunk/misc/packages/unix-binary/assembly-name.n
==============================================================================
--- nemerle/trunk/misc/packages/unix-binary/assembly-name.n	(original)
+++ nemerle/trunk/misc/packages/unix-binary/assembly-name.n	Sun Oct  2 13:24:37 2005
@@ -3,4 +3,4 @@
 
 def filename = Environment.GetCommandLineArgs () [1];
 def assembly = Assembly.LoadFrom (filename);
-System.Console.WriteLine (assembly.FullName);
+System.Console.WriteLine (assembly.FullName.Replace ("Culture=neutral, ", ""));

Modified: nemerle/trunk/misc/packages/unix-binary/install-nemerle.sh
==============================================================================
--- nemerle/trunk/misc/packages/unix-binary/install-nemerle.sh	(original)
+++ nemerle/trunk/misc/packages/unix-binary/install-nemerle.sh	Sun Oct  2 13:24:37 2005
@@ -32,8 +32,10 @@
 
 config_log="install.log"
 mono_dir=
-build_info=@build_info@
-version=@version@
+build_info="@build_info@"
+version="@version@"
+install_bindir=/usr/local/bin
+nant_plugin_path=
 
 
 ############################################################
@@ -53,7 +55,6 @@
       echo "*** Ignoring error. ***"
     else
       echo "Aborting..."
-      rm -f $config_mak
       exit 1
     fi
 }
@@ -161,7 +162,6 @@
   abort "cannot find gacutil, please double check that running gacutil from the command line gives the help message"
 fi
 
-
 echo_check_for "mono binary location"
 oldIFS=$IFS
 IFS=":"
@@ -169,13 +169,13 @@
 IFS=$oldIFS
 
 for dir ; do
-  if test -x $dir/mono ; then
+  if test -x "$dir/mono" ; then
     mono_dir="$dir"
     break
   fi
 done
 if [ X"$mono_dir" != X ] ; then
-  case $mono_dir in
+  case "$mono_dir" in
     */ ) ;;
     * ) mono_dir="$mono_dir/" ;;
   esac
@@ -185,23 +185,114 @@
   echo "*** Warning, will use plain 'mono' without path in wrapper scripts ***"
 fi
 
+
+echo_check_for "nant plugin directory"
+rm -f misc/nant.dir
+try_execute nant -buildfile:misc/print-dir.build
+nant_dir=`cat misc/nant.dir 2>/dev/null`
+rm -f misc/nant.dir
+if test -d "$nant_dir" ; then
+  echo "found, $nant_dir"
+  nant_plugin_path="$nant_dir/Nemerle.NAnt.Tasks.dll"
+else
+  echo_result "not found, plugin disabled"
+  nant_plugin_path=
+fi
+
+
+case "$mono_dir" in
+  /home/* )
+    install_bindir="$mono_dir"
+    ;;
+  *) ;;
+esac
+
+echo "Which directory would you like to use for binaries?"
+echo "It should be in your PATH, the default is '$install_bindir'"
+echo -n "BINDIR [$install_bindir]: "
+read user_bindir
+
+if [ X != X$user_bindir ] ; then
+  install_bindir="$user_bindir"
+fi
+
+if test -d "$install_bindir" ; then
+  if test -f "$install_bindir/ncc" ; then
+    echo
+    echo "*** WARNING: a previous version of Nemerle was found to be installed ***"
+    echo
+    if test -x "$install_bindir/uninstall-nemerle.sh" ; then
+      echo "I can run the uninstall script, before continuing. If you wish"
+      echo "to break installation and do it yourself, please hit Ctrl-C now."
+      echo "Removing the previous version is recommended, as it allows to avoid"
+      echo "disk clutter, when several versions of given assembly are installed"
+      echo "in the GAC."
+      while : ; do
+        echo -n "Shall I run the uninstall script (y/n) [y]: "
+        read ANS
+	case "$ANS" in
+	  y | Y | yes | "" )
+	    "$install_bindir/uninstall-nemerle.sh" --dont-ask
+	    break
+	    ;;
+	  n | N | no )
+	    break
+	    ;;
+	  * ) ;;
+	esac
+      done
+    else
+      echo "The uninstall script was not found though. You can continue"
+      echo "installation but this may leave several versions of assemblies in"
+      echo "the GAC. This is only disk clutter, though, nothing dangerous."
+      echo -n "Hit Enter to continue, Ctrl-C to abort: "
+      read JUNK
+    fi
+  fi
+else
+  echo "Directory $install_bindir does not exists, creating it."
+  install -d $install_bindir || abort "cannot create $install_bindir"
+fi
+
+echo "Installing binaries and creating wrapper scripts."
+
+for f in bin/*.exe ; do
+  install -m 644 $f "$install_bindir" || abort "cannot install $f into $install_dir, permission problems?"
+  name=$(basename $f .exe)
+  cat >"$install_bindir/$name" <<EOF
+#!/bin/sh
+exec "${mono_dir}mono" "$install_bindir/$name.exe" "\$@"
+EOF
+  chmod 755 "$install_bindir/$name"
+done
+
+test x"$nant_plugin_path" != x"" && \
+install -m 644 misc/Nemerle.NAnt.Tasks.dll "$nant_plugin_path"
+
+echo "Creating uninstall script."
+sed \
+	-e "s#@install_bindir@#$install_bindir#" \
+	-e "s#@nant_plugin_path@#$nant_plugin_path#" \
+	misc/uninstall-nemerle.sh > "$install_bindir/uninstall-nemerle.sh"
+chmod 755 $install_bindir/uninstall-nemerle.sh
+
 echo "Installing binaries to the GAC."
 for f in gac/*.dll ; do
-  gacutil -package nemerle -i $f || \
+  try_execute gacutil -package nemerle -i $f || \
   abort "cannot install assembly to the GAC, please check the permissions"
 done
 
+cat <<EOF
   
-echo "Creating nemerle.pc"
+                *** Installation successful. ***
+
+You can find language documentation in doc/ subdirectory here. It was not
+installed anywhere, you can copy it somewhere manually. This directory
+won't be needed anymore.
+
+Good luck and thank you for trying Nemerle!
 
-cat > nemerle.pc <<EOF
-prefix=${prefix}
-exec_prefix=\${prefix}
-libdir=${libdir}
-
-Name: Nemerle
-Description: Nemerle - a .NET object-functional language
-Version: $nem_version.$nem_revision
-Libs: -r:${mono_libdir}/mono/nemerle/Nemerle.dll -r:${mono_libdir}/mono/nemerle/Nemerle.Compiler.dll -r:${mono_libdir}/mono/nemerle/Nemerle.Macros.dll
 EOF
 
+exit 0
+

Modified: nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.foot
==============================================================================
--- nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.foot	(original)
+++ nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.foot	Sun Oct  2 13:24:37 2005
@@ -0,0 +1,5 @@
+echo
+echo "*** Uninstallation successful ***"
+echo "Thank you for using Nemerle."
+echo
+exit 0

Modified: nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.head
==============================================================================
--- nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.head	(original)
+++ nemerle/trunk/misc/packages/unix-binary/uninstall-nemerle.sh.head	Sun Oct  2 13:24:37 2005
@@ -1,5 +1,42 @@
 #!/bin/sh
 
-cat <<EOF
+if [ "$1" == "--dont-ask" ] ; then
+  :
+else
+  cat <<EOF
 This script will uninstall the previously installed version of Nemerle.
+
+If you really want to uninstall Nemerle, please hit Enter now, otherwise
+press Ctrl-C.
+
 EOF
+
+  echo -n "Enter or Ctrl-C? "
+  read JUNK
+fi
+
+echo
+echo "*** Uninstalling Nemerle. ***"
+echo
+
+gacutil >/dev/null 2>/dev/null
+if [ $? -lt 100 ] ; then
+  :
+else
+  echo "cannot execute gacutil, make sure it is in PATH"
+  exit 1
+fi
+
+install_bindir="@install_bindir@"
+nant_plugin_path="@nant_plugin_path@"
+
+if test -x "$install_bindir/ncc" ; then
+  :
+else
+  echo "cannot find $install_bindir/ncc, did you already run uninstall?"
+  exit 1
+fi
+
+rm -f "$install_bindir"/{ncc,cs2n,nemish}{,.exe}
+rm -f "$install_bindir/uninstall-nemerle.sh"
+test -f "$nant_plugin_path" && rm -f "$nant_plugin_path"



More information about the svn mailing list