diff options
author | 2010-06-06 09:08:44 +0000 | |
---|---|---|
committer | 2010-06-06 09:08:44 +0000 | |
commit | eb01027b64a490ce94022c65388e0972eb73cc62 (patch) | |
tree | a0f8d10c248625be16f1c3adabcec82ed5263913 | |
parent | actually pkg_check now (diff) | |
download | wireguard-openbsd-eb01027b64a490ce94022c65388e0972eb73cc62.tar.xz wireguard-openbsd-eb01027b64a490ce94022c65388e0972eb73cc62.zip |
more checks: verify links.
better at handling fs stuff.
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/PkgCheck.pm | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PkgCheck.pm b/usr.sbin/pkg_add/OpenBSD/PkgCheck.pm index 67b237c0c54..8e944d8a5fe 100644 --- a/usr.sbin/pkg_add/OpenBSD/PkgCheck.pm +++ b/usr.sbin/pkg_add/OpenBSD/PkgCheck.pm @@ -1,7 +1,7 @@ #! /usr/bin/perl # ex:ts=8 sw=4: -# $OpenBSD: PkgCheck.pm,v 1.2 2010/06/05 18:08:31 espie Exp $ +# $OpenBSD: PkgCheck.pm,v 1.3 2010/06/06 09:08:44 espie Exp $ # # Copyright (c) 2003-2010 Marc Espie <espie@openbsd.org> # @@ -52,12 +52,29 @@ sub basic_check if ($self->{symlink}) { if (!-l $name) { $state->log("$name is not a symlink\n"); + } else { + if (readlink($name) ne $self->{symlink}) { + $state->log("$name should point to $self->{symlink} but points to ", readlink($name), " instead\n"); + } } return; } if (!-f _) { $state->log("$name is not a file\n"); } + if ($self->{link}) { + my ($a, $b) = (stat _)[0, 1]; + if (!-f $state->{destdir}.$self->{link}) { + $state->log("$name should link to non-existent $self->{link}"); + } else { + my ($c, $d) = (stat _)[0, 1]; + if (defined $a && defined $c) { + if ($a != $c || $b != $d) { + $state->log("$name doesn't link to $self->{link}\n"); + } + } + } + } } sub thorough_check @@ -368,19 +385,28 @@ sub localbase_check { my ($self, $state) = @_; $state->{known} //= {}; + my $base = $state->{destdir}.OpenBSD::Paths->localbase; + $state->{known}{$base."/man"}{'whatis.db'} = 1; + $state->{known}{$base."/info"}{'dir'} = 1; + $state->{known}{$base."/lib/X11"}{'app-defaults'} = 1; + $state->{known}{$base."/libdata"} = {}; + $state->{known}{$base."/libdata/perl5"} = {}; # XXX - OpenBSD::Mtree::parse($state->{known}, - $state->{destdir}.OpenBSD::Paths->localbase, + OpenBSD::Mtree::parse($state->{known}, $base, "/etc/mtree/BSD.local.dist", 1); $state->progress->set_header("Other files"); find(sub { $state->progress->working(1024); if (-d $_) { return if defined $state->{known}{$File::Find::name}; + if (-l $_) { + return if $state->{known}{$File::Find::dir}{$_}; + } + $state->say("Unknown directory $File::Find::name"); } else { return if $state->{known}{$File::Find::dir}{$_}; + $state->say("Unknown file $File::Find::name"); } - $state->say("Unknown object $File::Find::name"); }, OpenBSD::Paths->localbase); } @@ -395,6 +421,7 @@ sub run $self->package_files_check($state, \@list); $state->log->dump; $self->localbase_check($state); + $state->progress->next; } sub parse_and_run |