summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2017-09-18 13:01:10 +0000
committerespie <espie@openbsd.org>2017-09-18 13:01:10 +0000
commitfdc4cfafcd9621ed6f5e5d3c0a00e5f55eab8cd5 (patch)
treea75037386fa51287cce8c838c15e702c3fef0311
parentPrevent type mismatch warning in debug on platforms where sig_atomic_t (diff)
downloadwireguard-openbsd-fdc4cfafcd9621ed6f5e5d3c0a00e5f55eab8cd5.tar.xz
wireguard-openbsd-fdc4cfafcd9621ed6f5e5d3c0a00e5f55eab8cd5.zip
-V option for pkg_create and incorporate version into signatures.
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PkgCreate.pm19
-rw-r--r--usr.sbin/pkg_add/OpenBSD/Signature.pm24
2 files changed, 38 insertions, 5 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm b/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm
index f6c4955ff9a..a2ac94b3e65 100644
--- a/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm
@@ -1,6 +1,6 @@
#! /usr/bin/perl
# ex:ts=8 sw=4:
-# $OpenBSD: PkgCreate.pm,v 1.123 2016/10/03 13:17:30 espie Exp $
+# $OpenBSD: PkgCreate.pm,v 1.124 2017/09/18 13:01:10 espie Exp $
#
# Copyright (c) 2003-2014 Marc Espie <espie@openbsd.org>
#
@@ -82,6 +82,7 @@ sub handle_options
{
my $state = shift;
+ $state->{system_version} = 0;
$state->{opt} = {
'f' =>
sub {
@@ -95,16 +96,23 @@ sub handle_options
my $d = shift;
$state->{dependencies}{$d} = 1;
},
+ 'V' => sub {
+ my $d = shift;
+ if ($d !~ m/^\d+$/) {
+ $state->usage("-V number");
+ }
+ $state->{system_version} += $d;
+ },
'W' => sub {
my $w = shift;
$state->{wantlib}{$w} = 1;
},
};
$state->{no_exports} = 1;
- $state->SUPER::handle_options('p:f:d:M:U:A:B:P:W:qQ',
+ $state->SUPER::handle_options('p:f:d:M:U:A:B:P:V:W:qQ',
'[-nQqvx] [-A arches] [-B pkg-destdir] [-D name[=value]]',
'[-L localbase] [-M displayfile] [-P pkg-dependency]',
- '[-U undisplayfile] [-W wantedlib]',
+ '[-U undisplayfile] [-V n] [-W wantedlib]',
'[-d desc -D COMMENT=value -f packinglist -p prefix]',
'pkg-name');
@@ -114,7 +122,6 @@ sub handle_options
}
$state->{base} = $base;
-
}
package OpenBSD::PkgCreate;
@@ -1184,6 +1191,10 @@ sub add_elements
OpenBSD::PackingElement::LocalBase->add($plist, $state->opt('L'));
}
$self->add_extra_info($plist, $state);
+ if ($state->{system_version}) {
+ OpenBSD::PackingElement::Version->add($plist,
+ $state->{system_version});
+ }
}
sub cant_read_fragment
diff --git a/usr.sbin/pkg_add/OpenBSD/Signature.pm b/usr.sbin/pkg_add/OpenBSD/Signature.pm
index dac7d687412..302298f18e0 100644
--- a/usr.sbin/pkg_add/OpenBSD/Signature.pm
+++ b/usr.sbin/pkg_add/OpenBSD/Signature.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: Signature.pm,v 1.18 2015/03/26 22:07:58 kili Exp $
+# $OpenBSD: Signature.pm,v 1.19 2017/09/18 13:01:10 espie Exp $
#
# Copyright (c) 2010 Marc Espie <espie@openbsd.org>
#
@@ -62,6 +62,26 @@ sub signature
}
}
+package OpenBSD::PackingElement::Version;
+
+sub signature
+{
+ my ($self, $hash) = @_;
+ $hash->{VERSION} = $self;
+}
+
+sub long_string
+{
+ my $self = shift;
+ return $self->{name};
+}
+
+sub compare
+{
+ my ($a, $b) = @_;
+ return $a->{name} <=> $b->{name};
+}
+
package OpenBSD::Signature;
sub from_plist
{
@@ -70,6 +90,8 @@ sub from_plist
my $k = {};
$plist->visit('signature', $k);
+ $k->{VERSION} //= OpenBSD::PackingElement::Version->new(0);
+
if ($plist->has('always-update')) {
return $class->always->new($plist->pkgname, $k, $plist);
} else {