#!/sw/bin/perl #use strict #Checking for correct usage sub usage() { print STDERR "usage: $0 versionfile1 versionfile2\n"; print STDERR "where versionfile1 and versionfile2 are filenames like\n"; print STDERR "directory/versions_CGAL-3.4-I-28.\n"; print STDERR "The order of the two version files is not important.\n\n"; } if ($#ARGV != 1) { usage(); die "\n"; } my $scripts_dir= "/projects/CGAL/admin_scripts/"; my $data_dir= "${scripts_dir}DATA/"; my $testsuite_dir = '/users/www/CGAL/Members/Develop/testsuite'; my $new_version; my $old_version; my ($v1,$v2,$v3,$u1,$u2,$u3); my $versionv=shift or die; if ( !(($v1,$v2,$v3)= ($versionv =~ /versions_CGAL-(\d+)\.(\d+)-I-(\d+)$/)) ) { usage(); die "Invalid first version file with name $versionv\n"; } my $versionu=shift or die; if ( !(($u1,$u2,$u3)= ($versionu =~ /versions_CGAL-(\d+)\.(\d+)-I-(\d+)$/) ) ) { usage(); die "Invalid second version file with name $versionu\n"; } my $swap_versions = 0; if ($v1 == $u1 && $v2 == $u2 && $v3 == $u3) { die "Versions are the same ($v1-$v2-$v3\n)"; } if ($u1 > $v1 || ($u1 == $v1 && ($u2 > $v2 || ($u2 == $v2 && $u3 > $v3))) ) { $swap_versions = 1; } die "File $versionv does not exist or is not readable" if (! -r $versionv ); die "File $versionu does not exist or is not readable" if (! -r $versionu ); die "No write permission in $data_dir" if (! -w $data_dir); umask(02); # end of checking of input my %new_versions; my %old_versions; unlink "${data_dir}version_info", "${data_dir}new_versions", "${data_dir}new_packages", "${data_dir}removed_packages", "${data_dir}latest_versions", "${data_dir}version_info"; open(VERSION_INFO, ">${data_dir}version_info"); if ($swap_versions) { $new_version = "CGAL-${u1}.${u2}-I-${u3}"; $old_version = "CGAL-${v1}.${v2}-I-${v3}"; print VERSION_INFO "CGAL-${u1}.${u2}-I-${u3} "; print VERSION_INFO "CGAL-${v1}.${v2}-I-${v3}\n"; open(NEW_VERSIONS,"<${versionu}") or die; open(OLD_VERSIONS,"<$versionv") or die; } else { $old_version = "CGAL-${u1}.${u2}-I-${u3}"; $new_version = "CGAL-${v1}.${v2}-I-${v3}"; print VERSION_INFO "CGAL-${v1}.${v2}-I-${v3} "; print VERSION_INFO "CGAL-${u1}.${u2}-I-${u3}\n"; open(NEW_VERSIONS,"<$versionv") or die; open(OLD_VERSIONS,"<$versionu") or die; } close VERSION_INFO or die; open(UPDATED,">${data_dir}new_versions") or die; system('chgrp','cgal',"${data_dir}new_versions"); open(NEW_PACKAGES,">${data_dir}new_packages") or die; system('chgrp','cgal',"${data_dir}new_packages"); open(DELETED,">${data_dir}removed_packages") or die; system('chgrp','cgal',"${data_dir}removed_packages"); open(FORMATTED_VERSIONS,">${data_dir}latest_versions") or die; system('chgrp','cgal',"${data_dir}latest_versions"); while() { if (m/^\s*(.*?)\s*:\s*(.*?)\s*$/) { $old_versions{$1}=$2; } } close OLD_VERSIONS or die; my $pckge='aapje'; my $vrsion; format FORMATTED_VERSIONS= @<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<< $pckge, $vrsion . while() { if (m/^\s*(.*?)\s*:\s*(.*?)\s*$/) { ($pckge,$vrsion) = ($1,$2); write FORMATTED_VERSIONS; $new_versions{$1}=$2; } } close NEW_VERSIONS or die; my ($key, $value); while (($key,$value) = each %new_versions) { if (exists $old_versions{$key} ) { if ( $value ne $old_versions{$key} ) { print UPDATED "$key\n"; } } else { print NEW_PACKAGES "$key\n"; } } while (($key,$value) = each %old_versions) { if (!exists $new_versions{$key} ) { print DELETED "$key\n"; } } close(UPDATED) or die; close(NEW_PACKAGES) or die; close(DELETED) or die; close(FORMATTED_VERSIONS) or die; system("${scripts_dir}print_release_page"); chdir($testsuite_dir); system("echo","./create_testresult_page", '-p', $old_version, $new_version); system("./create_testresult_page", '-p', $old_version, $new_version);