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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed
# with this work for additional information regarding copyright
# ownership. The ASF licenses this file to you under the Apache
# License, Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.apache.org/licenses/LICENSE-2.0 .
#
package packager::work;
use strict;
use warnings;
use base 'Exporter';
use packager::exiter;
use packager::globals;
our @EXPORT_OK = qw(
set_global_variable
create_package_todos
execute_system_calls
);
###########################################
# Setting global variables
###########################################
sub set_global_variable
{
my $compiler = $ENV{'OUTPATH'};
if ( $ENV{'PROEXT'} ) { $compiler = $compiler . $ENV{'PROEXT'}; }
$packager::globals::compiler = $compiler;
}
###########################################
# Generating a list of package calls
# corresponding to the package list
###########################################
sub create_package_todos
{
my ( $packagelist ) = @_;
my @targets = (); # only used, if the build server is not used
for my $line ( @{$packagelist} ) {
next if ($line =~ /^\s*\#/); # comment line
my ($product, $compilerlist, $languagelist, $target) =
($line =~ /^\s*(\w+?)\s+(\S+?)\s+(\S+?)\s+(\w+?)\s*$/);
my @compilers = split ',', $compilerlist;
# is the compiler of this "build" part of the compiler list in pack.lst ?
next unless grep { $_ eq $packager::globals::compiler } @compilers;
# products are separated in pack.lst by "|"
# now all information is available to create the targets for the systemcalls
for my $languagestring (split '\|', $languagelist) {
$languagestring =~ s/,/_/g; # comma in pack.lst becomes "_" in dmake command
push @targets, $target . '_' . $languagestring;
}
}
push @packager::globals::logfileinfo, map { $_ . "\n" } @targets;
return \@targets;
}
###########################################
# Executing the generated system calls
###########################################
sub execute_system_calls
{
my ( $targets ) = @_;
for ( my $i = 0; $i <= $#{$targets}; $i++ )
{
my $systemcall = "dmake " . ${$targets}[$i];
my $infoline = "Packager: $systemcall\n";
print $infoline;
push( @packager::globals::logfileinfo, $infoline);
my $returnvalue = system($systemcall);
$infoline = "Packager finished: $systemcall\n";
print $infoline;
push( @packager::globals::logfileinfo, $infoline);
if ( $returnvalue )
{
$infoline = "\nERROR: Packager $systemcall\n";
print $infoline;
push( @packager::globals::logfileinfo, $infoline);
if (!($packager::globals::ignoreerrors)) { packager::exiter::exit_program("ERROR: Packing not successful : $systemcall", "execute_system_calls"); }
}
}
}
1;
|