: eval 'exec perl -wS $0 ${1+"$@"}' if 0; #************************************************************** # # 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 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # #************************************************************** #********************************************************************* # # main # my($product, $buildid, $id, $os, $arch, $lstfile, $languages, $productname, $productversion, $productedition); while ($_ = $ARGV[0], /^-/) { shift; last if /^--$/; if (/^--product/) { $product= $ARGV[0]; shift; } if (/^--buildid/) { $buildid = $ARGV[0]; shift; } if (/^--os/) { $os = $ARGV[0]; shift; } if (/^--arch/) { $arch = $ARGV[0]; shift; } if (/^--lstfile/) { $lstfile = $ARGV[0]; shift; } if (/^--languages/) { $languages = $ARGV[0]; shift; } } $sourcefile = $ARGV[0]; if( $^O =~ /cygwin/i ) { # We might get paths with backslashes, fix that. $lstfile =~ s/\\/\//g; $sourcefile =~ s/\\/\//g; } # read openoffice.lst # reading Globals section unless(open(LSTFILE, "sed -n \"/^Globals\$/,/^}\$/ p\" $lstfile |")) { print STDERR "Can't open $lstfile file: $!\n"; return; } while () { if( /\bPRODUCTNAME / ) { chomp; s/.*PRODUCTNAME //; $productname = $_; } if( /\bPACKAGEVERSION / ) { chomp; s/.*PACKAGEVERSION //; $productversion = $_; } if( /\bPRODUCTEDITION / ) { chomp; s/.*PRODUCTEDITION //; $productedition = $_; } } close(LSTFILE); ### may be hierarchical ... if(open(LSTFILE, "sed -n \"/^$product:/,/^}\$/ p\" $lstfile |")) { while () { if ( /^$product\s?:\s?(\w+)$/ ) { $product = $1; } if( /\bPRODUCTEDITION / ) { chomp; s/.*PRODUCTEDITION //; $productedition = $_; } } } close(LSTFILE); # Reading product specific settings unless(open(LSTFILE, "sed -n \"/^$product\$/,/^}\$/ p\" $lstfile |")) { print STDERR "Can't open $lstfile file: $!\n"; return; } while () { if( /\bPRODUCTNAME / ) { chomp; s/.*PRODUCTNAME //; $productname = $_; } if( /\bPACKAGEVERSION / ) { chomp; s/.*PACKAGEVERSION //; $productversion = $_; } if( /\bPRODUCTEDITION / ) { chomp; s/.*PRODUCTEDITION //; $productedition = $_; } } close(LSTFILE); # simulate the behavior of make_installer.pl when writing versionrc unless( "$os" eq "Windows" ) { $languages =~ s/_.*//; } $id = $productversion; $id =~ s/\..*//; $id = $productname . "_" . $id . "_" . $languages; # open input file unless (open(SOURCE, $sourcefile)) { print STDERR "Can't open $sourcefile file: $!\n"; return; } while () { s/:id>$id$buildid$os$arch$productedition$productversion$productname