Re: [MacPorts] #51208: icu @55.1 — add a +norename variant
MacPorts
noreply at macports.org
Tue Oct 29 01:58:52 UTC 2019
#51208: icu @55.1 — add a +norename variant
-------------------------------+------------------------
Reporter: ken.mcglothlen@… | Owner: ryandesign
Type: enhancement | Status: closed
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: wontfix | Keywords: haspatch
Port: icu |
-------------------------------+------------------------
Changes (by ryandesign):
* status: new => closed
* resolution: => wontfix
Comment:
The boost port's "no_single" and "no_static" variant names are a decade or
more out of date and do not represent our best practices. They should
really be converted to subports at this point.
As I understand the situation, icu offers a choice about whether the
symbols that go into its libraries are suffixed with a version number or
not. Whichever way we choose, those are the symbols other programs will
expect to be in the library. If we enable the version number suffix
feature, I don't think other programs will explicitly use a version number
suffix, but I think that the icu headers will do so automatically when a
symbol without the version number suffix is used. As such, I don't think
it matters to other software whether or not we use this feature.
Since this choice affects how all other software uses icu, we cannot leave
it up to the user to change this via a variant. If we did, and the user
changed it from the default that we use on our build machines, anything
they had installed via a binary from our build machine would be broken.
So we have to either always rename symbols, or always not rename symbols.
And since the default is to rename symbols, and that has been working fine
for us so far, I see no reason to change it.
No, disabling symbol renaming would have no bearing on the fact that we
need to increase the revision of ports that use the library when the major
version number increases. This is simply the reality of what a major
version number increase means: it means the library is not backward
compatible, at least not in terms of ABI. (If it were ABI-compatible, the
developers would not have increased the major version.) It may be API-
compatible in that recompiling the other software would be enough, or it
may be API-incompatible, requiring source code changes in the other
software. Either way, the library major version number is part of the
library's filename and install_name, so any other software linking with
the old library major version number will simply fail at runtime with a
message that the library file cannot be found. Hence we must revbump to
rebuild.
--
Ticket URL: <https://trac.macports.org/ticket/51208#comment:6>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list