From 3949c97066bbe11248dd131f676f53a679f992ee Mon Sep 17 00:00:00 2001 From: Sean Wang Date: Sat, 2 Aug 2014 23:02:46 +0800 Subject: [PATCH 1/2] add sort support to PBXFileReference and PBXBuildFile sections --- Tools/Scripts/sort-Xcode-project-file | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Tools/Scripts/sort-Xcode-project-file b/Tools/Scripts/sort-Xcode-project-file index 260ee7b814021..4d501fa9adf48 100755 --- a/Tools/Scripts/sort-Xcode-project-file +++ b/Tools/Scripts/sort-Xcode-project-file @@ -1,6 +1,7 @@ #!/usr/bin/perl -w # Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. +# Copyright (C) 2014 Xiao Wang (wangxiao8611@gmail.com) # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -134,6 +135,19 @@ for my $projectFile (@ARGV) { print $OUT sort sortChildrenByFileName @children; } print $OUT $endMarker; + } elsif ($line =~ /^.*Begin (PBXBuildFile|PBXFileReference) section.*$/) { + print $OUT $line; + my $endMarker = "End " . $1 . " section"; + my @files; + while (my $fileLine = ) { + if ($fileLine =~ /^.*$endMarker.*$/){ + $endMarker = $fileLine; + last; + } + push @files, $fileLine; + } + print $OUT sort sortChildrenByFileName @files; + print $OUT $endMarker; } else { print $OUT $line; } @@ -153,8 +167,8 @@ exit 0; sub sortChildrenByFileName($$) { my ($a, $b) = @_; - my $aFileName = $1 if $a =~ /^\s*[A-Z0-9]{24} \/\* (.+) \*\/,$/; - my $bFileName = $1 if $b =~ /^\s*[A-Z0-9]{24} \/\* (.+) \*\/,$/; + my $aFileName = $1 if $a =~ /^\s*[A-Z0-9]{24} \/\* (.+) \*\/.*$/; + my $bFileName = $1 if $b =~ /^\s*[A-Z0-9]{24} \/\* (.+) \*\/.*$/; my $aSuffix = $1 if $aFileName =~ m/\.([^.]+)$/; my $bSuffix = $1 if $bFileName =~ m/\.([^.]+)$/; if ((!$aSuffix && !$isFile{$aFileName} && $bSuffix) || ($aSuffix && !$bSuffix && !$isFile{$bFileName})) { From 84d76e57bf2220d34b43140504d15940eace017f Mon Sep 17 00:00:00 2001 From: Sean Wang Date: Sat, 2 Aug 2014 23:06:17 +0800 Subject: [PATCH 2/2] add support to avoid creating new file if no change made merge from https://bugs.webkit.org/show_bug.cgi?id=113465 --- Tools/Scripts/sort-Xcode-project-file | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Tools/Scripts/sort-Xcode-project-file b/Tools/Scripts/sort-Xcode-project-file index 4d501fa9adf48..a5d409b9b147e 100755 --- a/Tools/Scripts/sort-Xcode-project-file +++ b/Tools/Scripts/sort-Xcode-project-file @@ -35,6 +35,7 @@ use File::Basename; use File::Spec; use File::Temp qw(tempfile); use Getopt::Long; +use File::Compare; sub sortChildrenByFileName($$); sub sortFilesByFileName($$); @@ -158,8 +159,13 @@ for my $projectFile (@ARGV) { close(IN); close($OUT); - unlink($projectFile) || die "Could not delete $projectFile: $!"; - rename($tempFileName, $projectFile) || die "Could not rename $tempFileName to $projectFile: $!"; + if (compare($projectFile, $tempFileName) == 0) { + print "No change made to $projectFile"; + unlink($tempFileName) || die "Could not delete $tempFileName: $!";} + else { + unlink($projectFile) || die "Could not delete $projectFile: $!"; + rename($tempFileName, $projectFile) || die "Could not rename $tempFileName to $projectFile: $!"; + } } exit 0;