Skip to content

Commit

Permalink
proj[4-9]: migrate ports to subports of new wrapper port proj
Browse files Browse the repository at this point in the history
The new wrapper port `proj` is an alias of the latest PROJ version,
currently `proj9`.
  • Loading branch information
nilason committed Jul 1, 2024
1 parent 8e2860f commit 4d77594
Show file tree
Hide file tree
Showing 10 changed files with 242 additions and 385 deletions.
242 changes: 242 additions & 0 deletions gis/proj/Portfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem 1.0

name proj
# keep this stub version in sync with latest version in `proj_versions_info`
version 9.4.1
categories gis

homepage https://proj.org/
master_sites https://download.osgeo.org/proj/

set latest_version ${version}
set latest_major [lindex [split ${latest_version} .] 0]


# current PROJ subports
#
# meaning of the fields:
# - major version
# - minor.micro version
# - revision
# - rmd160
# - sha256
# - size
set proj_versions_info {
4 9.3 0 cffdce968c8929fd7f38a65e3d905a62858589a2 6984542fea333488de5c82eea58d699e4aff4b359200a9971537cd7e047185f7 921448
5 2.0 0 d99eccff181bb002dd0e398a69fb26cbf57fc4d6 ef919499ffbc62a4aae2659a55e2b25ff09cccbbe230656ba71c6224056c7e60 1398188
6 3.2 0 921b822868362fd1a81158542d540fd34a0c44c7 cb776a70f40c35579ae4ba04fb4a388c1d1ce025a1df6171350dc19f25b80311 2827685
7 2.1 1 33640fc210ad5e465c04047ac364a53c2415b441 b384f42e5fb9c6d01fe5fa4d31da2e91329668863a684f97be5d4760dbbf0a14 5714666
8 2.1 1 7456023fdeb03f7d1c182fe67f617960ea3efede 76ed3d0c3a348a6693dfae535e5658bbfd47f71cb7ff7eb96d9f12f7e068b1cf 5882136
9 4.1 0 b1675c75af933af7ff84c51a6afbf709badc3fce ffe20170ee2b952207adf8a195e2141eab12cda181e49fdeb54425d98c7171d7 5665272
}

