You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			178 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | |
|     if test -x $1/mono; then
 | |
| 	if test x$monocmd = x; then
 | |
| 	   monocmd=$1/mono
 | |
|         else
 | |
| 	   other_monos="$1/mono $other_monos"
 | |
| 	fi
 | |
|     fi
 | |
|     shift
 | |
| done
 | |
| 
 | |
| echo Active Mono: $monocmd
 | |
| 
 | |
| if test "x$other_monos" != x; then
 | |
| 	echo "Other Mono executables: $other_monos"
 | |
| fi
 | |
| 
 | |
| 
 | |
| #
 | |
| # Check that the pkg-config mono points to this mono
 | |
| #
 | |
| if pkg-config --modversion mono >& /dev/null; then 
 | |
|         pkg_config_mono=`(cd \`pkg-config --variable prefix mono\`/bin; pwd)`/mono
 | |
| 	if test $pkg_config_mono != $monocmd; then
 | |
| 	    echo "Error: pkg-config Mono installation points to a different install"
 | |
| 	    echo "       than the Mono found:"
 | |
| 	    echo "       Mono on PATH: $monocmd"
 | |
| 	    echo "       Mono from pkg-config: $pkg_config_mono"
 | |
| 	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 <<EOF
 | |
| using System;
 | |
| using System.Drawing;
 | |
| 
 | |
| class X { 
 | |
|     static void Main ()
 | |
|     {
 | |
| 	    Bitmap b = new Bitmap (100, 100);
 | |
|     }
 | |
| }
 | |
| EOF
 | |
| if mcs -pkg:dotnet $temp_cs >& /dev/null; then
 | |
|     if mono $temp_exe >& /dev/null; then
 | |
| 	echo You 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 <<EOF
 | |
| using System;
 | |
| using System.Reflection;
 | |
| using System.IO;
 | |
| 
 | |
| class Program {
 | |
| 
 | |
|     public static void Main()
 | |
|     {
 | |
|         object watcher = new FileSystemWatcher()
 | |
|             .GetType ()
 | |
|             .GetField ("watcher", BindingFlags.NonPublic | BindingFlags.Static)
 | |
|             .GetValue (null);
 | |
|         
 | |
|         Console.WriteLine ("Your file system watcher is: {0}",
 | |
|                    watcher != null
 | |
|                    ? watcher.GetType ().FullName
 | |
|                    : "unknown");
 | |
|     }
 | |
| }
 | |
| EOF
 | |
| 
 | |
| if mcs $temp_cs >& /dev/null; then
 | |
|     mono $temp_exe
 | |
| else
 | |
|     echo Failed to compile sample test program, your installation is broken
 | |
|     exit 1
 | |
| fi
 |