15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#!/usr/bin/perl -w 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) 2010 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 1. Redistributions of source code must retain the above copyright 9fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch# notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 2. Redistributions in binary form must reproduce the above copyright 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# notice, this list of conditions and the following disclaimer in the 12fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch# documentation and/or other materials provided with the distribution. 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 3. Neither the name of Apple Inc. ("Apple") nor the names of 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# its contributors may be used to endorse or promote products derived 15fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch# from this software without specific prior written permission. 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use strict; 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use FindBin; 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use Getopt::Long; 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use lib $FindBin::Bin; 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)use VCSUtils; 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)sub checkPythonVersion() 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # Will exit 0 if Python is 2.5 or greater, non-zero otherwise. 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) `python -c "import sys;sys.exit(sys.version_info[:2] < (2,5))"`; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return exitStatus($?) == 0; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)sub main() 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $checkOnly = 0; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $showHelp = 0; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) my $getOptionsResult = GetOptions( 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 'check-only!' => \$checkOnly, 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 'help|h' => \$showHelp, 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!$getOptionsResult || $showHelp) { 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) print STDERR <<HELP; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Usage: $0 [options] 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) --check-only Check python version only. 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) -h|--help Show this help message. 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)HELP 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 1; 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # Congrats, your Python is fine. 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0 if checkPythonVersion(); 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 1 if $checkOnly; 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) print "Your Python version is insufficient to run WebKit's Python code. Please update.\n"; 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) print "See http://trac.webkit.org/wiki/PythonGuidelines for more info.\n"; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 1; 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)exit(main()); 70