2 Commits

Author SHA1 Message Date
Jay Larson
bfa1d110c4 The following changes were made
* Updated Makefile to get version from Snap.pm
  * Updated virtfs() in Snap.pm to properly check for dir with -d
2017-05-31 10:54:33 -05:00
Jay Larson
d306fe03ae The following changes were made:
* corrected issue in reinstall that prevented reinstall of package files
  * added version command
  * updated files() in Package.pm to accept both quiet and verbose options
  * added sha() to Snap.pm which will be used for verify function in future
  * corrected missing '=' in output for search() in Sources.pm
  * removed duplicate file (SRC/snapinstall)
2017-05-26 15:48:52 -05:00
7 changed files with 51 additions and 102 deletions

View File

@@ -12,11 +12,13 @@ DEPENDS = binutils,coreutils,gzip,perl>=5.20.0,tar
ARCH = x86_64 ARCH = x86_64
URL = URL =
DESC = The Snaplinux package management system DESC = The Snaplinux package management system
SNAPVER = 0
ARCHIVE := '' ARCHIVE := ''
SRCDIR := $(PWD)/SRC/snap SRCDIR := $(PWD)/SRC/snap
PATCHDIR := $(PWD)/SRC/patches PATCHDIR := $(PWD)/SRC/patches
VERSION := 0.6-0 VERSION := $(shell grep 'VERSION =>' SRC/snap/Snap.pm| \
sed "s/.*=> '\|',//g")-$(SNAPVER)
include /usr/share/snap/Makefile.snaplinux include /usr/share/snap/Makefile.snaplinux

View File

@@ -208,6 +208,11 @@ my $commands = {
. " separate\n\t\t\t\tdirectory/file system\n", . " separate\n\t\t\t\tdirectory/file system\n",
"\t\t\t\tProceed without prompting" "\t\t\t\tProceed without prompting"
] ]
},
version => {
options => [],
brief => 'Display version information',
help => []
} }
}; };

View File

@@ -317,7 +317,12 @@ sub files {
next; next;
} }
if ( $opts->{'quiet'} ) { if ( $opts->{'quiet'} &&
$opts->{'verbose'} ) {
push( @{$self->{'files'}}, [
$sha, $perms, $file ] );
}
elsif ( $opts->{'quiet'} ) {
push( @{$self->{'files'}}, push( @{$self->{'files'}},
$file ); $file );
} }
@@ -367,8 +372,14 @@ sub files {
$self->{'files'} = []; $self->{'files'} = [];
} }
if ( $opts->{'verbose'} ) {
push( @{$self->{'files'}}, [
$sha, $perms, $file ] );
}
else {
push( @{$self->{'files'}}, $file ); push( @{$self->{'files'}}, $file );
} }
}
elsif ( $opts->{'verbose'} ) { elsif ( $opts->{'verbose'} ) {
print "$sha\t$perms\t$file\n"; print "$sha\t$perms\t$file\n";
} }

View File

@@ -27,6 +27,8 @@ our @EXPORT = qw(
readconf readconf
refresh refresh
setup setup
sha
sha256
target target
termsize termsize
vercmp vercmp
@@ -87,7 +89,7 @@ use constant VERFILE => eval {
} }
}; };
use constant { use constant {
VERSION => '0.3', VERSION => '0.8',
SNAPDIR => TARGET . '/var/lib/snap', SNAPDIR => TARGET . '/var/lib/snap',
PKGDIR => TARGET . '/var/lib/snap/packages', PKGDIR => TARGET . '/var/lib/snap/packages',
INSTDIR => TARGET . '/var/lib/snap/installed', INSTDIR => TARGET . '/var/lib/snap/installed',
@@ -648,6 +650,15 @@ sub setup {
} }
} }
sub sha {
my $file = shift;
my $digest = eval {
Digest::SHA->new( 1 )->addfile( $file );
} || Snap->error( -1, "sha(): $file: $!\n" );
return( $digest->hexdigest );
}
### sha256() ############################################### ### sha256() ###############################################
# #
# This sub returns a hex sha256 hash of a supplied file # This sub returns a hex sha256 hash of a supplied file
@@ -821,7 +832,7 @@ sub virtfs {
my $stat = 0; my $stat = 0;
my $pid; my $pid;
if ( ! -f $virtfs->{$fs}{'dir'} ) { if ( ! -d $virtfs->{$fs}{'dir'} ) {
next; next;
} }

View File

@@ -219,7 +219,7 @@ sub search {
if ( ! @$packages ) { if ( ! @$packages ) {
if ( $opts->{'name'} && $opts->{'version'} ) { if ( $opts->{'name'} && $opts->{'version'} ) {
Snap->error( 0, "Snap::Sources::search():" Snap->error( 0, "Snap::Sources::search():"
. " $opts->{'name'}$opts->{'version'}:" . " $opts->{'name'}=$opts->{'version'}:"
. " No such package" ); . " No such package" );
} }
elsif ( $opts->{'name'} ) { elsif ( $opts->{'name'} ) {

View File

@@ -366,7 +366,19 @@ elsif ( $command eq 'reinstall' ) {
print "\n"; print "\n";
foreach my $pkgname ( @ARGV ) { foreach my $pkgname ( @ARGV ) {
my $package = $sources->{'installed'}{$pkgname}; my $package;
if ( -f $pkgname ) {
$package = Snap::Package->new( $pkgname );
}
else {
$package = $sources->{'installed'}{$pkgname};
$package = $sources->search( {
name => $package->{'name'},
version => $package->{'version'},
quiet => 1
} );
}
if ( ! $package ) { if ( ! $package ) {
print STDERR "Package '$pkgname' not installed\n"; print STDERR "Package '$pkgname' not installed\n";
@@ -374,12 +386,6 @@ elsif ( $command eq 'reinstall' ) {
next; next;
} }
$package = $sources->search( {
name => $package->{'name'},
version => $package->{'version'},
quiet => 1
} );
if ( $package->{'path'} =~ /https*:\/\// ) { if ( $package->{'path'} =~ /https*:\/\// ) {
( my $filename = $package->{'path'} ) =~ s/.*\///; ( my $filename = $package->{'path'} ) =~ s/.*\///;
@@ -613,6 +619,9 @@ elsif ( $command eq 'verify' ) {
print Dumper( $package ); print Dumper( $package );
} }
} }
elsif ( $command eq 'version' ) {
print "\n" . Snap->VERSION . "\n\n";
}
elsif ( $command ) { elsif ( $command ) {
print "\n"; print "\n";

View File

@@ -1,89 +0,0 @@
#!/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";