Opened 3 months ago

Last modified 7 days ago

#70600 assigned defect

poppler requires C++20 which is not available on 10.4–10.5

Reported by: barracuda156 Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version: 2.10.1
Keywords: tiger, leopard Cc:
Port: poppler

Description

It has been reported that poppler fails to install on Leopard. Lo and behold, it asks for C++20 (!):

:info:configure   Target "cmTC_a3da4" requires the language dialect "CXX20" .  But the
:info:configure   current compiler "GNU" does not support this, or CMake does not know the
:info:configure   flags to enable it.

Since nobody seems interested to merge my fix allowing to use modern gcc on < 10.6, perhaps at least add a fallback, so that people can build ports which use poppler?

Change History (9)

comment:1 Changed 3 months ago by barracuda156

C++20 required by the source since 24.04.

https://poppler.freedesktop.org/releases.html

comment:2 Changed 3 months ago by barracuda156

Owner: set to mascguy
Status: newassigned

comment:4 Changed 13 days ago by barracuda156

This is quite unfortunate, and users keep complaining that they are unable to build this or that app on 10.5 due to a broken poppler. Of course the right solution would have been to merge my PR switching old systems to modern gcc, but since nobody is interested in fixing the toolchain, at least some fallback for < 10.6 will be helpful. (To be clear, this is not my personal problem, everything works on my end. But there are people affected by this, and not everyone is an expert in tweaking MacPorts setup.)

comment:5 Changed 12 days ago by kencu (Ken)

Please stop saying "NOBODY IS INTERESTED IN MERGING MY PR". That is simply NOT TRUE.

updating the default gcc installation for older systems requires several steps, that haven't been addressed in your simplistic PR.

I fixed the build of a newer gcc on Tiger a few months ago using a new interim bootstrap compiler, so gcc14 would probably install there now. I haven't actually run through it as yet, though.

It is necessary to force the update of the default libgcc, as per the commit I showed you years ago when I last updated the default gcc for 10.6.

BUT, and this is the big BUT --

we have to still decide how we are going to support the older gcc versions on 10.4/10.5 when we do the update.

As it is now, once the update is done to libgcc14, to install gcc 5,6,7 etc will require building most or all of:

lilbgcc14, libgcc13, libgcc12, libgcc11, libgcc10, libgcc9, libgcc8, libgcc7, libgcc6, and libgcc5

To build 10 versions of gcc on such old systems, plus the bootstrap compilers, will take first of a great deal of time (a week, I would guess) and second of all, a TON of disc space. This seems just INSANE to me.

However, we have not been able to achieve consensus on deleting / not supporting a bunch of (probably needless) intermediate versions of gcc, so I have not attempted to make progress on this.

Once we get consensus on that, and once we have a proper PR that address the upgrade to a new gcc version correctly, the update can happen.

Your PR is the very very very least of the parts needed.

comment:6 Changed 12 days ago by kencu (Ken)

why don't you set up a Tiger and Leopard installation with the current macports and default gcc7 we have, and then run through a proper upgrade to libgcc14 on those systems such that it actually works like the one I last did for 10.6.

And then once you have done that, install gcc5 and gcc7 at least, and see how painful that turns out to be or not be.

Somebody has to do those steps, someday, if the update is to proceed.

It seems to always fall to me to do that and -- it's about time somebody else stepped up.

comment:7 in reply to:  5 ; Changed 12 days ago by mascguy (Christopher Nielsen)

If all we need to do is fallback to a pre-C++20 version of poppler for 10.5, that's (relatively) trivial. Certainly as compared to supporting a modern GCC on 10.5.

Ultimately it would be easier to simply pin ports to older versions on 10.5, when necessary.

comment:8 in reply to:  7 Changed 12 days ago by barracuda156

Replying to mascguy:

If all we need to do is fallback to a pre-C++20 version of poppler for 10.5, that's (relatively) trivial. Certainly as compared to supporting a modern GCC on 10.5.

Ultimately it would be easier to simply pin ports to older versions on 10.5, when necessary.

For poppler in particular, yes. In principle, I don’t think so: for the modern gcc all is needed is a few trivial changes in MacPorts setup, at least on 10.5 ppc/i386 (ppc64 is broken in MacPorts). That is a work for an hour, which has already been done anyway. Okay, another ten minutes for Ken to verify that he is satisfied. Pinning hundreds of ports is not just enormous task, it simply won’t be done (who is gonna do that?). To begin with, there is no way to even know which ports are broken on 10.5 due to archaic compiler, since there is no build bot and no testing. And then, testing with gcc7 is a waste of time, that compiler should just not be used for anything save for bootstrapping.

On 10.6 ppc – not by virtue of the OS, but of GCC – I have more stuff working than on much later Intel systems.

comment:9 in reply to:  5 Changed 7 days ago by barracuda156

Replying to kencu:

Please stop saying "NOBODY IS INTERESTED IN MERGING MY PR". That is simply NOT TRUE.

updating the default gcc installation for older systems requires several steps, that haven't been addressed in your simplistic PR.

My point is exactly that the issue is simple, and my PR was completely trivial, anyone could have done that, just for some reason no one actually did over years, which illustrates my point: nobody was interested. And if you or anyone were, then nothing prevented from adding a simple patch to activation issue which I missed initially. Not everyone perhaps even looked into that PR, but you surely did.

  1. S. This is just a factual take. Interest is a matter of preference, and preferences are subjective. So nobody has to be interested in any particular matter.
Note: See TracTickets for help on using tickets.