This commit is contained in:
2021-10-14 13:47:35 +02:00
commit 6625a8dfaa
4026 changed files with 844291 additions and 0 deletions
@@ -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 $?");
}
@@ -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;
}
}
@@ -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;
}
@@ -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]");
}