foreach {proj_major proj_minor proj_revision proj_rmd160 proj_sha256 proj_size} ${proj_versions_info} {
subport proj${proj_major} {
version ${proj_major}.${proj_minor}
revision ${proj_revision}
license MIT
maintainers {stromnov @stromnov} openmaintainer

distname ${name}-${version}

checksums rmd160 ${proj_rmd160} sha256 ${proj_sha256} size ${proj_size}

description PROJ ${proj_major} is a generic coordinate transformation software

long_description {*}${description} that transforms geospatial coordinates from one \
coordinate reference system (CRS) to another. This includes \
cartographic projections as well as geodetic transformations.

if {${proj_major} >= 5} {
compiler.cxx_standard 2011
}

if {${proj_major} >= 6} {
PortGroup compiler_blacklist_versions 1.0

depends_lib-append port:sqlite3
}

if {${proj_major} >= 6 && ${proj_major} <= 8} {
depends_build-append port:pkgconfig
}

if {${proj_major} >= 7 && ${proj_major} <= 8} {
configure.pre_args --prefix=${prefix}/lib/proj${proj_major}
configure.args --mandir=${prefix}/lib/proj${proj_major}/share/man \
--disable-tiff

variant tiff description {Enable TIFF I/O} {
depends_lib-append port:tiff
configure.args-replace --disable-tiff --enable-tiff
}

variant lto description {Enable Link Time Optimization} {
configure.args-append --enable-lto
}

variant native description {Optimize for speed} {
if {${configure.build_arch} in [list ppc ppc64]} {
configure.optflags -O3 -pipe -mcpu=native -mtune=native -DGDAL_COMPILATION
} else {
configure.optflags -O3 -pipe -march=native -DGDAL_COMPILATION
}
}
}

if {${proj_major} >= 7} {
depends_lib-append port:curl
default_variants +tiff

# error: return type 'const nn<[...]>' must match previous return type
# 'nn<[...]>' when lambda expression has unspecified explicit return type
compiler.blacklist-append {clang < 602}
}


if {${subport} eq "proj4"} {
maintainers nomaintainer
set datumgrid_version 1.5

distfiles-append ${name}-datumgrid-${datumgrid_version}.zip

checksums ${name}-${version}.tar.gz \
rmd160 ${proj_rmd160} sha256 ${proj_sha256} size ${proj_size} \
${name}-datumgrid-${datumgrid_version}.zip \
rmd160 f5deacd0242557c92c35d43941cd52a7e4096467 \
sha256 723c4017d95d7a8abdf3bda4e18d3c15d79b00f9326d453da5fdf13f96c287db \
size 2250131

extract.only ${name}-${version}.tar.gz

post-extract {
system "unzip ${distpath}/${name}-datumgrid-${datumgrid_version}.zip -d ${worksrcpath}/nad"
}

configure.pre_args --prefix=${prefix}/lib/proj49
configure.args --mandir=${prefix}/lib/proj49/share/man
}

if {${subport} eq "proj5"} {
maintainers nomaintainer
set datumgrid_version 1.8
distfiles-append ${name}-datumgrid-${datumgrid_version}.zip

checksums ${name}-${version}.tar.gz \
rmd160 ${proj_rmd160} sha256 ${proj_sha256} size ${proj_size} \
${name}-datumgrid-${datumgrid_version}.zip \
rmd160 f84c374f85c1314c7e357fd50683b67767cea358 \
sha256 b9838ae7e5f27ee732fb0bfed618f85b36e8bb56d7afb287d506338e9f33861e \
size 6601640

extract.only ${name}-${version}.tar.gz

post-extract {
set datumgrid ${distpath}/${name}-datumgrid-${datumgrid_version}.zip
system "unzip '$datumgrid' -d '${worksrcpath}/nad'"
}

pre-destroot {
file copy ${worksrcpath}/src/projects.h ${destroot}${prefix}/include
}

configure.pre_args --prefix=${prefix}/lib/proj5
configure.args --mandir=${prefix}/share/man

post-destroot {
xinstall -m 644 ${worksrcpath}/src/projects.h ${destroot}${prefix}/include/
}
}

if {${subport} eq "proj6"} {
set datumgrid_ver 1.8

distfiles-append ${name}-datumgrid-${datumgrid_ver}.zip

checksums ${name}-${version}.tar.gz \
rmd160 ${proj_rmd160} sha256 ${proj_sha256} size ${proj_size} \
${name}-datumgrid-${datumgrid_ver}.zip \
rmd160 f84c374f85c1314c7e357fd50683b67767cea358 \
sha256 b9838ae7e5f27ee732fb0bfed618f85b36e8bb56d7afb287d506338e9f33861e \
size 6601640

extract.only ${name}-${version}.tar.gz

patchfiles-append 6-7-patch-add-missing-includes.diff

depends_extract-append port:unzip

post-extract {
set datumgrid ${distpath}/${name}-datumgrid-${datumgrid_ver}.zip
system "${prefix}/bin/unzip -o '$datumgrid' -d '${worksrcpath}/data'"
}

configure.pre_args --prefix=${prefix}/lib/proj6
configure.args --mandir=${prefix}/lib/proj6/share/man

# Without this, the build fails with Xcode clang on 10.8/5.1.1 and 10.9/6.2.
# This is due to an upstream bug requiring a forgiving compiler.
compiler.blacklist-append {clang < 700}

}

if {${subport} eq "proj7"} {
patchfiles-append 6-7-patch-add-missing-includes.diff
}

if {${subport} eq "proj8"} {
patchfiles-append 8-patch-add-missing-includes.diff

test.run yes
test.target check-local
}

if {${subport} eq "proj9"} {
PortGroup cmake 1.1

cmake.install_prefix ${prefix}/lib/proj9

configure.args-append \
-DENABLE_CURL=ON \
-DENABLE_TIFF=OFF \
-DENABLE_IPO=OFF \
-DBUILD_TESTING=OFF \
-DBUILD_EXAMPLES=OFF \
-DPROJ_DATA_ENV_VAR_TRIED_LAST=OFF

variant tiff description {Enable TIFF I/O} {
depends_lib-append port:tiff
configure.args-replace -DENABLE_TIFF=OFF -DENABLE_TIFF=ON
}

variant lto description {Enable Link Time Optimization} {
configure.args-replace -DENABLE_IPO=OFF -DENABLE_IPO=ON
}
}


livecheck.type regex
livecheck.url ${master_sites}
if {${proj_major} eq ${latest_major}} {
livecheck.regex "${name}-(\\d+(?:\\.\\d+)*)${extract.suffix}"
} else {
livecheck.regex "${name}-(${proj_major}(?:\\.\\d+)*)${extract.suffix}"
}
}
}

if {$subport eq $name} {
PortGroup stub 1.0

description Wrapper port for PROJ ${latest_major}
long_description ${description}

supported_archs noarch
platforms any

depends_lib-append port:proj9

livecheck.type none
}
44 changes: 0 additions & 44 deletions gis/proj4/Portfile

This file was deleted.

51 changes: 0 additions & 51 deletions gis/proj5/Portfile

This file was deleted.

Loading

0 comments on commit 4d77594

Please sign in to comment.