[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