Adds util header for testing
[libcds.git] / tools / make_distrib.pl
1 #!/usr/bin/perl\r
2 \r
3 my $curDir = `cd`;\r
4 \r
5 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);\r
6 $year += 1900;\r
7 \r
8 \r
9 # Get libcds version\r
10 my $Version = get_version();\r
11 print "Make libcds-$Version distributive\n";\r
12 \r
13 my $DistrDir = get_distrib_dir();\r
14 print "Distrib dir: $DistrDir\n";\r
15 \r
16 # Git clone\r
17 my $GitBranch = 'master';\r
18 my $GitRepo = get_git_repo();\r
19 print "Clone git: repo=$GitRepo, branch=$GitBranch\n";\r
20 `git clone -b $GitBranch $GitRepo $DistrDir`; # or die "Error cloning branch $GitBranch to $DistrDir\n";\r
21 print "Remove $DistrDir/.git directory\n";\r
22 `rm -fr $DistrDir/.git`;\r
23 `rm -f $DistrDir/.gitignore $DistrDir/tools/brush_cds.pl $DistrDir/tools/make_distrib.pl $DistrDir/tools/make_distrib.bat $DistrDir/doxygen/images.odp`;\r
24 \r
25 print "patch files...\n";\r
26 patch_file("$DistrDir/CMakeList.txt", 'PROJECT_VERSION \d+\.\d+\.\d+', "PROJECT_VERSION $Version" );\r
27 patch_file("$DistrDir/doxygen/cds.doxy", 'PROJECT_NUMBER\s*=\s*\d+\.\d+\.\d+', "PROJECT_NUMBER = $Version" ) ;\r
28 \r
29 print "Make docs\n";\r
30 `cd $DistrDir/tools && make_docs.bat && rm doxygen.log && cd $curDir`;\r
31   \r
32 print "make zip...\n" ;\r
33 `rm -f $DistrDir/../cds-$Version.zip` ;\r
34 `cd $DistrDir/.. && 7za a cds-$Version.zip cds-$Version` ;\r
35 \r
36 print "Done\n" ;\r
37 exit ;\r
38 \r
39   \r
40 sub get_version()\r
41 {\r
42         my $version;\r
43         open( my $fh, 'cds/version.h' ) or die "ERROR: Cannot find ../cds/version.h file";\r
44         binmode $fh ;\r
45         \r
46         while (<$fh>) {\r
47                 if ( /CDS_VERSION_STRING.+(\d+\.\d+\.\d+)/ ) {\r
48                         $version = $1 ;\r
49                         last    ;\r
50                 }\r
51         }\r
52         close $fh ;\r
53         die "ERROR: cannot find version in ../cds/version.h" unless $version ;\r
54 }\r
55 \r
56 sub get_distrib_dir()\r
57 {\r
58         my $dir = "../cds-distrib/cds-$Version";\r
59         `rm -fr $dir` if -d $dir;\r
60         mkdir $dir;\r
61         return $dir;\r
62 }\r
63 \r
64 sub get_git_repo()\r
65 {\r
66         return 'https://github.com/khizmax/libcds.git';\r
67 }\r
68 \r
69 sub patch_file(@) {\r
70         my $file = shift        ;\r
71         my $seek = shift        ;\r
72         my $repl = shift        ;\r
73         \r
74         if ( open( my $fh, $file )) {\r
75                 binmode $fh     ;\r
76                 \r
77                 my $str = ''    ;\r
78                 $str .= $_ while <$fh>  ;\r
79                 close $fh ;\r
80                 \r
81                 $str =~ s/$seek/$repl/g ;\r
82                 \r
83                 if ( open( my $fh, ">$file" )) {\r
84                         binmode $fh     ;\r
85                         print $fh $str  ;\r
86                         close $fh               ;\r
87                 }\r
88         }\r
89 }\r