Tuesday, January 04, 2022

Re: a bit of love for portgen

On Tue, Jan 04, 2022 at 06:35:30PM +0100, Marc Espie wrote:
> I'm not a big user of it myself, so please test.
>
> Two improvements:
> - stop CPAN::Meta::Requirements from complaining, by explicitly passing
> it 0 for undefined requirements (e.g., any version).
> (alternately, we could inherit from CPAN::Meta::Requirements and override
> _blank_carp to NOT do anything)


I wonder if that's a new feature as I just saw it yesterday at work and
I don't recall running into it when I was testing portgen. Or, maybe I
just ignored it. Thanks!


> - allow passing of -f VAR=value options through to make, the main
> intended usage being "portgen -f FETCH_PACKAGES= ..." to avoid
> rebuilding known dependencies.

A very useful feature. Thanks.


OK afresh1@


> Index: bin/portgen
> ===================================================================
> RCS file: /cvs/ports/infrastructure/bin/portgen,v
> retrieving revision 1.4
> diff -u -p -r1.4 portgen
> --- bin/portgen 2 Jul 2020 21:07:51 -0000 1.4
> +++ bin/portgen 4 Jan 2022 17:29:59 -0000
> @@ -28,6 +28,16 @@ BEGIN {
> }
>
> use lib ( "$portdir/infrastructure/lib", "$FindBin::Bin/../lib" );
> +use OpenBSD::Getopt;
> +
> +my @opt_m;
> +getopts('m:',
> + {
> + 'm' =>
> + sub {
> + push(@opt_m, shift);
> + }
> + });
>
> my ( $type, $module ) = @ARGV;
>
> @@ -57,6 +67,10 @@ sub portgen_class
> }
>
> my $o = portgen_class($type)->new;
> +
> +if (@opt_m) {
> + $o->add_make_options(@opt_m);
> +}
>
> my @new_ports = $o->port($module);
> say for @new_ports;
> Index: lib/OpenBSD/PortGen/Dependency.pm
> ===================================================================
> RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Dependency.pm,v
> retrieving revision 1.4
> diff -u -p -r1.4 Dependency.pm
> --- lib/OpenBSD/PortGen/Dependency.pm 16 May 2020 21:44:23 -0000 1.4
> +++ lib/OpenBSD/PortGen/Dependency.pm 4 Jan 2022 17:29:59 -0000
> @@ -53,7 +53,8 @@ sub _add_dep
> {
> my ( $self, $type, $port, $reqs ) = @_;
>
> - $self->{deps}{$type} ||= CPAN::Meta::Requirements->new;
> + $self->{deps}{$type} //= CPAN::Meta::Requirements->new;
> + $reqs //= 0; # any version will do
> $self->{deps}{$type}->add_string_requirement( $port => $reqs );
> }
>
> Index: lib/OpenBSD/PortGen/Port.pm
> ===================================================================
> RCS file: /cvs/ports/infrastructure/lib/OpenBSD/PortGen/Port.pm,v
> retrieving revision 1.21
> diff -u -p -r1.21 Port.pm
> --- lib/OpenBSD/PortGen/Port.pm 13 Jun 2021 18:30:50 -0000 1.21
> +++ lib/OpenBSD/PortGen/Port.pm 4 Jan 2022 17:29:59 -0000
> @@ -36,6 +36,14 @@ use OpenBSD::PortGen::Utils qw(
> ports_dir
> );
>
> +my @make_options;
> +
> +sub add_make_options
> +{
> + my $self = shift;
> + push(@make_options, @_);
> +}
> +
> sub _cp {
> my (@args) = @_;
> system('/bin/cp', @args) == 0;
> @@ -471,7 +479,7 @@ sub _format_comment
> sub _make
> {
> my $self = shift;
> - system( 'make', @_ );
> + system( 'make', @_, @make_options);
> return $? >> 8;
> }
>
>

No comments:

Post a Comment