Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Sep 2004 17:47:21 -0400 (EDT)
From:      Chris BeHanna <chris@behanna.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/72114: [PATCH] libtool15 chokes on gcc34 on 4-STABLE
Message-ID:  <200409262147.i8QLlLvl078603@topperwein.pennasoft.com>
Resent-Message-ID: <200409262150.i8QLoRcA076976@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         72114
>Category:       ports
>Synopsis:       [PATCH] libtool15 chokes on gcc34 on 4-STABLE
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Sep 26 21:50:27 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Chris BeHanna
>Release:        FreeBSD 4.10-STABLE i386
>Organization:
BeHanna Family
>Environment:
System: FreeBSD topperwein.pennasoft.com 4.10-STABLE FreeBSD 4.10-STABLE #0: Wed Aug 4 17:23:04 EDT 2004 behanna@topperwein.pennasoft.com:/raid0/stable/usr/obj/raid5/4stable/src/sys/TOPPERWEIN i386


>Description:
Attempting to build ports that use C code using libtool15 and gcc34 results in
link-time failures (references to C++ symbols).  Linking with g++34 solves the
problem, but libtool15 doesn't know how to do that.
>How-To-Repeat:
Install libtool15 as follows:

    cd /usr/ports/devel/libtool15
    env CC=/usr/local/bin/gcc34 CXX=/usr/local/bin/g++34 \
    LD=/usr/local/bin/g++34 make install

Next, try installing the mysql 4.0 client:

    cd /usr/ports/databases/mysql40-client
    env CC=/usr/local/bin/gcc34 CXX=/usr/local/bin/g++34 \
    LD=/usr/local/bin/g++34 make install

This will bomb at link-time.  mysql40-server will suffer similarly.
>Fix:
Apply the following patch to /usr/ports/devel/libtool15/files/patch-ltmain.sh,
then reinstall libtool15 as described in the "How-To-Repeat" section.  Now,
using gcc34 from ports to build mysql will succeed.  I've tested this by
installing both mysql 4.0 client and server, and by upgrading kdebase3 and
kdelibs3.

Index: patch-ltmain.sh
===================================================================
RCS file: /raid5/cvs/ports/devel/libtool15/files/patch-ltmain.sh,v
retrieving revision 1.3
diff -u -u -r1.3 patch-ltmain.sh
--- patch-ltmain.sh	1 Jul 2004 17:06:38 -0000	1.3
+++ patch-ltmain.sh	26 Sep 2004 17:00:06 -0000
@@ -1,11 +1,17 @@
---- ltmain.sh.orig	Sun Apr 11 05:44:45 2004
-+++ ltmain.sh	Wed Jun  9 18:21:15 2004
-@@ -1358,3 +1358,3 @@
+--- ltmain.sh.orig	Sat Aug  7 08:12:06 2004
++++ ltmain.sh	Sun Sep 26 12:59:32 2004
+@@ -1477,7 +1477,7 @@
+ 	  esac
+ 	elif test "X$arg" = "X-lc_r"; then
  	 case $host in
 -	 *-*-openbsd* | *-*-freebsd*)
 +	 *-*-openbsd* | *-*-freebsd4*)
  	   # Do not include libc_r directly, use -pthread flag.
-@@ -1375,2 +1375,8 @@
+ 	   continue
+ 	   ;;
+@@ -1494,6 +1494,12 @@
+ 
+       -module)
  	module=yes
 +	case $host in
 +	*-*-freebsd*)
@@ -14,17 +20,73 @@
 +	  ;;
 +	esac
  	continue
-@@ -1858,2 +1864,3 @@
+ 	;;
+ 
+@@ -1977,6 +1983,7 @@
+ 	    finalize_deplibs="$deplib $finalize_deplibs"
+ 	  else
  	    deplibs="$deplib $deplibs"
 +	    test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
  	  fi
-@@ -4409,2 +4416,5 @@
+ 	  continue
+ 	  ;;
+@@ -4442,6 +4449,9 @@
+ 	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ 	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
  	  ;;
 +	*-*-freebsd*)
 +	  # FreeBSD doesn't need this...
 +	  ;;
  	*)
-@@ -5549,6 +5559,13 @@
+ 	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ 	  exit $EXIT_FAILURE
+@@ -4460,7 +4470,7 @@
+       if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ 	# Replace the output file specification.
+ 	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+-	link_command="$compile_command$compile_rpath"
++	link_command=`echo "$compile_command$compile_rpath" | sed 's/gcc\(3[34]\) /g++\1 /'`
+ 
+ 	# We have no uninstalled library dependencies, so finalize right now.
+ 	$show "$link_command"
+@@ -4524,7 +4534,7 @@
+ 
+       if test "$no_install" = yes; then
+ 	# We don't need to create a wrapper script.
+-	link_command="$compile_var$compile_command$compile_rpath"
++	link_command=`echo "$compile_command$compile_rpath" | sed 's/gcc\(3[34]\) /g++\1 /'`
+ 	# Replace the output file specification.
+ 	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ 	# Delete the old output file.
+@@ -4537,14 +4547,14 @@
+ 
+       if test "$hardcode_action" = relink; then
+ 	# Fast installation is not supported
+-	link_command="$compile_var$compile_command$compile_rpath"
++	link_command=`echo "$compile_command$compile_rpath" | sed 's/gcc\(3[34]\) /g++\1 /'`
+ 	relink_command="$finalize_var$finalize_command$finalize_rpath"
+ 
+ 	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ 	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+       else
+ 	if test "$fast_install" != no; then
+-	  link_command="$finalize_var$compile_command$finalize_rpath"
++	  link_command=`echo "$finalize_var$compile_command$compile_rpath" | sed 's/gcc\(3[34]\) /g++\1 /'`
+ 	  if test "$fast_install" = yes; then
+ 	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ 	  else
+@@ -4552,7 +4562,7 @@
+ 	    relink_command=
+ 	  fi
+ 	else
+-	  link_command="$compile_var$compile_command$compile_rpath"
++	  link_command=`echo "$compile_command$compile_rpath" | sed 's/gcc\(3[34]\) /g++\1 /'`
+ 	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+ 	fi
+       fi
+@@ -5527,10 +5537,17 @@
+ 	fi
+ 
  	# Install the pseudo-library for information purposes.
 -	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
 -	instname="$dir/$name"i
@@ -42,3 +104,5 @@
 +	  ;;
 +	esac
  
+ 	# Maybe install the static library, too.
+ 	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200409262147.i8QLlLvl078603>