diff options
author | 2004-08-08 00:19:06 +0000 | |
---|---|---|
committer | 2004-08-08 00:19:06 +0000 | |
commit | 915a3b60308456cf518861acb89ea580236ba607 (patch) | |
tree | 0c2b895a4ad9ebd2cbfa7cdccb45a4499a72548a | |
parent | spacing (diff) | |
download | wireguard-openbsd-915a3b60308456cf518861acb89ea580236ba607.tar.xz wireguard-openbsd-915a3b60308456cf518861acb89ea580236ba607.zip |
should have been removed when I removed the old pkg tools.
-rw-r--r-- | usr.sbin/pkg/Makefile | 10 | ||||
-rw-r--r-- | usr.sbin/pkg/pkg.1 | 44 | ||||
-rw-r--r-- | usr.sbin/pkg/pkg.pl | 451 |
3 files changed, 0 insertions, 505 deletions
diff --git a/usr.sbin/pkg/Makefile b/usr.sbin/pkg/Makefile deleted file mode 100644 index 0fc304fbe0b..00000000000 --- a/usr.sbin/pkg/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -# $OpenBSD: Makefile,v 1.2 2001/04/02 17:25:53 espie Exp $ - -NOPROG= -MAN= pkg.1 - -afterinstall: - ${INSTALL} ${INSTALL_COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ - ${.CURDIR}/pkg.pl ${DESTDIR}${BINDIR}/pkg - -.include <bsd.prog.mk> diff --git a/usr.sbin/pkg/pkg.1 b/usr.sbin/pkg/pkg.1 deleted file mode 100644 index 5feccf2f1d5..00000000000 --- a/usr.sbin/pkg/pkg.1 +++ /dev/null @@ -1,44 +0,0 @@ -.\" $OpenBSD: pkg.1,v 1.4 2003/06/12 12:59:51 jmc Exp $ -.\" -.\" Copyright (c) 2001 Marc Espie -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -.\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -.\" POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd April 2, 2001 -.Dt PKG 1 -.Os -.Sh NAME -.Nm pkg -.Nd replacement-to-be of pkg_* tools -.Sh DESCRIPTION -.Nm -is meant to be a replacement of the old pkg_* tools. -For the time being, it should only be invoked internally by -.Xr pkg_add 1 , -to handle dependencies. -.Sh SEE ALSO -.Xr pkg_add 1 -.Sh AUTHORS -This program was written by Marc Espie. -.Sh BUGS -This program's design is not even finished yet. diff --git a/usr.sbin/pkg/pkg.pl b/usr.sbin/pkg/pkg.pl deleted file mode 100644 index 444276432e9..00000000000 --- a/usr.sbin/pkg/pkg.pl +++ /dev/null @@ -1,451 +0,0 @@ -#!/usr/bin/perl -# ex:ts=8 sw=4: -# $OpenBSD: pkg.pl,v 1.7 2001/11/17 10:42:11 espie Exp $ -# -# Copyright (c) 2001 Marc Espie. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS -# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OPENBSD -# PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -require 5.6.0; - -use strict; -use Getopt::Std; - -# This is a first implementation of the pkg_* perl replacement. -# We are doing this piecewise, handling larger and larger parts of -# package handling in perl, until the corresponding C code just vanishes. - -# This code is going to change a lot in the near future. - -# Currently, it's a bare-bones implementation of the new dependency -# handler. Note that even the syntax may change. - -my $vardb = $ENV{'PKG_DBDIR'} || '/var/db/pkg'; -my $verbose; - -sub compare_pseudo_numbers -{ - my ($n, $m) = @_; - - my ($n1, $m1); - - if ($n =~ m/^\d+/) { - $n1 = $&; - $n = $'; - } - if ($m =~ m/^\d+/) { - $m1 = $&; - $m = $'; - } - - if ($n1 == $m1) { - return $n cmp $m; - } else { - return $n1 <=> $m1; - } -} - - -sub dewey_compare -{ - my ($a, $b) = @_; - my ($pa, $pb); - - unless ($b =~ m/p\d+$/) { # does the Dewey hold a p<number> ? - $a =~ s/p\d+$//; # No -> strip it from version. - } - - return 0 if $a =~ /^$b$/; # bare equality - - if ($a =~ s/p(\d+)$//) { # extract patchlevels - $pa = $1; - } - if ($b =~ s/p(\d+)$//) { - $pb = $1; - } - - my @a = split(/\./, $a); - push @a, $pa if defined $pa; # ... and restore them - my @b = split(/\\\./, $b); - push @b, $pb if defined $pb; - while (@a > 0 && @b > 0) { - my $va = shift @a; - my $vb = shift @b; - next if $va eq $vb; - return compare_pseudo_numbers($va, $vb); - } - if (@a > 0) { - return 1; - } else { - return -1; - } -} - -sub check_version -{ - my ($v, $spec) = @_; - local $_; - - # any version spec - return 1 if $spec eq '.*'; - - my @specs = split(/,/, $spec); - for (grep /^\d/, @specs) { # exact number: check match - return 1 if $v =~ /^$_$/; - return 1 if $v =~ /^${_}p\d+$/; # allows for recent patches - } - - # Last chance: dewey specs ? - my @deweys = grep !/^\d/, @specs; - for (@deweys) { - if (m/^\<\=|\>\=|\<|\>/) { - my ($op, $dewey) = ($&, $'); - my $compare = dewey_compare($v, $dewey); - return 0 if $op eq '<' && $compare >= 0; - return 0 if $op eq '<=' && $compare > 0; - return 0 if $op eq '>' && $compare <= 0; - return 0 if $op eq '>=' && $compare < 0; - } else { - return 0; # unknown spec type - } - } - return @deweys == 0 ? 0 : 1; -} - -sub check_1flavor -{ - my ($f, $spec) = @_; - local $_; - - for (split /-/, $spec) { - # must not be here - if (m/^\!/) { - return 0 if $f->{$'}; - # must be here - } else { - return 0 unless $f->{$_}; - } - } - return 1; -} - -sub check_flavor -{ - my ($f, $spec) = @_; - local $_; - # no flavor constraints - return 1 if $spec eq ''; - - $spec =~ s/^-//; - # retrieve all flavors - my %f = map +($_, 1), split /\-/, $f; - - # check each flavor constraint - for (split /,/, $spec) { - if (check_1flavor(\%f, $_)) { - return 1; - } - } - return 0; -} - -sub subpattern_match -{ - my ($p, $list) = @_; - local $_; - - my ($stemspec, $vspec, $flavorspec); - - # first, handle special characters (shell -> perl) - $p =~ s/\./\\\./g; - $p =~ s/\+/\\\+/g; - $p =~ s/\*/\.\*/g; - $p =~ s/\?/\./g; - - # then, guess at where the version number is if any, - - # this finds patterns like -<=2.3,>=3.4.p1- - # the only constraint is that the actual number - # - must start with a digit, - # - not contain - or , - if ($p =~ m/\-((?:\>|\>\=|\<|\<\=)?\d[^-]*)/) { - ($stemspec, $vspec, $flavorspec) = ($`, $1, $'); - # `any version' matcher - } elsif ($p =~ m/\-(\.\*)/) { - ($stemspec, $vspec, $flavorspec) = ($`, $1, $'); - # okay, so no version marker. Assume no flavor spec. - } else { - ($stemspec, $vspec, $flavorspec) = ($p, '', ''); - } - - $p = "$stemspec-\.\*" if $vspec ne ''; - - # First trim down the list - my @l = grep {/^$p$/} @$list; - - my @result = (); - # Now, have to extract the version number, and the flavor... - for (@l) { - my ($stem, $v, $flavor); - if (m/\-(\d[^-]*)/) { - ($stem, $v, $flavor) = ($`, $1, $'); - if ($stem =~ m/^$stemspec$/ && - check_version($v, $vspec) && - check_flavor($flavor, $flavorspec)) { - push(@result, $_); - } - } - } - - return @result; -} - -sub pattern_match -{ - my ($pattern, $list) = @_; - my @l; - - for my $subpattern (split /\|/, $pattern) { - @l = subpattern_match($subpattern, $list); - if (@l > 0) { - return $l[0]; - } - } - return 0; -} - -sub check_dependencies -{ - my $pattern = shift; - unless (chdir $vardb) { - die "Directory $vardb absent\n"; - } - my @list = glob '*'; - # Try subpatterns in sequence - return pattern_match($pattern, \@list) ? 1 : 0; -} - -sub check_lib_specs -{ - my $base = shift; - my $dir; - for my $spec (split(/,/, shift)) { - print "checking $spec " if $verbose; - if ($spec =~ m|.*/|) { - $dir = "$base/$&"; - $spec = $'; - } else { - $dir = "$base/lib"; - } - if ($spec =~ m/^(.*)\.(\d+)\.(\d+)$/) { - my ($libname, $major, $minor) = ($1, $2, $3); - unless (opendir(DIRECTORY, $dir)) { - print "base directory not found\n" if $verbose; - return undef; - } - my @candidates = - grep { /^lib\Q$libname\E\.so\.$major\.(\d+)$/ - && $1 >= $minor } - readdir(DIRECTORY); - close(DIRECTORY); - if (@candidates == 0) { - print "not found\n" if $verbose; - return undef; - } else { - print "found ", $candidates[0], "\n" if $verbose; - } - } else { - print "bad spec\n" if $verbose; - return undef; - } - } - return 1; -} - -sub solve_dependencies -{ - my $file = shift; - my $pkgname; - my %verify; - my @lines; - my $prefix; - - if (defined $ENV{'PKG_PREFIX'}) { - $prefix = $ENV{'PKG_PREFIX'}; - } - open(FILE, '<', $file); - # Parse the old plist, scanning for what we want to handle only. - while (<FILE>) { - chomp; - if (m/^\@name\s+/) { - $pkgname=$'; - } - elsif (m/^\@newdepend\s+/) { - my ($name, $pattern, $def) = split(/\:/, $'); - unless (defined $verify{$name}) { - $verify{$name} = []; - } - push(@{$verify{$name}}, [$pattern, $def]); - push(@lines, "\@comment newdepend $name:$pattern:$def"); - } elsif (m/^\@libdepend\s+/) { - my ($name, $libspec, $pattern, $def) = split(/\:/, $'); - unless (defined $verify{$name}) { - $verify{$name} = []; - } - push(@{$verify{$name}}, [$pattern, $def, $libspec]); - push(@lines, "\@comment libdepend $libspec:$name:$pattern:$def"); - } else { - if (m/^\@cwd\s+/ && !defined $prefix) { - $prefix = $'; - } - push(@lines, $_); - } - } - close(FILE); - - open FILE, '>', "$file"; - print FILE "\@name $pkgname\n"; - my @todo = ($pkgname); - my %done = (); - - unless (chdir $vardb) { - die "Directory $vardb absent\n"; - } - my @list = glob '*'; - - # create all the new pkgdep stuff - - for my $check (@todo) { - print "pkg: Handling dependencies for $check\n" if $verbose; - for my $dep (@{$verify{$check}}) { - print " checking ", $dep->[0], " (", $dep->[1], - ") -> " if $verbose; - my $r = pattern_match($dep->[0], \@list); - if ($r) { - print "$r\n" if $verbose; - } else { - print "Not found\n" if $verbose; - } - # library dependency check: if the libraries don't - # match, the package found is bad. Revert to - # the default package - if (@{$dep} > 2) { - unless (check_lib_specs($prefix, $dep->[2])) { - $r = ''; - } - } - # unshift so that base dependencies happen first. - if ($r) { - unshift @lines, "\@pkgdep $r"; - } else { - unshift @lines, "\@pkgdep ".$dep->[1]; - push @todo, $dep->[1] unless $done{$dep->[1]}; - } - } - $done{$check} = 1; - } - for my $l (@lines) { - print FILE $l, "\n"; - } - close FILE; -} - -sub resolve_version -{ - return $_ if -d $_; - my @l = glob("$_-[0-9]*"); - if (@l > 0) { - return $l[0]; - } else { - return undef; - } -} - -sub show_forward_dependencies -{ - my @l = @_; - - local $_; - - unless (chdir $vardb) { - die "Directory $vardb absent\n"; - } - - @l = map(resolve_version, @l); - - my %known = map +($_,1), @l; - - open(OUT, "|tsort -f -r|tr '\012' '\040';echo"); - for my $p (@l) { - print OUT "$p $p\n"; - if (open(DEPS, "$p/+REQUIRED_BY")) { - while (<DEPS>) { - chomp; - print OUT "$p $_\n"; - unless ($known{$_}) { - push(@l, $_); - $known{$_} = 1; - } - } - close DEPS; - } - } - close OUT; -} - -# Pass this off to the old package commands -my %legacy = map +($_, 1), qw{add info delete create}; -my %opts; - -getopts('v', \%opts); - -$verbose = 1 if defined($opts{'v'}); - -if (@ARGV == 0) { - die "needs arguments\n"; -} - -my $cmd = shift; - -if (defined $legacy{$cmd}) { - if (defined $opts{'v'}) { - unshift(@ARGV, '-v'); - } - exec { "pkg_$cmd"} ("pkg_$cmd", @ARGV); -} elsif ($cmd eq 'dependencies') { - my $sub = shift; - if ($sub eq 'check') { - if (check_dependencies(shift)) { - exit(0); - } else { - exit(1); - } - } elsif ($sub eq 'solve') { - solve_dependencies(shift); - exit(0); - } elsif ($sub eq 'show') { - show_forward_dependencies(@ARGV); - exit(0); - } - die "Bad dependency subcommand $sub\n"; -} -die "Bad command $cmd\n"; |