diff options
author | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-02-25 19:22:25 +0000 |
commit | ad547a6b5986815fda458221149728d9d9ab1d87 (patch) | |
tree | 16296910eb3eca724371474ea9aea3994dc69614 /Build/source/texk/gregorio/gregorio-src/install-gtex.sh | |
parent | 947b43de3dd21d58ccc2ffadefc4441ea1c2a813 (diff) |
restore Build,TODO from r57911
git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/gregorio/gregorio-src/install-gtex.sh')
-rwxr-xr-x | Build/source/texk/gregorio/gregorio-src/install-gtex.sh | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/Build/source/texk/gregorio/gregorio-src/install-gtex.sh b/Build/source/texk/gregorio/gregorio-src/install-gtex.sh new file mode 100755 index 00000000000..29c910edc35 --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/install-gtex.sh @@ -0,0 +1,288 @@ +#!/usr/bin/env bash + +# Copyright (C) 2015-2019 The Gregorio Project (see CONTRIBUTORS.md) +# +# This file is part of Gregorio. +# +# Gregorio is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Gregorio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Gregorio. If not, see <http://www.gnu.org/licenses/>. + +# This script installs the GregorioTeX portion of Gregorio. +# +# There are four ways to use this script: +# +# install-gtex.sh var:{tex-variable} +# +# Installs GregorioTeX into the directory named by the given {tex-variable}. +# If the DESTDIR environment variable is set, it will be prepended. +# +# Example: install-gtex.sh var:TEXMFLOCAL +# - Installs GregorioTeX into the system-wide TEXMF directory +# +# Example: install-gtex.sh var:TEXMFHOME +# - Installs GregorioTeX into the user's personal TEXMF directory +# +# install-gtex.sh system|user +# +# Installs GregorioTeX into one of two common install locations. If the +# DESTDIR environment variable is set, it will be prepended. +# +# Example: install-gtex.sh system +# - Installs GregorioTeX into the system-wide TEXMF directory; an alias for +# install-gtex.sh var:TEXMFLOCAL +# +# Example: install-gtex.sh user +# - Installs GregorioTeX into the user's personal TEXMF directory; an alias +# for install-gtex.sh var:TEXMFHOME +# +# install-gtex.sh dir:{directory} +# +# Installs GregorioTeX into the {directory} directory. +# +# Example: install-gtex.sh dir:/tmp/gtex +# - Installs GregorioTeX into /tmp/gtex +# +# install-gtex.sh tds +# +# Creates a TDS-ready archive named gregoriotex.tds.zip +# +# In special situations, you may want to skip some parts of the installation. +# To do this, set the SKIP environment variable to a comma-separated list of +# the parts you want don't want installed: tex, latex, fonts, docs, examples, +# and/or font-sources +# +# Setting the GENERATE_UNINSTALL environment variable to "false" will bypass +# uninstall script generation and any existing uninstall script will be left +# alone. + +VERSION=`head -1 .gregorio-version` +FILEVERSION=`echo $VERSION | sed 's/\./_/g'` + +TEXFILES=(tex/gregoriotex*.tex tex/gsp-default.tex tex/gregoriotex*.lua + tex/*.dat) +LATEXFILES=(tex/gregorio*.sty) +TTFFILES=(fonts/*.ttf) +DOCFILES=(doc/*.tex doc/*.lua doc/*.gabc doc/*.pdf doc/doc_README.md) +EXAMPLEFILES=(examples/FactusEst.gabc examples/PopulusSion.gabc + examples/main-lualatex.tex examples/debugging.tex) +FONTSRCFILES=(greextra.sfd squarize.py convertsfdtottf.py gregall.sfd + gresgmodern.sfd fonts_README.md) +FONTSRCFILES=("${FONTSRCFILES[@]/#/fonts/}") +FONTSRCFILES+=(fonts/*-base.sfd) +# Files which have been eliminated, or whose installation location have been +# changed. We will remove existing versions of these files in the target texmf +# tree before installing. +LEGACYFILES=(tex/luatex/gregoriotex/gregoriotex.sty + tex/luatex/gregoriotex/gregoriosyms.sty + tex/luatex/gregoriotex/gregoriotex-ictus.tex + fonts/truetype/public/gregoriotex/parmesan.ttf + fonts/truetype/public/gregoriotex/parmesan-op.ttf + fonts/source/gregoriotex/parmesan-base.sfd + fonts/truetype/public/gregoriotex/gresym.ttf + fonts/truetype/public/gregoriotex/gregorio.ttf + fonts/truetype/public/gregoriotex/gregorio-op.ttf + fonts/source/gregoriotex/gregorio-base.sfd + fonts/truetype/public/gregoriotex/granapadano.ttf + fonts/truetype/public/gregoriotex/granapadano-op.ttf + fonts/source/gregoriotex/granapadano-base.sfd) + +NAME=${NAME:-gregoriotex} +FORMAT=${FORMAT:-luatex} +LATEXFORMAT=${LATEXFORMAT:-lualatex} +TEXHASH=${TEXHASH:-texhash} +KPSEWHICH=${KPSEWHICH:-kpsewhich} +CP=${CP:-cp} +RM=${RM:-rm} + +GENERATE_UNINSTALL=${GENERATE_UNINSTALL:-true} +AUTO_UNINSTALL=${AUTO_UNINSTALL:-false} +REMOVE_OLD_FILES=${REMOVE_OLD_FILES:-true} + +arg="$1" +case "$arg" in + system) + arg='var:TEXMFLOCAL' + ;; + user) + arg='var:TEXMFHOME' + ;; +esac + +case "$arg" in + "") + ;; + tds) + TDS_ZIP="${NAME}.tds.zip" + TEXMFROOT=./tmp-texmf + ;; + var:*) + TEXMFROOT=`${KPSEWHICH} -expand-path "\$${arg#var:}"` + if [ "$TEXMFROOT" = "" ] + then + TEXMFROOT=`${KPSEWHICH} -var-value "${arg#var:}"` + fi + if [ "$TEXMFROOT" = "" ] + then + echo "Invalid TeX variable: '${arg#var:}'" + echo + else + sep=`${KPSEWHICH} -expand-path "{.,.}"` + sep="${sep#.}" + sep="${sep%.}" + TEXMFROOT="${DESTDIR}${TEXMFROOT/${sep}*/}" + fi + ;; + dir:*) + TEXMFROOT="${arg#dir:}" + ;; + *) + echo "Invalid argument: '$arg'" + echo + ;; +esac + +if [ "$TEXMFROOT" = "" ] +then + echo "Usage: $0 var:{tex-variable}" + echo " $0 dir:{directory}" + echo " $0 system|user|tds" + echo + echo "Please read the documentation in the script for additional options" + exit 1 +fi + +UNINSTALL_SCRIPT_DIR="scripts/gregoriotex" +UNINSTALL_SCRIPT_FILE="uninstall-gtex.sh" +UNINSTALL_SCRIPT="${TEXMFROOT}/${UNINSTALL_SCRIPT_DIR}/${UNINSTALL_SCRIPT_FILE}" + +function die { + echo 'Failed.' + exit 1 +} + +function install_to { + dir="$1" + shift + mkdir -p "${TEXMFROOT}/$dir" || die + $CP "$@" "${TEXMFROOT}/$dir" || die + + if ${GENERATE_UNINSTALL} + then + for name in "$@" + do + echo '$RM'" $dir/$(basename $name)" >> "${UNINSTALL_SCRIPT}" + done + echo "rmdir -p $dir 2> /dev/null || true" >> "${UNINSTALL_SCRIPT}" + echo >> "${UNINSTALL_SCRIPT}" + fi +} + +function find_and_remove { + for files in "$@"; do + target="${TEXMFROOT}/${files}" +# echo "Looking for $target" + if [ -e "$target" ]; then +# echo "Removing $target" + $RM -f "$target" + fi + done +} + +function not_installing { + echo "install-gtex.sh: not installing $@" +} + +if ${GENERATE_UNINSTALL} +then + if [ -e "${UNINSTALL_SCRIPT}" ] + then + echo "${UNINSTALL_SCRIPT} exists." + echo "This suggests that some version of GregorioTeX is already installed." + if ${AUTO_UNINSTALL} + then + echo "AUTO_UNINSTALL=true, so uninstalling the old version of GregorioTeX." + bash "${UNINSTALL_SCRIPT}" + else + echo "Re-run this script setting the environment variable AUTO_UNINSTALL=true" + echo "to automatically uninstall the other version before installing the new one," + echo "or clean up the old installation files manually." + exit 1 + fi + fi + + mkdir -p "${TEXMFROOT}/${UNINSTALL_SCRIPT_DIR}" || die + echo '# This script uninstalls GregorioTeX.' > "${UNINSTALL_SCRIPT}" + echo '# Run it with "bash /path/to/uninstall-gtex.sh".' >> "${UNINSTALL_SCRIPT}" + echo >> "${UNINSTALL_SCRIPT}" + echo 'RM=${RM:-rm}' >> "${UNINSTALL_SCRIPT}" + echo 'TEXHASH=${TEXHASH:-texhash}' >> "${UNINSTALL_SCRIPT}" + echo >> "${UNINSTALL_SCRIPT}" + echo 'cd $(dirname ${BASH_SOURCE[0]})/../..' >> "${UNINSTALL_SCRIPT}" + echo >> "${UNINSTALL_SCRIPT}" +elif [ "$arg" != 'tds' ] +then + echo "Not generating "${UNINSTALL_SCRIPT}"" +fi + +if ${REMOVE_OLD_FILES} +then + echo "Removing old files." + find_and_remove "${LEGACYFILES[@]}" +fi + +declare -A skip_install +if [ -n "$SKIP" ] +then + IFS=, read -r -a skip <<< "$SKIP" + for skipped in "${skip[@]}" + do + # trim spaces + skipped="${skipped#"${skipped%%[![:space:]]*}"}" + skipped="${skipped%"${skipped##*[![:space:]]}"}" + skip_install[$skipped]=true + done +fi + +echo "Installing in '${TEXMFROOT}'." +${skip_install[tex]:-false} && not_installing tex files || + install_to "tex/${FORMAT}/${NAME}" "${TEXFILES[@]}" +${skip_install[latex]:-false} && not_installing latex files || + install_to "tex/${LATEXFORMAT}/${NAME}" "${LATEXFILES[@]}" +${skip_install[fonts]:-false} && not_installing fonts || + install_to "fonts/truetype/public/${NAME}" "${TTFFILES[@]}" +${skip_install[docs]:-false} && not_installing docs || + install_to "doc/${FORMAT}/${NAME}" "${DOCFILES[@]}" +${skip_install[examples]:-false} && not_installing examples || + install_to "doc/${FORMAT}/${NAME}/examples" "${EXAMPLEFILES[@]}" +${skip_install[font-sources]:-false} && not_installing font sources || + install_to "fonts/source/${NAME}" "${FONTSRCFILES[@]}" + +if ${GENERATE_UNINSTALL} +then + echo '$RM'" ${UNINSTALL_SCRIPT_DIR}/${UNINSTALL_SCRIPT_FILE}" >> "${UNINSTALL_SCRIPT}" + echo "rmdir -p ${UNINSTALL_SCRIPT_DIR} 2> /dev/null || true" >> "${UNINSTALL_SCRIPT}" + echo >> "${UNINSTALL_SCRIPT}" + + echo '${TEXHASH}' >> "${UNINSTALL_SCRIPT}" +fi + +if [ "$arg" = 'tds' ] +then + echo "Making TDS-ready archive ${TDS_ZIP}." + rm -f ${TDS_ZIP} + (rm ${TEXMFROOT}/fonts/source/gregoriotex/gregorio-base.sfd ${TEXMFROOT}/fonts/source/gregoriotex/granapadano-base.sfd ) || die + (cd ${TEXMFROOT} && zip -9 ../${TDS_ZIP} -q -r .) || die + rm -r ${TEXMFROOT} || die +else + ${TEXHASH} || die +fi |