Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#21865 closed defect (fixed)

wine-devel doesn't like x86_64

Reported by: Damien@… Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 1.8.1
Keywords: x86_64, libexpat Cc: jyrkiwahlstedt
Port: wine-devel

Description

wine-devel seems to think that my architecture is i386, but it is x86_64.

I didn't compile anything with +universal.

…
--->  Verifying checksum(s) for wine-devel
DEBUG: Executing org.macports.checksum (wine-devel)
--->  Checksumming wine-1.1.30.tar.bz2
DEBUG: Correct (md5) checksum for wine-1.1.30.tar.bz2
DEBUG: Correct (sha1) checksum for wine-1.1.30.tar.bz2
DEBUG: Correct (rmd160) checksum for wine-1.1.30.tar.bz2
DEBUG: setting option extract.cmd to /usr/bin/bzip2
--->  Extracting wine-devel
DEBUG: Executing proc-pre-org.macports.extract-extract-0
Error: You cannot install wine-devel for the architecture(s) i386
because /opt/local/lib/libexpat.dylib does not contain the architecture i386.
Error: Target org.macports.extract returned: incompatible architectures in dependencies
DEBUG: Backtrace: incompatible architectures in dependencies
    while executing
"$pre $targetname"
Warning: the following items did not execute (for wine-devel): org.macports.activate org.macports.extract org.macports.patch org.macports.configure org.macports.build org.macports.destroot org.macports.archive org.macports.install
Error: Status 1 encountered during processing.
…

Change History (19)

comment:1 Changed 15 years ago by mf2k (Frank Schima)

Cc: jwa@… added
Owner: changed from macports-tickets@… to ryandesign@…

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

Status: newassigned

wine must be built 32-bit. The developers are working on 64-bit support but it will probably take a long time.

If you want to install wine, you must therefore have all its dependencies installed 32-bit as well, either by setting build_arch to i386 and rebuilding all of them, or by setting universal_archs to i386 x86_64 and rebuilding all of them.

comment:3 Changed 15 years ago by jussi.eskelinen@…

I tried this and it didn't work, especially xml2 seems to have trouble installing because of "incompatible architecture dependencies".

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

Show me exactly what error you get and tell me what port you're installing when you get it. wine-devel installs fine on Snow Leopard if you install the dependencies with the right architectures. I have not personally tried using the build_arch method, but I have used the universal build method.

comment:5 Changed 15 years ago by jussi.eskelinen@…

This is what it says:

pikku-delfiini:~ jussi$ sudo port -f -R install wine-devel
--->  Computing dependencies for wine-devel
--->  Extracting wine-devel
Error: You cannot install wine-devel for the architecture(s) i386
because /opt/local/lib/libxml2.dylib does not contain the architecture i386.
Error: Target org.macports.extract returned: incompatible architectures in dependencies
Error: Status 1 encountered during processing.}}}

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

Ok. What architectures does libxml2 contain?

lipo -info /opt/local/lib/libxml2.dylib

How is libxml2 installed?

port installed libxml2

It sounds like it was not installed with the universal variant. To fix this, reinstall it with the universal variant:

sudo port upgrade --enforce-variants libxml2 +universal

P.S: You don't want to use the -f or -R flags when you port install.

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

Replying to ryandesign@…:

Ok. What architectures does libxml2 contain?

P.S: I have modified the archcheck portgroup in r59100 so it will automatically tell us this in the future.

comment:8 Changed 15 years ago by jussi.eskelinen@…

Thanks for the help. I did as you suggested, but still no luck:

pikku-delfiini:~ jussi$ sudo port install wine-devel +universal
--->  Computing dependencies for wine-devel
--->  Extracting wine-devel
Error: You cannot install wine-devel for the architecture(s) i386
because /opt/local/lib/libxslt.dylib does not contain the architecture i386.
Error: Target org.macports.extract returned: incompatible architectures in dependencies
Error: Status 1 encountered during processing.

I get the same message even without +universal.

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

Please sync first so you have the latest files.

