<commit_before># Copyright (C) 2008-2009, Parrot Foundation.
# $Id$

=head1 PDD 30: Installation

=head2 Abstract

This PDD outlines Parrot's installation system and support. Parrot's core
installation system will provide support for binary packages, a working C<make
install> target, compiled installables, and FHS compliant search paths for the
installables.

=head2 Version

$Revision$

=head2 Synopsis

Parrot installation process (from the parrot source directory):

  perl Configure.pl --prefix=/usr
  make
  make test
  make install


Language installation process (from the language source directory):

  perl Configure.pl --parrot-config=/path/to/parrot_config
  make
  make test
  make install

=head2 Description

Parrot uses Filesystem Hierarchy Standard (FHS) compliant install directories
by default. Each install location is configurable with options passed to the
configure script.

=over

=item F</usr/bin/parrot>

The main Parrot executable.

=item F</usr/lib/parrot/E<lt>versionE<gt>/library/>

Parrot runtime libraries, corresponds to F<runtime/parrot/library/> in the
repository.

=item F</usr/lib/parrot/E<lt>versionE<gt>/include/>

Parrot runtime include files (not C include files), corresponds to
F<runtime/parrot/include/> in the repository.

=item F</usr/lib/parrot/E<lt>versionE<gt>/dynext/>

Parrot dynamic extension files (for C<loadlib>), corresponds to
F<runtime/parrot/dynext/> in the repository.

=item F</usr/lib/parrot/E<lt>versionE<gt>/languages/>

Parrot language modules. Languages are loaded with C<load_language
'abc'>, which loads F</usr/lib/parrot/languages/abc/abc.pbc> in an
installed Parrot.

On the commandline, a language is executed as:

  $ abc hello.bc

Where F<abc> is a symlink to the F<parrot> executable. On platforms that don't
have symlinks, F<abc> may be a copy of the F<parrot> executable. On general
principles, languages should not install themselves with the same name as
their "real" counterpart, but should provide a build option to do so (so, the
default installed executable for Python on Parrot should be F<pynie> or
F<parrot-python> but not F<python>).

