File Coverage

File:config/init/install.pm
Coverage:95.5%

linestmtbrancondsubcode
1# Copyright (C) 2001-2007, Parrot Foundation.
2
3 - 11
=head1 NAME

config/init/install.pm - autoconf compatible installation paths

=head1 DESCRIPTION

Sets up the installation paths

=cut
12
13package init::install;
14
15
4
4
4
use strict;
16
4
4
4
use warnings;
17
18
4
4
4
use base qw(Parrot::Configure::Step);
19
20sub _init {
21
5
    my $self = shift;
22
5
    my %data;
23
5
    $data{description} = q{Set up installation paths};
24
5
    $data{result} = q{};
25
5
    return \%data;
26}
27
28sub runstep {
29
4
    my ( $self, $conf ) = @_;
30
31
4
    my $prefix = $conf->options->get('prefix') || ($^O eq 'MSWin32' ? "C:/Parrot" : "/usr/local");
32
4
    $prefix =~ s{/\z}{};
33
4
    my $ep = $conf->options->get('exec-prefix');
34
4
    $ep =~ s{/\z}{} if defined $ep;
35
4
    my $eprefix = $ep ? $ep : $prefix;
36
37    # Install in versioned subdirectories, "/usr/lib/parrot/1.5.0/...". Skip
38    # the "/parrot" or "/1.5.0" subdirectories if these are included in the
39    # prefix.
40
4
    my $versiondir = '';
41
4
    unless ($prefix =~ /parrot/) {
42
4
        $versiondir .= '/parrot';
43    }
44
4
    my $version = $conf->option_or_data('VERSION');
45
4
    if ($version && $prefix !~ /$version/) {
46
2
        $versiondir .= "/$version";
47
2
        $versiondir .= $conf->option_or_data('DEVEL');
48    }
49
50    # --bindir=DIR user executables [EPREFIX/bin]
51
4
    my $bindir = assign_dir( $conf, 'bindir', $eprefix, '/bin' );
52
53    # --sbindir=DIR system admin executables [EPREFIX/sbin]
54
4
    my $sbindir = assign_dir( $conf, 'sbindir', $eprefix, '/sbin' );
55
56    # --libexecdir=DIR program executables [EPREFIX/libexec]
57
4
    my $libexecdir = assign_dir( $conf, 'libexecdir', $eprefix, '/libexec' );
58
59    # --datadir=DIR read-only architecture-independent data [PREFIX/share]
60
4
    my $datadir = assign_dir( $conf, 'datadir', $prefix, '/share' );
61
62    # --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
63
4
    my $sysconfdir = assign_dir( $conf, 'sysconfdir', $prefix, '/etc' );
64
65    # --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
66
4
    my $sharedstatedir = assign_dir( $conf, 'sharedstatedir', $prefix, '/com' );
67
68    # --localstatedir=DIR modifiable single-machine data [PREFIX/var]
69
4
    my $localstatedir = assign_dir( $conf, 'localstatedir', $prefix, '/var' );
70
71    # --libdir=DIR object code libraries [EPREFIX/lib]
72
4
    my $libdir = assign_dir( $conf, 'libdir', $eprefix, '/lib' );
73
74    # --includedir=DIR C header files [PREFIX/include]
75
4
    my $includedir = assign_dir( $conf, 'includedir', $prefix, '/include' );
76
77    # --oldincludedir=DIR C header files f|| non-gcc [/usr/include]
78
4
    my $oldincludedir = assign_dir( $conf, 'oldincludedir', q{}, '/usr/include' );
79
80    # --infodir=DIR info documentation [PREFIX/info]
81
4
    my $infodir = assign_dir( $conf, 'infodir', $prefix, '/info' );
82
83    # --mandir=DIR man documentation [PREFIX/man]
84
4
    my $mandir = assign_dir( $conf, 'mandir', $prefix, '/man' );
85
86    # --srcdir=DIR source code files PREFIX/src]
87
4
    my $srcdir = assign_dir( $conf, 'srcdir', $prefix, '/src' );
88
89
4
    $conf->data->set(
90        prefix => $prefix,
91        exec_prefix => $eprefix,
92        bindir => $bindir,
93        sbindir => $sbindir,
94        libexecdir => $libexecdir,
95        datadir => $datadir,
96        sysconfdir => $sysconfdir,
97        sharedstatedir => $sharedstatedir,
98        localstatedir => $localstatedir,
99        libdir => $libdir,
100        includedir => $includedir,
101        oldincludedir => $oldincludedir,
102        infodir => $infodir,
103        mandir => $mandir,
104        srcdir => $srcdir,
105
106        # parrot internal use only
107        docdir => $datadir . "/doc",
108        versiondir => $versiondir,
109    );
110
111
4
    return 1;
112}
113
114sub assign_dir {
115
52
    my ( $conf, $dir_str, $fix, $ext ) = @_;
116
52
    my $d = $conf->options->get($dir_str);
117
52
    return $d ? $d : $fix . $ext;
118}
119
1201;
121
122# Local Variables:
123# mode: cperl
124# cperl-indent-level: 4
125# fill-column: 100
126# End:
127# vim: expandtab shiftwidth=4: