# Map interpreter to installation placement (and optionally
# the dependency relation required to obtain the interpreter)
#
# Entries in this file are generally used for versioned interpreters,
# but can also be used for unversioned ones (when there is no
# definition in scripts/interpreters).
# syntax:
#   <interpreter> => <path>, <regex>, <dependency-template>, <version-list>[, <dependency-relation>]
#
# <interpreter> is the "unversioned base name" of the interpreter.  It is computed by
# stripping any trailing dashes ("-"), digits ([0-9]) and dots (".").  As an example,
# the unversioned base name for:
#   python2.6 is python
#   guile-1.6 is guile
#
# NB: If the <interpreter> is not listed in scripts/interpreters, the unversioned
# ones are also looked up in this data file.  For cases where this is undesired,
# please use @SKIP_UNVERSIONED@ (as described below).
#
# <path> is the path in which the interpreter is installed (usually /usr/bin).
#
# <regex> is a regex for matching the full name of the interpreter *and* extracting
# the version of it.  It should have exactly one capture group, which captures the
# version.  If the regex does not match the interpreter or does not capture a version
# in the <version-list>, the entry is assumed not to apply to this interpreter.
# NB: The regex will be anchored and must match the /entire/ interpreter with version.
#   (e.g. guile-([\d\.]*) is matched as m/^guile-([\d\.]*)$/)
#
# <dependency-template> is a dependency template that will generate the dependency
# relation from a version.  The token "$1" is replaced with the version of the
# interpreter.  The template cannot contain commas (and therefore can only contain
# predicates or "OR" relations).
#
# <version-list> is a space-separated list of known interpreter versions.  It is used
# both to generate the dependency relation for uses of the unversioned interpreter and
# (together with <regex>) for ensuring the entry applies to the interpreter.
#
# NB: <dependency-relation> can be one of the following magic values:
#   * @SKIP_UNVERSIONED@
#     - Do not use this entry for unversioned interpreters.  The common usage case
#       for this is when the interpreter is also listed in scripts/interpreters.
#
# When used on a versioned interpreter, Lintian will check for a dependency satisfying
# the dependency generated by applying the version to the <dependency-template>.
# Example:
#   Interpreter pike7.6 and template "pike$1 | pike$1-core" will make Lintian check
#   for the dependency:
#      "pike7.6 | pike7.6-core"
#
# When used on an unversioned interpreter, Lintian will check for a dependency satisfying
# ANY of the versioned dependencies that can be generated from applying the versions from
# <version-list> to <dependency-template>.  Furthermore, also check for the dependency on
# the <dependency-relation> (assuming it is not empty or one of the magic values).
# Example:
#   Interpreter guile, template guile-$1, version list 1.6 1.8 and the dependency relation
#   guile will make Lintian check for the dependency:
#       "guile | guile-1.6 | guile-1.8"
#
# Manually maintained table - please keep it sorted (by key)!


guile   => /usr/bin, guile-([\d.]+), guile-$1:any, 2.2 3.0, guile:any
jruby   => /usr/bin, jruby([\d.]+), jruby$1:any, 1.0 1.1 1.2, jruby:any
lua     => /usr/bin, lua([\d.]+), lua$1:any, 40 50 5.1 5.2 5.3 5.4, lua:any
octave  => /usr/bin, octave([\d.]+), octave$1:any, 3.0 3.2, octave:any
pike    => /usr/bin, pike([\d.]+), pike$1:any | pike$1-core:any, 7.6 7.8
python3 => /usr/bin, python3([\d.]+), python3$1:any | python3$1-minimal:any, 3.4 3.5 3.7 3.8, @SKIP_UNVERSIONED@
ruby    => /usr/bin, ruby([\d.]+), ruby$1:any, 1.8 1.9, @SKIP_UNVERSIONED@
runghc  => /usr/bin, runghc(\d+), ghc$1:any, 6, ghc:any
scsh    => /usr/bin, scsh-([\d.]+), scsh-$1:any, 0.6, scsh:any
tclsh   => /usr/bin, tclsh([\d.]+), tcl$1:any, 8.3 8.4 8.5 8.6, tclsh:any | tcl:any
wish    => /usr/bin, wish([\d.]+), tk$1:any, 8.3 8.4 8.5 8.6, wish:any | tk:any