=item F</usr/lib/parrot/E<lt>versionE<gt>/languages/*>

The languages directories may have subdirectories, including F<library> for
their own set of libraries, and F<dynext> for dynamic pmcs and ops, and
F<include> for PIR or PASM includes.

It is recommended that languages follow a standard pattern in installing their
libraries so a bytecode compiled version of a module in the C<mylang> HLL
named C<['Foo';'Bar']> is stored in
F<usr/lib/parrot/E<lt>versionE<gt>/languages/E<lt>mylangE<gt>/library/Foo/Bar.pbc>

=item F</usr/lib/parrot/E<lt>versionE<gt>/tools/>

Parrot tools that don't belong in the bin/ directory and don't belong in the
runtime, corresponds to F<tools/dev/> and/or F<tools/build> in the
repository. Perl modules used by the tools are installed in
F</usr/lib/parrot/E<lt>versionE<gt>/tools/lib/>.

=item F</usr/share/doc/parrot/E<lt>versionE<gt>/>

Parrot documentation files, generally raw Pod, but possibly also
formatted HTML. Has subdirectories for each format of documentation:
F<pod/>, F<html/>, etc.

=back

=head2 Dependencies

Building core Parrot depends on Perl (including perldoc, which may be a
separate package), libgdm and libreadline.

Building a language depends on a series of Parrot build tools, installed in
F</usr/lib/parrot/E<lt>version/tools>. These tools will generally not be
included in the default C<parrot> package on most systems, languages will
require a C<parrot-dev> package to be installed before they can be built.
<commit_msg>Applying patch submitted by wayland++ in https://trac.parrot.org/parrot/ticket/788 (plus a few other small POD-formatting improvements).<commit_after># Copyright (C) 2008-2009, Parrot Foundation.
# $Id$

=head1 PDD 30: Installation

=head2 Abstract

This PDD outlines Parrot's installation system and support. Parrot's core
installation system will provide support for binary packages, a working C<make
install> target, compiled installables, and FHS compliant search paths for the
installables.

=head2 Version

$Revision$

=head2 Synopsis

Parrot installation process (from the parrot source directory):

  perl Configure.pl --prefix=/usr
  make
  make test
  make install


Language installation process (from the language source directory):

  perl Configure.pl --parrot-config=/path/to/parrot_config
  make
  make test
  make install

=head2 Description

Parrot uses Filesystem Hierarchy Standard (FHS) compliant install directories
by default. Each install location is configurable with options passed to the
configure script.

=over

=item F</usr/bin/parrot>

The main Parrot executable.

=item F</usr/lib/parrot/E<lt>versionE<gt>/library/>

Parrot runtime libraries, corresponds to F<runtime/parrot/library/> in the
repository.

=item F</usr/lib/parrot/E<lt>versionE<gt>/include/>

Parrot runtime include files (not C include files), corresponds to
F<runtime/parrot/include/> in the repository.

=item F</usr/lib/parrot/E<lt>versionE<gt>/dynext/>

Parrot dynamic extension files (for C<loadlib>), corresponds to
F<runtime/parrot/dynext/> in the repository.

=item F</usr/lib/parrot/E<lt>versionE<gt>/languages/>

Parrot language modules. Languages are loaded with C<load_language
'abc'>, which loads F</usr/lib/parrot/languages/abc/abc.pbc> in an
installed Parrot.

On the commandline, a language is executed as:

  $ abc hello.bc

Where F<abc> is a symlink to the F<parrot> executable. On platforms that don't
have symlinks, F<abc> may be a copy of the F<parrot> executable. On general
principles, languages should not install themselves with the same name as
their "real" counterpart, but should provide a build option to do so (so, the
default installed executable for Python on Parrot should be F<pynie> or
F<parrot-python> but not F<python>).

=item F</usr/lib/parrot/E<lt>versionE<gt>/languages/*>

The languages directories may have subdirectories, including F<library> for
their own set of libraries, and F<dynext> for dynamic pmcs and ops, and
F<include> for PIR or PASM includes.

It is recommended that languages follow a standard pattern in installing their
libraries so a bytecode compiled version of a module in the C<mylang> HLL
named C<['Foo';'Bar']> is stored in
F<usr/lib/parrot/E<lt>versionE<gt>/languages/E<lt>mylangE<gt>/library/Foo/Bar.pbc>

=item F</usr/lib/parrot/E<lt>versionE<gt>/tools/>

Parrot tools that don't belong in the bin/ directory and don't belong in the
runtime, corresponds to F<tools/dev/> and/or F<tools/build> in the
repository. Perl modules used by the tools are installed in
F</usr/lib/parrot/E<lt>versionE<gt>/tools/lib/>.

=item F</usr/share/doc/parrot/E<lt>versionE<gt>/>

Parrot documentation files, generally raw Pod, but possibly also
formatted HTML. Has subdirectories for each format of documentation:
F<pod/>, F<html/>, etc.

=item F</usr/include/parrot/E<lt>versionE<gt>/>

C header files for Parrot.  

=item F</usr/src/parrot/E<lt>versionE<gt>/>

PMC source files needed for building dynamic PMCs.  

=back

=head2 Dependencies

Building core Parrot depends on Perl (including F<perldoc>, which may be a
separate package), F<libgdm> and F<libreadline>.

Building a language depends on a series of Parrot build tools, installed in
F</usr/lib/parrot/E<lt>version/tools>. These tools will generally not be
included in the default C<parrot> package on most systems, languages will
require a C<parrot-dev> package to be installed before they can be built.

{'fraction_non_alphanumeric': 0.09414893617021276, 'fraction_numerical': 0.004654255319148936, 'mean_word_length': 4.821207430340557, 'pattern_counts': {'":': 0, '<': 126, '<?xml version=': 0, '>': 126, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4794052', 'n_tokens_mistral': 2393, 'n_tokens_neox': 2299, 'n_words': 894}