]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
mklog: Split generated message in parts.
authorYury Gribov <y.gribov@samsung.com>
Thu, 19 Dec 2013 14:50:05 +0000 (14:50 +0000)
committerYury Gribov <ygribov@gcc.gnu.org>
Thu, 19 Dec 2013 14:50:05 +0000 (14:50 +0000)
2013-12-19  Yury Gribov  <y.gribov@samsung.com>

* mklog: Split generated message in parts.

From-SVN: r206116

contrib/ChangeLog
contrib/mklog

index 3b0d76349e2efa329c494aeab31b2ffea9ce19e9..b5adf051d4c535e37ff3f43da5edb6a7a4a6b01e 100644 (file)
@@ -1,3 +1,7 @@
+2013-12-19  Yury Gribov  <y.gribov@samsung.com>
+
+       * mklog: Split generated message in parts.
+
 2013-10-31  Chung-Ju Wu  <jasonwucj@gmail.com>
 
        * config-list.mk (nds32le-elf, nds32be-elf): Add nds32 target.
index a874c7215c554e274bd33dbff8250d972fe20961..d3f044ee8581e67a11f96a7f67928e566b0fd535 100755 (executable)
@@ -34,6 +34,10 @@ $name = @n[1]; chop($name);
 $addr = $username . "\@my.domain.org";
 $date = `date +%Y-%m-%d`; chop ($date);
 
+$gcc_root = $0;
+$gcc_root =~ s/[^\\\/]+$/../;
+chdir $gcc_root;
+
 
 #-----------------------------------------------------------------------------
 # Program starts here. You should not need to edit anything below this
@@ -50,16 +54,28 @@ if ( $#ARGV != 0 ) {
 $diff = $ARGV[0];
 $dir = `dirname $diff`; chop ($dir);
 $basename = `basename $diff`; chop ($basename);
-$cl = `mktemp /tmp/$basename.XXXXXX` || exit 1; chop ($cl);
 $hdrline = "$date  $name  <$addr>";
 
-open (CLFILE, ">$cl") or die "Could not open file $cl for writing";
-
-print CLFILE "$hdrline\n\n";
+my %cl_entries;
+
+sub get_clname($) {
+       my $dirname = $_[0];
+       while ($dirname) {
+               my $clname = "$dirname/ChangeLog";
+               if (-f $clname) {
+                       my $filename_rel = substr ($_[0], length ($dirname) + 1);
+                       return ($filename_rel, $clname);
+               } else {
+                       $dirname =~ s/[\/\\]?[^\/\\]*$//;
+               } 
+       }
+       return ($_[0], 'Unknown Changelog');
+}
 
 # For every file in the .diff print all the function names in ChangeLog
 # format.
 $bof = 0;
+$clname = get_clname('');
 open (DFILE, $diff) or die "Could not open file $diff for reading";
 while (<DFILE>) {
     # Check if we found a new file.
@@ -68,10 +84,11 @@ while (<DFILE>) {
        # $bof == 1), we just write out a ':' before starting the next
        # file.
        if ($bof == 1) {
-           print CLFILE ":\n";
+               $cl_entries{$clname} .= ":\n";
        }
        $filename = $2;
-       print CLFILE "\t* $filename";
+       ($filename_rel, $clname) = get_clname ($filename);
+       $cl_entries{$clname} .= "\t* $filename_rel";
        $bof = 1;
     }
 
@@ -122,13 +139,13 @@ while (<DFILE>) {
            # to the filename, so we need an extra space before the opening
            # brace.
            if ($bof) {
-               print CLFILE " ";
+               $cl_entries{$clname} .= " ";
                $bof = 0;
            } else {
-               print CLFILE "\t";
+               $cl_entries{$clname} .= "\t";
            }
 
-           print CLFILE "($fn):\n";
+               $cl_entries{$clname} .= "($fn):\n";
            $seen_names{$fn} = 1;
        }
     }
@@ -138,14 +155,20 @@ while (<DFILE>) {
 # write out a ':'. This happens when there is only one file with no
 # functions.
 if ($bof == 1) {
-    print CLFILE ":\n";
+       $cl_entries{$clname} .= ":\n";
+}
+
+$temp = `mktemp /tmp/$basename.XXXXXX` || exit 1; chop ($temp);
+open (CLFILE, ">$temp") or die "Could not open file $temp for writing";
+
+foreach my $clname (keys %cl_entries) {
+       print CLFILE "$clname:\n\n$hdrline\n\n$cl_entries{$clname}\n";
 }
 
-print CLFILE "\n";
 close (DFILE);
 
 # Concatenate the ChangeLog template and the original .diff file.
-system ("cat $diff >>$cl && mv $cl $diff") == 0
+system ("cat $diff >>$temp && mv $temp $diff") == 0
     or die "Could not add the ChangeLog entry to $diff";
 
 exit 0;