Opened 9 years ago

Closed 9 years ago

#48491 closed defect (fixed)

gobject-introspection: libxml2.2.dylib, file was built for x86_64 which is not the architecture being linked (i386)

Reported by: vamsi765 Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc: ryandesign (Ryan Carsten Schmidt)
Port: gobject-introspection

Description (last modified by ryandesign (Ryan Carsten Schmidt))

--->  Computing dependencies for gobject-introspection
--->  Fetching archive for gobject-introspection
--->  Attempting to fetch gobject-introspection-1.44.0_0+universal.darwin_14.i386-x86_64.tbz2 from http://packages.macports.org/gobject-introspection
--->  Attempting to fetch gobject-introspection-1.44.0_0+universal.darwin_14.i386-x86_64.tbz2 from http://lil.fr.packages.macports.org/gobject-introspection
--->  Attempting to fetch gobject-introspection-1.44.0_0+universal.darwin_14.i386-x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/gobject-introspection
--->  Fetching distfiles for gobject-introspection
--->  Verifying checksums for gobject-introspection
--->  Extracting gobject-introspection
--->  Configuring gobject-introspection
--->  Building gobject-introspection
Error: org.macports.build for port gobject-introspection returned: command execution failed
Please see the log file for port gobject-introspection for details:
    /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gnome_gobject-introspection/gobject-introspection/main.log
Error: Unable to upgrade port: 1
Error: Unable to execute port: upgrade graphviz failed

I have tried the cleaning of all the three (graphviz, mango, gobject-introspection) and individual ports. I did self update my port and upgrade all the outdated ports.

Attachments (2)

main.log (357.7 KB) - added by vamsi765 9 years ago.
Log file for the error
installed.txt (18.9 KB) - added by vamsi765 9 years ago.
Output for "port -v installed | tee ~/Desktop/installed.txt" command

Download all attachments as: .zip

Change History (17)

Changed 9 years ago by vamsi765

Attachment: main.log added

Log file for the error

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

Description: modified (diff)
Keywords: upgrade graphviz failed removed
Port: gobject-introspection added; gr-osmosdr removed
Summary: Issue while installing gr-osmosdrgobject-introspection: libxml2.2.dylib, file was built for x86_64 which is not the architecture being linked (i386)

The log says the error is:

:info:build ld: in '/opt/local/lib/libxml2.2.dylib', file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/libxml2.2.dylib for architecture i386
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)

You're building gobject-introspection universal, but for some reason your libxml2 library is not universal. MacPorts thinks your installed libxml2 port is already universal; you can verify this by running "port -v installed libxml2"—the output should include the string "+universal". If it were not so, MacPorts would have automatically rebuilt your libxml2 port universal for you. But the error message says it isn't universal, so it seems that something has overwritten your universal libxml2 library with a non-universal one, behind MacPorts' back. How did that happen? Did you run a third-party installer that overwrote some of your MacPorts files? (Third-party installers should not do that, but some do; if you can remember which installer it was, then you can report the problem to the distributors of that installer.)

If your libxml2 library was overwritten, who knows how many other files were overwritten as well. To fix the problem, the cleanest solution, least likely to result in further problems down the road, is to uninstall all ports, and MacPorts itself (including deleting the /opt/local directory, after first saving anything important therein), then reinstalling MacPorts and the ports you want.

comment:2 Changed 9 years ago by vamsi765

Hi,

I had certain issue with GNURadio installation and I was asked to install 'gnuradio' using -universal.

#47108
http://comments.gmane.org/gmane.os.apple.macports.tickets/96734

So I had repeated errors with following packages,

libxml2 @2.9.2_2-universal platform='darwin 14' archs='x86_64'
libxslt @1.1.28_1-universal platform='darwin 14' archs='x86_64'

After the following commands,

sudo port install libxml2
sudo port install libxslt
sudo port uninstall inactive

And I got stuck with the following error.

Error: Cannot install py27-cairo for the arch(s) 'i386 x86_64' because
Error: its dependency py27-numpy does not build for the required arch(s) by default
Error: and does not have a universal variant.
Error: Unable to upgrade port: architecture mismatch 
Error: Unable to execute port: upgrade gnuradio failed

