Wednesday, June 30, 2021

Re: Convenience changes for Go

Marc Espie writes:

> On Wed, Jun 23, 2021 at 07:48:01AM -0600, Aaron Bieber wrote:
>> Hi,
>>
>> Here is a diff that adds:
>>
>> - -trimpath to MODGO_FLAGS: This removes paths like
>> "/build/pobj/blablablablbal" from the resulting binary.
>> - Teaches modgo-gen-modules-helper how to pass a version to the
>> get_dist_info stuff.
>> - Adds a new make target: "modgo-gen-current-modules". This will
>> generate the MODGO_ bits for the currently defined
>> MODGO_MODNAME. (existing target generates them for what ever Go
>> things the latest version of a MODGO_MODNAME is).
>>
>> The -trimpath is mostly cosmetic, but it also gets us a bit closer to
>> "reproducible builds". This would potentially let us produce the same
>> binaries that an upstream does for releases (assuming build flags and
>> '-X' things are all the same).
>>
>> The new target lets one bump a port to an explicit version (i.e. not the
>> latest, or a latest that has not yet propagated through the Go module
>> ecosystem).
>>
>> Thoughts? Cluesticks? OKs?
>>
>> Cheers,
>> Aaron
>>
>
>> diff ad22f1f0930c176e1bc87c0d5537a6033669c23a /usr/ports
>> blob - 60b84fb0ae310786ee5c71a2e4e4e741f0904da9
>> file + infrastructure/bin/modgo-gen-modules-helper
>> --- infrastructure/bin/modgo-gen-modules-helper
>> +++ infrastructure/bin/modgo-gen-modules-helper
>> @@ -31,7 +31,8 @@ use lib ( "$portdir/infrastructure/lib", "$FindBin::Bi
>>
>> use OpenBSD::PortGen::Port::Go;
>>
>> -my ( $module ) = @ARGV;
>> +my ( $module, $version ) = @ARGV;
>> +$module = "${module}\@${version}" if ($version ne "");
>>
>> my $port = OpenBSD::PortGen::Port::Go->new;
>> my $portinfo = $port->get_dist_info($module);
>> blob - 924c64a51696a59fd6dc5456b1f3f7abda7e38d6
>> file + lang/go/go.port.mk
>
> That part looks wrong.
>
> I expect that having one single parameter will complain loudly about
> $version being undefined.
>
> You want to distinguish between 1 parameter and two.
>
> So probably
>
> die if @ARGV < 1;
> my $module = shift;
> if (@ARGV == 1) {
> $module .= '@'. shift;
> }
>
> or something like that.
>
> (comparing version with "" opens all kinds of issues.
>
> Note that *all* portgen stuff should have
> "use strict;"
>
> near use warnings.

Updated diff with the changes above and a suggested change from sthen@.

Now you run "env MODGO_VERSION=current make modgo-gen-modules" to get
what Go thinks is the latest version of a port. Without the =current bit
it will fetch the mod files for the current MODGO_VERSION.

I also did a mulk (mini-bulk) of the Go ports to make sure there was no
fallout from the addition of '-trimpath':

Elapsed time=05:26:21
I=607 B=0 Q=0 T=0 F=0 !=1

Everything build fine!

No comments:

Post a Comment