sudo port sync

Then rebuild libxml2 with the universal variant, as I showed.

sudo port upgrade --enforce-variants libxml2 +universal

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

Oh, sorry, I missed that your error message has changed: now it's complaining about libxslt. So rebuild libxslt with the universal variant.

sudo port upgrade --enforce-variants libxslt +universal

Do similar for any other ports it complains about.

comment:11 Changed 15 years ago by jussi.eskelinen@…

Sorry, my bad! Will try that.

comment:12 Changed 15 years ago by jussi.eskelinen@…

Yep, I was able to install wine-devel without further problems. In case someone has a similar problem: I had to first run sudo port install portname and then run sudo port upgrade --enforce-variants portname +universal for each package.

comment:13 Changed 15 years ago by fracai

Would it be a bad idea to make "+universal" a default variant? Or would this be better handled by a mechanism to automatically handle such cases by either informing the user that they must rebuild specific ports as universal, or automatically rebuilding the required ports as such?

comment:14 in reply to:  12 ; Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: assignedclosed

Replying to jussi.eskelinen@…:

In case someone has a similar problem: I had to first run sudo port install portname and then run sudo port upgrade --enforce-variants portname +universal for each package.

It should be sufficient to initially install the ports with the +universal variant; upgrading with --enforce-variants is only necessary if you already have the ports installed without +universal. Of course, by the time you see wine-devel's message, the dependencies will already have been installed with the wrong architectures. Unfortunately it is not possible for the wine-devel portfile itself to do anything until its dependencies have been installed. A better solution to this could probably be implemented in MacPorts base.

Replying to arno+macports@…:

Would it be a bad idea to make "+universal" a default variant?

That might be useful starting with Snow Leopard. I suggested this on the mailing list and have done so on my machine, but this has revealed just how many ports have trouble building x86_64/i386 universal, which is quite a lot. So that's not a good idea at this time.

Or would this be better handled by a mechanism to automatically handle such cases by either informing the user that they must rebuild specific ports as universal,

I added advice to rebuild dependencies universal to the archcheck portgroup in r59112.

or automatically rebuilding the required ports as such?

That and the above are handled by request #20728.

comment:15 in reply to:  14 Changed 15 years ago by jussi.eskelinen@…

Replying to ryandesign@…:

Replying to jussi.eskelinen@…:

In case someone has a similar problem: I had to first run sudo port install portname and then run sudo port upgrade --enforce-variants portname +universal for each package.

It should be sufficient to initially install the ports with the +universal variant; upgrading with --enforce-variants is only necessary if you already have the ports installed without +universal. Of course, by the time you see wine-devel's message, the dependencies will already have been installed with the wrong architectures. Unfortunately it is not possible for the wine-devel portfile itself to do anything until its dependencies have been installed. A better solution to this could probably be implemented in MacPorts base.

When I tried to install with +universal variant first, I got an error message:

pikku-delfiini:~ jussi$ sudo port install xorg-libxcursor +universal
--->  Computing dependencies for xorg-libXcursor
--->  Fetching xorg-libXcursor
--->  Verifying checksum(s) for xorg-libXcursor
--->  Extracting xorg-libXcursor
--->  Configuring xorg-libXcursor
--->  Building xorg-libXcursor
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_x11_xorg-libXcursor/work/libXcursor-1.1.10" && /usr/bin/make -j2 all " returned error 2
Command output:   "_XRenderCreateCursor", referenced from:
      _XcursorImageLoadCursor in cursor.o
  "_XCreatePixmap", referenced from:
      _XcursorImageLoadCursor in cursor.o
      _XcursorImageLoadCursor in cursor.o
      _XcursorImageLoadCursor in cursor.o
  "_XLoadFont", referenced from:
      __XcursorCreateFontCursor in cursor.o
  "_XRenderFreePicture", referenced from:
      _XcursorImageLoadCursor in cursor.o
  "_XCreateGC", referenced from:
      _XcursorImageLoadCursor in cursor.o
      _XcursorImageLoadCursor in cursor.o
  "_XFreePixmap", referenced from:
      _XcursorImageLoadCursor in cursor.o
      _XcursorImageLoadCursor in cursor.o
      _XcursorImageLoadCursor in cursor.o
  "_XFreeGC", referenced from:
      _XcursorImageLoadCursor in cursor.o
      _XcursorImageLoadCursor in cursor.o
  "__XLockMutex_fn", referenced from:
      __XLockMutex_fn$non_lazy_ptr in display.o
  "_XRenderQueryExtension", referenced from:
      __XcursorGetDisplayInfo in display.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
