Skip to content

Commit

Permalink
gmt5, gmt6: deprecate gmt5, fix sighandler patch
Browse files Browse the repository at this point in the history
  • Loading branch information
remkos committed Nov 19, 2024
1 parent 4537c76 commit 1ebf761
Show file tree
Hide file tree
Showing 5 changed files with 215 additions and 39 deletions.
38 changes: 10 additions & 28 deletions science/gmt5/Portfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# -*- 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
# https://trac.macports.org/ticket/71306
PortGroup deprecated 1.0
deprecated.upstream_support no
PortGroup cmake 1.0
PortGroup github 1.0

Expand All @@ -9,15 +12,11 @@ github.setup GenericMappingTools gmt 5.4.5
github.tarball_from releases
distname ${github.project}-${github.version}-src
revision 20
subport gmt6 {
github.setup GenericMappingTools gmt 6.5.0
revision 2
epoch 1
}

categories science
platforms darwin
maintainers {me.com:remko.scharroo @remkos} openmaintainer
license GPL-3

description The Generic Mapping Tools
long_description GMT is an open source collection of ~120 tools \
for manipulating geographic and Cartesian data sets and \
Expand All @@ -38,26 +37,18 @@ use_xz yes
distname gmt-${version}
distfiles ${distname}-src${extract.suffix}

if {${subport} eq "gmt5"} {
checksums rmd160 900befd66ec4a9aea75c53d99ed83f7e25163e35\
sha256 078d4997507cb15344c74a874568985e45bdbd6d3a72d330c74c47f4c0359bb1 \
size 59175704
} else {
checksums rmd160 3e47113d134bde756b98906a4704b3151902c4d1 \
sha256 4022adb44033f9c1d5a4d275b69506449e4d486efe2218313f3ff7a6c6c3141e \
size 58696516
}
checksums rmd160 900befd66ec4a9aea75c53d99ed83f7e25163e35\
sha256 078d4997507cb15344c74a874568985e45bdbd6d3a72d330c74c47f4c0359bb1 \
size 59175704

patchfiles patch-gmt5-common_sighandler.diff

depends_lib port:curl \
port:dcw-gmt \
port:ghostscript \
port:gshhg-gmt \
port:netcdf

if {${subport} eq "gmt5"} {
patchfiles patch-gmt5-arm64.diff
}

default_variants +gdal +pcre
if {![variant_isset lgpl]} {
default_variants-append +nonfree
Expand Down Expand Up @@ -92,16 +83,7 @@ configure.args-append -DDCW_ROOT=${prefix}/share/gmt/dcw \
-DGMT_INSTALL_TRADITIONAL_FOLDERNAMES=off \
-DLICENSE_RESTRICTED=GPL

if {${subport} eq "gmt6"} {
configure.args-append -DGS_ROOT=${prefix}
}

post-destroot {
if {${subport} eq "gmt6"} {
foreach l {gmt postscriptlight} {
file delete ${destroot}${prefix}/lib/${subport}/bin/lib${l}.${version}.dylib
}
}
ln -s ${prefix}/lib/${subport}/bin/gmt ${destroot}${prefix}/bin/${subport}
}

Expand Down
11 changes: 0 additions & 11 deletions science/gmt5/files/patch-gmt5-arm64.diff

This file was deleted.

23 changes: 23 additions & 0 deletions science/gmt5/files/patch-gmt5-common_sighandler.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
--- src/common_sighandler.c.orig 2019-01-03 15:39:17
+++ src/common_sighandler.c 2024-07-15 17:48:27
@@ -58,11 +58,19 @@
# if __DARWIN_UNIX03
# ifdef __x86_64__
# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__rip)
+# elif defined(__arm64__) /* Apple Silicon, e.g. M1 */
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__pc)
+# elif defined(__POWERPC__) /* Both ppc and ppc64 */
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__srr0)
# else
# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__eip)
# endif
# else
-# define UC_IP(uc) ((void *) (uc)->uc_mcontext->ss.eip)
+# ifdef __ppc__
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->ss.srr0)
+# else
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->ss.eip)
+# endif
# endif
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# ifdef __x86_64__
147 changes: 147 additions & 0 deletions science/gmt6/Portfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
# -*- 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
PortGroup cmake 1.0
PortGroup github 1.0

