1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
package RpmSpecProjectCreator;
# ************************************************************
# Description : An RPM .spec file Project Creator
# Author : Adam Mitz (OCI)
# Create Date : 11/23/2010
# ************************************************************
# ************************************************************
# Pragmas
# ************************************************************
use strict;
use File::Path;
use ProjectCreator;
use vars qw(@ISA);
@ISA = qw(ProjectCreator);
# ************************************************************
# Subroutine Section
# ************************************************************
sub project_file_extension {
return '.dummy';
}
# Don't actually write anything, just keep MPC internal data structures
# up-to-date as if it had been written. We don't want a .spec file for each
# MPC project because that is too fine-grained. See the corresponding
# workspace creator for the actual .spec file creation.
sub write_output_file {
my $self = shift;
my $tover = $self->get_template_override();
my @templates = $self->get_template();
@templates = ($tover) if (defined $tover);
if (scalar @templates != 1) {
return 0, 'there should be only one template';
}
my $template = $templates[0];
$self->{'current_template'} = $template;
my $name = $self->transform_file_name($self->project_file_name(undef,
$template));
$self->process_assignment('project_file', $name);
new TemplateParser($self)->collect_data();
if (defined $self->{'source_callback'}) {
my $cb = $self->{'source_callback'};
my $pjname = $self->get_assignment('project_name');
my @list = $self->get_component_list('source_files');
if (UNIVERSAL::isa($cb, 'ARRAY')) {
my @copy = @$cb;
my $s = shift(@copy);
&$s(@copy, $name, $pjname, \@list);
}
elsif (UNIVERSAL::isa($cb, 'CODE')) {
&$cb($name, $pjname, \@list);
}
else {
$self->warning("Ignoring callback: $cb.");
}
}
# Still need outdir since ProjectCreator::write_install_file (or similar)
# may depend on outdir existing before the WorkspaceCreator runs.
my $outdir = $self->get_outdir();
mkpath($outdir, 0, 0777) if ($outdir ne '.');
$self->add_file_written($name);
return 1, '';
}
1;
|