and running the following code also doesn't make any difference.

sudo port -n upgrade --force py27-numpy +universal

BTW, GNURadio GUI is working alright now but there is this error while updating.
Thank you for pointing out how to look for errors, this is almost my first time using MacPort.
Any suggestions on how to proceed?

Vamsi

Last edited 9 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:3 Changed 9 years ago by vamsi765

And I found that py27-numpy doesn't have a universal version.

browser:trunk/dports/python/py-numpy/Portfile

Last edited 9 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:4 Changed 9 years ago by vamsi765

And this solved the problem..

sudo port install gr-osmosdr -universal

I'm not sure if this is the proper solution to it..


Vamsi

Last edited 9 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

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

Cc: ryandesign@… added

Oh. Well maybe it wasn't a third party installer that installed a non-universal libxml2. Maybe it was just MacPorts, when you asked it to, by running "sudo port install libxml2".

The question from #47108 that still hasn't been answered is why you are using the universal variant of any port. Do you need to? One reason you might need to is if you have installed a wine port. If you don't need the universal variants, then the simplest solution is to not use it. (Well, not so simple: it will take some work to reinstall all the ports that you currently have installed with the universal variant without the universal variant.) If you do genuinely need universal variants of some ports, you'll have to reinstall those ports with the universal variant. For example, the error message you received says you need libxml2 with the universal variant.

comment:6 Changed 9 years ago by vamsi765

I was trying to install GNURadio.
And I followed the instructions on
https://gnuradio.org/redmine/projects/gnuradio/wiki/MacInstall

When I run the command

sudo port install gnuradio

This installs the universal versions by default I suppose, I don't even know if there is any advantage using universal version.

And I ran into this problem,

Error: Cannot install py27-cairo for the arch(s) 'i386 x86_64' because 
Error: its dependency py27-numpy does not build for the required arch(s) by default
Error: and does not have a universal variant.
Error: Unable to upgrade port: architecture mismatch 
Error: Unable to execute port: upgrade gnuradio failed

Maybe in different package. After that i have installed GNURadio using

sudo port install gnuradio -universal

And it worked alright. Same case with 'gr-osmosdr' too.

Last edited 9 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

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

Replying to vamsi765@…:

When I run the command

sudo port install gnuradio

This installs the universal versions by default I suppose,

As far as I know, that is not normally the case. It sounds like the best thing for you would be to install your ports non-universal, but just to make sure that won't cause problems, could you please run "port -v installed | tee ~/Desktop/installed.txt", then attach the file "installed.txt" created on your desktop?

Changed 9 years ago by vamsi765

Attachment: installed.txt added

Output for "port -v installed | tee ~/Desktop/installed.txt" command

comment:8 Changed 9 years ago by vamsi765

Can you let me know whats the difference between universal and non-universal ports?

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

Universal is built for multiple architectures (in this case: x86_64 and i386). Non-universal is built only for the architecture of your computer's CPU (in your case: x86_64).

comment:10 Changed 9 years ago by vamsi765

Got it thanks!

wiki:howto/buildUniversal

if you noticed, it mentions here that

