Andrew Hewus Fresh writes:
> On Thu, Sep 10, 2020 at 04:23:03PM -0600, Aaron Bieber wrote:
>> Hi,
>>
>> I have been sitting on this diff for a bit. It enables portgen to take a
>> version. For example:
>>
>> $ portgen go github.com/ipfs/go-ipfs@v0.7.0-rc2
>>
>> This is handy when our logic to pick the version number prevents you
>> from grabbing rc versions.
>>
>> It will also enable easier upgrading of GOMOD vars (that's another diff
>> that paco@ has put together).
>>
>> OK?
>>
>> Cheers,
>> Aaron
>>
>> diff bd5892339f98bf561050a7dfa529498b3770873d /usr/ports
>> blob - 16116f9b0525e89d7f4b115e7517cb913f107760
>> file + infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
>> --- infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
>> +++ infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
>> @@ -64,16 +64,31 @@ sub _go_lic_info
>>
>> sub _go_determine_name
>> {
>> - # Some modules end in "v1" or "v2", if we find one of these, we need
>> - # to set PKGNAME to something up a level
>> my ( $self, $module ) = @_;
>> - my $json = $self->get_json( $module . '/@latest' );
>> + my $json = {};
>>
>> + # Versions can be specified on the command line:
>> + if ($module =~ m/\@v/) {
>
> Why don't you just "get_json" if it has a version already, not looking
> for @latest? It seems like that would do a bit of validation that the
> version you tried exists and such.
>
Because the next thing grabbed is not json, it's the actual .mod file
for a given package:
https://proxy.golang.org/github.com/ipfs/go-ipfs/@v/v0.7.0-rc2.mod
> $json = $self->get_json($module);
> $module =~ s/@.*//;
>
>> + my @parts = split("@", $module);
>
> I might name these `my ($m, $v) = split /@/, $module, 2;` because I
> think that's easier to follow than $parts[1].
>
Good call.
>> + $module = $parts[0];
>> + $json->{Module} = $parts[0];
>> + $json->{Version} = $parts[1];
>> +
>> + # This is used in get_ver_info when we have already determined
>> + # the version to use.
>> + $self->{ModName} = $parts[0];
>> + $self->{ModVersion} = $parts[1];
>
> Should we store these things in $self out of $json if we got them? What
> does grabbing all the versions do if we've already gotten one?
It returns early from get_ver_info if the self vars are set. Since
get_ver_info is called by the portgen stuff, I am not sure what the best
approach to not calling it is.
>
>
>> + } else {
>> + $json = $self->get_json( $module . '/@latest' );
>> + }
>> +
>> if ($json->{Version} =~ m/incompatible/) {
>> my $msg = "${module} $json->{Version} is incompatible with Go modules.";
>> croak $msg;
>> }
>>
>> + # Some modules end in "v1" or "v2", if we find one of these, we need
>> + # to set PKGNAME to something up a level
>> if ($module =~ m/v\d$/) {
>> $json->{Name} = ( split '/', $module )[-2];
>> } else {
>> @@ -212,6 +227,11 @@ sub _go_mod_normalize
>> sub get_ver_info
>> {
>> my ( $self, $module ) = @_;
>> +
>> + if (defined $self->{ModVersion} && defined $self->{ModName}) {
>> + return { Module => $self->{ModName}, Version => $self->{ModVersion} };
>> + }
>> +
>> my $version_list = $self->get( $module . '/@v/list' );
>> my $version = "v0.0.0";
>> my $ret;
>>
New version:
diff bd5892339f98bf561050a7dfa529498b3770873d /usr/ports
blob - 16116f9b0525e89d7f4b115e7517cb913f107760
file + infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
--- infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
+++ infrastructure/lib/OpenBSD/PortGen/Port/Go.pm
@@ -64,16 +64,30 @@ sub _go_lic_info
sub _go_determine_name
{
- # Some modules end in "v1" or "v2", if we find one of these, we need
- # to set PKGNAME to something up a level
my ( $self, $module ) = @_;
- my $json = $self->get_json( $module . '/@latest' );
+ my $json = {};
+ # Versions can be specified on the command line:
+ if ($module =~ m/\@v/) {
+ my ($m, $v) = split("@", $module);
+ $json->{Module} = $m;
+ $json->{Version} = $v;
+
+ # This is used in get_ver_info when we have already determined
+ # the version to use.
+ $self->{ModName} = $m;
+ $self->{ModVersion} = $v;
+ } else {
+ $json = $self->get_json( $module . '/@latest' );
+ }
+
if ($json->{Version} =~ m/incompatible/) {
my $msg = "${module} $json->{Version} is incompatible with Go modules.";
croak $msg;
}
+ # Some modules end in "v1" or "v2", if we find one of these, we need
+ # to set PKGNAME to something up a level
if ($module =~ m/v\d$/) {
$json->{Name} = ( split '/', $module )[-2];
} else {
@@ -212,6 +226,11 @@ sub _go_mod_normalize
sub get_ver_info
{
my ( $self, $module ) = @_;
+
+ if (defined $self->{ModVersion} && defined $self->{ModName}) {
+ return { Module => $self->{ModName}, Version => $self->{ModVersion} };
+ }
+
my $version_list = $self->get( $module . '/@v/list' );
my $version = "v0.0.0";
my $ret;
No comments:
Post a Comment