#22917: wine-crossover-games 8.0.0_1 doesn't compile on snow leopard ----------------------------------+----------------------------------------- Reporter: ifigueroap@… | Owner: ryandesign@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: 1.8.1 Keywords: | Port: wine-crossover-games ----------------------------------+----------------------------------------- Comment(by ryandesign@…): 8.1.0 has the same issue. It seems it's trying to compile this sfnt2fnt earlier: {{{ /usr/bin/gcc-4.2 -m32 -O2 -arch i386 -o sfnt2fnt sfnt2fnt.o -L../libs/wine -lwine ../libs/port/libwine_port.a -L/opt/local/lib -framework CoreServices -lz -L../../freetype/patentobjs/.libs -L../../freetype/objs/.libs -lcxfreetype && install_name_tool -change @executable_path/`../tools/relpath /opt/local/bin /opt/local/lib`/libwine.1.dylib @executable_path/../libs/wine/libwine.1.dylib sfnt2fnt || rm -f sfnt2fnt }}} But this fails: {{{ ld: library not found for -lcxfreetype collect2: ld returned 1 exit status }}} Because of the "`|| rm -f sfnt2fnt`" it proceeds on despite the error, and then fails on some later dependent of sfnt2fnt that tries to build it again but doesn't pass it all the compile options it needs. libcxfreetype.dylib gets built by the copy of freetype included with the wine-crossover-games source. We could [attachment:freetype-to-freetype- crossover-games.diff create a freetype-crossover-games port] for that and [attachment:wine-crossover-games-with-freetype-crossover-games.diff update wine-crossover-games to use it]. But the problem is that while crossover's version of freetype installs a library with a different name, it still wants to install includes and pkgconfig files of the same name as the freetype port's. So we would either need to mark the two freetypes as conflicting (not viable because nobody using wine-crossover-games could then use any port depending on the regular freetype -- including fontconfig, which wine-crossover-games depends on) or not install the headers or pkgconfig files (don't know if wine-crossover-games would still be able to find it then) or go to some effort to further modify crossover's freetype to also rename the includes and pkgconfig files. The [attachment:freetype-source.diff differences between the standard freetype and crossover's version] don't seem that great. It might be better to have wine-crossover-games continue to use the normal freetype, and just patch it to recognize normal freetype's libfreetype.dylib instead of the libcxfreetype.dylib it's looking for. Reviewing [changeset:60828 the commit where I updated the port to 8.0.0], I see one change I made had an inadvertent consequence. I removed these lines: {{{ post-extract { system "cd ${workpath} && mv sources/wine ." } }}} I didn't understand why the portfile hadn't previously just used "`worksrcdir sources/wine`", and the 8.0.0 sources dispensed with the "sources" directory so the existing "`worksrcdir wine`" was sufficient. I now realize that the wine source looks for the freetype source at a relative path to its own, and if it finds it, it adds these -lcxfreetype flags; see this part of configure.ac: {{{ if test -d "$srcdir/../freetype" then dnl Use the CrossOver in-tree freetype library ac_freetype_incl="-I$srcdir/../freetype/include" ac_freetype_libs="-L../freetype/patentobjs/.libs -L../freetype/objs/.libs -lcxfreetype" ft_lib=yes fi }}} You previously made those tests fail by moving the wine source; I made them now succeed by keeping the wine source where it was, thereby introducing this problem. A fix is another change I wanted to make anyway: instructing MacPorts to [attachment:wine-crossover-games-extract.post_args.diff only extract the wine directory] and not the other directories that we don't need anyway. This will speed up the extract step too. And I think this is the solution we should use. Any objections? -- Ticket URL: <http://trac.macports.org/ticket/22917#comment:10> MacPorts <http://www.macports.org/> Ports system for Mac OS