]> git.ipfire.org Git - thirdparty/dracut.git/blob - git2spec.pl
modules.d: Add a module for handling additional depmod kernel module directories
[thirdparty/dracut.git] / git2spec.pl
1 #!/usr/bin/perl
2
3 sub create_patches {
4 my $tag=shift;
5 my $pdir=shift;
6 my $n=1;
7 my @lines;
8 my $fname;
9 my $f=0;
10
11 mkdir $pdir, 0755;
12
13 open( GIT, 'git log -p --pretty=email --stat -m --first-parent --reverse '.$tag.'..HEAD |');
14
15 while (<GIT>) {
16 if (/^From [a-z0-9]{40} .*$/) {
17 $fname = sprintf("%04d", $n++).".patch";
18 open FH, ">".$pdir."/".$fname;
19 $f=1;
20 }
21 if (/^---$/ && $f == 1) {
22 push @lines, $fname;
23 $f=0;
24 }
25 print FH;
26 }
27
28 return @lines;
29 };
30
31 use POSIX qw(strftime);
32 my $datestr = strftime "%Y%m%d", gmtime;
33
34 my $tag=shift;
35 my $pdir=shift;
36 $tag=`git describe --abbrev=0 --tags` if not defined $tag;
37 chomp($tag);
38 my @patches=&create_patches($tag, $pdir);
39 my $num=$#patches + 2;
40 $tag=~s/[^0-9]+?([0-9]+)/$1/;
41 my $release="$num.git$datestr";
42 $release="1" if $num == 1;
43
44 while(<>) {
45 if (/^Version:/) {
46 print "Version: $tag\n";
47 }
48 elsif (/^%define dist_free_release/) {
49 print "%define dist_free_release $release\n";
50 }
51 elsif ((/^Source0:/) || (/^Source:/)) {
52 print $_;
53 $num=1;
54 for(@patches) {
55 s/.*\///g;
56 print "Patch$num: $_\n";
57 $num++;
58 }
59 print "\n";
60 }
61 else {
62 print $_;
63 }
64 }