Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWade Berrier <wade@mono-cvs.ximian.com>2007-05-05 12:55:53 +0400
committerWade Berrier <wade@mono-cvs.ximian.com>2007-05-05 12:55:53 +0400
commitc16adb8ea455cc32fe64e0063327337952ede527 (patch)
tree69f69acee92a7ffc3f28443cbbd086b87f792288 /scripts/mono-find-requires.in
parentf6314b4401593f090ef7812c7b36904db7fe6e9f (diff)
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. svn path=/trunk/mono/; revision=76732
Diffstat (limited to 'scripts/mono-find-requires.in')
-rw-r--r--scripts/mono-find-requires.in60
1 files changed, 54 insertions, 6 deletions
diff --git a/scripts/mono-find-requires.in b/scripts/mono-find-requires.in
index 5c9edddf391..02deeeef7e3 100644
--- a/scripts/mono-find-requires.in
+++ b/scripts/mono-find-requires.in
@@ -12,22 +12,29 @@ IFS=$'\n'
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}
@@ -55,6 +62,47 @@ REQUIRES=$(
}
') 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=$(