Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / scripts / mono-find-requires.in
index 5cacf48e58b7296ec48356a793e25d9f878c5e8b..5e0ef2f1cfd35e650d84d380c553d3d108a48dc0 100644 (file)
@@ -9,6 +9,8 @@
 # (C) 2008 Novell (http://www.novell.com)
 #
 
+if [ -n "$DISABLE_MONO_RPM_AUTO_DEPS" ]; then exit 0; fi
+
 IFS=$'\n'
 filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
 monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
@@ -21,11 +23,14 @@ configlist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.config\$"))
 # Set the prefix, unless it is overriden (used when building mono rpms)
 : ${prefix=@prefix@}
 
+# Can override .config scanning if specified
+: ${IGNORE_CONFIG_SCAN=0}
+
 libdir=$prefix/@reloc_libdir@
 bindir=$prefix/bin
 
 # Bail out if monodis or libmono is missing
-if [ ! -x $bindir/monodis ] || [ ! -f $libdir/libmono.so ] ; then
+if [ ! -x $bindir/monodis ] || [ ! -f $libdir/libmono-2.0.so.1 ] ; then
        echo "monodis missing or unusable, exiting..." 1>&2
        exit 1
 fi
@@ -44,8 +49,10 @@ case `uname -m` in
        ia64)   libext="()(64bit)" ;;
 esac
 
-# set LD_LIBRARY_PATH to ensure that libmono.so is found
+# set LD_LIBRARY_PATH to ensure that libmono is found
 export LD_LIBRARY_PATH=$libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
+# and set MONO_PATH to ensure that mscorlib.dll can be found
+export MONO_PATH=$prefix/lib/mono/4.5
 
 REQUIRES=$(
        for i in "${monolist[@]}"; do
@@ -72,6 +79,8 @@ REQUIRES=$(
        done
 )
 
+if [ $IGNORE_CONFIG_SCAN -eq 0 ] ; then
+
 rpm_config_REQUIRES=$(
        # Parse the xml .config files to see what native binaries we call into
        # TODO: also check monodis --moduleref
@@ -122,9 +131,14 @@ rpm_config_REQUIRES=$(
 
 # Resolve provides to packages, warning on missing to stderr
 config_REQUIRES=$(
+       first=1 # avoid an empty line if no .config reqs are found
        for i in ${rpm_config_REQUIRES[@]} ; do
                out=$(rpm -q --whatprovides --queryformat "%{NAME}\n" $i)
                if [ $? -eq 0 ] ; then
+                       if [ $first -eq 1 ] ; then
+                              echo ""
+                              first=0
+                       fi
                        echo $out
                else
                        # echo to stderr
@@ -133,6 +147,8 @@ config_REQUIRES=$(
        done
 )
 
+fi
+
 # Note about above:
 #  Use to do: system("rpm -q --whatprovides --queryformat \"%{NAME}\n\" ""\""req"'$libext'""\"")
 #  rpmlint prefers to have lib names instead of package names.  There was a reason I was using package names but it slips me now...
@@ -160,7 +176,7 @@ PROVIDES=$(
 # TODO: make this use the mono-find-provides script, to share code
 
 # Filter out dups from both lists
-REQUIRES=$(echo "$REQUIRES" "$config_REQUIRES"  | sort | uniq)
+REQUIRES=$(echo "$REQUIRES $config_REQUIRES"  | sort | uniq)
 PROVIDES=$(echo "$PROVIDES" | sort | uniq)
 
 #