Opened 18 months ago

Last modified 11 months ago

#60656 reopened defect

lcms2 +universal: build error

Reported by: JohnFHall (John Hall) Owned by: kencu (Ken)
Priority: Normal Milestone:
Component: ports Version: 2.6.2
Keywords: Cc: someuser12
Port: lcms2

Description

Error: Failed to build lcms2: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_lcms2/lcms2/main.log for details.

Attachments (1)

lcms2_log.gz (11.4 KB) - added by JohnFHall (John Hall) 18 months ago.
main.log

Download all attachments as: .zip

Change History (13)

Changed 18 months ago by JohnFHall (John Hall)

Attachment: lcms2_log.gz added

main.log

comment:1 Changed 18 months ago by mf2k (Frank Schima)

Summary: lcms2 fails to build 2.10_0lcms2 +universal: build error

Error is:

:info:build libtool: link: /usr/bin/clang -pipe -Os -arch i386 -fvisibility=hidden -D_THREAD_SAFE -Wl,-headerpad_max_install_names -arch i386 -Wl,-headerpad_max_install_names -arch i386 -o .libs/tificc tificc.o ../common/xgetopt.o ../common/vprf.o  -L/opt/local/lib ../../src/.libs/liblcms2.dylib -ltiff -ljpeg -lz -lm -lpthread
:info:build ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
:info:build Undefined symbols for architecture i386:
:info:build   "__cmsLCMScolorSpace", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsBuildGamma", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsBuildTabulatedToneCurve16", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsCloseProfile", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsCreateGrayProfileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsCreateInkLimitingDeviceLink", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsCreateLab2ProfileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsCreateLab4ProfileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsCreateLinearizationDeviceLink", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsCreateMultiprofileTransform", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsCreateNULLProfileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsCreateProofingTransform", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsCreateRGBProfileTHR", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsCreateXYZProfileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsCreate_sRGBProfileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsD50_xyY", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsDeleteTransform", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsDoTransform", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsFreeToneCurve", referenced from:
:info:build       _main in tificc.o
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsGetColorSpace", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsGetPCS", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsGetProfileInfoASCII", referenced from:
:info:build       _PrintInfo in vprf.o
:info:build   "_cmsGetSupportedIntents", referenced from:
:info:build       _PrintRenderingIntents in vprf.o
:info:build   "_cmsIsTag", referenced from:
:info:build       _PrintColorantTable in vprf.o
:info:build   "_cmsNamedColorCount", referenced from:
:info:build       _PrintColorantTable in vprf.o
:info:build   "_cmsNamedColorInfo", referenced from:
:info:build       _PrintColorantTable in vprf.o
:info:build   "_cmsOpenProfileFromFile", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsOpenProfileFromFileTHR", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsOpenProfileFromMem", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsPlugin", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsReadTag", referenced from:
:info:build       _PrintColorantTable in vprf.o
:info:build   "_cmsSetAdaptationState", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsSetLogErrorHandler", referenced from:
:info:build       _InitUtils in vprf.o
:info:build   "_cmsWhitePointFromTemp", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build   "_cmsfilelength", referenced from:
:info:build       _main in tificc.o
:info:build   "_cmsstrcasecmp", referenced from:
:info:build       _OpenStockProfile in vprf.o
:info:build ld: symbol(s) not found for architecture i386
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)

comment:2 Changed 18 months ago by kencu (Ken)

Owner: set to kencu
Resolution: fixed
Status: newclosed

In 879d4b1e4ca86d268f5082449ab8cbe7d8237d4e/macports-ports (master):

lcms2: disable linker warning if needed

on Xcode 10+ when building i386, the linker
warnings cause the build to fail
closes: #60656

comment:3 Changed 18 months ago by JohnFHall (John Hall)

I need more help here. I need to build lcms2+universal for wine-devel (and others). Removing the warnings doesn't help build i386... My MacPRO 2009 has no ability to be upgraded past High Sierra, and needs i386 builds.

