| File: | config/init/install.pm |
| Coverage: | 95.5% |
| line | stmt | bran | cond | sub | code |
|---|---|---|---|---|---|
| 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 | |||||
| 13 | package 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 | |||||
| 20 | sub _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 | |||||
| 28 | sub 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 | |||||
| 114 | sub 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 | |||||
| 120 | 1; | ||||
| 121 | |||||
| 122 | # Local Variables: | ||||
| 123 | # mode: cperl | ||||
| 124 | # cperl-indent-level: 4 | ||||
| 125 | # fill-column: 100 | ||||
| 126 | # End: | ||||
| 127 | # vim: expandtab shiftwidth=4: | ||||