diff options
Diffstat (limited to 'sboupgrade')
-rwxr-xr-x | sboupgrade | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/sboupgrade b/sboupgrade deleted file mode 100755 index 81a9a3f..0000000 --- a/sboupgrade +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/perl -# -# vim: ts=4:noet -# -# sboupgrade -# script to upgrade (a) SlackBuild(s) by name -# -# authors: Jacob Pipkin <j@dawnrazor.net> -# Luke Williams <xocel@iquidus.org> -# Andreas Guldstrand <andreas.guldstrand@gmail.com> -# maintainer: Slack Coder <slackcoder@server.ky> - -use 5.16.0; -use strict; -use warnings FATAL => 'all'; -use SBO::Lib qw/ _ERR_USAGE get_available_updates prompt usage_error slackbuilds_or_fetch uniq get_sbo_location get_inst_names get_installed_packages get_build_queue get_sbo_locations in merge_queues user_prompt process_sbos print_failures %config show_version /; -use Getopt::Long qw(:config bundling); -use File::Basename; -use File::Copy; - -my $self = basename($0); - -sub show_usage { - print <<"EOF"; -Usage: $self (options) [package] - -Options (defaults shown first where applicable): - -h|--help: - this screen. - -v|--version: - version information. - -c|--noclean (FALSE|TRUE): - set whether or not to clean working directories after building. - -d|--distclean (TRUE|FALSE): - set whether or not to clean distfiles afterward. - -f|--force: - force an update, even if the "upgrade" version is the same or lower. - -i|--noinstall: - do not run installpkg at the end of the build process. - -j|--jobs (FALSE|#): - specify "-j" setting to make, for multicore systems; overrides conf file. - -r|--nointeractive: - non-interactive; skips README and all prompts. - -z|--force-reqs: - when used with -f, will force rebuilding an SBo's requirements as well. - --all - this flag will upgrade everything reported by sbocheck(1). - -EOF - return 1; -} - -my $noclean = $config{NOCLEAN}; -my $distclean = $config{DISTCLEAN}; -my $jobs = $config{JOBS}; -my ($help, $vers, $force, $no_install, $non_int, $force_reqs, $all); - -GetOptions( - 'help|h' => \$help, - 'version|v' => \$vers, - 'noclean|c=s' => \$noclean, - 'distclean|d=s' => \$distclean, - 'force|f' => \$force, - 'noinstall|i' => \$no_install, - 'jobs|j=s' => \$jobs, - 'nointeractive|r' => \$non_int, - 'force-reqs|z' => \$force_reqs, - 'all' => \$all, -); - -if ($help) { show_usage(); exit 0 } -if ($vers) { show_version(); exit 0 } - -unless ($< == 0) { - warn "This script requires root privileges.\n"; - exit _ERR_USAGE; -} - -my $updates; -if ($all) { - slackbuilds_or_fetch(); - print "Checking for updated SlackBuilds...\n"; - $updates = get_available_updates(); - push @ARGV, map { $_->{name} } @$updates; - if (!@ARGV) { print "Nothing to update.\n"; exit 0 } -} - -if (!@ARGV) { show_usage(); exit 1 } - -$noclean = $noclean eq 'TRUE' ? 1 : 0; -$distclean = $distclean eq 'TRUE' ? 1 : 0; - -if ($jobs) { - usage_error("You have provided an invalid value for -j|--jobs") - unless ($jobs =~ /^\d+$/ || $jobs eq 'FALSE'); -} - -usage_error("-r|--nointeractive and -z|--force-reqs can not be used together.") - if $non_int && $force_reqs; - -# if we can't find SLACKBUILDS.TXT in $config{HOME}, prompt to fetch the tree -slackbuilds_or_fetch(); - -my @sbos = uniq @ARGV; - -# Filter out standard packages -my $std_installs = get_inst_names(get_installed_packages('STD')); -my %std_names; -$std_names{$_} = 1 for @$std_installs; -@sbos = grep { not $std_names{$_} } @sbos; - -# pull locations for everything specified on command line. -my %locations; -for my $sbo (@sbos) { - my $name = $sbo; - $name =~ s/-compat32//; - $locations{$sbo} = get_sbo_location($name); - if (not $locations{$sbo} and in(@ARGV, $sbo)) { - usage_error("Unable to locate $sbo in the SlackBuilds.org tree."); - } - if ($sbo =~ /-compat32$/) { - usage_error("compat32 Perl SBos are not supported.") - if $locations{$sbo} =~ qr|/perl/[^/]+$|; - } -} - -# get a list of installed SBos to check upgradability against -my $inst_names = get_inst_names(get_installed_packages('SBO')); -my %inst_names; -$inst_names{$_} = 1 for @$inst_names; -my %updates; -if (not $non_int or not $force) { - $updates = get_available_updates() if not defined $updates; - $updates{$$_{name}} = 1 for @$updates; -} - -my $upgrade_queue = []; -my %warnings; - -# doesn't matter what's updatable and what's not if force is specified, -# but without force, we only want to update what there are updates for -if ($non_int) { - if ($force) { - for my $sbo (@sbos) { - push @$upgrade_queue, $sbo if $inst_names{$sbo}; - } - } else { - for my $sbo (@sbos) { - push @$upgrade_queue, $sbo if $updates{$sbo}; - } - } -} else { - for my $sbo (@sbos) { - my $name = $sbo; - $name =~ s/-compat32$//; - my $queue = get_build_queue([$name], \%warnings); - if (not $force_reqs) { - @$queue = grep { !$inst_names{$_} or $updates{$_} } @$queue; - } - push @$queue, $name if $force; - my $cqueue; - # get locations for all the things - my %locs = get_sbo_locations($queue); - my %clocs; - # -compat32-ify the queue and locations if appropriate - if ($sbo =~ /-compat32$/) { - $cqueue = $queue; - s/$/-compat32/g for @$cqueue; - $queue = $cqueue; - for my $key (keys %locs) { - my $val = $locs{$key}; - $key =~ s/$/-compat32/; - $clocs{$key} = $val; - } - %locs = %clocs; - } - @locations{keys %locs} = values %locs; - $upgrade_queue = merge_queues($upgrade_queue, $queue); - } -} - -# Get user input regarding upgrades -my (@temp_queue, %commands, %options); -FIRST: for my $sbo (@$upgrade_queue) { - next FIRST if $std_names{$sbo}; - - if (defined $warnings{$sbo} and $warnings{$sbo} eq 'nonexistent') { - say "Unable to locate $sbo in the SlackBuilds.org tree."; - if (not $non_int) { - exit 0 unless prompt("Do you want to ignore it and continue?", default => 'no'); - } - next FIRST; - } - - unless ($non_int) { - my ($cmds, $opts, $exit) = user_prompt($sbo, $locations{$sbo}); - if ($exit) { - warn "Unable to open README for $sbo.\n"; - exit $exit; - } - if ($cmds) { - next FIRST if $cmds eq 'N'; - } - push(@temp_queue, $sbo); - $commands{$sbo} = $cmds; - $options{$sbo} = $opts; - say "$sbo added to upgrade queue."; - } else { - push(@temp_queue, $sbo); - say "\n$sbo added to upgrade queue."; - } -} -@$upgrade_queue = @temp_queue; - -exit 0 unless exists $$upgrade_queue[0]; -say "\nUpgrade queue: ". join(' ', @$upgrade_queue); -unless ($non_int) { - exit 0 unless prompt("\nAre you sure you wish to continue?", default => 'yes'); -} - -my ($failures, $exit) = process_sbos( - TODO => $upgrade_queue, - CMDS => \%commands, - OPTS => \%options, - JOBS => $jobs, - LOCATIONS => \%locations, - NOINSTALL => $no_install, - NOCLEAN => $noclean, - DISTCLEAN => $distclean, - NON_INT => $non_int, -); -print_failures($failures); - -if ($exit) { - exit $exit; -} else { - exit 0; -} |