From: Zhang Qiang Date: Tue, 27 Nov 2012 05:20:23 +0000 (+0800) Subject: Add --clean-repos option, #548 X-Git-Tag: 0.3~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f4f04436a99e016dafca7d48553518fb05c451b9;p=tools%2Fdepanneur.git Add --clean-repos option, #548 This option is used to cleanup local repos generated by 'gbs build' If there're some old RPMs in 'gbs build's local repo, this option can be used to clean up them. Change-Id: I905c594d5b9c4b90cd5db8f382512072d74dd5b0 --- diff --git a/depanneur b/depanneur index 6b7fa38..a8c0219 100755 --- a/depanneur +++ b/depanneur @@ -84,6 +84,7 @@ my $dist = "tizen"; my $dryrun = 0; my $help = 0; my $keepgoing = 0; +my $clean_repos = 0; my $virtualenv = "$ENV{'VIRTUAL_ENV'}"; my $build_root = $ENV{TIZEN_BUILD_ROOT}; @@ -165,6 +166,7 @@ GetOptions ( "keep-packs" => \$keep_packs, "define=s" => \@defines, "spec=s" => \$arg_spec, + "clean-repos" => \$clean_repos, ); if ( $help ) { @@ -360,6 +362,8 @@ if ($noinit == 1) { my $pkg_path = "$build_root/local/sources/$dist"; my $cache_path = "$build_root/local/sources/$dist/cache"; +my $success_logs_path = "$localrepo/$dist/$arch/logs/success"; +my $fail_logs_path = "$localrepo/$dist/$arch/logs/fail"; my $rpm_repo_path = "$localrepo/$dist/$arch/RPMS"; my $srpm_repo_path = "$localrepo/$dist/$arch/SRPMS"; @@ -388,8 +392,8 @@ if ( $exclude_from_file ne "" && -e $exclude_from_file ) { mkdir_p($order_dir); -mkdir_p "$localrepo/$dist/$arch/logs/success"; -mkdir_p "$localrepo/$dist/$arch/logs/fail"; +mkdir_p($success_logs_path); +mkdir_p($fail_logs_path); mkdir_p($cache_path); mkdir_p($rpm_repo_path); mkdir_p($srpm_repo_path); @@ -1173,9 +1177,9 @@ sub build_package { if (bsd_glob "$scratch/home/abuild/rpmbuild/RPMS/*/*.rpm") { my_system ("cp $scratch/home/abuild/rpmbuild/RPMS/*/*.rpm $rpm_repo_path"); } - mkdir_p "$localrepo/$dist/$arch/logs/success/$name-$version-$release"; + mkdir_p "$success_logs_path/$name-$version-$release"; if (-e "$scratch/.build.log") { - my_system ("cp $scratch/.build.log $localrepo/$dist/$arch/logs/success/$name-$version-$release/log"); + my_system ("cp $scratch/.build.log $success_logs_path/$name-$version-$release/log"); my_system ("sudo rm -f $scratch/.build.log "); } # Detach and terminate @@ -1190,11 +1194,11 @@ sub build_package { $packages_built = 1; return 0; } else { - mkdir_p "$localrepo/$dist/$arch/logs/fail/$name-$version-$release"; + mkdir_p "$fail_logs_path/$name-$version-$release"; if ( -f "$scratch/.build.log" ) { - my_system ("cp $scratch/.build.log $localrepo/$dist/$arch/logs/fail/$name-$version-$release/log"); + my_system ("cp $scratch/.build.log $fail_logs_path/$name-$version-$release/log"); my_system ("sudo rm -f $scratch/.build.log"); - warning("build failed, Leaving the logs in $localrepo/$dist/$arch/logs/fail/$name-$version-$release/log"); + warning("build failed, Leaving the logs in $fail_logs_path/$name-$version-$release/log"); } return 1; } @@ -1295,6 +1299,16 @@ if ($style eq 'git') { } error("no spec files to build.\n") if (@packs == 0); +if ($clean_repos && -e "$localrepo/$dist/$arch") { + info("cleaning up local repo: $rpm_repo_path ..."); + my_system("rm -rf $rpm_repo_path/*"); + my_system("rm -rf $srpm_repo_path/*"); + my_system("rm -rf $success_logs_path/*"); + my_system("rm -rf $fail_logs_path/*"); + info("updating local repo ..."); + createrepo ($arch, $dist); +} + info("retrieving repo metadata..."); my $repos_setup = 1; my_system("> $order_dir/.repo.cache.local");