File GMT.spec of Package GMT
#
# spec file for package GMT
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2004-2021 Dirk Stoecker <gmt@dstoecker.de>.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define coastlinever 2.3.7
%define dcwver 2.2.0
%define coastlineversion gshhg-gmt-%{coastlinever}
%define dcwversion dcw-gmt-%{dcwver}
%define datadir %{_datadir}/gmt
# docdir later copied away!
%define docdir %{datadir}
%if 0%{?suse_version} <= 1500
# No sphinxcontrib packages on SLE/Leap 15. There is still a doc package installed
%bcond_with doc
%else
%bcond_without doc
%endif
Name: GMT
Version: 6.5.0
Release: 0
Summary: Generic Mapping Tools
License: GPL-2.0-or-later
Group: Productivity/Graphics/Visualization/Other
Summary(de): Generic Mapping Tools - Karten- und Grafikerzeugung
URL: https://www.generic-mapping-tools.org/
Source0: https://github.com/GenericMappingTools/gmt/releases/download/%{version}/gmt-%{version}-src.tar.xz
Source1: https://github.com/GenericMappingTools/gshhg-gmt/releases/download/%{coastlinever}/%{coastlineversion}.tar.gz
Source2: https://github.com/GenericMappingTools/dcw-gmt/releases/download/%{dcwver}/%{dcwversion}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: GraphicsMagick
BuildRequires: blas-devel
BuildRequires: c++_compiler
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: ffmpeg
BuildRequires: fftw3-devel
BuildRequires: gdal
BuildRequires: ghostscript
BuildRequires: lapack-devel
BuildRequires: libgdal-devel
BuildRequires: libgeos-devel
BuildRequires: pkgconfig(netcdf)
BuildRequires: pcre2-devel
%if %{with doc}
BuildRequires: python3-Sphinx
BuildRequires: python3-Sphinx-latex
BuildRequires: python3-sphinxcontrib-copybutton
BuildRequires: python3-sphinxcontrib-design
BuildRequires: python3-sphinxcontrib-jinja
BuildRequires: python3-sphinxcontrib-togglebutton
BuildRequires: python3-sphinxcontrib-youtube
BuildRequires: python3-sphinx_rtd_theme
%endif
BuildRequires: texlive-amscls
BuildRequires: texlive-amsfonts
BuildRequires: texlive-babel-english
BuildRequires: texlive-capt-of
BuildRequires: texlive-caption
BuildRequires: texlive-courier
BuildRequires: texlive-dvips
BuildRequires: texlive-eqparbox
BuildRequires: texlive-fancybox
BuildRequires: texlive-fancyhdr
BuildRequires: texlive-fancyvrb
BuildRequires: texlive-framed
BuildRequires: texlive-helvetic
BuildRequires: texlive-hyperref
BuildRequires: texlive-latex
BuildRequires: texlive-latex-bin
BuildRequires: texlive-makeindex-bin
BuildRequires: texlive-mdwtools
BuildRequires: texlive-multirow
BuildRequires: texlive-needspace
BuildRequires: texlive-parskip
BuildRequires: texlive-psnfss
BuildRequires: texlive-threeparttable
BuildRequires: texlive-times
BuildRequires: texlive-titlesec
BuildRequires: texlive-ucs
BuildRequires: texlive-wrapfig
BuildRequires: xdg-utils
#BuildRequires: xorg-x11-devel
BuildRequires: tex(anyfontsize.sty)
BuildRequires: tex(cmap.sty)
BuildRequires: tex(upquote.sty)
Recommends: ffmpeg
Recommends: gdal
Recommends: xdg-utils
%description
GMT is a free, public-domain collection of about 60 UNIX tools
that allow users to manipulate (x,y) and (x,y,z) data sets
(including filtering, trend fitting, gridding, projecting,
etc.) and produce [Encapsulated] PostScript File (EPS)
illustrations ranging from simple x-y plots through contour
maps to artificially illuminated surfaces and 3-D perspective
views in black and white, gray tone, hachure patterns, and
24-bit color. GMT supports 25 common map projections plus
linear, log, and power scaling, and comes with support data
such as coastlines, rivers, and political boundaries.
%description -l de
GMT ist eine frei verfügbare Sammlung von etwa 60 UNIX-Programmen,
welche es erlauben 2- und 3-dimensionale Datensätze zu manipulieren
(inklusive Filterung, Trendanpassung, Erzeugung von Rasterfeldern,
Projektion, ...) und [Encapsulated] PostScript-Dateien (EPS) zu
erzeugen. Die erzeugbaren Ausgaben gehen von einfachen X-Y-Grafiken
über Konturkarten bis zu künstlich beleuchteten Oberflächen und
3D-Perspektiven in Schwarz-Weiss Graustufen, Schraffuren und
24Bit-Farben. GMT unterstützt 25 bekannte Kartenprojektionen und
zusätzlich lineare, logarithmische und exponentielle Skalierungen.
Datensätze für Küstenlinien, Flüsse und politsche Grenzen werden
unterstützt.
%package devel
Summary: Generic Mapping Tools (Include Files and Libraries mandatory for Development)
Group: Development/Libraries/C and C++
Summary(de): Generic Mapping Tools (Include-Dateien für Entwickler)
Requires: %{name} = %{version}
%description devel
All the include files and link libraries needed for development based on the
GMT system.
%description devel -l de
Alle Include-Dateien und Link-Bibliotheken für GMT-Entwickler.
%package doc
Summary: Generic Mapping Tools (Documentation)
Group: Productivity/Graphics/Visualization/Other
Summary(de): Generic Mapping Tools (Dokumentation)
Requires: %{name}
%if 0%{?sles_version} == 0
BuildArch: noarch
%endif
%description doc
Documentation of the Generic Mapping Tools including documentation and
tutorial in HTML format. The documentation is additionally available in PDF
(see ftp://ftp.soest.hawaii.edu/gmt/4/ or http://gmt.soest.hawaii.edu/).
%description doc -l de
Die englische HTML-Dokumentation der Generic Mapping Tools inklusive Tutorial.
Die Dateien sind auch im PDF-Format erhältlich (siehe dazu
ftp://ftp.soest.hawaii.edu/gmt/4/ oder http://gmt.soest.hawaii.edu/).
%package examples
Summary: Generic Mapping Tools (Examples)
Group: Productivity/Graphics/Visualization/Other
Summary(de): Generic Mapping Tools (Beispiele)
Requires: %{name}
%if 0%{?sles_version} == 0
BuildArch: noarch
%endif
%description examples
Example scripts for the Generic Mapping Tools.
%description examples -l de
Beispiel-Skripte für die Generic Mapping Tools.
%package coastlines
Summary: Generic Mapping Tools (coastlines, rivers, politcal boundaries)
Group: Productivity/Graphics/Visualization/Other
Summary(de): Generic Mapping Tools (Küstenlinien, Flüsse, politsche Grenzen)
Requires: %{name}
%if 0%{?sles_version} == 0
BuildArch: noarch
%endif
%description coastlines
GMT uses a 5-resolution database for coastlines, rivers, and
political borders. The crude, low, intermediate, full and high resolutions
are supplied with this package.
%description coastlines -l de
GMT nutzt eine Datenbank für Küstenlinien, Flüsse und politische Grenzen,
welche in 5 Auflösungen vorliegt. Die Auflösungen "crude", "low",
"intermediate", "full" and "high" sind in diesem Paket enthalten.
%prep
%setup -q -b0 -b1 -b2 -n gmt-%{version}
%build
# strip the prefix, as dirs are used relative to prefix in cmake script
%define gmt_mandir `echo %{_mandir}|sed s:^%{_prefix}/::`
%define gmt_bindir `echo %{_bindir}|sed s:^%{_prefix}/::`
%define gmt_datadir `echo %{datadir}|sed s:^%{_prefix}/::`
%define gmt_docdir `echo %{docdir}|sed s:^%{_prefix}/::`
%cmake \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DFLOCK=ON \
-DGMT_BINDIR=%{gmt_bindir} \
-DGMT_DATADIR=%{gmt_datadir} \
-DGMT_MANDIR=%{gmt_mandir} \
-DGMT_DOCDIR=%{gmt_docdir} \
-DGSHHG_ROOT=../../%{coastlineversion} \
-DDCW_ROOT=../../%{dcwversion} \
-DCMAKE_SKIP_RPATH=ON \
..
make V=1 %{?_smp_mflags}
%if %{with doc}
export LD_LIBRARY_PATH=`pwd`/src
make V=1 %{?_smp_mflags} docs_man
make V=1 %{?_smp_mflags} docs_html
%endif
%install
cd build
make %{?_smp_mflags} DESTDIR=%{buildroot} install
mkdir -p %{buildroot}%{datadir}/coast
cp -pr ../../gsh*/*.nc %{buildroot}%{datadir}/coast/
# Remove all exec bit on all files in examples
find %{buildroot}%{docdir}/examples -type f -exec chmod 0644 {} \;
# Give back exec bit on runable scripts
chmod 755 %{buildroot}%{docdir}/examples/*/*.*sh
chmod 755 %{buildroot}%{docdir}/examples/*.*sh
sed -i "s_/usr/bin/env \(perl\|bash\)_/usr/bin/\1_" \
%{buildroot}%{docdir}/examples/*/*.sh \
%{buildroot}%{docdir}/examples/*.sh \
%{buildroot}%{docdir}/supplements/*/*.sh \
%{buildroot}%{docdir}/tools/* \
%{buildroot}%{_bindir}/gmt_shell_functions.sh \
%{buildroot}%{_bindir}/gmtswitch \
%{buildroot}%{_bindir}/isogmt \
%{buildroot}%{_bindir}/gmt-config
sed -i '1i#!/usr/bin/csh' %{buildroot}%{docdir}/tools/gmt_aliases.csh
sed -i '1i#!/usr/bin/bash' %{buildroot}%{docdir}/tools/gmt_functions.sh
# this is possibly dangerous
# make sure that no changeable files are linked
fdupes -r %{buildroot}%{docdir} | perl -ne \
'chomp;if(!$_){my $f=shift @a;while($_=shift @a){system "ln -f $f $_";}}else{push @a,$_;}'
%fdupes %{buildroot}%{_includedir}/gmt
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%{_bindir}/*
%exclude %{_bindir}/gmt-config
%dir %{datadir}
%{datadir}/cpt
%{datadir}/custom
%{datadir}/localization
%{datadir}/mgd77
%{datadir}/mgg
%{datadir}/spotter
%{datadir}/supplements
%{datadir}/themes
%{datadir}/tools
%{datadir}/x2sys
%{_mandir}/man*/*
%{_libdir}/*.so.*
%{_libdir}/gmt
%license LICENSE.TXT COPYING.LESSERv3 COPYINGv3
%files devel
%{_bindir}/gmt-config
%{_includedir}/gmt*
%{_libdir}/*.so
%files doc
%doc %{docdir}/html
%exclude %{docdir}/html/.buildinfo
%exclude %{docdir}/copying
%files examples
%{datadir}/examples
%files coastlines
%dir %{datadir}/coast
%dir %{datadir}/dcw
%license %{datadir}/coast/COPYING.LESSERv3
%license %{datadir}/coast/COPYINGv3
%license %{datadir}/coast/LICENSE.TXT
%{datadir}/coast/README.TXT
%license %{datadir}/dcw/LICENSE
%{datadir}/dcw/README.md
%{datadir}/dcw/ChangeLog
%{datadir}/dcw/VERSION
%{datadir}/coast/*_*.nc
%{datadir}/dcw/dcw-*
%changelog