comment:4 Changed 18 months ago by kencu (Ken)

First of all, I'm on a MacPro 2009 and running Mojave, so there is hope. MacRumors is your friend there.

The changes I uploaded most certainly do fix lcms2 on 10.13, even with Xcode10 -- I just built it several times.

$ port -v installed lcms2
The following ports are currently installed:
  lcms2 @2.10_0+universal (active) platform='darwin 17' archs='i386 x86_64' date='2020-06-14T17:20:38-0700'

But they may not have got to you yet, as the MacPorts index and ports tree takes a while to percolate down the pipelines.


In the bigger picture, building and running wine is possible for you.

The absolute simplest and most bulletproof method is to downgrade your 10.13 installation to Xcode9, and sudo port -v install wine +universal. That is the only MacPorts-sanctioned method of getting wine on 10.13 right now, and for the foreseeable future, and it works.

Another user last year was very motivated to get wine going with Xcode 10 on 10.13, and on Mojave and newer, and I worked with him for quite a while 56991#comment:70. He has a very good setup going now, and you might look at that for inspiration, as he's made a real industry out of it now, has an updated repo with very up-to-date wine parts using MacPorts, and lots of instructions on how to get going:

<https://github.com/Gcenx/macports-wine>

That would be a more advanced project for you than downgrading to Xcode9, but has some possible upsides if you need what that offers.

comment:5 Changed 18 months ago by JohnFHall (John Hall)

Thank you. A port sync allowed the 2.10_0+universal to install.

I'll consider the (more technical) options.

Thank you again for the prompt help.

comment:6 in reply to:  2 Changed 16 months ago by someuser12

Thanks a lot for this fix.

Actually, I needed to disable the linker warnings even with Xcode 9.1 build version 9B55 (on Mac OS 10.13.6) to build lcms2 +universal.

Therefore I suggest changing 10.0 to 9.1 on line 39 of the Portfile of lcms2.

comment:7 Changed 16 months ago by someuser12

Cc: someuser12 added

comment:8 Changed 16 months ago by kencu (Ken)

thanks for the note. will reopen ticket.

comment:9 Changed 16 months ago by kencu (Ken)

Resolution: fixed
Status: closedreopened

comment:10 Changed 11 months ago by BenceSzalai (Bence Szalai)

Please note that the fix depends on [vercmp ${xcodeversion} 10.0] >= 0, but it did not help in my case. I guess it was because I'm using Xcode Command Line Tools instead of the full blown Xcode to compile ports. Probably another check should be added, which checks the version of the xCode CLI Tools, because ${xcodeversion} is not set on my system.

As a workaround I've just removed that condition from my local portfile which got me lcms2 +universal building finally. Unfortunately I'm not sure what is the replacement for ${xcodeversion} when only Command Line Tools are installed.

Looking back now probably a better workaround could have been just to make sure I have ${xcodeversion} set, but since during the troubleshooting I've set up a local Portfile for lcms2, it was easier for me just to remove the part checking that.

Anyway, If you know how to check CLI Tools version as well, the condition could be extended in the fix. If not, that's fine as well; I'm leaving this note here for others facing the same problem, so they don't have to spend hours like I did...

comment:11 Changed 11 months ago by BenceSzalai (Bence Szalai)

Apparently the CLI Tools version coresponding to xcodeversion can be determined by for example: pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version (version: 10.3.0.0.1.1562985497 in my case.) So I think I'll just set xcodeversion manually to 10.3 in my envrionment (export xcodeversion="10.3"), and leave it like that for now.

Anyway, I'm happy to have lcms2 +universal finally after so much struggle!

~ port -v installed lcms2
The following ports are currently installed:
  lcms2 @2.11_0+universal (active) platform='darwin 18' archs='i386 x86_64' date='2021-01-11T03:10:48+0100'

comment:12 Changed 11 months ago by kencu (Ken)

Yes, supporting CLT- only installs means using xcodeversion in Portfiles or base is presently useless.

Note: See TracTickets for help on using tickets.