Opened 8 years ago
Closed 2 years ago
#51815 closed defect (fixed)
librsvg @2.40.16 does not build on PPC Mac OS X 10.5.8, Leopard, because of "./libtool: eval: line 1085: syntax error near unexpected token `|' "
Reported by: | ballapete (Peter "Pete" Dyballa) | Owned by: | larryv (Lawrence Velázquez) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.3.4 |
Keywords: | Cc: | dbevans (David B. Evans), pixilla (Bradley Giesbrecht), jeremyhu (Jeremy Huddleston Sequoia), ryandesign (Ryan Carsten Schmidt) | |
Port: | libtool |
Description
This is the error:
mv -f .deps/librsvg_2_la-rsvg-xml.Tpo .deps/librsvg_2_la-rsvg-xml.Plo /bin/sh ./libtool --tag=CC --mode=link /usr/bin/gcc-4.2 -arch ppc -DRSVG_COMPILATION -D_REENTRANT -I/opt/local/include/gdk-pixbuf-2.0 -I/opt/local/include/libpng16 -I/opt/local/include/pango-1.0 -I/opt/local/include/harfbuzz -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/cairo -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include/libcroco-0.6 -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/libxml2 -pipe -Os -arch ppc -version-info 42:16:40 -export-dynamic -no-undefined -export-symbols-regex "^rsvg_.*" -L/opt/local/lib -Wl,-headerpad_max_install_names -arch ppc -o librsvg-2.la -rpath /opt/local/lib librsvg_2_la-librsvg-features.lo librsvg_2_la-rsvg-css.lo librsvg_2_la-rsvg-defs.lo librsvg_2_la-rsvg-image.lo librsvg_2_la-rsvg-io.lo librsvg_2_la-rsvg-paint-server.lo librsvg_2_la-rsvg-path.lo librsvg_2_la-rsvg-base-file-util.lo librsvg_2_la-rsvg-filter.lo librsvg_2_la-rsvg-marker.lo librsvg_2_la-rsvg-mask.lo librsvg_2_la-rsvg-shapes.lo librsvg_2_la-rsvg-structure.lo librsvg_2_la-rsvg-styles.lo librsvg_2_la-rsvg-text.lo librsvg_2_la-rsvg-cond.lo librsvg_2_la-rsvg-base.lo librsvg_2_la-librsvg-enum-types.lo librsvg_2_la-rsvg-cairo-draw.lo librsvg_2_la-rsvg-cairo-render.lo librsvg_2_la-rsvg-cairo-clip.lo librsvg_2_la-rsvg.lo librsvg_2_la-rsvg-gobject.lo librsvg_2_la-rsvg-file-util.lo librsvg_2_la-rsvg-size-callback.lo librsvg_2_la-rsvg-xml.lo -L/opt/local/lib -lgdk_pixbuf-2.0 -lgio-2.0 -lpangocairo-1.0 -lpango-1.0 -lgobject-2.0 -lcairo -lpng16 -lcroco-0.6 -lglib-2.0 -lintl -lxml2 libtool: link: /opt/local/bin/nm -B .libs/librsvg_2_la-librsvg-features.o .libs/librsvg_2_la-rsvg-css.o .libs/librsvg_2_la-rsvg-defs.o .libs/librsvg_2_la-rsvg-image.o .libs/librsvg_2_la-rsvg-io.o .libs/librsvg_2_la-rsvg-paint-server.o .libs/librsvg_2_la-rsvg-path.o .libs/librsvg_2_la-rsvg-base-file-util.o .libs/librsvg_2_la-rsvg-filter.o .libs/librsvg_2_la-rsvg-marker.o .libs/librsvg_2_la-rsvg-mask.o .libs/librsvg_2_la-rsvg-shapes.o .libs/librsvg_2_la-rsvg-structure.o .libs/librsvg_2_la-rsvg-styles.o .libs/librsvg_2_la-rsvg-text.o .libs/librsvg_2_la-rsvg-cond.o .libs/librsvg_2_la-rsvg-base.o .libs/librsvg_2_la-librsvg-enum-types.o .libs/librsvg_2_la-rsvg-cairo-draw.o .libs/librsvg_2_la-rsvg-cairo-render.o .libs/librsvg_2_la-rsvg-cairo-clip.o .libs/librsvg_2_la-rsvg.o .libs/librsvg_2_la-rsvg-gobject.o .libs/librsvg_2_la-rsvg-file-util.o .libs/librsvg_2_la-rsvg-size-callback.o .libs/librsvg_2_la-rsvg-xml.o | | /opt/local/bin/gsed 's/.* //' | sort | uniq > .libs/librsvg-2.exp ./libtool: eval: line 1085: syntax error near unexpected token `|' ./libtool: eval: line 1085: `/opt/local/bin/nm -B .libs/librsvg_2_la-librsvg-features.o .libs/librsvg_2_la-rsvg-css.o .libs/librsvg_2_la-rsvg-defs.o .libs/librsvg_2_la-rsvg-image.o .libs/librsvg_2_la-rsvg-io.o .libs/librsvg_2_la-rsvg-paint-server.o .libs/librsvg_2_la-rsvg-path.o .libs/librsvg_2_la-rsvg-base-file-util.o .libs/librsvg_2_la-rsvg-filter.o .libs/librsvg_2_la-rsvg-marker.o .libs/librsvg_2_la-rsvg-mask.o .libs/librsvg_2_la-rsvg-shapes.o .libs/librsvg_2_la-rsvg-structure.o .libs/librsvg_2_la-rsvg-styles.o .libs/librsvg_2_la-rsvg-text.o .libs/librsvg_2_la-rsvg-cond.o .libs/librsvg_2_la-rsvg-base.o .libs/librsvg_2_la-librsvg-enum-types.o .libs/librsvg_2_la-rsvg-cairo-draw.o .libs/librsvg_2_la-rsvg-cairo-render.o .libs/librsvg_2_la-rsvg-cairo-clip.o .libs/librsvg_2_la-rsvg.o .libs/librsvg_2_la-rsvg-gobject.o .libs/librsvg_2_la-rsvg-file-util.o .libs/librsvg_2_la-rsvg-size-callback.o .libs/librsvg_2_la-rsvg-xml.o | | /opt/local/bin/gsed 's/.* //' | sort | uniq > .libs/librsvg-2.exp' make[2]: *** [librsvg-2.la] Error 1 make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_nue.de.rsync.macports.org_macports_release_tarballs_ports_graphics_librsvg/librsvg/work/librsvg-2.40.16'
It has to do, obviously, with this function in libtool:
1070 # func_show_eval cmd [fail_exp] 1071 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 1072 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 1073 # is given, then evaluate it. 1074 func_show_eval () 1075 { 1076 my_cmd="$1" 1077 my_fail_exp="${2-:}" 1078 1079 ${opt_silent-false} || { 1080 func_quote_for_expand "$my_cmd" 1081 eval "func_echo $func_quote_for_expand_result" 1082 } 1083 1084 if ${opt_dry_run-false}; then :; else 1085 eval "$my_cmd" 1086 my_status=$? 1087 if test "$my_status" -eq 0; then :; else 1088 eval "(exit $my_status); $my_fail_exp" 1089 fi 1090 fi 1091 }
but I have no idea how to test libtool, I even do not understand how the text is output… But it's obvious that this is being evaluated:
407 # The commands to list exported symbols. 408 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
And $global_symbol_pipe is defined as:
172 # Take the output of nm and produce a listing of raw symbols and C names. 173 global_symbol_pipe=""
So defining export_symbols_cmds as
407 # The commands to list exported symbols. 408 export_symbols_cmds="\$NM \$libobjs \$convenience | \$SED 's/.* //' | sort | uniq > \$export_symbols"
should work properly.
It's the first time that this shell script is used to link an executable – and it fails at once…
Attachments (2)
Change History (18)
Changed 8 years ago by ballapete (Peter "Pete" Dyballa)
Changed 8 years ago by ballapete (Peter "Pete" Dyballa)
Attachment: | patch-libtool.diff added |
---|
Proposed patch to libtool
comment:1 Changed 8 years ago by ballapete (Peter "Pete" Dyballa)
Libtool is created by configure, so it can't be patched this usual way… Should m4/libtool.m4 be patched instead?
comment:2 follow-up: 8 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | jeremyhu@… added |
---|
Replying to Peter_Dyballa@…:
but I have no idea how to test libtool, I even do not understand how the text is output… But it's obvious that this is being evaluated:
407 # The commands to list exported symbols. 408 export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"And $global_symbol_pipe is defined as:
172 # Take the output of nm and produce a listing of raw symbols and C names. 173 global_symbol_pipe=""So defining export_symbols_cmds as
407 # The commands to list exported symbols. 408 export_symbols_cmds="\$NM \$libobjs \$convenience | \$SED 's/.* //' | sort | uniq > \$export_symbols"should work properly.
Well no. If global_symbol_pipe is empty, then the command being evaluated is:
export_symbols_cmds="$NM $libobjs $convenience | | $SED 's/.* //' | sort | uniq > $export_symbols"
The double pipe is what leads to the error message about the unexpected pipe symbol. I would say it was never intended for global_symbol_pipe to be empty, and the fact that global_symbol_pipe is empty in your case is what needs to be fixed.
This problem was described on the libtool mailing list before. It seems to be a problem with nm, and that the configure script does not exit after detecting nm's failure to parse the compiler's output.
comment:3 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
It is not a problem with nm. It's not nm's fault that it's being fed into a buggy command line.
The bug is that global_symbol_pipe is empty. Why is that the case?
comment:4 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
librsvg was configured with libtool 2.4.2. I wonder if this has been fixed at some point upstream. If you autoreconf, does it address the issue?
comment:5 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Oh wait... we do autoreconf... so no.
comment:6 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Owner: | changed from macports-tickets@… to larryv@… |
---|---|
Port: | libtool added; librsvg removed |
comment:7 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
FWIW, I've got:
# Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([BCDEGRST][BCDEGRST]*\\)[ ][ ]*_\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 _\\2 \\2/p' | sed '/ __gnu_lto/d'"
comment:8 Changed 8 years ago by ballapete (Peter "Pete" Dyballa)
Replying to ryandesign@…:
Replying to Peter_Dyballa@…:
This problem was described on the libtool mailing list before. It seems to be a problem with nm, and that the configure script does not exit after detecting nm's failure to parse the compiler's output.
On PPC Tiger, Mac OS X 10.4.11, I have the same problem.
If it's true that a misconfigured nm produces this fault, then /usb/bin/nm should be used instead of /opt/local/bin/nm, which comes from LLVM version 3.4.2. Invoking configure on the command line this nm produces a clear failure:
+ printf '%s\n' 'configure:7787: result: failed'
Setting NM=/usr/bin/nm seems to bring more success:
+ printf '%s\n' 'configure:7790: result: ok'
It seems to produce this value: lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([BCDEGRST][BCDEGRST]*\)[ ][ ]*_\([_A-Za-z][_A-Za-z0-9]*\)$/\1 _\2 \2/p'\'' | sed '\''/ __gnu_lto/d'\'''
comment:9 Changed 8 years ago by ballapete (Peter "Pete" Dyballa)
On PPC Tiger it helps to add to the configure.args
in Portfile
the line
lt_cv_path_NM=/usr/bin/nm
and the link command now works:
libtool: link: /usr/bin/nm .libs/librsvg_2_la-librsvg-features.o .libs/librsvg_2_la-rsvg-css.o .libs/librsvg_2_la-rsvg-defs.o .libs/librsvg_2_la-rsvg-image.o .libs/librsvg_\ 2_la-rsvg-io.o .libs/librsvg_2_la-rsvg-paint-server.o .libs/librsvg_2_la-rsvg-path.o .libs/librsvg_2_la-rsvg-base-file-util.o .libs/librsvg_2_la-rsvg-filter.o .libs/librsvg_\ 2_la-rsvg-marker.o .libs/librsvg_2_la-rsvg-mask.o .libs/librsvg_2_la-rsvg-shapes.o .libs/librsvg_2_la-rsvg-structure.o .libs/librsvg_2_la-rsvg-styles.o .libs/librsvg_2_la-rs\ vg-text.o .libs/librsvg_2_la-rsvg-cond.o .libs/librsvg_2_la-rsvg-base.o .libs/librsvg_2_la-librsvg-enum-types.o .libs/librsvg_2_la-rsvg-cairo-draw.o .libs/librsvg_2_la-rsvg-\ cairo-render.o .libs/librsvg_2_la-rsvg-cairo-clip.o .libs/librsvg_2_la-rsvg.o .libs/librsvg_2_la-rsvg-gobject.o .libs/librsvg_2_la-rsvg-file-util.o .libs/librsvg_2_la-rsvg-s\ ize-callback.o .libs/librsvg_2_la-rsvg-xml.o | sed -n -e 's/^.*[ ]\([BCDEGRST][BCDEGRST]*\)[ ][ ]*_\([_A-Za-z][_A-Za-z0-9]*\)$/\1 _\2 \2/p' | sed '/ __gnu_lt\ o/d' | /opt/local/bin/gsed 's/.* //' | sort | uniq > .libs/librsvg-2.exp
The port finally built and was installed.
I think the cause of this event is that I fiddled with port select --set
and set values for clang and llvm since I had finally working versions of them, needed for some other port(s)…
comment:10 follow-up: 14 Changed 8 years ago by ballapete (Peter "Pete" Dyballa)
And the upgrade of ImageMagick fails due to the same reason… I think the next time, in four weeks, in August, I'll try with Clang and llvm 3.3 – I think this was the previous working setting.
comment:11 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Ok, I think r150060 should help you out.
comment:12 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Resolution: | fixed |
---|---|
Status: | closed → reopened |
comment:13 Changed 8 years ago by jeremyhu (Jeremy Huddleston Sequoia)
(leaving this open to track a fix in libtool)
comment:14 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | ryandesign@… added |
---|
Replying to Peter_Dyballa@…:
And the upgrade of ImageMagick fails due to the same reason…
which was filed as #51819, though that's on El Capitan.
comment:15 Changed 2 years ago by ballapete (Peter "Pete" Dyballa)
librsvg @2.40.20_5+viewer
is installed. Before librsvg @2.40.20_3+viewer and librsvg @2.40.20_4+viewer
were installed, built with ibtool @2.4.6
, so the issue was solved and this ticket can be closed now.
main.log from the failure