Opened 12 years ago

Closed 9 years ago

#36497 closed defect (wontfix)

qt4-mac @4.8.3_1 +quartz Unable to build on Tiger

Reported by: ccarey@… Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version: 2.1.2
Keywords: tiger Cc: ryandesign (Ryan Carsten Schmidt), ultrajoe@…, ifn22@…
Port: qt4-mac

Description

The qt4-mac @4.8.3_1 +quartz port is unable to build on Tiger because of a missing kCTFontFamilyNameAttribute constant in Core Text. According to Apple’s Core Text Reference Collection, this constant is only present in Leopard and above. According to Nokia, Tiger is no longer a Tier 2 platform in Qt 4.8, the way that it was in Qt 4.7.

My recommendation would be to prevent Tiger from trying to upgrade past Qt 4.7 — I was able to compile qt4-mac @4.7.4_1 +quartz on Tiger by patching its shadereffectitem.cpp file, but since I only kept the modified file, I don’t think that I’d posted the patch. If Tiger is prevented from trying to upgrade past Qt 4.7, then I should be able to redownload @4.7.4_1 to be able to post my patch.

Change History (9)

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

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

MacPorts doesn't really have a mechanism to prevent a particular platform from upgrading past a certain version. If qt 4.8 can't build on Tiger, our options would be:

  1. Make a new qt4-mac47 port just for Tiger, update all ports using qt4-mac to use qt4-mac47 on Tiger; this is a lot of work.
  2. Change the qt4-mac port so that on Tiger it uses version 4.7 instead of 4.8. It has typically been frowned upon to adjust the port version independently per platform. In particular this could be problematic because the PortIndex might have been generated by our server on a different platform.
  3. Declare that Tiger is too old for us to support with qt4-mac and make the port simply print a message to that effect, as we already to in many other ports (see the wine port for an example of how this can be done).

Or if we can patch qt 4.8 to still build and work on Tiger, and that's not too much work, then of course we can do that. If the only reason you haven't attached a patch is that you can't get back to qt4-mac 4.7, then wiki:howto/InstallingOlderPort should help you do that.

comment:2 in reply to:  1 Changed 12 years ago by ccarey@…

Replying to ryandesign@…:

If qt 4.8 can't build on Tiger, our options would be: […]

Even if Qt 4.8 can't be brought to Tiger, I would hope that qt4-mac 4.7.4_1 would remain available for building on Tiger. (Does your third option above allow that?) Ideally the 4.7 “branch” (is that the proper terminology within MacPorts?) would continue to receive select updates afterwards, e.g. implementation of a +psql92 variant now that PostgreSQL 9.2 has been released.

[…] Or if we can patch qt 4.8 to still build and work on Tiger, and that's not too much work, then of course we can do that.

If Qt 4.8 can be brought to Tiger, all the better. I had interpreted the lack of all Qt 4.8 versions to date building cleanly on Tiger as a sign that it would be too much effort to keep it working on Tiger, which is why I’d suggested stopping qt4-mac on Tiger at 4.7. I’m not familiar with Core Text at all, and the current documentation indicates that most of the API was introduced in Leopard, so I wasn’t sure if Qt 4.8 introduced changes which would require a large emulation layer to bring back to Tiger — whether Nokia’s dropping of Tiger’s Tier 2 status was simply a measure of convenience for them, or if they didn’t want to put in the effort of emulating “Leopardisms” within Tiger.

If the only reason you haven't attached a patch is that you can't get back to qt4-mac 4.7, then wiki:howto/InstallingOlderPort should help you do that.

I wasn’t sure if patches to outdated versions of a particular port would still be welcomed. If they would be welcomed, then I’ll reïnstall 4.7.4_1 and submit the patch for its shadereffectitem.cpp file.

comment:3 Changed 11 years ago by jmroot (Joshua Root)

Port: qt4-mac added; q4-mac removed

comment:4 Changed 11 years ago by michaelld (Michael Dickens)

Sorry this has taken so long to get to. If you want to reinstall 4.7.4_1 and create a patch then I'd be willing to work with you to see if we can get Qt 4.8 running on Tiger; it will likely take a few iterations of creating patches to get it to work, if we can get it working at all without significant effort.

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

On 10.4.11 PPC G4, I see this error with qt4-mac @4.8.4_1+quartz:

kernel/qnetworkproxy_mac.cpp: In function ?QNetworkProxy proxyFromDictionary(const __CFDictionary*)?:
kernel/qnetworkproxy_mac.cpp:159: error: ?kCFProxyTypeKey? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:160: error: ?kCFProxyTypeNone? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:162: error: ?kCFProxyTypeFTP? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:164: error: ?kCFProxyTypeHTTP? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:166: error: ?kCFProxyTypeHTTPS? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:168: error: ?kCFProxyTypeSOCKS? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:172: error: ?kCFProxyHostNameKey? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:173: error: ?kCFProxyUsernameKey? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:174: error: ?kCFProxyPasswordKey? was not declared in this scope
kernel/qnetworkproxy_mac.cpp:176: error: ?kCFProxyPortNumberKey? was not declared in this scope

These require 10.5 or newer too.

comment:6 Changed 11 years ago by ultrajoe@…

Cc: ultrajoe@… added

Cc Me!

comment:7 in reply to:  5 Changed 11 years ago by ifn22@…

Replying to ryandesign@…:

On 10.4.11 PPC G4, I see this error with qt4-mac @4.8.4_1+quartz:

I get the same error. Is there a workaround? Can the older qt4-mac satisfy the dependency for py-pyqt4?

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

Cc: ifn22@… added

The workaround for now is to install the older qt4-mac @4.7.x by following wiki:howto/InstallingOlderPort. There is no guarantee this will be sufficient as a dependency for any port, though I would expect it to work for most.

comment:9 Changed 9 years ago by michaelld (Michael Dickens)

Resolution: wontfix
Status: newclosed

As per another ticket, I'm not going to tweak qt4-mac 4.8.7 to allow building on 10.5 or earlier OS X, which are not officially supported, unless someone provides me with patches. As Ryan notes, you can try building using the older port.

Note: See TracTickets for help on using tickets.