#!/usr/bin/perl use File::Fetch; use File::Copy; use File::Basename; use Cwd qw(abs_path getcwd); use File::Path qw(make_path remove_tree); use POSIX qw(strftime); use Config; #Fetch failed! HTTP response: 500 Internal Server Error [500 Can't verify SSL peers without knowing which Certificate Authorities to trust] at scripts/create-app line 62. $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; ### ### avoid: TLSv1.0 backends... ### $File::Fetch::BLACKLIST = [qw|lwp httptiny httplite|]; $exe = abs_path($0); $path = abs_path(dirname($exe)); $java = '/usr/bin/java'; $jarfile_name = "create-app-assembly-1.18.jar"; @java_version = ( ); open(JAVAVER, "$java -version 2>&1 |"); foreach ( ) { if ( m|version "?(\d+)\.(\d+)|i ) { @java_version = ($1,$2); print "found java version ", join('.',@java_version), "\n"; } } close(JAVAVER); 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); ### install path $distro_jarfile = $jarfile = "$path/java/$jarfile_name"; if ( ! -e $jarfile ) { ### development path $jarfile = "$path/../target/scala-2.12/$jarfile_name"; if ( ! -e $jarfile ) { $jarfile = $distro_jarfile; ### pull from download url my $jardir = dirname($jarfile); make_path($jardir); 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; $major_ver = '1'; $minor_ver = '0'; $patch_ver = '0'; $build_ver = '0'; make_path("source"); open( VER_IN, "< casa-source/casatools/src/code/stdcasa/version.cc.in" ); open( VER_OUT, "> source/casa-version.cc" ); while ( $_ = ) { 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; print VER_OUT $_; } close(VER_OUT); close(VER_IN); 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" ) { my $casacore_major = ""; my $casacore_minor = ""; my $casacore_patch = ""; open( CFG, "< casa-source/casatools/casacore/CMakeLists.txt" ); while ( $_ = ) { 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); } close(CFG); open( HIN, "< casa-source/casatools/casacore/casa/version.h.in" ); my @hin = ; close(HIN); open( HOUT, "> casa-source/casatools/casacore/casa/version.h" ); foreach ( @hin ) { s|\@PROJECT_VERSION_MAJOR\@|$casacore_major|g; s|\@PROJECT_VERSION_MINOR\@|$casacore_minor|g; s|\@PROJECT_VERSION_PATCH\@|$casacore_patch|g; print HOUT $_; } close(HOUT); } make_path("include/casacore/casa"); make_path("include/casagrpc/protos"); open(CONFIG_H,"> include/casacore/casa/config.h"); print CONFIG_H casacore_config( ); close(CONFIG_H); sub casacore_config { my $contents = <<'END-OF-STR'; #ifndef CASA_CONFIG_H #define CASA_CONFIG_H #define CASA_DEFAULT_ALIGNMENT (32UL) #endif END-OF-STR return $contents; }