Compare commits

..

6 Commits

Author SHA1 Message Date
Ettore Di Giacinto 7b2adad931 builder: include also injected_packages in overlays detection 2017-06-18 12:58:21 +02:00
Ettore Di Giacinto 6283b34be8 builder: parse overlays also from package list 2017-06-18 12:26:07 +02:00
Ettore Di Giacinto 11812ff1a2 move QA checks on the bottom, enhance output display and fix depchecking when package contain overlay name 2017-06-05 21:13:30 +02:00
Ettore Di Giacinto e31a06cee3 add gitignore 2017-05-21 14:33:36 +02:00
Ettore Di Giacinto b91870c72d sabayon-buildpackages: add support for DETECT_OBSOLETE and TARGET_OVERLAY 2017-05-21 14:16:04 +02:00
Ettore Di Giacinto b1726fdb4d builder: add DETECT_OBSOLETE 2017-05-21 14:13:59 +02:00
4 changed files with 48 additions and 37 deletions
+1
View File
@@ -0,0 +1 @@
*.bak
+45 -37
View File
@@ -3,6 +3,7 @@
use Getopt::Long;
use v5.10;
no feature "say";
use Storable 'dclone';
my $profile = $ENV{BUILDER_PROFILE} // 3;
my $jobs = $ENV{BUILDER_JOBS} // 1;
@@ -41,6 +42,8 @@ my $qualityassurance_checks = $ENV{QA_CHECKS} // 0;
my $remote_conf_portdir = $ENV{REMOTE_CONF_PORTDIR};
my $remote_portdir = $ENV{REMOTE_PORTDIR};
my $pretend = $ENV{PRETEND} // 0;
my $obsoleted = $ENV{DETECT_OBSOLETE} // 0;
my $target_overlay = $ENV{TARGET_OVERLAY};
my $make_conf = $ENV{MAKE_CONF};
@@ -89,6 +92,8 @@ sub append_to_file {
close $fh_a;
}
sub parse_overlays { map{ $_ =~ s/.*?\:\://g; $_ } @{ dclone(\@_) }; }
sub add_portage_repository {
my $repo = $_[0];
my $reponame;
@@ -236,8 +241,9 @@ sub uniq {
keys %{ { map { $_ => 1 } @_ } };
}
sub detect_useflags
{ # Detect useflags defined as [-alsa,avahi] in atom, and fill $hash within the $target sub-hash
# Detect useflags defined as [-alsa,avahi] in atom,
# and fill $hash within the $target sub-hash
sub detect_useflags {
my ( $target, $packages ) = @_;
my @packs = @{$packages};
for my $i ( 0 .. $#packs ) {
@@ -303,6 +309,15 @@ sub help {
say "****************************************************";
my $per_package_useflags;
my @packages = @ARGV;
my @injected_packages = $build_injected_args ? split( / /, $build_injected_args ) : ();
my @parsed_overlays = grep { $_ !~ /gentoo/i } parse_overlays(@packages,@injected_packages);
say "Detected overlays: @parsed_overlays" if @parsed_overlays;
@overlays = uniq(@overlays,@parsed_overlays);
if ( @overlays > 0 ) {
say "Overlay(s) to add";
foreach my $overlay (@overlays) {
@@ -316,13 +331,12 @@ say "\t* " . $_ for @ARGV;
say "[*] Syncing configurations files, Layman and Portage";
if($pretend){
say "[*] PRETEND enabled, no real action will be performed.";
say " Bear in mind that in such way the list of packages";
say " that emerge will try to compile will be bigger";
$equo_install_args.=" -p";
$emerge_defaults_args.=" -p"
if ($pretend) {
say "[*] PRETEND enabled, no real action will be performed.";
say " Bear in mind that in such way the list of packages";
say " that emerge will try to compile will be bigger";
$equo_install_args .= " -p";
$emerge_defaults_args .= " -p";
}
# Syncronizing portage configuration and adding overlays
@@ -464,15 +478,9 @@ if ($use_equo) {
system("cp -rf $make_conf /etc/portage/make.conf") if $make_conf;
my $per_package_useflags;
my @packages = @ARGV;
my @injected_packages = ();
if ($build_injected_args) {
@injected_packages = split( / /, $build_injected_args );
say "[*] Injected installs:";
say "\t* " . $_ for @injected_packages;
if( @injected_packages ) {
say "[*] Injected installs:";
say "\t* " . $_ for @injected_packages;
}
# Allow users to specify atoms as: media-tv/kodi[-alsa,avahi]
@@ -533,7 +541,7 @@ if ($use_equo) {
safe_call("equo i $equo_install_args --bdeps $_")
for ( @packages_deps, @equo_install )
; ## bail out here, if installs fails. emerge will compile a LOT of stuff
if ( @equo_remove > 0 and !$pretend) {
if ( @equo_remove > 0 and !$pretend ) {
say "Removing with equo: @equo_remove";
system("equo rm --nodeps $_") for (@equo_remove);
}
@@ -547,16 +555,6 @@ if ($use_equo) {
}
}
if ( $qualityassurance_checks == 1 ) {
say "*** Repoman checks ***";
for ( @packages, @injected_packages ) {
say "*** QA checks for $_";
system(
"pushd \$(dirname \$(equery which $_ 2>/dev/null)); repoman; popd"
);
}
}
say "*** Ready to compile, finger crossed ***";
system("emerge --info")
@@ -564,7 +562,7 @@ system("emerge --info")
my $rt;
if ( $emerge_remove and $emerge_remove ne "") {
if ( $emerge_remove and $emerge_remove ne "" ) {
say "Removing with emerge: $emerge_remove";
system("emerge -C $_") for split( / /, $emerge_remove );
}
@@ -582,7 +580,7 @@ my $return = $rt >> 8;
# best effort -B
compile_packs( "injected_targets", @injected_packages );
if ($preserved_rebuild and !$pretend) {
if ( $preserved_rebuild and !$pretend ) {
system("emerge -j $jobs --buildpkg \@preserved-rebuild");
system("revdep-rebuild");
@@ -590,17 +588,27 @@ if ($preserved_rebuild and !$pretend) {
}
if ( $qualityassurance_checks == 1 ) {
say "*** Missing dependencies checks ***";
for (@packages) {
say "*** DEPEND for $_";
system("dynlink-scanner $_");
system("depcheck $_");
say "*** Quality assurance ***";
foreach my $pn ( @packages, @injected_packages ) {
say ">> Running repoman on $pn";
system(
"pushd \$(dirname \$(equery which $pn 2>/dev/null)); repoman; popd"
);
$pn =~ s/\:\:.*//g;
say ">> Detecting missing dependencies for $pn";
system("dynlink-scanner $pn");
system("depcheck $pn");
}
}
if ( $obsoleted and $target_overlay ) {
say "*** Detecting obsoletes ***";
system("sabayon-detectobsolete --overlay ${target_overlay}");
}
# Copy files to artifacts folder
system(
"mkdir -p $artifacts_folder;cp -rfv /usr/portage/packages $artifacts_folder"
) if ( $artifacts_folder and !$return and !$pretend);
) if ( $artifacts_folder and !$return and !$pretend );
exit($return);
+2
View File
@@ -57,6 +57,8 @@ docker_volumes=( -v "$OUTPUT_DIR:/usr/portage/packages" )
[ -z "$REMOTE_PORTDIR" ] || docker_env+=(-e "REMOTE_PORTDIR=$REMOTE_PORTDIR")
[ -z "$ETP_NOCACHE" ] || docker_env+=(-e "ETP_NOCACHE=$ETP_NOCACHE")
[ -z "$PRETEND" ] || docker_env+=(-e "PRETEND=$PRETEND")
[ -z "$DETECT_OBSOLETE" ] || docker_env+=(-e "DETECT_OBSOLETE=$DETECT_OBSOLETE")
[ -z "$TARGET_OVERLAY" ] || docker_env+=(-e "TARGET_OVERLAY=$TARGET_OVERLAY")
[ -d "$LOCAL_OVERLAY" ] && docker_volumes+=(-v "$LOCAL_OVERLAY:/usr/local/local_portage")
if [ -e $MAKE_CONF ]; then
Regular → Executable
View File