aboutsummaryrefslogtreecommitdiff
path: root/sboupgrade
diff options
context:
space:
mode:
Diffstat (limited to 'sboupgrade')
-rwxr-xr-xsboupgrade238
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;
-}