# [% name %]
[% IF vcs.status || distribution.cpan || unmaintained || distribution.packaging.debian %]
[% IF unmaintained %][![No maintenance intended](https://unmaintained.tech/badge.svg)](https://unmaintained.tech/) [% END -%]
[% IF vcs.status.travis %][![Build status](https://travis-ci.org/[% vcs.status.travis %].svg?branch=master)](https://travis-ci.org/[% vcs.status.travis %]) [% END -%]
[% IF vcs.status.workflow %][![Build status](https://github.com/[% vcs.github %]/workflows/[% vcs.status.workflow %]/badge.svg)](https://github.com/[% vcs.github %]/actions) [% END -%]
[% IF distribution.cpan %][![CPAN version](https://img.shields.io/cpan/v/[% distribution.cpan %])](https://metacpan.org/release/[% distribution.cpan %])[% IF vcs.github %] [![License](https://img.shields.io/cpan/l/[% distribution.cpan %])](https://github.com/[% vcs.github %]/blob/master/LICENSE)[% END %] [% END -%]
[% IF distribution.packaging.debian.package && !distribution.packaging.debian.personal %][![Debian package](https://img.shields.io/debian/v/[% distribution.packaging.debian.package %]/unstable)](https://tracker.debian.org/pkg/[% distribution.packaging.debian.package %])[% END -%]

[% END %]
[% FOREACH copr IN copyrights %]Copyright [% copr.years %]
[% copr.holder %].  [% END %]This software is distributed under
[% license.summary %].  Please see the section [License](#license) below
for more information.
[% IF unmaintained %]
## Warning

**This package is not maintained.**
[% unmaintained %]
[% END %]
## Blurb

[% blurb %]

## Description

[% description %]

## Requirements

[% requirements %]
[% IF build.autotools %]
To bootstrap from a Git checkout, or if you change the Automake files
and need to regenerate Makefile.in, you will need Automake
[% build.automake %] or later.  For bootstrap or if you change
configure.ac or any of the m4 files it includes and need to regenerate
configure or config.h.in, you will need Autoconf [% build.autoconf %] or
later.[% IF build.manpages %]  Perl is also required to generate manual
pages from a fresh Git checkout.[% END %][% IF build.bootstrap %]
[% build.bootstrap %][% END %]
[% END %][% IF build.type == 'Module::Build' %]
## Building and Installation

[% name %] uses Module::Build and can be installed using the same process
as any other Module::Build module:

```
    perl Build.PL
    ./Build
    ./Build install
```

You will have to run the last command as root unless you're installing
into a local Perl module tree in your home directory.
[% ELSIF build.type == 'ExtUtils::MakeMaker' %]
## Building and Installation

[% name %] uses ExtUtils::MakeMaker and can be installed using the same
process as any other ExtUtils::MakeMaker module:

```
    perl Makefile.PL
    make
    make install
```

You'll probably need to do the last as root unless you're installing
into a local Perl module tree in your home directory.
[% ELSIF build.type == 'Autoconf' %][% IF build.install %]
## Building and Installation

You can build and install [% name %] with the standard commands:

```
    ./configure
    make
    make install
```
[% ELSE %]
## Building

You can build [% name %] with the standard commands:

```
    ./configure
    make
```
[% END %]
If you are building from a Git clone, first run `./bootstrap` in the
source directory to generate the build files.[% IF build.install %]
`make install` will probably have to be done as root.[% END %]  Building
outside of the source directory is also supported, if you wish, by
creating an empty directory and then running configure with the correct
relative path.
[% IF build.middle %]
[% build.middle %]
[% END %][% IF build.kerberos %]
Normally, configure will use `krb5-config` to determine the flags to use
to compile with your Kerberos libraries.  To specify a particular
`krb5-config` script to use, either set the `PATH_KRB5_CONFIG` environment
variable or pass it to configure like:

```
    ./configure PATH_KRB5_CONFIG=/path/to/krb5-config
```

If `krb5-config` isn't found, configure will look for the standard
Kerberos libraries in locations already searched by your compiler.  If the
the `krb5-config` script first in your path is not the one corresponding
to the Kerberos libraries you want to use, or if your Kerberos libraries
and includes aren't in a location searched by default by your compiler,
you need to specify a different Kerberos installation root via
`--with-krb5=PATH`.  For example:

```
    ./configure --with-krb5=/usr/pubsw
```

You can also individually set the paths to the include directory and the
library directory with `--with-krb5-include` and `--with-krb5-lib`.  You
may need to do this if Autoconf can't figure out whether to use `lib`,
`lib32`, or `lib64` on your platform.

To not use `krb5-config` and force library probing even if there is a
`krb5-config` script on your path, set `PATH_KRB5_CONFIG` to a nonexistent
path:

```
    ./configure PATH_KRB5_CONFIG=/nonexistent
```

`krb5-config` is not used and library probing is always done if either
`--with-krb5-include` or `--with-krb5-lib` are given.
[% IF build.gssapi %]
GSS-API libraries are found the same way: with `krb5-config` by default if
it is found, and a `--with-gssapi=PATH` flag to specify the installation
root.  `PATH_KRB5_CONFIG` is similarly used to find `krb5-config` for the
GSS-API libraries, and `--with-gssapi-include` and `--with-gssapi-lib` can
be used to specify the exact paths, overriding any `krb5-config` results.
[% END %][% END %]
Pass `--enable-silent-rules` to configure for a quieter build (similar to
the Linux kernel).  Use `make warnings` instead of `make` to build with
full GCC compiler warnings (requires either GCC or Clang and may require a
relatively current version of the compiler).
[% IF build.reduced_depends %]
You can pass the `--enable-reduced-depends` flag to configure to try to
minimize the shared library dependencies encoded in the binaries.  This
omits from the link line all the libraries included solely because other
libraries depend on them and instead links the programs only against
libraries whose APIs are called directly.  This will only work with shared
libraries and will only work on platforms where shared libraries properly
encode their own dependencies (this includes most modern platforms such as
all Linux).  It is intended primarily for building packages for Linux
distributions to avoid encoding unnecessary shared library dependencies
that make shared library migrations more difficult.  If none of the above
made any sense to you, don't bother with this flag.
[% END %][% IF build.suffix %]
[% build.suffix %]
[% END %][% END %][% IF test.override || build.type == 'Module::Build' || build.type == 'ExtUtils::MakeMaker' || build.type == 'Autoconf' %]
## Testing
[% IF test.override %]
[% test.override %]
[% ELSE %][% IF test.prefix %]
[% test.prefix %]
[% ELSE %]
[% name %] comes with a test suite, which you can run after building with:
[% END %][% IF build.type == 'Module::Build' %]
```
    ./Build test
```

If a test fails, you can run a single test with verbose output via:

```
    ./Build test --test_files <path-to-test>
```
[% ELSIF build.type == 'ExtUtils::MakeMaker' %]
```
    make test
```

If a test fails, you can run a single test with verbose output via:

```
    prove -vb <path-to-test>
```
[% ELSIF build.type == 'Autoconf' %]
```
    make check
```

If a test fails, you can run a single test with verbose output via:

```
    tests/runtests -o <name-of-test>
```

Do this instead of running the test program directly since it will ensure
that necessary environment variables are set up.
[% END %][% IF test.suffix %]
[% test.suffix %]
[% END %][% END %][% IF test.lancaster %]
To enable tests that don't detect functionality problems but are used to
sanity-check the release, set the environment variable `RELEASE_TESTING`
to a true value.  To enable tests that may be sensitive to the local
environment or that produce a lot of false positives without uncovering
many problems, set the environment variable `AUTHOR_TESTING` to a true
value.
[% END %][% END %]
[% FOREACH section IN sections %]## [% section.title %]

[% section.body %]

[% END %]## Support[% IF unmaintained %]

This package is not currently maintained and will not get further releases
or bug fixes.  I do not recommend using it unless you're willing to take
over maintenance.

The [[% name %] web page]([% support.web %]) has the last released
version, its documentation, and pointers to any additional resources.[% IF support.extra %]

[% support.extra %]
[% END %][% ELSE %]

The [[% name %] web page]([% support.web %]) will always have the current
version of this package, the current documentation, and pointers to any
additional resources.
[% IF support.listname %]
New [% name %] releases are announced on the [% support.listname %]
mailing list.  To subscribe or see the list archives, go to the
[[% support.listname %] list information page]([% support.listurl %]).
[% END %][% IF support.extra %]
[% support.extra %]
[% END %]
[% IF support.github %]
For bug tracking, use the [issue tracker on
GitHub](https://github.com/[% support.github %]/issues).[% ELSE %]
I welcome bug reports and patches for this package at
[% support.email %].[% END %]  Please be aware that I tend to be extremely
busy and work projects often take priority.  I'll save your report and get
to it as soon as I can, but it may take me a couple of months.[% END %]

## Source Repository

[% name %] [% IF unmaintained %]was[% ELSE %]is[% END %] maintained using
[% vcs.type %].  You can access the current source [% IF vcs.github %]on
[GitHub](https://github.com/[% vcs.github %]) or [% END %]by cloning the
repository at:

[% vcs.url %]

or [view the repository on the web]([% vcs.browse %]).
[% IF !unmaintained %][% IF vcs.github %]
The eyrie.org repository is the canonical one, maintained by the
author, but using GitHub is probably more convenient for most purposes.
Pull requests are gratefully reviewed and normally accepted.
[% ELSIF vcs.type == 'Git' %]
When contributing modifications, patches (possibly generated by
`git-format-patch`) are preferred to Git pull requests.
[% END %][% END %]
## License

The [% name %] package as a whole is covered by the following copyright
statement and license:
[% FOREACH copr IN copyrights %]
> Copyright [% copr.years %]
>     [% copr.holder %]
>[% END %]
[% indent(license.text, 1, '>') %][% IF license.notices %]
>
[% indent(license.notices, 1, '>') %][% END %]

Some files in this distribution are individually released under different
licenses, all of which are compatible with the above general package
license but which may require preservation of additional notices.  All
required notices, and detailed information about the licensing of each
file, are recorded in the LICENSE file.

Files covered by a license with an assigned SPDX License Identifier
include SPDX-License-Identifier tags to enable automated processing of
license information.  See https://spdx.org/licenses/ for more information.

For any copyright range specified by files in this package as YYYY-ZZZZ,
the range specifies every single year in that closed interval.
