#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: | new → assigned |
---|
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 follow-up: 7 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 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:12 follow-up: 14 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 follow-up: 15 Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
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 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 follow-up: 17 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 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.
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.