Clean up PROJ mess

Nicklas Larsson n_larsson at yahoo.com
Fri Apr 12 06:33:12 UTC 2024


I have now put up a PR [1] to address this PROJ issue. The changes I propose to make are in summary:

- rename current `proj` to `proj5` (and update the few of its dependencies)
- collect all proj[N] ports to one Portfile `proj`
- create a new stub port `proj` which will serve as alias for the latest version (presently proj9) and to which the others are subports of

This will hopefully lead to less repetitive code and easier maintenance. Ports that support the latest version of PROJ can be cleaned up of the cascade of proj[N] variants currently  common, in only adding `proj` as a dependant.

Nicklas


[1] https://github.com/macports/macports-ports/pull/23462



> On 9 Sep 2023, at 09:43, Sergey Fedorov <vital.had at gmail.com> wrote:
> 
> This just amounts to switching the existing proj port from proj5 to the latest.
> 
> On Sat, Sep 9, 2023 at 12:26 AM Dave Allured - NOAA Affiliate via macports-dev <macports-dev at lists.macports.org <mailto:macports-dev at lists.macports.org>> wrote:
>> Niklas, you proposed that "proj9" be renamed to "proj", later in the migration.  I suggest a minor change.  Keep "proj9" unchanged, and make "proj" an alias for proj9, or whatever the macports mechanism is for that.  This means that current ports that need "proj9" explicitly in some way, remain unaffected.
>> 
>> After that, always install future major versions as explicitly pinned; "proj10", etc.  "proj" gets updated too, but remains an alias or pointer for "the latest version".  Port devs will then have their choice of pinned or unpinned version, whatever they think is best for their scenario.  Hopefully this will mean less work at each major version step for proj.
>> 
>> 
>> On Fri, Sep 8, 2023 at 10:16 AM Nicklas Larsson <n_larsson at yahoo.com <mailto:n_larsson at yahoo.com>> wrote:
>>> Hi all!
>>> 
>>> Glad you took up this subject again. I have meant to return to this, but things always come between.
>>> 
>>> Just to clarify, my main objective is to *rename* the existing proj ports and the latest version would always be ‘proj’.
>>> 
>>> The ports that do not support the new 8+ API will still have its proper dependency (proj7, proj6 etc.).
>>> 
>>> In PROJ version 5 through 8 the API was transformed, this means with version 8 the “old” API was abandoned.
>>> SAGA, for example, still only support the old API, thus the proj version 7 is the latest one supported.
>>> 
>>> Cheers,
>>> Nicklas
>>> 
>>>> On 8 Sep 2023, at 16:52, Sergey Fedorov <vital.had at gmail.com <mailto:vital.had at gmail.com>> wrote:
>>>> 
>>>> I have obviously forgotten to try the new Proj with R ports back then, and atm away from native PPC hardware; so from my side I would prefer not moving to a newer Proj right-away.
>>>> Switching to explicit proj5 port should be perfectly fine, of course. (And then R ports won’t prevent anything else from updating.)
>>>> 
>>>> New Proj should work with R packages, but let me wait until I can test that on PPC.
>>>> 
>>>> On Fri, Sep 8, 2023 at 9:38 PM Dave Allured - NOAA Affiliate via macports-dev <macports-dev at lists.macports.org <mailto:macports-dev at lists.macports.org>> wrote:
>>>>> As a contributor to ncarg (proj5), I like this change.  Currently there are only 10 ports that depend on the traditional "proj" which is really proj5 under the hood.  Collectively there are only 3 maintainers plus a few nomaintainers, and Sergey has already approved for several of the R ports.
>>>>> 
>>>>> So I see the migration for this group of "proj5" ports as quite simple.  As a first step, could we add an explicit proj5 port, such that proj and proj5 co-exist temporarily and are exactly the same?  That could be done safely now, with no impact on anything else.  Then after migration of those 10 ports, "proj" could be easily switched to the latest upstream version, as proposed.
>>>>> 
>>>>> 
>>>>> On Thu, Jun 8, 2023 at 2:09 PM Sergey Fedorov <vital.had at gmail.com <mailto:vital.had at gmail.com>> wrote:
>>>>>> IMO that makes sense.
>>>>>> 
>>>>>> My R ports are supposed to support more recent versions of Proj than 5, but since that is untested locally (and also requires minor adjustments to configure args besides swapping version number), it is perhaps safer to keep them at Proj5 for now (I guess that is also simpler for you?).
>>>>>> Then I can move them to a later or the current Proj in a while.
>>>>>> 
>>>>>> On Fri, Jun 9, 2023 at 3:54 AM Nicklas Larsson via macports-dev <macports-dev at lists.macports.org <mailto:macports-dev at lists.macports.org>> wrote:
>>>>>>> Hello all,
>>>>>>> 
>>>>>>> I'd like to propose to simplify the maintainance of the PROJ ports, which has
>>>>>>> become unnecessary cumbersome and in many cases leading to installments of
>>>>>>> multiple versions only because different ports are out-of-sync in respect to
>>>>>>> default proj variant.
>>>>>>> 
>>>>>>> The PROJ ports available now:
>>>>>>> 
>>>>>>> port    version
>>>>>>> ---------------
>>>>>>> proj4   4.9.3
>>>>>>> proj    5.2.0
>>>>>>> proj6   6.3.2
>>>>>>> proj7   7.2.1
>>>>>>> proj8   8.2.1
>>>>>>> proj9   9.2.1
>>>>>>> 
>>>>>>> It would be better to use the port name 'proj' for the latest version available
>>>>>>> (independent of major version), which now is version 9.2.1. The present port
>>>>>>> 'proj', which is version 5.2.0, should be renamed to 'proj5'. Like this:
>>>>>>> 
>>>>>>> port    version
>>>>>>> ---------------
>>>>>>> proj4   4.9.3
>>>>>>> proj5   5.2.0
>>>>>>> proj6   6.3.2
>>>>>>> proj7   7.2.1
>>>>>>> proj8   8.2.1
>>>>>>> proj    9.2.1
>>>>>>> 
>>>>>>> The day when there is a new major version, e.g. 10.0.0, the 'proj' port will be
>>>>>>> updated accordingly and 'proj9' will keep the 9.x.y version:
>>>>>>> 
>>>>>>> port    version
>>>>>>> ---------------
>>>>>>> proj4   4.9.3
>>>>>>> proj5   5.2.0
>>>>>>> proj6   6.3.2
>>>>>>> proj7   7.2.1
>>>>>>> proj8   8.2.1
>>>>>>> proj9   9.2.1
>>>>>>> proj    10.0.0
>>>>>>> 
>>>>>>> The ports with 'proj' dependency, which are actively updated and maintained,
>>>>>>> will in this way be kept in sync with less risk of installing multiple versions.
>>>>>>> Ports, which do not support later versions of PROJ, can keep the pinned version.
>>>>>>> 
>>>>>>> List of ports with proj[x] dependency:
>>>>>>> 
>>>>>>> R/R-lwgeom                  path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> R/R-proj4                   path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> R/R-reproj                  path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> R/R-rgdal                   path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> R/R-sf                      path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> R/R-terra                   path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> R/R-vapour                  path:lib/proj5/lib/pkgconfig/proj.pc:proj
>>>>>>> databases/mysql55-lib_mysqludf_fproj4   port:proj4
>>>>>>> databases/postgis                       port:proj4
>>>>>>> databases/postgis2                      port:proj6
>>>>>>> databases/postgis3                      port:proj[6-9]
>>>>>>> databases/spatialite-tools              port:proj[6-9]
>>>>>>> databases/spatialite                    port:proj[6-9]
>>>>>>> gis/gdal                                port:proj[6-9]
>>>>>>> gis/grass                               port:proj[6-9]
>>>>>>> gis/grass7                              port:proj[6-9]
>>>>>>> gis/liblas                              port:proj[6-9]
>>>>>>> gis/libosmium                           port:proj4
>>>>>>> gis/mapnik                              port:proj4
>>>>>>> gis/mapserver                           port:proj[6-9]
>>>>>>> gis/mod_tile                            port:proj4
>>>>>>> gis/osm2pgsql                           port:proj8
>>>>>>> gis/qgis3                               port:proj[6-9]
>>>>>>> gis/qlandkarte                          port:proj4
>>>>>>> gis/qlandkartegt                        port:proj[4-7]
>>>>>>> gis/saga                                port:proj8
>>>>>>> graphics/libgeotiff                     port:proj[7-9]
>>>>>>> octave/octave-octproj                   port:proj8
>>>>>>> perl/p5-alien-proj                      port:proj[6-9]
>>>>>>> perl/p5-alien-proj4                     port:proj4
>>>>>>> python/py-cartopy                       port:proj8
>>>>>>> python/py-pyproj                        port:proj8
>>>>>>> python/py-spatialite                    port:proj4
>>>>>>> science/cdo                             port:proj8
>>>>>>> science/gerris                          port:proj
>>>>>>> science/magicspp                        port:proj6
>>>>>>> science/metview                         port:proj6
>>>>>>> science/ncarg                           port:proj
>>>>>>> science/relax3d                         port:proj7
>>>>>>> science/sumo                            port:proj4
>>>>>>> science/vapor                           port:proj4
>>>>>>> science/wgrib2                          port:proj8
>>>>>>> science/xastir                          port:proj4
>>>>>>> 
>>>>>>> What do you think, could this be a good way to go forward?
>>>>>>> Suggestions, opinions?
>>>>>>> 
>>>>>>> Best regards,
>>>>>>> Nicklas

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-dev/attachments/20240412/be070eca/attachment-0001.htm>


More information about the macports-dev mailing list