You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.8 KiB
Bash

#!/usr/bin/env bash
#
# Copyright (c) 1991-2024 by the GMT Team (https://www.generic-mapping-tools.org/team.html)
# See LICENSE.TXT file for copying and redistribution conditions.
#
# This script removes the entire GMT installation. If the bin, share
# include, and lib dirs become empty after removing the GMT files then
# we also remove those parent directories since presumably under build dir.
#
# Run this script on the command line with:
# $(gmt --show-sharedir)/tools/gmt_uninstall.sh
#
# It expects the GMT executable to be in the search path and that
# you have permission to perform the changes in the bin directory.
# check for bash
[ -z "$BASH_VERSION" ] && return
if ! [ -x "$(command -v gmt)" ]; then
echo 'Error: gmt is not found in your search PATH.' >&2
exit 1
fi
inc=$(gmt-config --includedir)
share=$(gmt --show-sharedir)
bin=$(gmt --show-bindir)
lib=$(gmt --show-plugindir)
cwd=$(pwd)
gmt_modules=$(gmt --show-classic)
compat_modules="minmax gmtstitch gmtdp grdreformat ps2raster originator"
# 2. Remove include directory
cd $inc
cd ..
here=$(pwd)
printf "Remove: %s\n" $inc
rm -rf $inc
if find "$here" -mindepth 1 -print -quit | grep -q .; then
# include not empty, leave as is
printf "Ignore: %s\n" $here
else
printf "Remove: %s\n" $here
rm -rf $here
fi
# 3. Remove share directory
for dir in cpt custom doc localization man mgd77 mgg spotter tools themes x2sys; do
printf "Remove: %s/%s\n" $share $dir
rm -rf $share/$dir
done
rm -f $share/VERSION
if find "$share" -mindepth 1 -print -quit | grep -q .; then
# share not empty, leave as is
printf "Ignore: %s\n" $share
else
printf "Remove: %s\n" $share
rm -rf $share
fi
# 4. Remove executables [and any links to them]
cd $bin
for module in ${gmt_modules} ${compat_modules}; do
if [ -h $module ]; then
printf "Remove: Link %14s -> gmt\n" $module
rm -f $module
fi
done
# Remove main executable
printf "Remove: gmt\n"
rm -f gmt
# Remove scripts
printf "Remove: gmt scripts\n"
rm -rf gmt-config gmt_shell_functions.sh gmtswitch isogmt gmt.dSYM
if find "$bin" -mindepth 1 -print -quit | grep -q .; then
# bin not empty, leave as is
printf "Ignore: %s\n" $bin
else
printf "Remove: %s\n" $bin
rm -rf $bin
fi
# 5. Lastly remove libs and plugin directory
cd $lib
cd ../..
here=$(pwd)
if [ -d gmt ]; then # plugin directory inside a gmt directory; delete gmt instead
printf "Remove: %s\n" $here
rm -rf gmt
else # Just delete plugin directory
printf "Remove: %s\n" $lib
rm -rf $lib
fi
# Check for GMT libs here
printf "Remove: libgmt.*\n"
printf "Remove: libpostscriptlight.*\n"
rm -rf libgmt.* libpostscriptlight.*
if find "$here" -mindepth 1 -print -quit | grep -q .; then
# lib dir not empty, leave as is
printf "Ignore: %s\n" $here
else
printf "Remove: %s\n" $here
rm -rf $here
fi
# Back to where we were
cd $cwd