init
This commit is contained in:
+89
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Intended to be run from linux-install_dependencies.pl which defines the dependencies_dir variable.
|
||||
#
|
||||
# Variables are wrt that parent scope
|
||||
#
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Getopt::Long;
|
||||
|
||||
use English;
|
||||
use FindBin;
|
||||
use File::Copy;
|
||||
use File::Spec;
|
||||
|
||||
# Version of CMake to install if needed (latest as of 08/2020)
|
||||
my $version_major = 3;
|
||||
my $version_minor = 18;
|
||||
my $version_patch = 1;
|
||||
|
||||
# Minimum version needed for the project.
|
||||
# 3.12 for FindPython functionalities.
|
||||
my $minimum_major = 3;
|
||||
my $minimum_minor = 15;
|
||||
|
||||
my $install_dir = $dependencies_dir;
|
||||
|
||||
# Updating path with potentially installed cmake before looking for it.
|
||||
if ("$dependencies_dir/cmake") {
|
||||
print "Found cmake folder in deps\n";
|
||||
my $path = $ENV{'PATH'};
|
||||
$path = "$dependencies_dir/cmake/bin:$path";
|
||||
$ENV{'PATH'} = $path;
|
||||
#system("PATH=$dependencies_dir/cmake/bin:$PATH")
|
||||
}
|
||||
|
||||
# Checking for CMake presence
|
||||
my $major_found = 0;
|
||||
my $minor_found = 0;
|
||||
|
||||
if (`which cmake`) {
|
||||
`cmake --version` =~ /.*(\d)\.(\d\d)\.*/;
|
||||
|
||||
print "cmake version found: $1.$2\n";
|
||||
|
||||
$major_found = $1;
|
||||
$minor_found = $2;
|
||||
}
|
||||
|
||||
# Minimum cmake version required for the project: 3.12
|
||||
if (int($major_found) < $minimum_major || int($minor_found) < $minimum_minor) {
|
||||
|
||||
my $old_dir = Cwd::getcwd();
|
||||
|
||||
my $cmake_archive = "cmake-${version_major}.${version_minor}.${version_patch}.tar.gz";
|
||||
my $cmake_folder = "cmake-${version_major}.${version_minor}.${version_patch}";
|
||||
|
||||
print "CMake version too low. Installing newer one in $install_dir\n";
|
||||
|
||||
if (! -d $install_dir) {
|
||||
mkdir($install_dir) or die("Failed to create directory [$install_dir]");
|
||||
}
|
||||
|
||||
# Download
|
||||
print "Downloading ${cmake_archive}\n";
|
||||
system("wget http://www.cmake.org/files/v${version_major}.${version_minor}/${cmake_archive}") == 0
|
||||
or die "Could not download the CMake sources - err $?";
|
||||
|
||||
# Extract
|
||||
system("tar -xzf ${cmake_archive}") == 0
|
||||
or die ("Could not extract the CMake archive - err $?");
|
||||
|
||||
# Configure, compile and install
|
||||
chdir $cmake_folder;
|
||||
system("./configure --prefix=$install_dir/cmake") == 0
|
||||
or die("Failed to configure for cmake - err $?");
|
||||
system("make install") == 0
|
||||
or die ("Failed make install cmake - err $?");
|
||||
|
||||
# Go back to previous folder
|
||||
chdir $old_dir;
|
||||
|
||||
#Clear
|
||||
system("rm -r ${cmake_archive} ${cmake_folder}") == 0
|
||||
or die ("Failed to clear after install - err $?");
|
||||
|
||||
}
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Intended to be run from linux-install_dependencies.pl
|
||||
#
|
||||
# Variables are wrt that parent scope
|
||||
#
|
||||
|
||||
# Installation of packages not available in the apt database or PPA
|
||||
# Eigen installation
|
||||
if (!$no_install && $distribution eq 'Ubuntu 16.04') {
|
||||
# Install eigen 3.2.9 from source if it is not already
|
||||
# This is because Ubuntu 16.04 has a beta version of the Eigen package by default
|
||||
# and it does not work
|
||||
if (-e "/usr/local/include/eigen3") {
|
||||
print STDERR "Warning: eigen3 is already installed in /usr/local\n";
|
||||
} else {
|
||||
my $old_dir = Cwd::getcwd();
|
||||
|
||||
my $eigen_build_folder = $dependencies_dir . "/eigen-build";
|
||||
my $eigen_extracted_folder = $eigen_build_folder . "/eigen-eigen-dc6cfdf9bcec";
|
||||
|
||||
if (! -e $dependencies_dir) {
|
||||
mkdir($dependencies_dir) or die("Failed to create directory [$dependencies_dir]");
|
||||
}
|
||||
if (! -e $eigen_build_folder) {
|
||||
mkdir($eigen_build_folder) or die("Failed to create directory [$eigen_build_folder]");
|
||||
}
|
||||
|
||||
chdir $eigen_build_folder;
|
||||
|
||||
if (! -e "3.2.9.tar.bz2") {
|
||||
system('wget "http://bitbucket.org/eigen/eigen/get/3.2.9.tar.bz2"');
|
||||
($CHILD_ERROR != 0) and die ("Could not download the Eigen sources [$CHILD_ERROR]");
|
||||
}
|
||||
if (! -e $eigen_extracted_folder) {
|
||||
system('tar -xjf "3.2.9.tar.bz2"');
|
||||
($CHILD_ERROR != 0) and die ("Could not extract the eigen archive");
|
||||
}
|
||||
|
||||
chdir $eigen_extracted_folder;
|
||||
mkdir $eigen_extracted_folder . "/build" or die ("Failed to create directory [$eigen_extracted_folder/build]");
|
||||
chdir $eigen_extracted_folder . "/build";
|
||||
|
||||
system("cmake ..");
|
||||
($CHILD_ERROR != 0) and die("Failed to run CMake for Eigen [$CHILD_ERROR]");
|
||||
|
||||
system("sudo make install");
|
||||
($CHILD_ERROR != 0) and die("Failed install Eigen [$CHILD_ERROR]");
|
||||
|
||||
# Go back to the scripts folder
|
||||
chdir $old_dir;
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Intended to be run from linux-install_dependencies.pl
|
||||
#
|
||||
# Variables are wrt that parent scope
|
||||
#
|
||||
|
||||
if (!$no_gtest) {
|
||||
my $old_dir = Cwd::getcwd();
|
||||
|
||||
my $gtest_build_folder = $dependencies_dir . "/gtest-build";
|
||||
my $gtest_lib_folder = $dependencies_dir . "/libgtest/";
|
||||
if (! -e $dependencies_dir) {
|
||||
mkdir($dependencies_dir) or die("Failed to create directory [$dependencies_dir]");
|
||||
}
|
||||
if (! -e $gtest_build_folder) {
|
||||
mkdir($gtest_build_folder) or die("Failed to create directory [$gtest_build_folder]");
|
||||
}
|
||||
if (! -e $gtest_lib_folder) {
|
||||
mkdir($gtest_lib_folder) or die("Failed to create directory [$gtest_lib_folder]");
|
||||
}
|
||||
|
||||
# build gtest
|
||||
chdir $gtest_build_folder;
|
||||
system("cmake -GNinja /usr/src/gtest");
|
||||
system("ninja all");
|
||||
system("rm CMakeCache.txt");
|
||||
my @lib_files = glob "*.a";
|
||||
|
||||
foreach my $lib_cur (@lib_files) {
|
||||
copy($lib_cur, $gtest_lib_folder) or die "Could not copy lib $lib_cur $!\n";
|
||||
}
|
||||
chdir $old_dir;
|
||||
|
||||
}
|
||||
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Intended to be run from linux-install_dependencies.pl
|
||||
#
|
||||
# Variables are wrt that parent scope
|
||||
#
|
||||
|
||||
if (!$no_install && $distribution eq 'Ubuntu 14.04') {
|
||||
system('sudo add-apt-repository ppa:fkrull/deadsnakes');
|
||||
($CHILD_ERROR != 0) and die("Adding PPA repository for Python 3.5 failed [$CHILD_ERROR]");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user