blob: de6946c539f20a55ee38cebb5026a0db4b15ffd1 [file] [log] [blame]
#!/bin/sh
#
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#
# Dependencies of libraries
subr="subr"
auth_gnome_keyring="auth_gnome_keyring $subr"
auth_kwallet="auth_kwallet $subr"
delta="delta $subr"
diff="diff $subr"
fs_util="fs_util $subr"
fs_base="fs_base $delta $fs_util $subr"
fs_fs="fs_fs $delta $fs_util $subr"
fs="fs $fs_base $fs_fs $fs_util $subr"
repos="repos $delta $fs $fs_util $subr"
ra_local="ra_local $delta $fs $fs_util $repos $subr"
ra_neon="ra_neon $delta $subr"
ra_serf="ra_serf $delta $subr"
ra_svn="ra_svn $delta $subr"
ra="ra $delta $ra_local $ra_neon $ra_serf $ra_svn $subr"
wc="wc $delta $diff $subr"
client="client $delta $diff $ra $subr $wc"
# Variable 'libraries' containing names of variables corresponding to libraries
libraries="auth_gnome_keyring auth_kwallet client delta diff fs fs_base fs_fs fs_util ra ra_local ra_neon ra_serf ra_svn repos subr wc"
for library in $libraries; do
# Delete duplicates in dependencies of libraries
library_dependencies="$(echo -n $(for x in $(eval echo "\$$library"); do echo $x; done | sort -u))"
eval "$library=\$library_dependencies"
done
# Dependencies of executables
svn="$auth_gnome_keyring $auth_kwallet $client $delta $diff $ra $subr $wc"
svnadmin="$delta $fs $repos $subr"
svndumpfilter="$delta $fs $repos $subr"
svnlook="$delta $diff $fs $repos $subr"
svnserve="$delta $fs $ra_svn $repos $subr"
svnsync="$auth_gnome_keyring $auth_kwallet $delta $ra $subr"
svnversion="$subr $wc"
entries_dump="$subr $wc"
# Variable 'executables' containing names of variables corresponding to executables
executables="svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion entries_dump"
for executable in $executables; do
# Set variables containing paths of executables
if [ "$executable" != entries_dump ]; then
eval "${executable}_path=subversion/$executable/$executable"
else
eval "${executable}_path=subversion/tests/cmdline/entries-dump"
fi
# Delete duplicates in dependencies of executables
executable_dependencies="$(echo -n $(for x in $(eval echo "\$$executable"); do echo $x; done | sort -u))"
eval "$executable=\$executable_dependencies"
done
test_paths="$(find subversion/tests -mindepth 2 -maxdepth 2 -name '*-test' ! -path '*/.libs/*' | sort)"
for test in $test_paths; do
test_path="$test"
# Dependencies of tests are based on names of directories containing tests
test_library="$(echo $test | sed -e 's:^subversion/tests/libsvn_\([^/]*\)/.*:\1:')"
test_dependencies="$(eval echo "\$$test_library")"
# Set variables corresponding to tests and containing dependencies of tests
test="$(echo $test | sed -e 's:^subversion/tests/libsvn_[^/]*/\(.*\):\1:' -e 's/-/_/g')"
eval "$test=\$test_dependencies"
# Set variables containing paths of tests
eval "${test}_path=\$test_path"
# Set variable 'tests' containing names of variables corresponding to tests
tests="$tests $test"
done
# auth-test dynamically loads libsvn_auth_gnome_keyring and libsvn_auth_kwallet libraries
auth_test="auth_gnome_keyring auth_kwallet $auth_test"
# Usage: sed_append LINE_NUMBER TEXT FILE
sed_append()
{
sed -e "$1a\\
$2" "$3" > "$3.new"
mv -f "$3.new" "$3"
}
current_directory="$(pwd)"
for libtool_script in $executables $tests; do
eval "libtool_script_path=\$${libtool_script}_path"
libtool_script_libraries=""
if [ -f "$libtool_script_path" ]; then
if { grep LD_LIBRARY_PATH "$libtool_script_path" && ! grep LD_PRELOAD "$libtool_script_path"; } > /dev/null; then
echo "Transforming $libtool_script_path"
libtool_script_dependencies="$(eval echo "\$$libtool_script")"
for libtool_script_dependency in $libtool_script_dependencies; do
libtool_script_library="$current_directory/subversion/libsvn_$libtool_script_dependency/.libs/libsvn_$libtool_script_dependency-1.so"
[ -f "$libtool_script_library" ] && libtool_script_libraries="$libtool_script_libraries $libtool_script_library"
done
libtool_script_libraries="${libtool_script_libraries# *}"
# Append definitions of LD_PRELOAD to libtool scripts
sed_append 4 "LD_PRELOAD=\"$libtool_script_libraries\"" "$libtool_script_path"
sed_append 5 "export LD_PRELOAD" "$libtool_script_path"
chmod +x "$libtool_script_path"
fi
fi
done