xref: /aoo4110/main/solenv/bin/gen_update_info.pl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski:
2*b1cdbd2cSJim Jagielskieval 'exec perl -wS $0 ${1+"$@"}'
3*b1cdbd2cSJim Jagielski        if 0;
4*b1cdbd2cSJim Jagielski
5*b1cdbd2cSJim Jagielski#**************************************************************
6*b1cdbd2cSJim Jagielski#
7*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
8*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
9*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
10*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
11*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
12*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
13*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
14*b1cdbd2cSJim Jagielski#
15*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
16*b1cdbd2cSJim Jagielski#
17*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
18*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
19*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
21*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
22*b1cdbd2cSJim Jagielski#  under the License.
23*b1cdbd2cSJim Jagielski#
24*b1cdbd2cSJim Jagielski#**************************************************************
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski#*********************************************************************
30*b1cdbd2cSJim Jagielski#
31*b1cdbd2cSJim Jagielski# main
32*b1cdbd2cSJim Jagielski#
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielskimy($product, $buildid, $id, $os, $arch, $lstfile, $languages, $productname, $productversion, $productedition);
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskiwhile ($_ = $ARGV[0], /^-/) {
37*b1cdbd2cSJim Jagielski    shift;
38*b1cdbd2cSJim Jagielski    last if /^--$/;
39*b1cdbd2cSJim Jagielski    if (/^--product/) {
40*b1cdbd2cSJim Jagielski        $product= $ARGV[0];
41*b1cdbd2cSJim Jagielski        shift;
42*b1cdbd2cSJim Jagielski    }
43*b1cdbd2cSJim Jagielski    if (/^--buildid/) {
44*b1cdbd2cSJim Jagielski        $buildid = $ARGV[0];
45*b1cdbd2cSJim Jagielski        shift;
46*b1cdbd2cSJim Jagielski    }
47*b1cdbd2cSJim Jagielski    if (/^--os/) {
48*b1cdbd2cSJim Jagielski        $os = $ARGV[0];
49*b1cdbd2cSJim Jagielski        shift;
50*b1cdbd2cSJim Jagielski    }
51*b1cdbd2cSJim Jagielski    if (/^--arch/) {
52*b1cdbd2cSJim Jagielski        $arch = $ARGV[0];
53*b1cdbd2cSJim Jagielski        shift;
54*b1cdbd2cSJim Jagielski    }
55*b1cdbd2cSJim Jagielski    if (/^--lstfile/) {
56*b1cdbd2cSJim Jagielski        $lstfile = $ARGV[0];
57*b1cdbd2cSJim Jagielski        shift;
58*b1cdbd2cSJim Jagielski    }
59*b1cdbd2cSJim Jagielski    if (/^--languages/) {
60*b1cdbd2cSJim Jagielski        $languages = $ARGV[0];
61*b1cdbd2cSJim Jagielski        shift;
62*b1cdbd2cSJim Jagielski    }
63*b1cdbd2cSJim Jagielski}
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski$sourcefile = $ARGV[0];
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielskiif( $^O =~ /cygwin/i ) {
68*b1cdbd2cSJim Jagielski    # We might get paths with backslashes, fix that.
69*b1cdbd2cSJim Jagielski    $lstfile =~ s/\\/\//g;
70*b1cdbd2cSJim Jagielski    $sourcefile =~ s/\\/\//g;
71*b1cdbd2cSJim Jagielski}
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski# read openoffice.lst
74*b1cdbd2cSJim Jagielski# reading Globals section
75*b1cdbd2cSJim Jagielskiunless(open(LSTFILE, "sed -n \"/^Globals\$/,/^}\$/ p\" $lstfile |")) {
76*b1cdbd2cSJim Jagielski    print STDERR "Can't open $lstfile file: $!\n";
77*b1cdbd2cSJim Jagielski    return;
78*b1cdbd2cSJim Jagielski}
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielskiwhile (<LSTFILE>) {
81*b1cdbd2cSJim Jagielski    if( /\bPRODUCTNAME / ) {
82*b1cdbd2cSJim Jagielski        chomp;
83*b1cdbd2cSJim Jagielski        s/.*PRODUCTNAME //;
84*b1cdbd2cSJim Jagielski        $productname = $_;
85*b1cdbd2cSJim Jagielski    }
86*b1cdbd2cSJim Jagielski    if( /\bPACKAGEVERSION / ) {
87*b1cdbd2cSJim Jagielski        chomp;
88*b1cdbd2cSJim Jagielski        s/.*PACKAGEVERSION //;
89*b1cdbd2cSJim Jagielski        $productversion = $_;
90*b1cdbd2cSJim Jagielski    }
91*b1cdbd2cSJim Jagielski    if( /\bPRODUCTEDITION / ) {
92*b1cdbd2cSJim Jagielski        chomp;
93*b1cdbd2cSJim Jagielski        s/.*PRODUCTEDITION //;
94*b1cdbd2cSJim Jagielski        $productedition = $_;
95*b1cdbd2cSJim Jagielski    }
96*b1cdbd2cSJim Jagielski}
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielskiclose(LSTFILE);
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski### may be hierarchical ...
101*b1cdbd2cSJim Jagielskiif(open(LSTFILE, "sed -n \"/^$product:/,/^}\$/ p\" $lstfile |")) {
102*b1cdbd2cSJim Jagielski    while (<LSTFILE>) {
103*b1cdbd2cSJim Jagielski        if ( /^$product\s?:\s?(\w+)$/ ) {
104*b1cdbd2cSJim Jagielski            $product = $1;
105*b1cdbd2cSJim Jagielski        }
106*b1cdbd2cSJim Jagielski        if( /\bPRODUCTEDITION / ) {
107*b1cdbd2cSJim Jagielski            chomp;
108*b1cdbd2cSJim Jagielski            s/.*PRODUCTEDITION //;
109*b1cdbd2cSJim Jagielski            $productedition = $_;
110*b1cdbd2cSJim Jagielski        }
111*b1cdbd2cSJim Jagielski    }
112*b1cdbd2cSJim Jagielski}
113*b1cdbd2cSJim Jagielskiclose(LSTFILE);
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski# Reading product specific settings
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielskiunless(open(LSTFILE, "sed -n \"/^$product\$/,/^}\$/ p\" $lstfile |")) {
118*b1cdbd2cSJim Jagielski    print STDERR "Can't open $lstfile file: $!\n";
119*b1cdbd2cSJim Jagielski    return;
120*b1cdbd2cSJim Jagielski}
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielskiwhile (<LSTFILE>) {
123*b1cdbd2cSJim Jagielski    if( /\bPRODUCTNAME / ) {
124*b1cdbd2cSJim Jagielski        chomp;
125*b1cdbd2cSJim Jagielski        s/.*PRODUCTNAME //;
126*b1cdbd2cSJim Jagielski        $productname = $_;
127*b1cdbd2cSJim Jagielski    }
128*b1cdbd2cSJim Jagielski    if( /\bPACKAGEVERSION / ) {
129*b1cdbd2cSJim Jagielski        chomp;
130*b1cdbd2cSJim Jagielski        s/.*PACKAGEVERSION //;
131*b1cdbd2cSJim Jagielski        $productversion = $_;
132*b1cdbd2cSJim Jagielski    }
133*b1cdbd2cSJim Jagielski    if( /\bPRODUCTEDITION / ) {
134*b1cdbd2cSJim Jagielski        chomp;
135*b1cdbd2cSJim Jagielski        s/.*PRODUCTEDITION //;
136*b1cdbd2cSJim Jagielski        $productedition = $_;
137*b1cdbd2cSJim Jagielski    }
138*b1cdbd2cSJim Jagielski}
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielskiclose(LSTFILE);
141*b1cdbd2cSJim Jagielski
142*b1cdbd2cSJim Jagielski# simulate the behavior of make_installer.pl when writing versionrc
143*b1cdbd2cSJim Jagielskiunless( "$os" eq "Windows" ) {
144*b1cdbd2cSJim Jagielski  $languages =~ s/_.*//;
145*b1cdbd2cSJim Jagielski}
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski$id = $productversion;
148*b1cdbd2cSJim Jagielski$id =~ s/\..*//;
149*b1cdbd2cSJim Jagielski$id = $productname . "_" . $id . "_" . $languages;
150*b1cdbd2cSJim Jagielski
151*b1cdbd2cSJim Jagielski# open input file
152*b1cdbd2cSJim Jagielskiunless (open(SOURCE, $sourcefile)) {
153*b1cdbd2cSJim Jagielski    print STDERR "Can't open $sourcefile file: $!\n";
154*b1cdbd2cSJim Jagielski    return;
155*b1cdbd2cSJim Jagielski}
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielskiwhile (<SOURCE>) {
158*b1cdbd2cSJim Jagielski   s/:id></:id>$id</;
159*b1cdbd2cSJim Jagielski   s/buildid></buildid>$buildid</;
160*b1cdbd2cSJim Jagielski   s/os></os>$os</;
161*b1cdbd2cSJim Jagielski   s/arch></arch>$arch</;
162*b1cdbd2cSJim Jagielski   if ( $productedition ) {
163*b1cdbd2cSJim Jagielski       s/edition></edition>$productedition</;
164*b1cdbd2cSJim Jagielski   } else {
165*b1cdbd2cSJim Jagielski       next if ( /edition></ );
166*b1cdbd2cSJim Jagielski   }
167*b1cdbd2cSJim Jagielski   s/version></version>$productversion</;
168*b1cdbd2cSJim Jagielski   s/name></name>$productname</;
169*b1cdbd2cSJim Jagielski   print;
170*b1cdbd2cSJim Jagielski}
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim Jagielskiclose(SOURCE);
173