Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 62548482d5 | |||
| cc406e3924 | |||
| 5a19da9db7 | |||
| 523146cf2b | |||
| 7bff7825d6 | |||
| 114eb47a4b |
@@ -24,6 +24,7 @@ my $skip_portage_sync = $ENV{SKIP_PORTAGE_SYNC} // 0;
|
|||||||
my $emerge_split_install = $ENV{EMERGE_SPLIT_INSTALL} // 0;
|
my $emerge_split_install = $ENV{EMERGE_SPLIT_INSTALL} // 0;
|
||||||
my $webrsync = $ENV{WEBRSYNC} // 0;
|
my $webrsync = $ENV{WEBRSYNC} // 0;
|
||||||
my $enman_repositories = $ENV{ENMAN_REPOSITORIES};
|
my $enman_repositories = $ENV{ENMAN_REPOSITORIES};
|
||||||
|
my $prune_virtuals = $ENV{PRUNE_VIRTUALS} // 0;
|
||||||
|
|
||||||
my $make_conf = $ENV{MAKE_CONF};
|
my $make_conf = $ENV{MAKE_CONF};
|
||||||
|
|
||||||
@@ -87,24 +88,27 @@ sub available_packages {
|
|||||||
sub calculate_missing {
|
sub calculate_missing {
|
||||||
my $package = shift;
|
my $package = shift;
|
||||||
my $depth = shift;
|
my $depth = shift;
|
||||||
|
|
||||||
my @Installed_Packages = @{+shift};
|
my @Installed_Packages = @{+shift};
|
||||||
my @Available_Packages = @{+shift};
|
my @Available_Packages = @{+shift};
|
||||||
|
my $prune_virtuals = shift;
|
||||||
|
|
||||||
# Getting the package dependencies and the installed packages
|
# Getting the package dependencies and the installed packages
|
||||||
my @dependencies = package_deps( $package, $depth, 1 );
|
my @dependencies = package_deps( $package, $depth, 1 );
|
||||||
|
|
||||||
my %install_dependencies = map { $_ => 1 } @dependencies;
|
if ($prune_virtuals) {
|
||||||
# Look for any virtuals and remove its immediate dependencies to avoid
|
say "[$package] Pruning dependencies of virtual packages";
|
||||||
# installing multiple conflicting packages one by one
|
my %install_dependencies = map { $_ => 1 } @dependencies;
|
||||||
my @virtual_deps;
|
# Look for any virtuals and remove its immediate dependencies to avoid
|
||||||
for my $dep (@dependencies) {
|
# installing multiple conflicting packages one by one
|
||||||
push(@virtual_deps, package_deps( $dep, 1, 1 )) if ( $dep =~ /^virtual\// );
|
my @virtual_deps;
|
||||||
|
for my $dep (@dependencies) {
|
||||||
|
push(@virtual_deps, package_deps( $dep, 1, 1 )) if ( $dep =~ /^virtual\// );
|
||||||
|
}
|
||||||
|
for my $dep (@virtual_deps) {
|
||||||
|
$install_dependencies{$dep} = 0 if ( $dep !~ /^virtual\// );
|
||||||
|
}
|
||||||
|
@dependencies = grep { $install_dependencies{$_} } @dependencies;
|
||||||
}
|
}
|
||||||
for my $dep (@virtual_deps) {
|
|
||||||
$install_dependencies{$dep} = 0 if ( $dep !~ /^virtual\// );
|
|
||||||
}
|
|
||||||
@dependencies = grep { $install_dependencies{$_} } @dependencies;
|
|
||||||
|
|
||||||
#taking only the 4th column of output as key of the hashmap
|
#taking only the 4th column of output as key of the hashmap
|
||||||
my %installed_packs =
|
my %installed_packs =
|
||||||
@@ -241,9 +245,16 @@ if ($use_equo) {
|
|||||||
my @Installed_Packages = qx/equo q list installed --quiet/;
|
my @Installed_Packages = qx/equo q list installed --quiet/;
|
||||||
my @Available_Packages = available_packages();
|
my @Available_Packages = available_packages();
|
||||||
chomp(@Installed_Packages);
|
chomp(@Installed_Packages);
|
||||||
|
|
||||||
|
my %installed_packs =
|
||||||
|
map { $_ => 1 } @Installed_Packages;
|
||||||
|
|
||||||
|
# Remove any already installed packages from the list of entropy packages to install in the build spec
|
||||||
|
@equo_install = grep { ! exists $installed_packs{$_} } @equo_install;
|
||||||
|
|
||||||
foreach my $p (@packages) {
|
foreach my $p (@packages) {
|
||||||
say "[$p] Getting the package dependencies which aren't already installed on the system.. ";
|
say "[$p] Getting the package dependencies which aren't already installed on the system.. ";
|
||||||
push( @packages_deps, calculate_missing( $p , $dep_scan_depth,\@Installed_Packages,\@Available_Packages) )
|
push( @packages_deps, calculate_missing( $p , $dep_scan_depth,\@Installed_Packages,\@Available_Packages, $prune_virtuals) )
|
||||||
if $equo_install_atoms;
|
if $equo_install_atoms;
|
||||||
push( @packages_deps, package_deps( $p, $dep_scan_depth, 0 ) )
|
push( @packages_deps, package_deps( $p, $dep_scan_depth, 0 ) )
|
||||||
if $equo_install_version;
|
if $equo_install_version;
|
||||||
|
|||||||
@@ -37,11 +37,13 @@ docker_volumes=( -v "$OUTPUT_DIR:/usr/portage/packages" )
|
|||||||
[ -z "$ARTIFACTS_DIR" ] || docker_env+=(-e "ARTIFACTS_DIR=$ARTIFACTS_DIR")
|
[ -z "$ARTIFACTS_DIR" ] || docker_env+=(-e "ARTIFACTS_DIR=$ARTIFACTS_DIR")
|
||||||
[ -z "$ENTROPY_REPOSITORY" ] || docker_env+=(-e "ENTROPY_REPOSITORY=$ENTROPY_REPOSITORY")
|
[ -z "$ENTROPY_REPOSITORY" ] || docker_env+=(-e "ENTROPY_REPOSITORY=$ENTROPY_REPOSITORY")
|
||||||
[ -z "$SKIP_PORTAGE_SYNC" ] || docker_env+=(-e "SKIP_PORTAGE_SYNC=$SKIP_PORTAGE_SYNC")
|
[ -z "$SKIP_PORTAGE_SYNC" ] || docker_env+=(-e "SKIP_PORTAGE_SYNC=$SKIP_PORTAGE_SYNC")
|
||||||
|
[ -z "$EQUO_MIRRORSORT" ] || docker_env+=(-e "EQUO_MIRRORSORT=$EQUO_MIRRORSORT")
|
||||||
[ -z "$WEBRSYNC" ] || docker_env+=(-e "WEBRSYNC=$WEBRSYNC")
|
[ -z "$WEBRSYNC" ] || docker_env+=(-e "WEBRSYNC=$WEBRSYNC")
|
||||||
[ -z "$ENMAN_REPOSITORIES" ] || docker_env+=(-e "ENMAN_REPOSITORIES=$ENMAN_REPOSITORIES")
|
[ -z "$ENMAN_REPOSITORIES" ] || docker_env+=(-e "ENMAN_REPOSITORIES=$ENMAN_REPOSITORIES")
|
||||||
[ -z "$DISTFILES" ] || docker_volumes+=(-v "$DISTFILES:/usr/portage/distfiles")
|
[ -z "$DISTFILES" ] || docker_volumes+=(-v "$DISTFILES:/usr/portage/distfiles")
|
||||||
[ -z "$ENTROPY_DOWNLOADED_PACKAGES" ] || docker_volumes+=(-v "$ENTROPY_DOWNLOADED_PACKAGES:/var/lib/entropy/client/packages")
|
[ -z "$ENTROPY_DOWNLOADED_PACKAGES" ] || docker_volumes+=(-v "$ENTROPY_DOWNLOADED_PACKAGES:/var/lib/entropy/client/packages")
|
||||||
[ -z "$DISTCC_HOSTS" ] || docker_env+=(-e "DISTCC_HOSTS=$DISTCC_HOSTS")
|
[ -z "$DISTCC_HOSTS" ] || docker_env+=(-e "DISTCC_HOSTS=$DISTCC_HOSTS")
|
||||||
|
[ -z "${PRUNE_VIRTUALS}" ] || docker_env+=(-e "PRUNE_VIRTUALS=$PRUNE_VIRTUALS")
|
||||||
|
|
||||||
if [ -n "$REMOTE_OVERLAY" ]; then
|
if [ -n "$REMOTE_OVERLAY" ]; then
|
||||||
git clone "$REMOTE_OVERLAY" "$TEMPDIR"
|
git clone "$REMOTE_OVERLAY" "$TEMPDIR"
|
||||||
|
|||||||
Reference in New Issue
Block a user