Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bfa1d110c4 | ||
|
|
d306fe03ae | ||
|
|
319401eb51 | ||
|
|
4cd5b95d7e |
8
Makefile
8
Makefile
@@ -12,13 +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.5-0
|
VERSION := $(shell grep 'VERSION =>' SRC/snap/Snap.pm| \
|
||||||
|
sed "s/.*=> '\|',//g")-$(SNAPVER)
|
||||||
MAKEINST = make install
|
|
||||||
|
|
||||||
include /usr/share/snap/Makefile.snaplinux
|
include /usr/share/snap/Makefile.snaplinux
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ $(ROOT): $(SRCDIR)/Makefile
|
|||||||
mkdir -v $(ROOT); \
|
mkdir -v $(ROOT); \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@cd $(SRCDIR) && $(MAKEINST) DESTDIR=$(ROOT)
|
@cd $(SRCDIR) && make install DESTDIR=$(ROOT)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@rm -rvf $(ROOT) \
|
@rm -rvf $(ROOT) \
|
||||||
|
|||||||
@@ -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 => []
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ dirs:
|
|||||||
|
|
||||||
files:
|
files:
|
||||||
install -v -m 755 snap $(DESTDIR)/usr/bin/snap
|
install -v -m 755 snap $(DESTDIR)/usr/bin/snap
|
||||||
|
install -v -m 755 snapinstall $(DESTDIR)/usr/bin/snapinstall
|
||||||
install -v -m 644 Makefile.skel \
|
install -v -m 644 Makefile.skel \
|
||||||
$(DESTDIR)/usr/share/snap/Makefile.skel
|
$(DESTDIR)/usr/share/snap/Makefile.skel
|
||||||
install -v -m 644 Makefile.snaplinux \
|
install -v -m 644 Makefile.snaplinux \
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ ROOT = $(PWD)/ROOT
|
|||||||
# of the package file. Added for the kernel package
|
# of the package file. Added for the kernel package
|
||||||
# though could be useful for others
|
# though could be useful for others
|
||||||
|
|
||||||
ifeq ( $(SNAP), )
|
ifndef SNAP
|
||||||
SNAP = $(PACKAGE)-$(VERSION).snap
|
SNAP := $(PACKAGE)-$(VERSION).snap
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SNAPINFO = $(SNAPDIR)/snapinfo
|
SNAPINFO = $(SNAPDIR)/snapinfo
|
||||||
@@ -31,7 +31,7 @@ FILES = $(SNAPDIR)/files.tar.gz
|
|||||||
# if we find that not to be supplied we're going to
|
# if we find that not to be supplied we're going to
|
||||||
# assume that the SRCPKG is the same as the PACKAGE
|
# assume that the SRCPKG is the same as the PACKAGE
|
||||||
|
|
||||||
ifeq ( $(SRCPKG), )
|
ifndef SRCPKG)
|
||||||
SRCPKG := $(PACKAGE)
|
SRCPKG := $(PACKAGE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -116,12 +116,15 @@ $(FILES): $(ROOT)
|
|||||||
type=`file -i $$file|sed 's/.*: //'`; \
|
type=`file -i $$file|sed 's/.*: //'`; \
|
||||||
case $$type in \
|
case $$type in \
|
||||||
*'/x-executable; charset=binary') \
|
*'/x-executable; charset=binary') \
|
||||||
|
echo "--strip-unneeded $$file"; \
|
||||||
strip --strip-unneeded $$file \
|
strip --strip-unneeded $$file \
|
||||||
;; \
|
;; \
|
||||||
*'/x-object; charset=binary') \
|
*'/x-object; charset=binary') \
|
||||||
|
echo "--strip-debug $$file"; \
|
||||||
strip --strip-debug $$file \
|
strip --strip-debug $$file \
|
||||||
;; \
|
;; \
|
||||||
*'/x-sharedlib; charset=binary') \
|
*'/x-sharedlib; charset=binary') \
|
||||||
|
echo "--strip-debug $$file"; \
|
||||||
strip --strip-debug $$file \
|
strip --strip-debug $$file \
|
||||||
;; \
|
;; \
|
||||||
esac; \
|
esac; \
|
||||||
|
|||||||
@@ -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,7 +372,13 @@ sub files {
|
|||||||
$self->{'files'} = [];
|
$self->{'files'} = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
push( @{$self->{'files'}}, $file );
|
if ( $opts->{'verbose'} ) {
|
||||||
|
push( @{$self->{'files'}}, [
|
||||||
|
$sha, $perms, $file ] );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
push( @{$self->{'files'}}, $file );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elsif ( $opts->{'verbose'} ) {
|
elsif ( $opts->{'verbose'} ) {
|
||||||
print "$sha\t$perms\t$file\n";
|
print "$sha\t$perms\t$file\n";
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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'} ) {
|
||||||
|
|||||||
104
SRC/snap/snap
104
SRC/snap/snap
@@ -303,13 +303,13 @@ elsif ( $command eq 'install' ) {
|
|||||||
|
|
||||||
chkyes();
|
chkyes();
|
||||||
|
|
||||||
print "\n";
|
|
||||||
|
|
||||||
foreach my $package ( @$packages ) {
|
foreach my $package ( @$packages ) {
|
||||||
if ( ! $virtfs ) {
|
if ( ! $virtfs ) {
|
||||||
$virtfs = virtfs( 'mount' );
|
$virtfs = virtfs( 'mount' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print "\n";
|
||||||
|
|
||||||
$package->install( $sources );
|
$package->install( $sources );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -346,6 +346,103 @@ elsif ( $command eq 'refresh' ) {
|
|||||||
print "\n";
|
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' ) {
|
elsif ( $command eq 'remove' ) {
|
||||||
my $opts = {
|
my $opts = {
|
||||||
nodeps => eval {
|
nodeps => eval {
|
||||||
@@ -522,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";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user