The following changes were made:
* removed usher * various cleanup in output * corrected issues with usher() in Package.pm, now using fork()/exec() * added snapinstall * made virtfs() more robust, will still attempt if fails * made strip a little more thoughtful in Makefile.snaplinux
This commit is contained in:
89
SRC/snapinstall
Executable file
89
SRC/snapinstall
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Snap;
|
||||
use Data::Dumper;
|
||||
|
||||
setup();
|
||||
|
||||
my $conf = readconf();
|
||||
my $sources = Snap::Sources->new( $conf->{'sources'} );
|
||||
|
||||
my $opts = {
|
||||
repo => 'core',
|
||||
quiet => 1
|
||||
};
|
||||
my $corepkgs;
|
||||
my $packages;
|
||||
my $virtfs = 0;
|
||||
my $prepkgs = {};
|
||||
my $prelist = [ 'snap-base', 'bash', 'coreutils', 'glibc',
|
||||
'libacl', 'libattr', 'libcap', 'ncurses', 'readline',
|
||||
'tzdata', 'perl', 'initscripts' ];
|
||||
|
||||
print "\n";
|
||||
|
||||
if ( ! Snap->TARGET ) {
|
||||
Snap->error( -1, 'A target must be specified with -t' );
|
||||
}
|
||||
|
||||
$sources->readpkgs();
|
||||
$corepkgs = $sources->search( $opts );
|
||||
|
||||
for ( my $i = 0; $i <= $#$corepkgs; $i++ ) {
|
||||
if ( ! $opts->{'nodeps'} ) {
|
||||
print "Resolving dependencies for"
|
||||
. " $corepkgs->[$i]{'name'}\n";
|
||||
|
||||
$corepkgs->[$i]->depends( $sources, $packages );
|
||||
}
|
||||
else {
|
||||
print "Ignoring dependencies for"
|
||||
. " $corepkgs->[$i]{'name'}\n";
|
||||
}
|
||||
|
||||
push( @$packages, $corepkgs->[$i] );
|
||||
}
|
||||
|
||||
for ( my $i = 0; $i <= $#$packages; $i++ ) {
|
||||
if ( $packages->[$i]{'path'} =~ /https*:\/\// ) {
|
||||
( my $filename = $packages->[$i]{'path'} ) =~ s/.*\///;
|
||||
|
||||
if ( ! -f Snap->PKGDIR . "/$filename" ) {
|
||||
Snap->httpget( $packages->[$i]{'path'},
|
||||
Snap->PKGDIR . "/$filename", 0644 );
|
||||
}
|
||||
|
||||
$packages->[$i]{'path'} = Snap->PKGDIR . "/$filename";
|
||||
}
|
||||
|
||||
|
||||
if ( grep( $_ eq $packages->[$i]{'name'}, @$prelist ) ) {
|
||||
$prepkgs->{$packages->[$i]{'name'}} = $packages->[$i];
|
||||
|
||||
splice( @$packages, $i, 1 );
|
||||
$i--;
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $package ( @$prelist ) {
|
||||
print "\n";
|
||||
|
||||
$prepkgs->{$package}->install();
|
||||
}
|
||||
|
||||
foreach my $package ( @$packages ) {
|
||||
if ( ! $virtfs ) {
|
||||
$virtfs = virtfs( 'mount' );
|
||||
}
|
||||
|
||||
print "\n";
|
||||
|
||||
$package->install();
|
||||
}
|
||||
|
||||
virtfs( 'umount' );
|
||||
|
||||
print "\n";
|
||||
Reference in New Issue
Block a user