use Cwd qw(abs_path getcwd);
use File::Path qw(make_path remove_tree);
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
$File::Fetch::BLACKLIST = [qw|lwp httptiny httplite|];
$path = abs_path(dirname($exe));
$jarfile_name = "create-app-assembly-1.18.jar";
open(JAVAVER, "$java -version 2>&1 |");
if ( m|version "?(\d+)\.(\d+)|i ) {
print "found java version ", join('.',@java_version), "\n";
die "cannot run $java" unless scalar(@java_version) > 0;
die "java version 1.8 or greater is required\n" unless $java_version[0] > 7 || ($java_version[0] == 1 && $java_version[1] >= 8);
$distro_jarfile = $jarfile = "$path/java/$jarfile_name";
$jarfile = "$path/../target/scala-2.12/$jarfile_name";
$jarfile = $distro_jarfile;
### pull from download url
my $jardir = dirname($jarfile);
my $ff = File::Fetch->new(uri => "http://casa.nrao.edu/download/devel/xml-casa/java/$jarfile_name");
my $where = $ff->fetch( to => $jardir );
die "configuration error, cannot find jar file ($jarfile_name)" unless -e $jarfile;
open( VER_IN, "< casa-source/casatools/src/code/stdcasa/version.cc.in" );
open( VER_OUT, "> source/casa-version.cc" );
while ( $_ = <VER_IN> ) {
s|\@CASA_VERSION_MAJOR\@|$major_ver|g;
s|\@CASA_VERSION_MINOR\@|$minor_ver|g;
s|\@CASA_VERSION_PATCH\@|$patch_ver|g;
s|\@CASA_VERSION_FEATURE\@|$build_ver|g;
if ( ! -f "casa-source/casatools/casacore/casa/version.cc" ) {
die "casacore version file (casa-source/casatools/casacore/casa/version.cc) does not exist...";
copy("casa-source/casatools/casacore/casa/version.cc","source/casacore-version.cc");
if ( -f "casa-source/casatools/casacore/casa/version.h.in" ) {
open( CFG, "< casa-source/casatools/casacore/CMakeLists.txt" );
m|set\s*\(\s*PROJECT_VERSION_MAJOR\s+(\d+)\s*\)| && ($casacore_major = $1, next);
m|set\s*\(\s*PROJECT_VERSION_MINOR\s+(\d+)\s*\)| && ($casacore_minor = $1, next);
m|set\s*\(\s*PROJECT_VERSION_PATCH\s+(\d+)\s*\)| && ($casacore_patch = $1, next);
open( HIN, "< casa-source/casatools/casacore/casa/version.h.in" );
open( HOUT, "> casa-source/casatools/casacore/casa/version.h" );
s|\@PROJECT_VERSION_MAJOR\@|$casacore_major|g;
s|\@PROJECT_VERSION_MINOR\@|$casacore_minor|g;
s|\@PROJECT_VERSION_PATCH\@|$casacore_patch|g;