+2007-05-05 Wade Berrier <wberrier@novell.com>
+
+ * scripts/mono-find-provides.in: don't use 'which' anymore (never solved
+ anything since it broke symlinks)
+ * scripts/mono-find-requires.in: also don't use 'which'
+ Parse .config files to look for native libs. Honor 'os' attributes for
+ dllmaps. Query rpm db for package that provides this lib. Support 64bit
+ rpm configurations, as well as 32bit running on 64bit.
+
2007-04-27 Marek Habersack <mhabersack@novell.com>
* data/net_2_0/web.config: use fully qualified assembly names in
#monolist=($(printf "%s\n" "${monolist[@]}" | egrep "/gac/"))
# Disabled... see ChangeLog
-a=`which "$0"`
-d=`dirname "$a"`
-
# Set the prefix, unless it is overriden (used when building mono rpms)
-: ${prefix=$d/..}
+: ${prefix=@prefix@}
-exec_prefix=$d/..
libdir=$prefix/@reloc_libdir@
-bindir=$d
+bindir=$prefix/bin
# Bail out if monodis or libmono is missing
if [ ! -x $bindir/monodis ] || [ ! -f $libdir/libmono.so ] ; then
- echo "monodis missing or unusable, exiting..."
+ echo "monodis missing or unusable, exiting..." 1>&2
exit 1
fi
filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
-a=`which "$0"`
-d=`dirname "$a"`
+# parse .config files to find which native libraries to depend on
+# (target attribute must have double quotes for this to work, ie: target="file" )
+# Add /etc/mono/config ?
+configlist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.config\$"))
# Set the prefix, unless it is overriden (used when building mono rpms)
-: ${prefix=$d/..}
+: ${prefix=@prefix@}
-exec_prefix=$d/..
libdir=$prefix/@reloc_libdir@
-bindir=$d
+bindir=$prefix/bin
# Bail out if monodis or libmono is missing
if [ ! -x $bindir/monodis ] || [ ! -f $libdir/libmono.so ] ; then
- echo "monodis missing or unusable, exiting..."
+ echo "monodis missing or unusable, exiting..." 1>&2
exit 1
fi
+# special case for 64bit archs
+if test "x@reloc_libdir@" = "xlib64" ; then
+ libext="()(64bit)"
+else
+ libext=""
+fi
# set LD_LIBRARY_PATH to ensure that libmono.so is found
export LD_LIBRARY_PATH=$libdir${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
}
') 2> /dev/null
done
+ # Parse the xml .config files to see what native binaries we call into
+ # TODO: also check monodis --moduleref
+ for i in "${configlist[@]}"; do
+ awk 'match($_, /<dllmap .*target=.*/) {
+ ignore=0
+ req=""
+ split($_, toks, "\"")
+ for(i=1; i <= length(toks); i++) {
+ if(toks[i] ~ /target=/) {
+ req=toks[i+1]
+ }
+ if(toks[i] ~ /os=/) {
+ negate=0
+ found=0
+
+ attr=toks[i+1]
+ if(attr ~ /^!/) {
+ attr=substr(attr, 2, length(attr)-1)
+ negate=1
+ }
+
+ split(attr, os_targets, ",")
+ for(j=1; j <= length(os_targets); j++) {
+ if(os_targets[j] == "linux") {
+ found=1
+ }
+ }
+
+ if(negate) {
+ found=!found
+ }
+ if (!found) {
+ ignore=1
+ }
+ }
+ }
+ if(!ignore) {
+ system("rpm -q --whatprovides --queryformat \"%{NAME}\n\" ""\""req"'$libext'""\"")
+ }
+ } ' $i 2>/dev/null
+ done
)
PROVIDES=$(