]> granicus.if.org Git - fortune-mod/blob - CI-testing/continuous-integration-testing.pl
7a3ed7fff8a4195a6126b189f3422cc1b0a0d25d
[fortune-mod] / CI-testing / continuous-integration-testing.pl
1 #!/usr/bin/env perl
2
3 use 5.014;
4 use strict;
5 use warnings;
6 use autodie;
7
8 use Path::Tiny qw/ path cwd /;
9 use Getopt::Long qw/ GetOptions /;
10
11 sub do_system
12 {
13     my ($args) = @_;
14
15     my $cmd = $args->{cmd};
16     print "Running [@$cmd]\n";
17     if ( system(@$cmd) )
18     {
19         die "Running [@$cmd] failed!";
20     }
21 }
22 my $cwd = cwd();
23
24 my $IS_WIN = ( $^O eq "MSWin32" );
25 my $MAKE   = $IS_WIN ? 'gmake' : 'make';
26
27 my $SEP  = $IS_WIN ? "\\" : '/';
28 my $SUDO = $IS_WIN ? ''   : 'sudo';
29
30 my $cmake_gen;
31 GetOptions( 'gen=s' => \$cmake_gen, )
32     or die 'Wrong options';
33
34 local $ENV{RUN_TESTS_VERBOSE} = 1;
35 if ( defined $cmake_gen )
36 {
37     $ENV{CMAKE_GEN} = $cmake_gen;
38 }
39
40 sub _transform
41 {
42     return shift(@_) =~ s%\\%\\\\%gr;
43 }
44 mkdir('B');
45 chdir('B');
46 if ( !$ENV{SKIP_RINUTILS_INSTALL} )
47 {
48     do_system(
49         {
50             cmd => [ qw#git clone https://github.com/shlomif/rinutils#, ]
51         }
52     );
53     do_system(
54         {
55             cmd => [
56                       qq#cd rinutils && mkdir B && cd B && cmake #
57                     . " -DWITH_TEST_SUITE=OFF "
58                     . ( defined($cmake_gen) ? qq# -G "$cmake_gen" # : "" )
59                     . (
60                     defined( $ENV{CMAKE_MAKE_PROGRAM} )
61                     ? " -DCMAKE_MAKE_PROGRAM=$ENV{CMAKE_MAKE_PROGRAM} "
62                     : ""
63                     )
64                     . ( $IS_WIN ? " -DCMAKE_INSTALL_PREFIX=C:/foo " : '' )
65                     . qq# .. && $SUDO $MAKE install#
66             ]
67         }
68     );
69 }
70 do_system( { cmd => [ "cmake", "--version" ] } );
71 my $CMAKE_PREFIX_PATH;
72
73 if ($IS_WIN)
74 {
75     $CMAKE_PREFIX_PATH = join ";", ( map { ; $IS_WIN ? "c:$_" : $_ } ("/foo") );
76
77     ( $ENV{CMAKE_PREFIX_PATH} //= '' ) .= ";$CMAKE_PREFIX_PATH;";
78
79     # ( $ENV{PKG_CONFIG_PATH} //= '' ) .= ";C:\\foo\\lib\\pkgconfig;";
80     ( $ENV{PKG_CONFIG_PATH} //= '' ) .=
81         ";/foo/lib/pkgconfig/;/c/foo/lib/pkgconfig/";
82     $ENV{RINUTILS_INCLUDE_DIR} = "C:/foo/include";
83 }
84 chdir($cwd);
85 $cwd->child('B')->remove_tree( { safe => 0, } );
86
87 my $WIN32__DOUBLE_AMPERSAND__PROPER_HANDLING__NEEDED_PREFIX = "cd . &&";
88 do_system(
89     {
90         cmd => [
91 "$WIN32__DOUBLE_AMPERSAND__PROPER_HANDLING__NEEDED_PREFIX mkdir B && cd B && cmake"
92                 . (
93                 defined($CMAKE_PREFIX_PATH)
94                 ? ( " -DCMAKE_PREFIX_PATH=" . _transform($CMAKE_PREFIX_PATH) )
95                 : ''
96                 )
97                 . " "
98                 . ( defined($cmake_gen) ? qq#-G "$cmake_gen"# : "" )
99                 . " ../fortune-mod && $MAKE && $MAKE check"
100         ]
101     }
102 );