name gmt6
github.setup GenericMappingTools gmt 6.5.0
github.tarball_from releases
distname ${github.project}-${github.version}-src
revision 2
epoch 1

categories science
maintainers {me.com:remko.scharroo @remkos} openmaintainer
license GPL-3

description The Generic Mapping Tools
long_description GMT is an open source collection of ~120 tools \
for manipulating geographic and Cartesian data sets and \
producing PostScript illustrations ranging from simple x-y \
plots via contour maps to artificially illuminated surfaces \
and 3D perspective views.

homepage https://www.generic-mapping-tools.org/
master_sites https://github.com/GenericMappingTools/gmt/releases/download/${version} \
ftp://ftp.soest.hawaii.edu/gmt \
ftp://ftp.star.nesdis.noaa.gov/pub/sod/lsa/gmt \
ftp://ftp.iris.washington.edu/pub/gmt \
ftp://ftp.iag.usp.br/pub/gmt \
ftp://gmt.mirror.ac.za/gmt \
http://mirrors.ustc.edu.cn/gmt \
http://www.scc.u-tokai.ac.jp/gmt
use_xz yes
distname gmt-${version}
distfiles ${distname}-src${extract.suffix}

checksums rmd160 3e47113d134bde756b98906a4704b3151902c4d1 \
sha256 4022adb44033f9c1d5a4d275b69506449e4d486efe2218313f3ff7a6c6c3141e \
size 58696516

patchfiles patch-gmt6-common_sighandler.diff

depends_lib port:curl \
port:dcw-gmt \
port:ghostscript \
port:gshhg-gmt \
port:netcdf

default_variants +gdal +pcre
if {![variant_isset lgpl]} {
default_variants-append +nonfree
}

cmake.out_of_source yes
cmake.install_prefix ${prefix}/lib/${subport}

# Mimic CMake's default FLAGS:
if {[variant_isset debug]} {
configure.optflags -O0
} else {
# optflags deliberately unset:
configure.optflags
# Set CMAKE_BUILD_TYPE=RelWithDebInfo to get reliable backtraces:
configure.args-delete -DCMAKE_BUILD_TYPE=Release
configure.args-append -DCMAKE_BUILD_TYPE=RelWithDebInfo
}

configure.cflags-append -fstrict-aliasing
configure.args-append -DDCW_ROOT=${prefix}/share/gmt/dcw \
-DCOPY_DCW=off \
-DGSHHG_ROOT=${prefix}/share/gmt/gshhg \
-DCOPY_GSHHG=off \
-DGS_ROOT=${prefix} \
-DNETCDF_ROOT=${prefix} \
-DCURL_ROOT=${prefix} \
-DFFTW3_ROOT=off \
-DGDAL_ROOT=off \
-DPCRE_ROOT=off \
-DGMT_OPENMP=off \
-DGMT_INSTALL_MODULE_LINKS=off \
-DGMT_INSTALL_TRADITIONAL_FOLDERNAMES=off \
-DLICENSE_RESTRICTED=GPL

post-destroot {
foreach l {gmt postscriptlight} {
file delete ${destroot}${prefix}/lib/${subport}/bin/lib${l}.${version}.dylib
}
ln -s ${prefix}/lib/${subport}/bin/gmt ${destroot}${prefix}/bin/${subport}
}

variant fftw3 description {Optional support for FFTW-3 library} {
depends_lib-append port:fftw-3-single
configure.args-delete -DFFTW3_ROOT=off
configure.args-append -DFFTW3_ROOT=${prefix}
}

