diff options
-rwxr-xr-x | tools/fix-headers.pl | 343 | ||||
-rw-r--r-- | tools/fix-headers.tst | 11 | ||||
-rw-r--r-- | tools/rewrite-history.sh | 84 |
3 files changed, 0 insertions, 438 deletions
diff --git a/tools/fix-headers.pl b/tools/fix-headers.pl deleted file mode 100755 index 62141b34bd..0000000000 --- a/tools/fix-headers.pl +++ /dev/null @@ -1,343 +0,0 @@ -#!/usr/bin/perl -# ------------------------------------------------------------ -# This script fixes the license headers of all Java sources -# to use the Eclipse EDL license template and updates the -# copyright statements using author information from git blame -# -# To fix this in all revisions rewrite the history -# git filter-branch --tree-filter 'fixHeaders.pl' HEAD -# ------------------------------------------------------------ -use strict; - -# Table of author names, start date, end date, actual copyright owner. -# -my @author_employers = ( - [ qr/spearce\@spearce.org/, 2008, 8, 9999, 12, 'Google Inc.'], - - [ qr/\@(.*\.|)google.com/, 0, 0, 9999, 12, 'Google Inc.'], -); - -# License text itself. -# -my $license_text = <<'EOF'; - and other copyright owners as documented in the project's IP log. - - This program and the accompanying materials are made available - under the terms of the Eclipse Distribution License v1.0 which - accompanies this distribution, is reproduced below, and is - available at http://www.eclipse.org/org/documents/edl-v10.php - - All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, are permitted provided that the following - conditions are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - - Neither the name of the Eclipse Foundation, Inc. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior - written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -EOF - -my @files = @ARGV; -unless (@files) { - open( F, '-|', 'git ls-files' ); - @files = <F>; - chop @files; - close F; -} - -foreach (@files) { - if (/\.java$/ || $_ eq 'LICENSE') { - next if $_ eq 'org.eclipse.jgit/src/org/eclipse/jgit/util/Base64.java'; - update_file(\&java_file, $_); - - } elsif (/pom\.xml$/) { - update_file(\&pom_file, $_); - - } elsif (/\.sh$/) { - update_file(\&sh_file, $_); - } -} - -sub java_file -{ - my $fd = shift; - my $header = ''; - my $preamble = ''; - - # header is everything before package statement - while (<$fd>) { - if (/^package /) { - $preamble = $_; - last; - } - $header .= $_; - } - - # preamble is everything with blanks or imports - while (<$fd>) { - $preamble .= $_; - last unless (/^import / || /^$/); - } - my $lineno = $. - 1; - - return ($header, $preamble, $lineno, - "/*\n", sub { s/^/ */mg }, " */\n"); -} - -sub pom_file -{ - my $fd = shift; - my $header = ''; - my $preamble = ''; - - # header is everything before project - while (<$fd>) { - if (/<project/) { - $preamble = $_; - last; - } - $header .= $_; - } - my $lineno = $. - 1; - - return ($header, $preamble, $lineno, - qq{<?xml version="1.0" encoding="UTF-8"?>\n<!--\n}, - sub { s/^(.)/ $1/mg }, - qq{-->\n}); -} - -sub sh_file -{ - my $fd = shift; - my $top = <$fd>; - my $header = ''; - my $preamble = ''; - - while (<$fd>) { - if (/^#/) { - $header .= $_; - next; - } - $preamble = $_; - last; - } - my $lineno = $. - 1; - - return ($header, $preamble, $lineno, $top, sub { s/^/#/mg }, ""); -} - -sub update_file -{ - my $func = shift; - my $old_file = shift; - my $new_file = "$old_file.license.$$"; - - open(I, '<', $old_file); - my ($header, $preamble, $lineno, - $top, $fmt, $btm) = &{$func}(\*I); - - my %all_years; - my %author_years; - my %minyear; - my %maxyear; - - # find explicit copyright statements in sources - my @lines = split( /\n/, $header ); - foreach my $line ( @lines ) { - # * Copyright (c) 2008, Example Company Inc. - # * Copyright (c) 2008, Joe Developer <joe.dev@example.org> - # * Copyright (c) 2008, 2009 Joe Developer <joe.dev@example.org> - # * Copyright (c) 2005-2009 Joe Developer <joe.dev@example.org> - # * Copyright (c) 2008, 2009 Other Examples Inc. - # * Copyright (c) 2008-2010 Example Company Inc. - # * Copyright (C) 2009-2010, Yet More Examples Ltd. - if( $line =~ m/Copyright \(c\) (\d{4})(?:\s*[,-]\s*(\d{4}))?,?\s*([^<>]+)\s*(<.*?>)?/i ) { - my ($y, $y2, $n, $e) = ($1, $2, $3, $4); - my $year = trim($y); - my $author_name = trim($n); - my $author_email = trim($e); - my $who = $author_name; - $who .= " $author_email" if $author_email; - update_author_info(\%minyear, \%maxyear, \%all_years, \%author_years, $who, $year); - if (my $year2 = $y2) { - update_author_info(\%minyear, \%maxyear, \%all_years, \%author_years, $who, $year2); - } - } - } - - if ($old_file eq 'LICENSE') { - } else { - # add implicit copyright statements from authors found in git blame - my (%line_counts, %line_authors); - my ($last_commit, $author_name, $author_email); - my @blame_args = ('git', 'blame', "-L$lineno,", '-C', '-w', '-p'); - push(@blame_args, $ENV{'GIT_COMMIT'}) if $ENV{'GIT_COMMIT'}; - push(@blame_args, '--', $old_file); - open( B, '-|', @blame_args); - while (<B>) { - chop; - if (/^([0-9a-f]{40}) \d+ \d+ (\d+)$/) { - $last_commit = $1; - $line_counts{$1} += $2; - next; - } - if (/^author (.*)$/) { - $author_name = trim($1); - next; - } - if (/^author-mail (<.*>)$/) { - $author_email = trim($1); - next; - } - if (/^author-time (\d+)$/) { - # skip uncommitted changes - my $who = "$author_name $author_email"; - next if $who eq 'Not Committed Yet <not.committed.yet>'; - my @tm = localtime($1); - my $year = $tm[5] + 1900; - my $mon = $tm[4] + 1; - $who = translate_author($who, $year, $mon); - $line_authors{$last_commit} = [$who, $year, $mon]; - } - } - close B; - - my %author_linecounts; - foreach $last_commit (keys %line_counts) { - my $who = $line_authors{$last_commit}[0]; - next unless $who; - $author_linecounts{$who} += $line_counts{$last_commit}; - } - - my $sz = 100; - my $count_big = 0; - foreach (values %author_linecounts) { - $count_big++ if $_ >= $sz; - } - - my $added_count = 0; - foreach (values %line_authors) { - my ($who, $year, $mon) = @$_; - next if ($count_big && $author_linecounts{$who} < $sz); - $all_years{$year} = 1; - update_author_info(\%minyear, \%maxyear, \%all_years, \%author_years, $who, $year, $mon); - } - } - - # rewrite file - open( O, '>', $new_file ); - print O $top; - - my %used_author; - foreach my $year ( sort { $a cmp $b } keys %all_years ) { - foreach my $who ( sort keys %author_years ) { - next if $used_author{$who}++; - local $_ = format_copyright($minyear{$who}, $maxyear{$who}, $who); - &{$fmt}(); - print O; - } - } - - local $_ = $license_text; - &{$fmt}(); - print O; - print O $btm; - print O "\n"; - print O $preamble; - print O while <I>; - close I; - close O; - - rename( $new_file, $old_file ); -} - -sub trim($) -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} - -sub update_author_info -{ - my ($minyear_ref, $maxyear_ref, $all_years_ref, $author_years_ref, $who, $year, $mon) = @_; - - $who = translate_author($who, $year, $mon); - $all_years_ref->{$year} = 1; - $author_years_ref->{$who}{$year} = 1; - - my $y = $minyear_ref->{$who}; - if ($y < 1900) { - $y = 9999; - } - if ($year < $y) { - $minyear_ref->{$who} = $year; - } - $y = $maxyear_ref->{$who}; - if ($year > $y) { - $maxyear_ref->{$who} = $year; - } -} - -sub date_cmp -{ - my ($a_year, $a_mon, $b_year, $b_mon) = @_; - - if ($a_year < $b_year) { - return -1; - } elsif ($a_year == $b_year) { - return ($a_mon <=> $b_mon); - } else { - return 1; - } -} - -sub translate_author -{ - my ($who, $year, $mon) = @_; - - return $who if not defined $mon; - - foreach my $spec (@author_employers) { - next unless $who =~ $spec->[0]; - next if (date_cmp($year, $mon, $spec->[1], $spec->[2]) < 0); - next if (date_cmp($year, $mon, $spec->[3], $spec->[4]) > 0); - return $spec->[5]; - } - return $who; -} - -sub format_copyright { - my ($minyear, $maxyear, $who) = @_; - if ($minyear < $maxyear) { - return " Copyright (C) $minyear-$maxyear, $who\n"; - } else { - return " Copyright (C) $minyear, $who\n"; - } -} - diff --git a/tools/fix-headers.tst b/tools/fix-headers.tst deleted file mode 100644 index c47bba969b..0000000000 --- a/tools/fix-headers.tst +++ /dev/null @@ -1,11 +0,0 @@ -regex without named back references -m/.*Copyright \(c\) ((\d{4})\s*[,-]\s*(\d{4})?)\,?(([^\r\<\>\,]*)(\<.*\>)?)\s*/i - - * Copyright (c) 2008, Example Company Inc. - * Copyright (c) 2008, Joe Developer <joe.dev@example.org> - * Copyright (c) 2008, 2009 Joe Developer <joe.dev@example.org> - * Copyright (c) 2005-2009 Joe Developer <joe.dev@example.org> - * Copyright (c) 2008, 2009 Other Examples Inc. - * Copyright (c) 2008-2010 Example Company Inc. - * Copyright (C) 2009-2010, Yet More Examples Ltd. - diff --git a/tools/rewrite-history.sh b/tools/rewrite-history.sh deleted file mode 100644 index cf13cba625..0000000000 --- a/tools/rewrite-history.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/sh -# Copyright (C) 2010, Matthias Sohn <matthias.sohn@sap.com> -# and other copyright owners as documented in the project's IP log. -# -# This program and the accompanying materials are made available -# under the terms of the Eclipse Distribution License v1.0 which -# accompanies this distribution, is reproduced below, and is -# available at http://www.eclipse.org/org/documents/edl-v10.php -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or -# without modification, are permitted provided that the following -# conditions are met: -# -# - Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# - Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# - Neither the name of the Eclipse Foundation, Inc. nor the -# names of its contributors may be used to endorse or promote -# products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -TOOLS_DIR=$(dirname $0) -TOOLS_DIR=$(cd $TOOLS_DIR && pwd) -export TOOLS_DIR - -MAP_OF_COMMITS=$(pwd)/commit.map -export MAP_OF_COMMITS - -: >$MAP_OF_COMMITS -git filter-branch \ ---tree-filter ' - export GIT_COMMIT - $TOOLS_DIR/fix-headers.pl - - if [ -f tools/graft-old-history.sh ]; then - i=$(map 046198cf5f21e5a63e8ec0ecde2ef3fe21db2eae) - perl -pi -e " - s/^POST=.*/POST=$i/; - " tools/graft-old-history.sh - fi -' \ ---env-filter ' - if [ 046198cf5f21e5a63e8ec0ecde2ef3fe21db2eae = $GIT_COMMIT ]; then - export GIT_AUTHOR_NAME="Git Development Community" - export GIT_AUTHOR_EMAIL=git@vger.kernel.org - fi -' \ ---parent-filter ' - if [ 046198cf5f21e5a63e8ec0ecde2ef3fe21db2eae = $GIT_COMMIT ]; then - cat >/dev/null - else - cat - fi -' \ ---commit-filter ' - n=$(git commit-tree "$@") - echo $GIT_COMMIT=$n >>$MAP_OF_COMMITS - echo $n -' \ --d /tmp/jgit-rewrite-history-$$ \ -$(git for-each-ref --format='%(refname)' refs/heads refs/changes) \ ---not 3a2dd9921c8a08740a9e02c421469e5b1a9e47cb |