From 350e3d100054d8e6eab15905adb7ea1d69a2bb4c Mon Sep 17 00:00:00 2001 From: mudler Date: Sat, 13 Aug 2016 13:04:45 +0200 Subject: [PATCH] [builder] split up into functions --- builder | 111 ++++++++++++++++++++++++++------------------------------ 1 file changed, 51 insertions(+), 60 deletions(-) diff --git a/builder b/builder index f37e7e4..021f357 100755 --- a/builder +++ b/builder @@ -219,6 +219,51 @@ sub uniq { keys %{ { map { $_ => 1 } @_ } }; } +sub detect_useflags +{ # Detect useflags defined as [-alsa,avahi] in atom, and fill $hash within the $target sub-hash + my ( $hash, $target, $packages ) = @_; + my @packs = @{$packages}; + for my $i ( 0 .. $#packs ) { + if ( $packages->[$i] =~ /\[(.*?)\]/ ) { + my $flags = $1; + $packages->[$i] =~ s/\[.*?\]//g; + $hash->{$target}->[$i] = [ +split( /,/, $flags ) ]; + } + } +} + +sub compile_packs { + my ( $per_package_useflags, $target, @packages ) = @_; + my $extra_arg; + $extra_arg = "-B" if $target eq "injected_targets"; + my $package_counter = 0; + my $return; + for my $pack (@packages) { + my $tmp_rt; + say "\n" x 2, "==== Compiling $pack ====", "\n" x 2; + if ( defined $per_package_useflags->{$target}->[$package_counter] + and @{ $per_package_useflags->{$target}->[$package_counter] } > 0 ) + { + $tmp_rt = system( + "USE=\"" + . join( " ", + @{ $per_package_useflags->{$target}->[$package_counter] } ) + . "\" emerge $emerge_defaults_args -j $jobs $extra_arg $pack" + ); + } + else { + $tmp_rt = + system("emerge $emerge_defaults_args -j $jobs $extra_arg $pack"); + } + $package_counter++; + + $return = $tmp_rt + if ( $? == -1 or $? & 127 or !$rt ) + ; # if one fails, the build should be considered failed! + } + return $return; +} + sub help { say "-> You should feed me with something", "", "Examples:", "", "\t$0 app-text/tree", "\t$0 plasma-meta --layman kde", "", @@ -371,29 +416,19 @@ if ($build_injected_args) { @injected_packages = split( / /, $build_injected_args ); } + # Allow users to specify atoms as: media-tv/kodi[-alsa,avahi] if ($emerge_split_install) { # For targets this will be available only if split_install is enabled - for my $i ( 0 .. $#packages ) { - if ( $packages[$i] =~ /\[(.*?)\]/ ) { - my $flags = $1; - $packages[$i] =~ s/\[.*?\]//g; - $per_package_useflags->{targets}->[$i] = [ +split( /,/, $flags ) ]; - } - } + detect_useflags( $per_package_useflags, "targets", \@packages ); } else { map { $_ =~ s/\[.*?\]//g; $_; } @packages ; # Clean up [] if user didn't specified split_install, but specified a useflag combination } -for my $i ( 0 .. $#injected_packages ) { - if ( $injected_packages[$i] =~ /\[(.*?)\]/ ) { - my $flags = $1; - $injected_packages[$i] =~ s/\[.*?\]//g; - $per_package_useflags->{injected_targets}->[$i] = [ +split( /,/, $1 ) ]; - } -} +detect_useflags( $per_package_useflags, "injected_targets", + \@injected_packages ); if ($use_equo) { @@ -475,27 +510,7 @@ if ( $emerge_remove and $emerge_remove ne "" ) { } if ($emerge_split_install) { - my $package_counter = 0; - for my $pack (@packages) { - my $tmp_rt; - say "\n" x 2, "==== Compiling $pack ====", "\n" x 2; - if ( defined $per_package_useflags->{targets}->[$package_counter] - and @{ $per_package_useflags->{targets}->[$package_counter] } > 0 ) - { - $tmp_rt = system( - "USE=\"" - . join( " ", - @{ $per_package_useflags->{targets}->[$package_counter] } ) - . "\" emerge $emerge_defaults_args -j $jobs $pack" - ); - } - else { - $tmp_rt = system("emerge $emerge_defaults_args -j $jobs $pack"); - } - $package_counter++; - -# $rt=$tmp_rt if ($? == -1 or $? & 127 or !$rt); # if one fails, the build should be considered failed! - } + compile_packs( $per_package_useflags, "targets", @packages ); $rt = 0; #consider the build good anyway, like a "keep-going" } else { @@ -505,31 +520,7 @@ else { my $return = $rt >> 8; # best effort -B -my $package_counter = 0; -for my $pack (@injected_packages) { - my $tmp_rt; - say "\n" x 2, "==== Compiling (build-only) $pack ====", "\n" x 2; - if ( defined $per_package_useflags->{injected_targets}->[$package_counter] - and @{ $per_package_useflags->{injected_targets}->[$package_counter] } - > 0 ) - { - $tmp_rt = system( - "USE=\"" - . join( - " ", - @{ - $per_package_useflags->{injected_targets} - ->[$package_counter] - } - ) - . "\" emerge $emerge_defaults_args -j $jobs -B $pack" - ); - } - else { - $tmp_rt = system("emerge $emerge_defaults_args -j $jobs -B $pack"); - } - $package_counter++; -} +compile_packs( $per_package_useflags, "injected_targets", @injected_packages ); if ($preserved_rebuild) {