lipo: can't open input file: /var/tmp//ccpVo5qx.out (No such file or directory)
make[2]: *** [libXcursor.la] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Error: Status 1 encountered during processing.

Maybe port clean would have been enough to solve that, but I did as I described.

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

That indicates you tried to build xorg-libXcursor +universal but at least one of its dependencies (the one(s) that provide(s) the symbols _XCreatePixmap, _XLoadFont, etc.) was not universal. Installing with the debug flag (e.g. sudo port -d install xorg-libXcursor +universal) can give you more information. Only very few of our ports (at this point, 7 out of over 6200 ports) will explicitly alert you about the mismatched architectures, and it is not my intention to add this individually to all ports, because it's something MacPorts base should be able to figure out automatically for all ports. But that code has not yet been written and the number of people encountering the issue with wine (probably close to 100% of Snow Leopard users trying to install wine) and the number of users encountering it with other ports after upgrading to Snow Leopard and not knowing they needed to reinstall all ports (see Migration) prompted me to implement an immediate if imperfect solution in form of the archcheck portgroup.

comment:17 in reply to:  16 Changed 15 years ago by adam.fasoldt@…

Hello! I just bought my first mac about a month ago. I'm running on a 64 bit iMac and trying to get some of my favorite Windows apps to run on my machine. I am a web programmer and command line doesn't really come easily to me but I've been slogging through it. I've gotten to this point, myself. I had the same problem with xorg-libsm but found the dependency xorg-libice in a thread on this page.

Sadly, I am stuck here on this xorg-libXcursor. Is there an easy way to list the dependencies so I can install those as well? I looked at the debug text for this and it seems to have found them all so I don't think it's that (see below)

I apologize for my ignorance. As I said, I have made the move to the wonderful world of Mac, but I'm still cutting my teeth and am eager to learn more!

Thanks, in advance, for your time.

--->  Computing dependencies for xorg-libXcursor
DEBUG: Searching for dependency: xorg-libXfixes
DEBUG: Found Dependency: receipt exists for xorg-libXfixes
DEBUG: Searching for dependency: xrender
DEBUG: Found Dependency: receipt exists for xrender
DEBUG: Searching for dependency: pkgconfig
DEBUG: Found Dependency: receipt exists for pkgconfig
DEBUG: Searching for dependency: xorg-fixesproto
DEBUG: Found Dependency: receipt exists for xorg-fixesproto
DEBUG: Searching for dependency: xorg-renderproto
DEBUG: Found Dependency: receipt exists for xorg-renderproto
DEBUG: Executing org.macports.main (xorg-libXcursor)
DEBUG: Skipping completed org.macports.fetch (xorg-libXcursor)
DEBUG: Skipping completed org.macports.checksum (xorg-libXcursor)
DEBUG: setting option extract.cmd to /usr/bin/bzip2
DEBUG: Skipping completed org.macports.extract (xorg-libXcursor)
DEBUG: Skipping completed org.macports.patch (xorg-libXcursor)
DEBUG: Skipping completed org.macports.configure (xorg-libXcursor)

comment:18 Changed 15 years ago by adam.fasoldt@…

Found it!

$ sudo port upgrade --enforce-variants xorg-libXcursor +universal

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

I updated the archcheck portgroup in r61899 to suggest using --enforce-variants when telling the user to rebuild a port's dependency.

Note: See TracTickets for help on using tickets.