|
95 | 95 | exit 0; |
96 | 96 | } |
97 | 97 |
|
98 | | - $TARGET = '1.18.x'; |
| 98 | + $TARGET = '1.20.x'; |
99 | 99 | $TIP = 1; |
100 | 100 | } |
101 | 101 |
|
@@ -224,10 +224,11 @@ sub link_github_go_if_available |
224 | 224 |
|
225 | 225 | say "Find already installed go version $target"; |
226 | 226 | mkdir_p("$dest_dir/go"); |
227 | | - foreach my $subdir (qw(bin src pkg)) |
| 227 | + foreach my $file (qw(bin src pkg), |
| 228 | + (at_least($target, v1.21) ? 'go.env' : ())) |
228 | 229 | { |
229 | | - symlink("$goroot/$subdir", "$dest_dir/go/$subdir") |
230 | | - or die "symlink($goroot/$subdir, $dest_dir/go/$subdir): $!\n"; |
| 230 | + symlink("$goroot/$file", "$dest_dir/go/$file") |
| 231 | + or die "symlink($goroot/$file, $dest_dir/go/$file): $!\n"; |
231 | 232 | } |
232 | 233 | say "go version $target symlinked and available as $dest_dir/go/bin/go"; |
233 | 234 | return 1; |
@@ -273,12 +274,14 @@ sub install_go |
273 | 274 | if ($EXT eq 'zip') |
274 | 275 | { |
275 | 276 | exe(qw(curl -L -s -o x.zip), $url); |
276 | | - exe(qw(unzip -q x.zip go/bin/* go/pkg/**/* go/src/**/*)); |
| 277 | + exe(qw(unzip -q x.zip go/bin/* go/pkg/**/* go/src/**/*), |
| 278 | + (at_least($version, v1.21) ? 'go/go.env' : ())); |
277 | 279 | unlink 'x.zip'; |
278 | 280 | } |
279 | 281 | else |
280 | 282 | { |
281 | | - exe("curl -L -s \Q$url\E | tar zxf - go/bin go/pkg go/src"); |
| 283 | + exe("curl -L -s \Q$url\E | tar zxf - go/bin go/pkg go/src" |
| 284 | + . (at_least($version, v1.21) ? ' go/go.env' : '')); |
282 | 285 | } |
283 | 286 |
|
284 | 287 | my $goroot_env; |
@@ -373,7 +376,8 @@ sub install_prebuilt_tip |
373 | 376 |
|
374 | 377 | mkdir_p("$dest_dir/go"); |
375 | 378 |
|
376 | | - $status = exe_status(qw(tar zxf gotip.tar.gz -C), "$dest_dir/go", qw(bin pkg src)); |
| 379 | + $status = exe_status(qw(tar zxf gotip.tar.gz -C), "$dest_dir/go", |
| 380 | + qw(bin pkg src go.env)); |
377 | 381 | unlink 'gotip.tar.gz'; |
378 | 382 | if ($status != 0) |
379 | 383 | { |
@@ -605,3 +609,15 @@ sub go_env |
605 | 609 |
|
606 | 610 | return $res; |
607 | 611 | } |
| 612 | + |
| 613 | +sub at_least |
| 614 | +{ |
| 615 | + my($version, $cmp) = @_; |
| 616 | + |
| 617 | + unless (ref $version) |
| 618 | + { |
| 619 | + $version = eval { version->parse("v$version") } // return; |
| 620 | + } |
| 621 | + |
| 622 | + return $version ge $cmp |
| 623 | +} |
0 commit comments