Most ports in the MacPorts ports tree can use the +universal variant (even those that don't explicitly mention it), which enables compiling the binaries for both PowerPC and Intel architectures, or for i386 as well as x86_64, etc fat binaries.
Last edited 9 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

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

Right.

What I was looking for in your list of installed ports was any port installed for i386 only. On 64-bit systems such as yours, such ports would require their dependencies to be installed universal. wine is one such port. However, I don't see any such ports in your list, so it should be safe to remove the universal ports and reinstall the non-universal versions of them. Unfortunately there isn't a simple way to do that, but I think running the following command would work:

sudo port install $(port -q installed active | sed -n s/+universal//p | cut -d ' ' -f 3-4)

Assuming this works, the universal versions will be made inactive and the non-universal versions will be made active. You can then uninstall the inactive ports using:

sudo port uninstall inactive

comment:12 Changed 9 years ago by vamsi765

When I ran the first command I got the following output.

--->  Computing dependencies for atk
--->  Cleaning atk
--->  Computing dependencies for bison
--->  Cleaning bison
--->  Computing dependencies for boost
--->  Cleaning boost
--->  Cleaning bzip2
--->  Computing dependencies for cairo
--->  Cleaning cairo
--->  Computing dependencies for cctools
--->  Cleaning cctools
--->  Computing dependencies for cloog
--->  Cleaning cloog
--->  Computing dependencies for coreutils
--->  Cleaning coreutils
--->  Cleaning cppunit
--->  Cleaning ctags
--->  Cleaning db48
--->  Computing dependencies for doxygen
--->  Cleaning doxygen
--->  Cleaning expat
--->  Cleaning fftw-3
--->  Computing dependencies for fftw-3-single
--->  Cleaning fftw-3-single
--->  Computing dependencies for findutils
--->  Cleaning findutils
--->  Computing dependencies for flex
--->  Cleaning flex
--->  Computing dependencies for fontconfig
--->  Cleaning fontconfig
--->  Computing dependencies for freetype
--->  Cleaning freetype
--->  Computing dependencies for gawk
--->  Cleaning gawk
--->  Computing dependencies for gcc49
--->  Cleaning gcc49
--->  Computing dependencies for gd2
--->  Cleaning gd2
--->  Computing dependencies for gdbm
--->  Cleaning gdbm
--->  Computing dependencies for gdk-pixbuf2
--->  Cleaning gdk-pixbuf2
--->  Computing dependencies for getopt
--->  Cleaning getopt
--->  Computing dependencies for gettext
--->  Cleaning gettext
--->  Computing dependencies for ghostscript
--->  Cleaning ghostscript
--->  Computing dependencies for glib2
--->  Cleaning glib2
--->  Cleaning gmp
--->  Computing dependencies for gobject-introspection
--->  Cleaning gobject-introspection
--->  Cleaning graphite2
--->  Computing dependencies for graphviz
--->  Cleaning graphviz
--->  Computing dependencies for groff
--->  Cleaning groff
--->  Computing dependencies for gsed
--->  Cleaning gsed
--->  Computing dependencies for gtk2
--->  Cleaning gtk2
--->  Computing dependencies for gts
--->  Cleaning gts
--->  Computing dependencies for harfbuzz
--->  Cleaning harfbuzz
--->  Computing dependencies for help2man
--->  Cleaning help2man
--->  Cleaning icu
--->  Computing dependencies for isl
--->  Cleaning isl
--->  Computing dependencies for jasper
--->  Cleaning jasper
--->  Cleaning jbig2dec
--->  Cleaning jbigkit
--->  Cleaning jpeg
--->  Computing dependencies for ld64
--->  Cleaning ld64
--->  Computing dependencies for ld64-latest
--->  Cleaning ld64-latest
--->  Cleaning libcxx
--->  Computing dependencies for libedit
--->  Cleaning libedit
--->  Cleaning libffi
--->  Computing dependencies for libgcc
--->  Cleaning libgcc
--->  Computing dependencies for libglade2
--->  Cleaning libglade2
--->  Cleaning libiconv
--->  Computing dependencies for libidn
--->  Cleaning libidn
--->  Computing dependencies for libLASi
--->  Cleaning libLASi
--->  Computing dependencies for libmpc
--->  Cleaning libmpc
--->  Cleaning libnetpbm
--->  Cleaning libpaper
--->  Cleaning libpixman
--->  Computing dependencies for libpng
--->  Cleaning libpng
--->  Cleaning libtool
--->  Cleaning libusb
--->  Cleaning libvpx
--->  Computing dependencies for libxml2
--->  Cleaning libxml2
--->  Computing dependencies for libxslt
--->  Cleaning libxslt
--->  Computing dependencies for llvm-3.5
--->  Cleaning llvm-3.5
--->  Cleaning log4cpp
--->  Cleaning m4
--->  Computing dependencies for mpfr
--->  Cleaning mpfr
--->  Cleaning ncurses
--->  Computing dependencies for netpbm
--->  Cleaning netpbm
--->  Computing dependencies for openjade
--->  Cleaning openjade
--->  Computing dependencies for opensp
--->  Cleaning opensp
--->  Computing dependencies for openssl
--->  Cleaning openssl
--->  Cleaning orc
--->  Computing dependencies for p5.22-locale-gettext
--->  Cleaning p5.22-locale-gettext
--->  Computing dependencies for pango
--->  Cleaning pango
--->  Computing dependencies for pcre
--->  Cleaning pcre
--->  Computing dependencies for perl5.16
--->  Cleaning perl5.16
--->  Computing dependencies for perl5.22
--->  Cleaning perl5.22
--->  Computing dependencies for pkgconfig
--->  Cleaning pkgconfig
--->  Cleaning psutils
--->  Computing dependencies for py27-cheetah
--->  Cleaning py27-cheetah
--->  Computing dependencies for py27-cython
--->  Cleaning py27-cython
--->  Computing dependencies for py27-libxml2
--->  Cleaning py27-libxml2
--->  Computing dependencies for py27-lxml
--->  Cleaning py27-lxml
--->  Computing dependencies for py27-markupsafe
--->  Cleaning py27-markupsafe
--->  Computing dependencies for python27
--->  Cleaning python27
--->  Computing dependencies for readline
--->  Cleaning readline
--->  Computing dependencies for rtl-sdr
--->  Cleaning rtl-sdr
--->  Computing dependencies for shared-mime-info
--->  Cleaning shared-mime-info
--->  Computing dependencies for source-highlight
--->  Cleaning source-highlight
--->  Computing dependencies for sqlite3
--->  Cleaning sqlite3
--->  Computing dependencies for swig
--->  Cleaning swig
--->  Computing dependencies for swig-python
--->  Cleaning swig-python
--->  Computing dependencies for texinfo
--->  Cleaning texinfo
--->  Computing dependencies for tiff
--->  Cleaning tiff
--->  Computing dependencies for volk
--->  Cleaning volk
--->  Computing dependencies for webp
--->  Cleaning webp
--->  Computing dependencies for Xft2
--->  Cleaning Xft2
--->  Cleaning xmlcatmgr
--->  Computing dependencies for xmlto
--->  Cleaning xmlto
--->  Computing dependencies for xorg-libice
--->  Cleaning xorg-libice
--->  Computing dependencies for xorg-libsm
--->  Cleaning xorg-libsm
--->  Computing dependencies for xorg-libX11
--->  Cleaning xorg-libX11
--->  Computing dependencies for xorg-libXau
--->  Cleaning xorg-libXau
--->  Computing dependencies for xorg-libXaw
--->  Cleaning xorg-libXaw
--->  Computing dependencies for xorg-libxcb
--->  Cleaning xorg-libxcb
--->  Computing dependencies for xorg-libXcomposite
--->  Cleaning xorg-libXcomposite
--->  Computing dependencies for xorg-libXcursor
--->  Cleaning xorg-libXcursor
--->  Computing dependencies for xorg-libXdamage
--->  Cleaning xorg-libXdamage
--->  Cleaning xorg-libXdmcp
--->  Computing dependencies for xorg-libXext
--->  Cleaning xorg-libXext
--->  Computing dependencies for xorg-libXfixes
--->  Cleaning xorg-libXfixes
--->  Computing dependencies for xorg-libXi
--->  Cleaning xorg-libXi
--->  Computing dependencies for xorg-libXinerama
--->  Cleaning xorg-libXinerama
--->  Computing dependencies for xorg-libXmu
--->  Cleaning xorg-libXmu
--->  Computing dependencies for xorg-libXrandr
--->  Cleaning xorg-libXrandr
--->  Computing dependencies for xorg-libXt
--->  Cleaning xorg-libXt
--->  Computing dependencies for xorg-xcb-util
--->  Cleaning xorg-xcb-util
--->  Computing dependencies for xpm
--->  Cleaning xpm
--->  Computing dependencies for xrender
--->  Cleaning xrender
--->  Computing dependencies for xz
--->  Cleaning xz
--->  Computing dependencies for yasm
--->  Cleaning yasm
--->  Cleaning zlib
--->  Scanning binaries for linking errors
--->  No broken files found.

and for second one..

Error: No ports matched the given expression

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

Oh, in that case, try instead:

sudo port install $(port -q installed active | sed -n s/+universal/-universal/p | cut -d ' ' -f 3-4)

comment:14 Changed 9 years ago by vamsi765

Some were uninstalled and some were installed!

Thanks!

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

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.