Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#48490 closed defect (invalid)

texlive-bin @2015_1: Undefined symbols: _mpfr_set_zero

Reported by: manuel.schaich@… Owned by: drkp (Dan Ports)
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc: ryandesign (Ryan Carsten Schmidt), justacec@…, AsterixHH, mojca (Mojca Miklavec), sjc999, dr2chase@…, dershow
Port: texlive-bin

Description

I tried to upgrade my latex and it doesn't work. The log file doesn't really tell me much. It seems to be a directory error but I'm not sure

Attachments (1)

main.log (1.5 MB) - added by manuel.schaich@… 9 years ago.

Download all attachments as: .zip

Change History (19)

Changed 9 years ago by manuel.schaich@…

Attachment: main.log added

comment:1 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign@… added
Owner: changed from macports-tickets@… to dports@…
Summary: texlive-bin @2015_1 Build error. Make produces recursive errortexlive-bin @2015_1: Undefined symbols: _mpfr_set_zero

The actual error I see in the log is:

:info:build Undefined symbols for architecture x86_64:
:info:build   "_mpfr_set_zero", referenced from:
:info:build       _mp_initialize_binary_math in upmpost-pmpmathbinary.o
:info:build       _mp_new_number in upmpost-pmpmathbinary.o
:info:build       _mp_binary_n_arg in upmpost-pmpmathbinary.o
:info:build       _mp_binary_m_log in upmpost-pmpmathbinary.o
:info:build       _mp_binary_pyth_sub in upmpost-pmpmathbinary.o
:info:build       _mp_binary_square_rt in upmpost-pmpmathbinary.o
:info:build       _mp_check_mpfr_t in upmpost-pmpmathbinary.o
:info:build       ...
:info:build ld: symbol(s) not found for architecture x86_64
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)
:info:build Undefined symbols for architecture x86_64:
:info:build   "_mpfr_set_zero", referenced from:
:info:build       _mp_initialize_binary_math in pmpost-pmpmathbinary.o
:info:build       _mp_new_number in pmpost-pmpmathbinary.o
:info:build       _mp_binary_n_arg in pmpost-pmpmathbinary.o
:info:build       _mp_binary_m_log in pmpost-pmpmathbinary.o
:info:build       _mp_binary_pyth_sub in pmpost-pmpmathbinary.o
:info:build       _mp_binary_square_rt in pmpost-pmpmathbinary.o
:info:build       _mp_check_mpfr_t in pmpost-pmpmathbinary.o
:info:build       ...
:info:build ld: symbol(s) not found for architecture x86_64
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)

(I cleaned this up a bit; the lines are intermingled in the log because it was a parallel build.)

comment:2 Changed 9 years ago by andre.david@…

For what is worth, and since I saw "elcapitan" in the keywords, I am having the *exact* same issue in 10.10.4.

comment:3 Changed 9 years ago by andre.david@…

Bump. My pdflatex is broken, probably because of this: because poppler was upgraded and texlive-bin cannot be recompiled against the new poppler library version. I have the exact same issue as above for texlive-bin @2015_3 in OS X 10.10.5.

I think the problem is that texlive-bin is using /usr/local/lib/libmpfr.a instead of /opt/local/lib/libmpfr.a:

:info:build /usr/bin/clang -DHAVE_CONFIG_H -I. -I./w2c  -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_tex_texlive-bin/texlive-bin/work/texlive-source-20150611-stripped/texk/pt
exenc -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_tex_texlive-bin/texlive-bin/work/texlive-source-20150611-stripped/texk/ptexenc -I/opt/local/var/macports/build/_opt_local_v
ar_macports_sources_rsync.macports.org_release_tarballs_ports_tex_texlive-bin/texlive-bin/work/texlive-source-20150611-stripped/texk -I/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_po
rts_tex_texlive-bin/texlive-bin/work/texlive-source-20150611-stripped/texk -I./synctexdir  -D__SyncTeX__ -DSYNCTEX_ENGINE_H=\"synctex-ptex.h\" -isystem/opt/local/include -Wimplicit -Wreturn-type -Wdeclaration-after-statement -Wno-unkno
wn-pragmas -pipe -Os -arch x86_64 -MT ptex-ptex-pool.o -MD -MP -MF .deps/ptex-ptex-pool.Tpo -c -o ptex-ptex-pool.o `test -f 'ptex-pool.c' || echo './'`ptex-pool.c
:info:build libtool: link: /usr/bin/clang -Wimplicit -Wreturn-type -Wdeclaration-after-statement -Wno-unknown-pragmas -pipe -Os -arch x86_64 -Wl,-headerpad_max_install_names -arch x86_64 -o .libs/pmpost pmpost-pmp.o pmpost-pmpmath.o pm
post-pmpmathbinary.o pmpost-pmpmathdecimal.o pmpost-pmpmathdouble.o pmpost-pmpost.o pmpost-pmpstrings.o pmpost-pmpxout.o pmpost-ppngout.o pmpost-ppsout.o pmpost-psvgout.o pmpost-ptfmin.o  /opt/local/var/macports/build/_opt_local_var_ma
cports_sources_rsync.macports.org_release_tarballs_ports_tex_texlive-bin/texlive-bin/work/texlive-source-20150611-stripped/texk/ptexenc/.libs/libptexenc.dylib /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports
.org_release_tarballs_ports_tex_texlive-bin/texlive-bin/work/texlive-source-20150611-stripped/texk/kpathsea/.libs/libkpathsea.dylib /usr/local/lib/libmpfr.a /usr/local/lib/libgmp.a -L/opt/local/lib -lcairo -lpixman-1 -lpng16 -lz libmpu
til.a
:info:build Undefined symbols for architecture x86_64:
:info:build   "_mpfr_set_zero", referenced from:

