5f72869d4a3a2e792bdacc7154071341a4823716
[WebKit-https.git] / WebKitTools / Scripts / update-webkit
1 #!/usr/bin/perl -w
2
3 # Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 #
9 # 1.  Redistributions of source code must retain the above copyright
10 #     notice, this list of conditions and the following disclaimer. 
11 # 2.  Redistributions in binary form must reproduce the above copyright
12 #     notice, this list of conditions and the following disclaimer in the
13 #     documentation and/or other materials provided with the distribution. 
14 # 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15 #     its contributors may be used to endorse or promote products derived
16 #     from this software without specific prior written permission. 
17 #
18 # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 # DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 # Update script for WebKit Open Source Project.
30
31 use strict;
32 use FindBin;
33 use lib $FindBin::Bin;
34 use File::Basename;
35 use File::Spec;
36 use Getopt::Long;
37 use webkitdirs;
38
39 sub runSvnUpdate();
40 sub normalizePath($);
41
42 # Handle options
43 my $quiet = '';
44 my $showHelp;
45
46 my $getOptionsResult = GetOptions(
47     'h|help'  => \$showHelp,
48     'q|quiet' => \$quiet,
49 ); 
50
51 if (!$getOptionsResult || $showHelp) {
52     print STDERR <<__END__;
53 Usage: @{[ basename($0) ]} [options]
54   -h|--help   show the help message
55   -q|--quiet  pass -q to svn update for quiet updates
56 __END__
57     exit 1;
58 }
59
60 my @svnOptions = ();
61 push @svnOptions, '-q' if $quiet;
62
63 chdirWebKit();
64 print "Updating OpenSource\n" unless $quiet;
65 runSvnUpdate();
66
67 if (-d "../Internal") {
68     chdir("../Internal");
69     print "Updating Internal\n" unless $quiet;
70     runSvnUpdate();
71 } elsif (isAppleWinWebKit()) {
72     system("perl", "WebKitTools/Scripts/update-webkit-auxiliary-libs") == 0 or die;
73 }
74
75 exit 0;
76
77 sub runSvnUpdate()
78 {
79     open UPDATE, "-|", "svn", "update", @svnOptions or die;
80     my @conflictedChangeLogs;
81     while (my $line = <UPDATE>) {
82         print $line;
83         $line =~ m/^C\s+(.*\S+)\s*$/;
84         if ($1) {
85           my $filename = normalizePath($1);
86           push @conflictedChangeLogs, $filename if basename($filename) eq "ChangeLog";
87         }
88     }
89     close UPDATE or die;
90
91     if (@conflictedChangeLogs) {
92         print "Attempting to merge conflicted ChangeLogs.\n";
93         my $resolveChangeLogsPath = File::Spec->catfile(dirname($0), "resolve-ChangeLogs");
94         (system($resolveChangeLogsPath, "--no-warnings", @conflictedChangeLogs) == 0)
95             or die "Could not open resolve-ChangeLogs script: $!.\n";
96     }
97 }
98
99 sub normalizePath($)
100 {
101     my ($path) = @_;
102     $path =~ s/\\/\//g;
103     return $path;
104 }