# ------------------------------------------------------------------------------ # 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