X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=scripts%2Fmono-test-install;h=3c1f74a88924a472fad802fc33de358e0e1faddb;hb=f6294778fe4f5a90bd7b7b592bd8fa359d299e1e;hp=442e54ebe1918fa4c3332cfa3ddf7bbf014b3dec;hpb=0317ca5be795fd714c0f1ae5585b605d20f4aa49;p=mono.git diff --git a/scripts/mono-test-install b/scripts/mono-test-install index 442e54ebe19..3c1f74a8892 100755 --- a/scripts/mono-test-install +++ b/scripts/mono-test-install @@ -1,8 +1,16 @@ -#!/bin/sh +#!/usr/bin/env bash # # Does various checks for people that we can use to diagnose # an end user installation # +temp_cs=temp$$.cs +temp_exe=temp$$.exe +if test -f $temp_cs; then + echo Error: need a temporary file name, and $temp_cs already exists + echo Run this program from a different directory, or delete the file and try again. + exit 1 +fi + set `echo $PATH | sed 's/:/ /g'` while test x$1 != x; do @@ -33,9 +41,137 @@ if pkg-config --modversion mono >& /dev/null; then echo " than the Mono found:" echo " Mono on PATH: $monocmd" echo " Mono from pkg-config: $pkg_config_mono" - exit 1 fi else echo "Warning: pkg-config could not find mono installed on this system" fi +########################################################################################## +# +# Tests below this point require the dotnet install +# +# + +# +# Check that -pkg:dotnet is available +# +if pkg-config --modversion dotnet >& /dev/null; then + echo "" +else + echo "No dotnet pkgconfig found, Windows.Forms, System.Drawing and others will not work" + exit 1 +fi + +case `uname` in + Darwin) + macos=true + libgdiplus=libgdiplus.dylib + LD_PATH=DYLD_LIBRARY_PATH + ;; + *) + macos=false; + libgdiplus=libgdiplus.so + LD_PATH=LD_LIBRARY_PATH + ;; +esac + +search_libgdiplus_on_path() +{ + libgdiplus_found=false + if $macos; then + set `echo $DYLD_LIBRARY_PATH | sed 's/:/ /g'` + else + set `echo $LD_LIBRARY_PATH | sed 's/:/ /g'` + fi + while test x$1 != x; do + if test -e $1/$libgdiplus; then + echo " The $libgdiplus is found on $libdir/$libgdiplus" + libgdiplus_found=true + libgdiplus_path=$1/$libgdiplus + break + fi + shift + done +} + +# +# Check GDI+ installation +# +cat > $temp_cs <& /dev/null; then + if mono $temp_exe >& /dev/null; then + echo Your have a working System.Drawing setup + else + echo Your system has a broken System.Drawing setup + if mono $temp_exe 2>&1 | grep 'System.DllNotFoundException: gdiplus.dll' > /dev/null; then + echo " your gdiplus.dll can not be loaded" + + libdir=`dirname $monocmd`/../lib + if test -f $libdir/$libgdiplus; then + echo " The $libgdiplus is found on $libdir/$libgdiplus" + if test -e $libdir/$libgdiplus; then + libgdiplus_path=$libdir/$libgdiplus + libgdiplus_found=true + else + echo " but it seems to be a broken link" + fi + else + search_libgdiplus_on_path + fi + if $libgdiplus_found; then + echo ssss + if which ldd >/dev/null; then + LANG=C dirs=`ldd $libgdiplus_path | grep 'not found'` + if echo $dirs | grep 'not found' >& /dev/null; then + echo " libgdiplus is missing the following dependencies to run:" + echo $dirs | sed 's/^/ /' + fi + fi + else + echo " No libgdiplus was found on your $LD_PATH" + fi + fi + fi +else + echo Failed to compile sample System.Drawing program, your installation is broken + exit 1 +fi + +cat > $temp_cs <& /dev/null; then + mono $temp_exe +else + echo Failed to compile sample test program, your installation is broken + exit 1 +fi