Compare commits

...

6 Commits

Author SHA1 Message Date
Ben Roberts 9119c8c973 Merge branch 'prune_virtual_fixes' 2016-09-11 17:41:08 +01:00
Ben Roberts 632053fc2f Print the builder docker commandline to aid in debugging 2016-09-11 17:19:11 +01:00
Ben Roberts 6fc14f7605 Expose /vagrant from the buildbox into the docker container to aid in debugging 2016-09-11 17:18:49 +01:00
Ben Roberts 4268b06305 Fix virtual pruning by switching from state to global variable for package_deps cache 2016-09-11 17:18:20 +01:00
mudler a66dc7bb23 builder: added check for missing DEPEND/RDEPEND in QA phase 2016-09-10 15:00:09 +02:00
mudler 1c4389a8aa Makefile: cleanup 2016-09-10 14:49:24 +02:00
3 changed files with 33 additions and 15 deletions
+2 -2
View File
@@ -23,10 +23,10 @@ install:
install -d $(DESTDIR)/$(USBINDIR) install -d $(DESTDIR)/$(USBINDIR)
install -m 0755 builder $(DESTDIR)/$(USBINDIR)/ install -m 0755 builder $(DESTDIR)/$(USBINDIR)/
install -d $(DESTDIR)/$(UBINDIR)
install -m 0755 depcheck $(DESTDIR)/$(UBINDIR)/ install -m 0755 depcheck $(DESTDIR)/$(UBINDIR)/
install -m 0755 dynlink-scanner $(DESTDIR)/$(UBINDIR)/ install -m 0755 dynlink-scanner $(DESTDIR)/$(UBINDIR)/
gcc try_dlopen.c -o try_dlopen -ldl gcc try_dlopen.c -o try_dlopen -ldl
install -m 0755 try_dlopen $(DESTDIR)/$(UBINDIR)/ install -m 0755 try_dlopen $(DESTDIR)/$(UBINDIR)/
install -d $(DESTDIR)/$(UBINDIR)
install -m 0755 sabayon-* $(DESTDIR)/$(UBINDIR)/ install -m 0755 sabayon-* $(DESTDIR)/$(UBINDIR)/
+29 -12
View File
@@ -37,7 +37,7 @@ my $equo_masks = $ENV{EQUO_MASKS};
my $equo_unmasks = $ENV{EQUO_UNMASKS}; my $equo_unmasks = $ENV{EQUO_UNMASKS};
my $equo_install_args = $ENV{EQUO_INSTALL_ARGS} // "--multifetch=10"; my $equo_install_args = $ENV{EQUO_INSTALL_ARGS} // "--multifetch=10";
my $remote_overlay = $ENV{REMOTE_OVERLAY}; my $remote_overlay = $ENV{REMOTE_OVERLAY};
my $repoman_check = $ENV{QA_CHECKS} // 0; my $qualityassurance_checks = $ENV{QA_CHECKS} // 0;
my $remote_conf_portdir = $ENV{REMOTE_CONF_PORTDIR}; my $remote_conf_portdir = $ENV{REMOTE_CONF_PORTDIR};
my $remote_portdir = $ENV{REMOTE_PORTDIR}; my $remote_portdir = $ENV{REMOTE_PORTDIR};
@@ -123,17 +123,17 @@ auto-sync = yes' > /etc/portage/repos.conf/$reponame.conf
} }
# Input: package, depth, and atom. Package: sys-fs/foobarfs, Depth: 1 (depth of the package tree) , Atom: 1/0 (enable disable atom output) # Input: package, depth, and atom. Package: sys-fs/foobarfs, Depth: 1 (depth of the package tree) , Atom: 1/0 (enable disable atom output)
my %package_dep_cache;
sub package_deps { sub package_deps {
my $package = shift; my $package = shift;
my $depth = shift // 1; # defaults to 1 level of depthness of the tree my $depth = shift // 1; # defaults to 1 level of depthness of the tree
my $atom = shift // 0; my $atom = shift // 0;
# Since we expect this sub to be called multiple times with the same arguments, cache the results # Since we expect this sub to be called multiple times with the same arguments, cache the results
state %cache;
$cache_key = "${package}:${depth}:${atom}"; $cache_key = "${package}:${depth}:${atom}";
if ( !exists $cache{$cache_key} ) { if ( !exists $package_dep_cache{$cache_key} ) {
@dependencies = my @dependencies =
qx/equery -C -q g --depth=$depth $package/; #depth=0 it's all qx/equery -C -q g --depth=$depth $package/; #depth=0 it's all
chomp @dependencies; chomp @dependencies;
@@ -148,10 +148,10 @@ sub package_deps {
@dependencies @dependencies
); );
$cache{$cache_key} = \@dependencies; $package_dep_cache{$cache_key} = \@dependencies;
} }
return @{ $cache{$cache_key} }; return @{ $package_dep_cache{$cache_key} };
} }
#Input: nothing #Input: nothing
@@ -178,18 +178,26 @@ sub calculate_missing {
my @dependencies = package_deps( $package, $depth, 1 ); my @dependencies = package_deps( $package, $depth, 1 );
if ($prune_virtuals) { if ($prune_virtuals) {
say "[$package] Pruning dependencies of virtual packages";
my %install_dependencies = map { $_ => 1 } @dependencies; my %install_dependencies = map { $_ => 1 } @dependencies;
# Look for any virtuals and remove its immediate dependencies to avoid # Look for any virtuals and remove its immediate dependencies to avoid
# installing multiple conflicting packages one by one # installing multiple conflicting packages one by one
my @virtual_deps; my @virtual_deps = ();
for my $dep (@dependencies) { for my $dep (@dependencies) {
push( @virtual_deps, package_deps( $dep, 1, 1 ) ) if ( $dep =~ /^virtual\// ) {
if ( $dep =~ /^virtual\// ); my @child_deps = package_deps($dep, 1, 1);
push( @virtual_deps, @child_deps );
}
} }
# Deduplicate the list
@virtual_deps = uniq(@virtual_deps);
# Prune the dependencies of the virtual packages from the dependencies list
for my $dep (@virtual_deps) { for my $dep (@virtual_deps) {
$install_dependencies{$dep} = 0 if ( $dep !~ /^virtual\// ); if ( $dep !~ /^virtual\// ) {
$install_dependencies{$dep} = 0;
}
} }
@dependencies = grep { $install_dependencies{$_} } @dependencies; @dependencies = grep { $install_dependencies{$_} } @dependencies;
} }
@@ -494,7 +502,7 @@ if ($use_equo) {
} }
} }
if ( $repoman_check == 1 ) { if ( $qualityassurance_checks == 1 ) {
say "*** Repoman checks ***"; say "*** Repoman checks ***";
for ( @packages, @injected_packages ) { for ( @packages, @injected_packages ) {
say "*** QA checks for $_"; say "*** QA checks for $_";
@@ -534,6 +542,15 @@ if ($preserved_rebuild) {
} }
if ( $qualityassurance_checks == 1 ) {
say "*** Missing dependencies checks ***";
for ( @packages ) {
say "*** DEPEND for $_";
system("dynlink-scanner $_");
system("depcheck $_");
}
}
# Copy files to artifacts folder # Copy files to artifacts folder
system( system(
"mkdir -p $artifacts_folder;cp -rfv /usr/portage/packages $artifacts_folder" "mkdir -p $artifacts_folder;cp -rfv /usr/portage/packages $artifacts_folder"
+2 -1
View File
@@ -76,11 +76,12 @@ if [ -d "$SAB_WORKSPACE"/specs ]; then
[ -e "$SAB_WORKSPACE"/specs/custom.env ] && docker_volumes+=(-v "$SAB_WORKSPACE/specs/custom.env:/opt/sabayon-build/conf/$SAB_ARCH/portage/package.env") [ -e "$SAB_WORKSPACE"/specs/custom.env ] && docker_volumes+=(-v "$SAB_WORKSPACE/specs/custom.env:/opt/sabayon-build/conf/$SAB_ARCH/portage/package.env")
[ -e "$SAB_WORKSPACE"/specs/custom.keywords ] && docker_volumes+=(-v "$SAB_WORKSPACE/specs/custom.keywords:/opt/sabayon-build/conf/$SAB_ARCH/portage/package.keywords/99-custom.keywords") [ -e "$SAB_WORKSPACE"/specs/custom.keywords ] && docker_volumes+=(-v "$SAB_WORKSPACE/specs/custom.keywords:/opt/sabayon-build/conf/$SAB_ARCH/portage/package.keywords/99-custom.keywords")
[ -d "$SAB_WORKSPACE"/specs/env ] && docker_volumes+=(-v "$SAB_WORKSPACE/specs/env/:/opt/sabayon-build/conf/$SAB_ARCH/portage/env/") [ -d "$SAB_WORKSPACE"/specs/env ] && docker_volumes+=(-v "$SAB_WORKSPACE/specs/env/:/opt/sabayon-build/conf/$SAB_ARCH/portage/env/")
[ -d "/vagrant" ] && docker_volumes+=(-v "/vagrant:/vagrant")
fi fi
echo "Spawning the package builder container for '$@'." echo "Spawning the package builder container for '$@'."
echo "" echo ""
#echo "docker run $DOCKER_OPTS ${docker_env[@]} ${docker_volumes[@]} $DOCKER_IMAGE $@" echo "docker run $DOCKER_OPTS \"${docker_env[@]}\" \"${docker_volumes[@]}\" $DOCKER_IMAGE $@"
docker run $DOCKER_OPTS "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE $@ docker run $DOCKER_OPTS "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE $@