New Package: perl-fth (#21879)
This commit is contained in:
parent
e4e4bf75ca
commit
de3c0e62d0
10
var/spack/repos/builtin/packages/perl-fth/fth-shebang.patch
Normal file
10
var/spack/repos/builtin/packages/perl-fth/fth-shebang.patch
Normal file
@ -0,0 +1,10 @@
|
||||
diff --git a/bin/fth.pl b/bin/fth.pl
|
||||
--- a/bin/fth.pl
|
||||
+++ b/bin/fth.pl
|
||||
@@ -1,6 +1,3 @@
|
||||
-#!/bin/ksh
|
||||
-eval 'exec perl -x -S $0 ${1+"$@"}'
|
||||
- if $running_under_some_shell;
|
||||
#!/usr/bin/perl -w
|
||||
# -*- Mode: cperl -*-
|
||||
#|########################################################################
|
10
var/spack/repos/builtin/packages/perl-fth/fth-shebang2.patch
Normal file
10
var/spack/repos/builtin/packages/perl-fth/fth-shebang2.patch
Normal file
@ -0,0 +1,10 @@
|
||||
diff --git a/bin/initmak.pl b/bin/initmak.pl
|
||||
--- a/bin/initmak.pl
|
||||
+++ b/bin/initmak.pl
|
||||
@@ -1,6 +1,3 @@
|
||||
-#!/bin/ksh
|
||||
-eval 'exec perl -x -S $0 ${1+"$@"}'
|
||||
- if $running_under_some_shell;
|
||||
#!/usr/bin/perl
|
||||
# -*- Mode: cperl -*-
|
||||
############################################################################
|
120
var/spack/repos/builtin/packages/perl-fth/package.py
Normal file
120
var/spack/repos/builtin/packages/perl-fth/package.py
Normal file
@ -0,0 +1,120 @@
|
||||
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import os
|
||||
|
||||
from spack import *
|
||||
|
||||
|
||||
class PerlFth(Package):
|
||||
"""Ftagshtml is a Fortran (and simple C) to HTML browsing,
|
||||
resolves static interface overload.
|
||||
It can handle some LaTeX comments inside the source files.
|
||||
It only needs to be put somewhere into your disk since it uses Perl.
|
||||
It also provides javatex2.pl initmak.pl getin.pl tex3ht.pl and view.pl:
|
||||
(1) javatex2 complements latex2html to make nice browsing,
|
||||
(2) initmak makes fortran 90 dependencies, either full deps or partial
|
||||
(when interface is not modified it is silly to recompile everything)
|
||||
(3) getin is an advanced search tool for Fortran variables and calls,
|
||||
(4) view.pl is used for CGI search when source is on http server.
|
||||
"""
|
||||
|
||||
homepage = "https://sourceforge.net/projects/ftagshtml/"
|
||||
url = "https://downloads.sourceforge.net/project/ftagshtml/ftagshtml-0.524.tgz"
|
||||
|
||||
maintainers = ['cessenat']
|
||||
|
||||
version('0.525', sha256='378116febeb20f4b0c1e298de90305e8494335949d853c7e390d1b6386c1326a')
|
||||
version('0.524', sha256='2f378e969d1dd267985342f7fb1b3a0b9fd73334627cbc7ab17d61717bcd3c29')
|
||||
version('0.523', sha256='d5d3fbd3caca30eee9de45baa46612841d55b2960db8e11411af6db76cf214ad')
|
||||
version('0.522', sha256='acb73eb2c05b1ed7b75f86fbd9656c00158519b3d11d89a082117004deb0fb9e')
|
||||
version('0.521', sha256='f980c9cc1ce644340a9e9630ef252f92bc89a411ea0a661fcb80cdae07f0731c')
|
||||
version('0.520', sha256='0ac509a7416d67f5ddc4ad9f629cb0443e1ce515cf9eb92f4272eb6b545a4c50')
|
||||
version('0.519', sha256='7a440ca08a18edbc57a4a5da7c90c98551ae1adaa303c9f984e5712e1cd54ffb')
|
||||
version('0.518', sha256='7aed7c831270bb1935d4ccd090ef1360ec9446dd773c10350645985047f8879b')
|
||||
version('0.517', sha256='e24488a7edbfa764060f007693329d5ee3154e1ce49a627ec109c41a9d7abcbe')
|
||||
|
||||
variant('hevea', default=False,
|
||||
description="Use hevea when inputting LaTeX files (fth.pl -hevea)")
|
||||
variant('pdflatex', default=False,
|
||||
description="Use pdflatex to make a LaTeX index file (fth.pl -latexindex)")
|
||||
|
||||
depends_on('perl', type='run')
|
||||
depends_on('perl-cgi', type='run')
|
||||
# Actual dependency was on etags only, but no longer in recent releases:
|
||||
depends_on('emacs', type='run', when='@:0.520')
|
||||
# For fth.pl -hevea option
|
||||
depends_on('hevea', when='+hevea', type='run')
|
||||
# Actual dependency is on pdflatex only for fth.pl -latexindex option
|
||||
depends_on('texlive', when='+pdflatex', type='run')
|
||||
# initmak.pl uses md5sum provided by coreutils
|
||||
depends_on('coreutils', type='run')
|
||||
depends_on('dos2unix', type='build')
|
||||
|
||||
# Patches to remove the ancient ksh shebang for fth.pl and initmak.pl.
|
||||
# git diff a/bin/fth.pl b/bin/fth.pl
|
||||
patch('fth-shebang.patch', when='@0.517:0.522', sha256='3e82d34c8ae1709e5480fac87db387c1c2e219d7b7d596c8a9d62f0da2439ab3')
|
||||
patch('fth-shebang2.patch', when='@0.517:0.522', sha256='839be7c0efad752ae341379c81ee1df4a3a81f608f802998c6b4ebc4bae8e167')
|
||||
|
||||
def _make_executable(self, name):
|
||||
return Executable(join_path(self.prefix.bin, name + '.pl'))
|
||||
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
# https://spack-tutorial.readthedocs.io/en/latest/tutorial_advanced_packaging.html
|
||||
checks = ['fth', 'getin', 'view', 'javatex2', 'tex3ht', 'initmak']
|
||||
for name in checks:
|
||||
setattr(module, name, self._make_executable(name))
|
||||
|
||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
env.set('JAVATEX_DIR', self.prefix)
|
||||
env.set('FTAGSHTML_DIR', self.prefix)
|
||||
env.set('FTAGSHTML_DOC', join_path(self.prefix, 'doc'))
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
# https://github.com/spack/spack/discussions/13926
|
||||
# Let us set the adequate environment when loading perl-fth
|
||||
env.set('JAVATEX_DIR', self.prefix)
|
||||
env.set('FTAGSHTML_DIR', self.prefix)
|
||||
env.set('FTAGSHTML_DOC', join_path(self.prefix, 'doc'))
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# Remove the perl shebang with the local perl
|
||||
# (since ftagshtml has no Makefile.PL to do it).
|
||||
checks = ['fth', 'getin', 'view', 'javatex2', 'tex3ht', 'initmak']
|
||||
# mstr = '#!' + join_path(spec['perl'].prefix.bin, 'perl')
|
||||
mstr = '#!' + spec['perl'].command.path
|
||||
with working_dir('bin'):
|
||||
for exe in checks:
|
||||
fic = exe + '.pl'
|
||||
if os.path.exists(fic):
|
||||
dos2unix = which('dos2unix')
|
||||
dos2unix(fic)
|
||||
fthfile = FileFilter(fic)
|
||||
fthfile.filter('#!/usr/bin/perl', mstr, backup=False)
|
||||
fthfile.filter('#!/usr/bin/env perl', mstr, backup=False)
|
||||
|
||||
# Adds a Makefile with an rsync rule
|
||||
makefile_inc = [
|
||||
'RSYNC_OPTS = -avuzL',
|
||||
'RSYNC = rsync',
|
||||
]
|
||||
makefile_inc.append('install:')
|
||||
makefile_inc.append('\t$(RSYNC) $(RSYNC_OPTS) . %s' % prefix)
|
||||
makefile_inc.append('')
|
||||
with working_dir('.'):
|
||||
with open('Makefile', 'a') as fh:
|
||||
fh.write('\n'.join(makefile_inc))
|
||||
|
||||
# Remove obsolete ftagshtml files, if they exist:
|
||||
with working_dir('bin'):
|
||||
if os.path.exists("ftagshtml"):
|
||||
os.remove("ftagshtml")
|
||||
if os.path.exists("tata.pl"):
|
||||
os.remove("tata.pl")
|
||||
if os.path.exists("truc.pl"):
|
||||
os.remove("truc.pl")
|
||||
|
||||
# Install the full directory structure
|
||||
install_tree('.', prefix)
|
Loading…
Reference in New Issue
Block a user