4 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
Jay Larson
319401eb51 Corrected issue in assignment to $(SNAP) in Makefile.snaplinux 2017-05-22 14:46:14 -05:00
Jay Larson
4cd5b95d7e The following changes were made:
* Added snapinstall (missed on last check in)
  * Added reinstall functionality to snap
2017-05-22 14:15:38 -05:00
9 changed files with 145 additions and 14 deletions

View File

@@ -12,13 +12,13 @@ DEPENDS = binutils,coreutils,gzip,perl>=5.20.0,tar
ARCH = x86_64
URL =
DESC = The Snaplinux package management system
SNAPVER = 0
ARCHIVE := ''
SRCDIR := $(PWD)/SRC/snap
PATCHDIR := $(PWD)/SRC/patches
VERSION := 0.5-0
MAKEINST = make install
VERSION := $(shell grep 'VERSION =>' SRC/snap/Snap.pm| \
sed "s/.*=> '\|',//g")-$(SNAPVER)
include /usr/share/snap/Makefile.snaplinux
@@ -29,7 +29,7 @@ $(ROOT): $(SRCDIR)/Makefile
mkdir -v $(ROOT); \
fi
@cd $(SRCDIR) && $(MAKEINST) DESTDIR=$(ROOT)
@cd $(SRCDIR) && make install DESTDIR=$(ROOT)
clean:
@rm -rvf $(ROOT) \

View File

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

View File

@@ -5,6 +5,7 @@ dirs:
files:
install -v -m 755 snap $(DESTDIR)/usr/bin/snap
install -v -m 755 snapinstall $(DESTDIR)/usr/bin/snapinstall
install -v -m 644 Makefile.skel \
$(DESTDIR)/usr/share/snap/Makefile.skel
install -v -m 644 Makefile.snaplinux \

View File

@@ -17,8 +17,8 @@ ROOT = $(PWD)/ROOT
# of the package file. Added for the kernel package
# though could be useful for others
ifeq ( $(SNAP), )
SNAP = $(PACKAGE)-$(VERSION).snap
ifndef SNAP
SNAP := $(PACKAGE)-$(VERSION).snap
endif
SNAPINFO = $(SNAPDIR)/snapinfo
@@ -31,7 +31,7 @@ FILES = $(SNAPDIR)/files.tar.gz
# if we find that not to be supplied we're going to
# assume that the SRCPKG is the same as the PACKAGE
ifeq ( $(SRCPKG), )
ifndef SRCPKG)
SRCPKG := $(PACKAGE)
endif
@@ -116,12 +116,15 @@ $(FILES): $(ROOT)
type=`file -i $$file|sed 's/.*: //'`; \
case $$type in \
*'/x-executable; charset=binary') \
echo "--strip-unneeded $$file"; \
strip --strip-unneeded $$file \
;; \
*'/x-object; charset=binary') \
echo "--strip-debug $$file"; \
strip --strip-debug $$file \
;; \
*'/x-sharedlib; charset=binary') \
echo "--strip-debug $$file"; \
strip --strip-debug $$file \
;; \
esac; \

View File

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

View File

@@ -27,6 +27,8 @@ our @EXPORT = qw(
readconf
refresh
setup
sha
sha256
target
termsize
vercmp
@@ -87,7 +89,7 @@ use constant VERFILE => eval {
}
};
use constant {
VERSION => '0.3',
VERSION => '0.8',
SNAPDIR => TARGET . '/var/lib/snap',
PKGDIR => TARGET . '/var/lib/snap/packages',
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() ###############################################
#
# This sub returns a hex sha256 hash of a supplied file
@@ -821,7 +832,7 @@ sub virtfs {
my $stat = 0;
my $pid;
if ( ! -f $virtfs->{$fs}{'dir'} ) {
if ( ! -d $virtfs->{$fs}{'dir'} ) {
next;
}

View File

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

View File

@@ -303,13 +303,13 @@ elsif ( $command eq 'install' ) {
chkyes();
print "\n";
foreach my $package ( @$packages ) {
if ( ! $virtfs ) {
$virtfs = virtfs( 'mount' );
}
print "\n";
$package->install( $sources );
}
@@ -346,6 +346,103 @@ elsif ( $command eq 'refresh' ) {
print "\n";
}
}
elsif ( $command eq 'reinstall' ) {
my $opts = {
yes => eval {
for ( my $i = 0; $i <= $#ARGV; $i++ ) {
if ( $ARGV[$i] eq '-y' ) {
splice( @ARGV, $i, 1 );
return( 1 );
}
}
}
};
my $packages = [];
my $virtfs = 0;
$sources->readpkgs();
print "\n";
foreach my $pkgname ( @ARGV ) {
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 ) {
print STDERR "Package '$pkgname' not installed\n";
next;
}
if ( $package->{'path'} =~ /https*:\/\// ) {
( my $filename = $package->{'path'} ) =~ s/.*\///;
if ( ! -f Snap->PKGDIR . "/$filename" ) {
Snap->httpget( $package->{'path'},
Snap->PKGDIR . "/$filename", 0644 );
}
$package->{'path'} = Snap->PKGDIR . "/$filename";
}
push( @$packages, $package );
}
foreach my $package ( @$packages ) {
my $termsize = Snap->termsize();
my $cnt = 0;
foreach my $package ( sort { $a->{'name'} cmp $b->{'name'} }
( @$packages ) ) {
if ( ! $cnt ) {
print "The following packages will be"
. " reinstalled:\n ";
}
if ( $termsize->{'col'} - ( length(
$package->{'name'} ) + 3 ) <= 0 ) {
print "\n ";
$termsize = Snap->termsize();
}
print "$package->{'name'} ";
$termsize->{'col'} -= length( $package->{'name'} ) + 1;
$cnt++;
}
}
print "\n\nContinue? (y/n): ";
chkyes();
foreach my $package ( @$packages ) {
if ( ! $virtfs ) {
$virtfs = virtfs( 'mount' );
}
print "\n";
$package->install();
}
virtfs( 'umount' );
print "\n";
}
elsif ( $command eq 'remove' ) {
my $opts = {
nodeps => eval {
@@ -522,6 +619,9 @@ elsif ( $command eq 'verify' ) {
print Dumper( $package );
}
}
elsif ( $command eq 'version' ) {
print "\n" . Snap->VERSION . "\n\n";
}
elsif ( $command ) {
print "\n";