From af2365ae9e9eb772cc31002acea032070aea1821 Mon Sep 17 00:00:00 2001 From: Hyokeun Jeon Date: Tue, 12 Jan 2021 16:19:01 +0900 Subject: [PATCH] Option to generate depends only from local repos Change-Id: I1e73ab0bc78845cdc35b23543ffad1e144ad5af9 --- depanneur | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/depanneur b/depanneur index 2be73b0..6e4c861 100755 --- a/depanneur +++ b/depanneur @@ -189,6 +189,7 @@ my $vmkernel = ""; my $vmswapsize = ""; my $disable_debuginfo = 0;#disable debuginfo when using build cmd my $depends = 0; #depends subcommand to put reverse dependency +my $depends_local_only = 0; #generate depends xml only from local repos my $reverse_off = 0; #disable reverse dependency my $reverse_on = 1; #enable reverse dependency my $export_only = 0; # only export, not building @@ -248,6 +249,7 @@ GetOptions ( "vm-swap=s" => \$vmswapsize, "disable-debuginfo" => \$disable_debuginfo, "depends" => \$depends, + "depends-local-only" => \$depends_local_only, "export-only" => \$export_only, "tarfile" => \$tarfile, ); @@ -1060,6 +1062,29 @@ sub parse_packs { return %packs; } +sub get_pack_list_from_local_repo { + my $rpmdeps = "$order_dir/.repo.cache.local"; + my %fn; + my @local_pack_list = (); + + open(my $fh, '<', "$rpmdeps") || die("$rpmdeps: $!\n"); + + while(<$fh>) { + chomp; + if (/^F:(.*?)-\d+\/\d+\/\d+: (.*)$/) { + next if $fn{$1}; + $fn{$1} = $2; + my $pack = $1; + $pack =~ /^(.*)\.([^\.]+)$/ or die; + my $this_pack_name = $1; + my $so = source_of($this_pack_name, \%subptomainp); + push(@local_pack_list, $so) if defined $so; + } + } + close $fh; + return @local_pack_list; +} + #--------------------------------------------------------------------- # Re-read .repo.cache and update information of # every package such as requires, provides etc. @@ -2551,7 +2576,17 @@ sub generate_depends() { info("parsing package data..."); my %packs = parse_packs($config, @packs); - %to_build = %packs; + + if ($depends_local_only) { + my @local_packs = get_pack_list_from_local_repo(); + foreach my $p (sort keys %packs) { + if (grep $_ eq $p, @local_packs) { + $to_build{$p} = $packs{$p}; + } + } + } else { + %to_build = %packs; + } if (scalar (keys %to_build) == 0) { warning("no available packages to generate depends."); -- 2.34.1