@@ -333,6 +333,8 @@ sub set_go_env {
333
333
$this -> _set_gocache();
334
334
$this -> _set_go111module();
335
335
$this -> _set_goproxy();
336
+ $this -> _set_gotoolchain();
337
+ $this -> _set_go_test_timeout();
336
338
$this -> _set_cgo_flags();
337
339
$this -> _set_gocross();
338
340
}
@@ -366,6 +368,26 @@ sub _set_goproxy {
366
368
$ENV {GOPROXY } = " off" ;
367
369
}
368
370
371
+ sub _set_gotoolchain {
372
+ # Prevent Go1.21+ downloading new version.
373
+ $ENV {GOTOOLCHAIN } = " local" ;
374
+ }
375
+
376
+ my %GO_TEST_TIMEOUT_MAPPING = (
377
+ ' arm' => ' 3' ,
378
+ ' mips64el' => ' 4' ,
379
+ ' mipsel' => ' 4' ,
380
+ ' riscv64' => ' 3' ,
381
+ );
382
+
383
+ sub _set_go_test_timeout{
384
+ my $host_cpu = dpkg_architecture_value(" DEB_HOST_ARCH_CPU" );
385
+ if (defined (my $timeout = $GO_TEST_TIMEOUT_MAPPING {$host_cpu })) {
386
+ verbose_print(" Set GO_TEST_TIMEOUT_SCALE to $timeout " );
387
+ $ENV {" GO_TEST_TIMEOUT_SCALE" } = $timeout ;
388
+ }
389
+ }
390
+
369
391
sub _set_cgo_flags {
370
392
my $bf = Dpkg::BuildFlags-> new();
371
393
$bf -> load_config();
@@ -440,16 +462,17 @@ sub _set_gocross {
440
462
}
441
463
}
442
464
443
- my ($_go1_minor) = (qx( go version) =~ / go version go1\. ([0-9]+)/ );
444
- if (!defined $_go1_minor) {
445
- # Possible pre-release version of gccgo with "go version unknown".
446
- # Derive Go minor version from from GCC major version, e.g.
447
- # "go-12 env GOTOOLDIR" returns "/usr/lib/gcc/x86_64-linux-gnu/12".
448
- # See https://go.dev/doc/install/gccgo#Releases
449
- my ($_gcc_major) = (qx( go env GOTOOLDIR) =~ / \/ ([0-9]+)$ / );
450
- $_go1_minor = $_gcc_major * 2 - 6;
451
- }
452
465
sub _go1_has_minor {
466
+ my ($_go1_minor) = (qx( go version) =~ / go version go1\. ([0-9]+)/ );
467
+ if (!defined $_go1_minor) {
468
+ # Possible pre-release version of gccgo with "go version unknown".
469
+ # Derive Go minor version from from GCC major version, e.g.
470
+ # "go-12 env GOTOOLDIR" returns "/usr/lib/gcc/x86_64-linux-gnu/12".
471
+ # See https://go.dev/doc/install/gccgo#Releases
472
+ my ($_gcc_major) = (qx( go env GOTOOLDIR) =~ / \/ ([0-9]+)$ / );
473
+ $_go1_minor = $_gcc_major * 2 - 6;
474
+ }
475
+
453
476
my ($minor ) = @_ ;
454
477
return $_go1_minor >= $minor ;
455
478
}
@@ -604,7 +627,11 @@ sub get_targets {
604
627
my $this = shift ;
605
628
606
629
my $buildpkg = $ENV {DH_GOLANG_BUILDPKG } || " $ENV {DH_GOPKG}/..." ;
607
- my $output = qx( go list $buildpkg ) ;
630
+ my $listopt = " " ;
631
+ if (_go1_has_minor(20)) {
632
+ $listopt = " -e" ;
633
+ }
634
+ my $output = qx( go list $listopt $buildpkg ) ;
608
635
my @excludes = (exists ($ENV {DH_GOLANG_EXCLUDES }) ?
609
636
split (' ' , $ENV {DH_GOLANG_EXCLUDES }) : ());
610
637
my @targets = split (/ \n / , $output );
0 commit comments