X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=scripts%2Fmono-find-requires.in;h=5e0ef2f1cfd35e650d84d380c553d3d108a48dc0;hb=76f0a58429b4cfb47c77935cfca6ce88ce9be53e;hp=fca4c1442eba283218c0a9e47abad5e30243db1e;hpb=838bdad98d6190b786ca1794e285f736eb1449f1;p=mono.git diff --git a/scripts/mono-find-requires.in b/scripts/mono-find-requires.in index fca4c1442eb..5e0ef2f1cfd 100644 --- a/scripts/mono-find-requires.in +++ b/scripts/mono-find-requires.in @@ -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,8 +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) #