See

$ ls -latr /{opt,usr}/local/lib/libmpfr.a
-rw-r--r-- 1 root wheel 554K Sep 12  2009 /usr/local/lib/libmpfr.a
-rw-r--r-- 1 root admin 640K Aug 19 21:16 /opt/local/lib/libmpfr.a

How did linkin work in previous versions of texlive-bin? Do I have something wrong in my PATHs?

comment:4 in reply to:  3 ; Changed 9 years ago by drkp (Dan Ports)

Replying to andre.david@…:

I think the problem is that texlive-bin is using /usr/local/lib/libmpfr.a instead of /opt/local/lib/libmpfr.a:

Aha, that helps. I had been looking into it but unable to reproduce the problem.

The "official" answer is that having anything in /usr/local while using MacPorts isn't supported, but let's see if we can do something about it anyway...

comment:5 in reply to:  4 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to dports@…:

The "official" answer is that having anything in /usr/local while using MacPorts isn't supported,

Right. The other official answer is: use trace mode.

comment:6 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: justacec@… added

Has duplicate #48670.

comment:7 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Keywords: elcapitan removed

comment:8 Changed 9 years ago by drkp (Dan Ports)

Cc: andreas.schropp@… mojca@… added

Has duplicate #48706

comment:9 Changed 9 years ago by drkp (Dan Ports)

This is caused by having some existing libmpfr in /usr/local, which is not supported. I looked into this to see if I could figure out what's going on, but I wasn't able to reproduce it. What package is installing this offending version of mpfr?

comment:10 Changed 9 years ago by sjc999

I had the same issue after upgrading OS to 10.11 and reinstalling macports. I've not gotten to the bottom of it yet to suggest a proper fix but a easy hack that worked for me was to simply move the mpfr in /usr/local out of the way, install texlive-bin in the usual manner and then put mpfr back again:

sudo mkdir /usr/local/lib/tmp;
sudo mv /usr/local/lib/*mpfr* /usr/local/lib/tmp/ ;
sudo port install texlive-bin ;
sudo mv /usr/local/lib/tmp/* /usr/local/lib
Last edited 9 years ago by sjc999 (previous) (diff)

comment:11 in reply to:  10 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: s.j.clark@… added

Replying to s.j.clark@…:

I had the same issue after upgrading OS to 10.11 and reinstalling macports. I've not gotten to the bottom of it yet to suggest a proper fix but a easy hack that worked for me was to simply move the mpfr in /usr/local out of the way, install texlive-bin in the usual manner and then put mpfr back again:

Having things installed in /usr/local is not supported while using MacPorts, because of these kinds of problem. Our recommendation is to remove what you have in /usr/local.

This ticket should just be closed as invalid.

These kinds of problems should just go away when we eventually enable trace mode by default.

comment:12 Changed 9 years ago by dr2chase@…

Requiring the non-existence of /usr/local is not realistic or sensible. There's other software in this world that uses that directory, and hiding it temporarily turns out to be "not permitted" even with sudo.

comment:13 Changed 9 years ago by mojca (Mojca Miklavec)

Yes, there is indeed other software in this world that would automatically install into /usr/local, but until trace mode (read as: hiding almost everything) gets enabled by default there is no way that MacPorts can ever work properly when competing libraries are installed there. As far as I know there is no way to hide libraries in /usr/local from the compiler. If you cannot hide /usr/local, you can try to temporary hide the contents. Or just do

sudo port -t install texlive-bin

If you have mpfr in your /usr/local and cannot remove it temporary and cannot install ports with the -t switch, you are just out of luck. Generally you will keep running into troubles when installing different ports and there is no other easy way to work around that. It makes no sense to argue that MacPorts should tolerate any given software installed in /usr/local. That software will keep causing problems.

comment:14 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: dr2chase@… added
Resolution: invalid
Status: newclosed

Requiring the non-existence of /usr/local is currently MacPorts policy. See wiki:FAQ#usrlocal.

comment:15 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Has duplicate #49785.

comment:16 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Has duplicate #49865.

comment:17 Changed 9 years ago by dershow

Cc: dersh@… added

Cc Me!

comment:18 Changed 9 years ago by drkp (Dan Ports)

Has duplicate #50483.

Note: See TracTickets for help on using tickets.