nemiver r960 - in trunk: . src/common tests
- From: jjongsma svn gnome org
- To: svn-commits-list gnome org
- Subject: nemiver r960 - in trunk: . src/common tests
- Date: Wed, 24 Dec 2008 19:42:52 +0000 (UTC)
Author: jjongsma
Date: Wed Dec 24 19:42:51 2008
New Revision: 960
URL: http://svn.gnome.org/viewvc/nemiver?rev=960&view=rev
Log:
Fix libtool wrapper detection for files with dashes (Bug #554405)
* src/common/nmv-proc-utils.cc: change is_libtool_executable_wrapper a bit
so that it doesn't interpret dashes in the filename as the dash between the
filename and the libtool boilerplate. This allows us to detect filenames
with dashes as libtool wrapper scripts (Bug #554405)
* tests/Makefile.am: dist the new test libtool wrapper
* tests/test-libtool-wrapper-detection.cc: add a test for a libtool wrapper
with a dash in the filename
* tests/libtool-wrapper-with-dashes: Added example libtool wrapper witha
dash in the filename that we can use in our unit test
Added:
trunk/tests/libtool-wrapper-with-dashes (contents, props changed)
Modified:
trunk/ChangeLog
trunk/src/common/nmv-proc-utils.cc
trunk/tests/Makefile.am
trunk/tests/test-libtool-wrapper-detection.cc
Modified: trunk/src/common/nmv-proc-utils.cc
==============================================================================
--- trunk/src/common/nmv-proc-utils.cc (original)
+++ trunk/src/common/nmv-proc-utils.cc Wed Dec 24 19:42:51 2008
@@ -247,13 +247,25 @@
if (c != '#') {
return false;
}
- //goto dash, skip the white space that comes after
- while (file.good () && !file.eof () && c != '-') {c = file.get ();}
- if (c != '-')
- return false;
- c = file.get ();
- if (!isspace (c))
- return false;
+ // We're looking for a line that looks like this:
+ // # runtestcore - temporary wrapper script for .libs/runtestcore
+ //
+ // so read until we get to a dash (-) character
+ for (;;) {
+ int prev = 0;
+ while (file.good () && !file.eof () && c != '-') {
+ prev = c;
+ c = file.get ();
+ }
+ if (c != '-')
+ return false;
+ int next = file.get ();
+ // keep looking if the dash is not surrounded by spaces because the
+ // dash might be part of the filename: '# foo-bar - temporary ...'
+ if (isspace (prev) && isspace(next))
+ break;
+ c = next;
+ }
//now go get the string "temporary wrapper script for "
string str;
for (int i=0; i < 29/*length of the string we are looking for*/; ++i) {
Modified: trunk/tests/Makefile.am
==============================================================================
--- trunk/tests/Makefile.am (original)
+++ trunk/tests/Makefile.am Wed Dec 24 19:42:51 2008
@@ -140,3 +140,4 @@
LDADD=$(top_builddir)/src/common/libnemivercommon.la
+EXTRA_DIST=libtool-wrapper-with-dashes
Added: trunk/tests/libtool-wrapper-with-dashes
==============================================================================
--- (empty file)
+++ trunk/tests/libtool-wrapper-with-dashes Wed Dec 24 19:42:51 2008
@@ -0,0 +1,147 @@
+#! /bin/bash
+
+# test-scaled-font - temporary wrapper script for .libs/test-scaled-font
+# Generated by ltmain.sh (GNU libtool) 2.2.4 Debian-2.2.4-0ubuntu4
+#
+# The test-scaled-font program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='/bin/sed -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command="(cd /home/jonathon/Projects/cairomm/tests; { test -z \"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=; export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test -z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || { GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z \"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export LD_RUN_PATH; }; }; LD_LIBRARY_PATH=:/usr/local/lib; export LD_LIBRARY_PATH; PATH=/home/jonathon/Projects/webkit.git/WebKitTools/Scripts:/usr/lib/ccache:/usr/lib/icecc/bin:/home/jonathon/bin:/home/jonathon/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games; export PATH; g++ -g -O0 -Wall -Wextra -Wall -g -Werror -Wextra -o \$progdir/\$file test-scaled-font.o ../cairomm/.libs/libcairomm-1.0.so -L/usr/local/lib /usr/lib/libsigc-2.0.so /usr/local/lib/libcairo.so -lpixman-1 /usr/lib/libfreetype.s
o -lfontconfig -lpng12 -lXrender -lz -lm -lX11 /usr/lib/libboost_unit_test_framework.a -Wl,-rpath -Wl,/home/jonathon/Projects/cairomm/cairomm/.libs)"
+
+# This environment variable determines our operation mode.
+if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
+ # install mode needs the following variables:
+ generated_by_libtool_version='2.2.4'
+ notinst_deplibs=' ../cairomm/libcairomm-1.0.la'
+else
+ # When we are sourced in execute mode, $file and $ECHO are already set.
+ if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+ ECHO="echo"
+ file="$0"
+ # Make sure echo works.
+ if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
+ # Yippee, $ECHO works!
+ :
+ else
+ # Restart under the correct shell, and then maybe $ECHO will work.
+ exec /bin/bash "$0" --no-reexec ${1+"$@"}
+ fi
+ fi
+
+ # Find the directory that this script lives in.
+ thisdir=`$ECHO "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "x$thisdir" = "x$file" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=`ls -ld "$file" | /bin/sed -n 's/.*-> //p'`
+ while test -n "$file"; do
+ destdir=`$ECHO "X$file" | $Xsed -e 's%/[^/]*$%%'`
+
+ # If there was a directory component, then change thisdir.
+ if test "x$destdir" != "x$file"; then
+ case "$destdir" in
+ [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;;
+ *) thisdir="$thisdir/$destdir" ;;
+ esac
+ fi
+
+ file=`$ECHO "X$file" | $Xsed -e 's%^.*/%%'`
+ file=`ls -ld "$thisdir/$file" | /bin/sed -n 's/.*-> //p'`
+ done
+
+ # Usually 'no', except on cygwin/mingw when embedded into
+ # the cwrapper.
+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=no
+ if test "$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR" = "yes"; then
+ # special case for '.'
+ if test "$thisdir" = "."; then
+ thisdir=`pwd`
+ fi
+ # remove .libs from thisdir
+ case "$thisdir" in
+ *[\\/].libs ) thisdir=`$ECHO "X$thisdir" | $Xsed -e 's%[\\/][^\\/]*$%%'` ;;
+ .libs ) thisdir=. ;;
+ esac
+ fi
+
+ # Try to get the absolute directory name.
+ absdir=`cd "$thisdir" && pwd`
+ test -n "$absdir" && thisdir="$absdir"
+
+ program=lt-'test-scaled-font'
+ progdir="$thisdir/.libs"
+
+ if test ! -f "$progdir/$program" ||
+ { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | /bin/sed 1q`; \
+ test "X$file" != "X$progdir/$program"; }; then
+
+ file="$$-$program"
+
+ if test ! -d "$progdir"; then
+ mkdir "$progdir"
+ else
+ rm -f "$progdir/$file"
+ fi
+
+ # relink executable if necessary
+ if test -n "$relink_command"; then
+ if relink_command_output=`eval $relink_command 2>&1`; then :
+ else
+ echo "$relink_command_output" >&2
+ rm -f "$progdir/$file"
+ exit 1
+ fi
+ fi
+
+ mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
+ { rm -f "$progdir/$program";
+ mv -f "$progdir/$file" "$progdir/$program"; }
+ rm -f "$progdir/$file"
+ fi
+
+ if test -f "$progdir/$program"; then
+ if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then
+ # Run the actual program with our arguments.
+
+ exec "$progdir/$program" ${1+"$@"}
+
+ $ECHO "$0: cannot exec $program $*" 1>&2
+ exit 1
+ fi
+ else
+ # The program doesn't exist.
+ $ECHO "$0: error: \`$progdir/$program' does not exist" 1>&2
+ $ECHO "This script is just a wrapper for $program." 1>&2
+ echo "See the libtool documentation for more information." 1>&2
+ exit 1
+ fi
+fi
Modified: trunk/tests/test-libtool-wrapper-detection.cc
==============================================================================
--- trunk/tests/test-libtool-wrapper-detection.cc (original)
+++ trunk/tests/test-libtool-wrapper-detection.cc Wed Dec 24 19:42:51 2008
@@ -15,6 +15,13 @@
BOOST_REQUIRE (is_libtool_executable_wrapper ("./fooprog"));
}
+void
+test_filename_with_dashes()
+{
+ UString real_path;
+ BOOST_REQUIRE (is_libtool_executable_wrapper ("./libtool-wrapper-with-dashes"));
+}
+
test_suite*
init_unit_test_suite (int argc, char** argv)
{
@@ -26,6 +33,7 @@
test_suite *suite = BOOST_TEST_SUITE ("libtool wrapper detect tests") ;
suite->add (BOOST_TEST_CASE (&test0)) ;
+ suite->add (BOOST_TEST_CASE (&test_filename_with_dashes)) ;
return suite;
NEMIVER_CATCH_NOX
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]