variant gdal description {GDAL import support} {
depends_lib-append port:gdal
configure.args-delete -DGDAL_ROOT=off
configure.args-append -DGDAL_ROOT=${prefix}
}

variant pcre description {PCRE regular expression support} {
depends_lib-append port:pcre
configure.args-delete -DPCRE_ROOT=off
configure.args-append -DPCRE_ROOT=${prefix}
}

variant openmp description {Enable experimental OpenMP parallel acceleration} {
configure.args-delete -DGMT_OPENMP=off
configure.args-append -DGMT_OPENMP=on

# FIXME: llvm-gcc42 is broken, https://trac.macports.org/ticket/40713
# Only clang really needs to be blacklisted
compiler.blacklist *gcc-4.2 *clang*
compiler.fallback macports-gcc-5 macports-gcc-4.9 macports-gcc-4.8 macports-gcc-4.7 macports-gcc-4.6 macports-gcc-4.5 macports-gcc-4.4 macports-gcc-4.3

# Needed for compiling with GCC and Accelerate Framework on OSX:
configure.cflags-append -flax-vector-conversions
}

variant lgpl conflicts nonfree description {disallow use of GPL code, license will be LGPL} {
license-delete GPL-3
license-append LGPL-3
configure.args-delete -DLICENSE_RESTRICTED=GPL
configure.args-append -DLICENSE_RESTRICTED=LGPL
}

variant nonfree conflicts lgpl description {enable nonfree code, libraries and binaries \
will not be redistributable} {
license-delete GPL-3
license-append Restrictive
configure.args-delete -DLICENSE_RESTRICTED=GPL
configure.args-append -DLICENSE_RESTRICTED=no
}

notes "
${subport} is installed in ${prefix}/lib/${subport}.
${prefix}/bin/${subport} is a symblic link to ${prefix}/lib/${subport}/bin/gmt.
"

# livecheck for the proper branch (5 or 6) and skipping any release candidates
set firstchar [string range ${version} 0 0]
livecheck.type regex
livecheck.url ${github.homepage}/releases/
livecheck.regex gmt-(${firstchar}\\.\[0-9]+\\.\[0-9]+)-src${extract.suffix}
35 changes: 35 additions & 0 deletions science/gmt6/files/patch-gmt6-common_sighandler.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
From 458738d52a9068a140155061757c7fa3bc27cc45 Mon Sep 17 00:00:00 2001
From: Sergey Fedorov <vital.had@gmail.com>
Date: Thu, 18 Jul 2024 22:36:57 +0800
Subject: [PATCH] gmt_common_sighandler.c: fix ucontext for Apple

---
src/gmt_common_sighandler.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)

diff --git src/gmt_common_sighandler.c src/gmt_common_sighandler.c
index b6eaf7c95..f21d0ae58 100644
--- src/gmt_common_sighandler.c
+++ src/gmt_common_sighandler.c
@@ -80,13 +80,19 @@ GMT_LOCAL void backtrace_symbols_fd(void *const *buffer, int size, int fd) {
# if __DARWIN_UNIX03
# ifdef __x86_64__
# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__rip)
-# elif __arm64__ /* Apple Silicon, e.g. M1 */
+# elif defined(__arm64__) /* Apple Silicon, e.g. M1 */
# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__pc)
+# elif defined(__POWERPC__) /* Both ppc and ppc64 */
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__srr0)
# else
# define UC_IP(uc) ((void *) (uc)->uc_mcontext->__ss.__eip)
# endif
# else
-# define UC_IP(uc) ((void *) (uc)->uc_mcontext->ss.eip)
+# ifdef __ppc__
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->ss.srr0)
+# else
+# define UC_IP(uc) ((void *) (uc)->uc_mcontext->ss.eip)
+# endif
# endif
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
# ifdef __x86_64__

0 comments on commit 1ebf761

Please sign in to comment.