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