#!/usr/bin/env perl use strict; use warnings; use diagnostics; use FindBin; use lib $FindBin::Bin; use Util; use TUI; use feature 'say'; my $date = Util::date_now; my $local_root = '/home/christoph/Notes/TU/MastersThesis/FailNix'; my $local_builds_dir = "$local_root/builds"; my $local_experiments_dir = "$local_root/targets/wasm-module"; my $justbin = "$local_root/just-bin/just"; my $justfile = "$local_root/scripts/nixos.just"; my @targets = ( "fail", "linux", "linux-baremetal" ); my @modes = ( "c", "aot", "interp" ); sub just { say "Running: just @_..."; system("$justbin -d $local_root -f $justfile @_") and die "Build failed"; } # Find and select experiments my @experiments = map { s/\.cpp//r } Util::find_files($local_experiments_dir); my @selected_experiments = TUI::select_from_list( "Select Experiments to Build", 1, @experiments ); die "No experiment selected" unless @selected_experiments; # Select targets my @selected_targets = TUI::select_from_list( "Select Targets Platforms", 1, @targets ); die "No target selected" unless @selected_targets; # Select modes my @selected_modes = TUI::select_from_list( "Select Execution Modes", 1, @modes ); die "No mode selected" unless @selected_modes; # Build everything # TODO: linux-baremetal target is broken system( "mkdir", "-p", "$local_builds_dir" ); foreach my $experiment (@selected_experiments) { foreach my $target (@selected_targets) { foreach my $mode (@selected_modes) { just( "build", $experiment, $target, $mode ); system( join " ", ( "mv", "$local_root/build-$experiment", "$local_builds_dir/${date}_$experiment-$target-$mode", ) ); } } }