# ------------------------------------------------------------------------------
# Copyright (C) 2006-2021 British Crown (Met Office) & Contributors.
#
# This file is part of FCM, tools for managing and building source code.
#
# FCM is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# FCM is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with FCM. If not, see .
# ------------------------------------------------------------------------------
use strict;
use warnings;
# ------------------------------------------------------------------------------
package FCM::Context::Make;
use base qw{FCM::Class::HASH};
use constant {
ST_UNKNOWN => 0,
ST_INIT => 1,
ST_OK => 2,
ST_FAILED => -1,
};
__PACKAGE__->class({
ctx_of => '%',
description => '$',
dest => '$',
dest_lock => '$',
error => {},
inherit_ctx_list => '@',
name => {isa => '$', default => q{}},
option_of => '%',
prev_ctx => __PACKAGE__,
status => {isa => '$', default => ST_UNKNOWN},
steps => '@',
});
# ------------------------------------------------------------------------------
1;
__END__
=head1 NAME
FCM::Context::Make
=head1 SYNOPSIS
use FCM::Context::Make;
my $ctx = FCM::Context::Make->new();
=head1 DESCRIPTION
Provides a context object for the FCM make system. It is a sub-class of
L.
=head1 OBJECTS
=head2 FCM::Context::Make
An instance of this class represents a make. It has the following
attributes:
=over 4
=item ctx_of
A HASH containing the (keys) IDs and the (values) context objects of the make.
=item description
A description string for this make.
=item dest
The destination of this make.
=item dest_lock
The destination lock of this make.
=item error
This should be set to the value of the exception, if this make ends in one.
=item inherit_ctx_list
An ARRAY of contexts inherited by this make.
=item name
The name of the context. This is useful if we need to have multiple (but
non-overlapping) "fcm make" runs in the same destination. (Default is a null
string.)
=item option_of
A HASH to store the options of this make. See L for detail.
=item status
The status of the make.
=item steps
The names of the steps to make.
=back
=head1 OPTION
The C attribute of a FCM::Context::Make object may contain the
following elements:
=over 4
=item config-file
An ARRAY of configuration file names.
=item directory
The working directory of the make.
=item ignore-lock
Ignores lock file in the destination.
=item jobs
The number of (child) threads that can be run simultaneously.
=item new
Performs a make in "new" mode (as opposed to the "incremental" mode).
=back
=head1 CONSTANTS
=over 4
=item FCM::Context::Make->ST_UNKNOWN
The status of a make context or the context of a subsystem. Status is unknown.
=item FCM::Context::Make->ST_INIT
The status of a make context or the context of a subsystem. The make or the
subsystem has initialised, but not completed.
=item FCM::Context::Make->ST_OK
The status of a make context or the context of a subsystem. The make or the
subsystem has completed successfully.
=item FCM::Context::Make->ST_FAILED
The status of a make context or the context of a subsystem. The make or the
subsystem has failed.
=back
=head1 COPYRIGHT
Copyright (C) 2006-2021 British Crown (Met Office) & Contributors.
=cut