5 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
\r
10 my $Version = get_version();
\r
11 print "Make libcds-$Version distributive\n";
\r
13 my $DistrDir = get_distrib_dir();
\r
14 print "Distrib dir: $DistrDir\n";
\r
17 my $GitBranch = get_git_branch();
\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`;
\r
25 print "make copyright...\n" ;
\r
26 makeCopyright($DistrDir);
\r
28 print "patch files...\n";
\r
29 patch_file("$DistrDir/build/Makefile", 'VERSION=\d+\.\d+\.\d+', "VERSION=$Version" ) ;
\r
30 patch_file("$DistrDir/doxygen/cds.doxy", 'PROJECT_NUMBER\s*=\s*\d+\.\d+\.\d+', "PROJECT_NUMBER = $Version" ) ;
\r
31 patch_file("$DistrDir/projects/android/jni/Android.mk", 'CDS_LIBRARY_VERSION\s*:=\s*\d+\.\d+\.\d+',
\r
32 "CDS_LIBRARY_VERSION := $Version" );
\r
34 print "Make docs\n";
\r
35 `cd $DistrDir/tools && make_docs.bat && rm doxygen.log && cd $curDir`;
\r
37 print "make zip...\n" ;
\r
38 `rm -f $DistrDir/../cds-$Version.zip` ;
\r
39 `cd $DistrDir/.. && 7za a cds-$Version.zip cds-$Version` ;
\r
48 open( my $fh, 'cds/version.h' ) or die "ERROR: Cannot find ../cds/version.h file";
\r
52 if ( /CDS_VERSION_STRING.+(\d+\.\d+\.\d+)/ ) {
\r
58 die "ERROR: cannot find version in ../cds/version.h" unless $version ;
\r
61 sub get_distrib_dir()
\r
63 my $dir = "../cds-distrib/cds-$Version";
\r
64 `rm -fr $dir` if -d $dir;
\r
71 return 'git@github.com:khizmax/libcds.git';
\r
74 sub get_git_branch()
\r
76 my $branchList = `git branch`;
\r
77 #print "$branchList\n";
\r
79 # Search "v$Version-rc" branch
\r
80 my ($branch) = $branchList =~ /(v$Version-rc\d*)/g;
\r
81 return $branch || 'master';
\r
84 sub makeCopyright($)
\r
86 my $distrDir = shift;
\r
87 processDir( "$distrDir/cds" ) ;
\r
88 processDir( "$distrDir/src" ) ;
\r
89 processDir( "$distrDir/tests/test-hdr" ) ;
\r
90 processDir( "$distrDir/tests/unit" ) ;
\r
91 processDir( "$distrDir/tests/cppunit" ) ;
\r
96 my $dirName = shift ;
\r
98 opendir(my $dh, $dirName) || die "can't opendir $dirName: $!";
\r
99 my @files = grep { /^[^\.]/ } readdir($dh);
\r
102 foreach my $file ( @files ) {
\r
103 if ( -d "$dirName/$file" ) {
\r
104 processDir("$dirName/$file") ;
\r
106 elsif ( $file =~ /\.(h|cpp)$/ ) {
\r
107 processFile( "$dirName/$file" ) ;
\r
112 sub processFile( $ )
\r
117 if ( open( my $fh, $file )) {
\r
121 if ( /^\/\/\$\$CDS-header\$\$/ ) {
\r
124 This file is a part of libcds - Concurrent Data Structures library
\r
127 (C) Copyright Maxim Khizhinsky (libcds.dev\@gmail.com) 2006-$year
\r
128 Distributed under the BSD license (see accompanying file license.txt)
\r
130 Source code repo: http://github.com/khizmax/libcds/
\r
131 Download: http://sourceforge.net/projects/libcds/files/
\r
134 elsif ( /^\/\/\$\$CDS-\/\*\$\$/ ) {
\r
137 elsif ( /^\/\/\$\$CDS-\*\/\$\$/ ) {
\r
141 $nTabsFound += $_ =~ s/\t/ /g;
\r
150 if ( open( my $fh, ">$file" )) {
\r
158 sub patch_file(@) {
\r
163 if ( open( my $fh, $file )) {
\r
167 $str .= $_ while <$fh> ;
\r
170 $str =~ s/$seek/$repl/g ;
\r
172 if ( open( my $fh, ">$file" )) {
\r