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
openSUSE Build Service is sponsored by