build: update to go1.21rc3 and make go1.19 the minimum required version

Signed-off-by: Anagh Kumar Baranwal <6824881+darthShadow@users.noreply.github.com>
This commit is contained in:
Anagh Kumar Baranwal 2023-06-23 14:20:01 +05:30 committed by Nick Craig-Wood
parent 0063d14dbb
commit 0ef0e908ca
14 changed files with 45 additions and 66 deletions

View file

@ -27,12 +27,12 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
job_name: ['linux', 'linux_386', 'mac_amd64', 'mac_arm64', 'windows', 'other_os', 'go1.18', 'go1.19'] job_name: ['linux', 'linux_386', 'mac_amd64', 'mac_arm64', 'windows', 'other_os', 'go1.19', 'go1.20']
include: include:
- job_name: linux - job_name: linux
os: ubuntu-latest os: ubuntu-latest
go: '1.20' go: '1.21.0-rc.3'
gotags: cmount gotags: cmount
build_flags: '-include "^linux/"' build_flags: '-include "^linux/"'
check: true check: true
@ -43,14 +43,14 @@ jobs:
- job_name: linux_386 - job_name: linux_386
os: ubuntu-latest os: ubuntu-latest
go: '1.20' go: '1.21.0-rc.3'
goarch: 386 goarch: 386
gotags: cmount gotags: cmount
quicktest: true quicktest: true
- job_name: mac_amd64 - job_name: mac_amd64
os: macos-11 os: macos-11
go: '1.20' go: '1.21.0-rc.3'
gotags: 'cmount' gotags: 'cmount'
build_flags: '-include "^darwin/amd64" -cgo' build_flags: '-include "^darwin/amd64" -cgo'
quicktest: true quicktest: true
@ -59,14 +59,14 @@ jobs:
- job_name: mac_arm64 - job_name: mac_arm64
os: macos-11 os: macos-11
go: '1.20' go: '1.21.0-rc.3'
gotags: 'cmount' gotags: 'cmount'
build_flags: '-include "^darwin/arm64" -cgo -macos-arch arm64 -cgo-cflags=-I/usr/local/include -cgo-ldflags=-L/usr/local/lib' build_flags: '-include "^darwin/arm64" -cgo -macos-arch arm64 -cgo-cflags=-I/usr/local/include -cgo-ldflags=-L/usr/local/lib'
deploy: true deploy: true
- job_name: windows - job_name: windows
os: windows-latest os: windows-latest
go: '1.20' go: '1.21.0-rc.3'
gotags: cmount gotags: cmount
cgo: '0' cgo: '0'
build_flags: '-include "^windows/"' build_flags: '-include "^windows/"'
@ -76,23 +76,23 @@ jobs:
- job_name: other_os - job_name: other_os
os: ubuntu-latest os: ubuntu-latest
go: '1.20' go: '1.21.0-rc.3'
build_flags: '-exclude "^(windows/|darwin/|linux/)"' build_flags: '-exclude "^(windows/|darwin/|linux/)"'
compile_all: true compile_all: true
deploy: true deploy: true
- job_name: go1.18
os: ubuntu-latest
go: '1.18'
quicktest: true
racequicktest: true
- job_name: go1.19 - job_name: go1.19
os: ubuntu-latest os: ubuntu-latest
go: '1.19' go: '1.19'
quicktest: true quicktest: true
racequicktest: true racequicktest: true
- job_name: go1.20
os: ubuntu-latest
go: '1.20'
quicktest: true
racequicktest: true
name: ${{ matrix.job_name }} name: ${{ matrix.job_name }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
@ -130,6 +130,11 @@ jobs:
- name: Install Libraries on macOS - name: Install Libraries on macOS
shell: bash shell: bash
run: | run: |
# https://github.com/Homebrew/brew/issues/15621#issuecomment-1619266788
# https://github.com/orgs/Homebrew/discussions/4612#discussioncomment-6319008
unset HOMEBREW_NO_INSTALL_FROM_API
brew untap --force homebrew/core
brew untap --force homebrew/cask
brew update brew update
brew install --cask macfuse brew install --cask macfuse
if: matrix.os == 'macos-11' if: matrix.os == 'macos-11'
@ -239,7 +244,7 @@ jobs:
- name: Install Go - name: Install Go
uses: actions/setup-go@v4 uses: actions/setup-go@v4
with: with:
go-version: '1.20' go-version: '1.21.0-rc.3'
check-latest: true check-latest: true
- name: Install govulncheck - name: Install govulncheck
@ -264,7 +269,7 @@ jobs:
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v4 uses: actions/setup-go@v4
with: with:
go-version: '1.20' go-version: '1.21.0-rc.3'
- name: Go module cache - name: Go module cache
uses: actions/cache@v3 uses: actions/cache@v3

View file

@ -1,5 +1,5 @@
//go:build !plan9 && !solaris && !js && go1.18 //go:build !plan9 && !solaris && !js
// +build !plan9,!solaris,!js,go1.18 // +build !plan9,!solaris,!js
// Package azureblob provides an interface to the Microsoft Azure blob object storage system // Package azureblob provides an interface to the Microsoft Azure blob object storage system
package azureblob package azureblob

View file

@ -1,5 +1,5 @@
//go:build !plan9 && !solaris && !js && go1.18 //go:build !plan9 && !solaris && !js
// +build !plan9,!solaris,!js,go1.18 // +build !plan9,!solaris,!js
package azureblob package azureblob

View file

@ -1,7 +1,7 @@
// Test AzureBlob filesystem interface // Test AzureBlob filesystem interface
//go:build !plan9 && !solaris && !js && go1.18 //go:build !plan9 && !solaris && !js
// +build !plan9,!solaris,!js,go1.18 // +build !plan9,!solaris,!js
package azureblob package azureblob

View file

@ -1,7 +1,7 @@
// Build for azureblob for unsupported platforms to stop go complaining // Build for azureblob for unsupported platforms to stop go complaining
// about "no buildable Go source files " // about "no buildable Go source files "
//go:build plan9 || solaris || js || !go1.18 //go:build plan9 || solaris || js
// +build plan9 solaris js !go1.18 // +build plan9 solaris js
package azureblob package azureblob

View file

@ -160,11 +160,11 @@ func TestInternalUploadQueueMoreFiles(t *testing.T) {
minSize := 5242880 minSize := 5242880
maxSize := 10485760 maxSize := 10485760
totalFiles := 10 totalFiles := 10
rand.Seed(time.Now().Unix()) randInstance := rand.New(rand.NewSource(time.Now().Unix()))
lastFile := "" lastFile := ""
for i := 0; i < totalFiles; i++ { for i := 0; i < totalFiles; i++ {
size := int64(rand.Intn(maxSize-minSize) + minSize) size := int64(randInstance.Intn(maxSize-minSize) + minSize)
testReader := runInstance.randomReader(t, size) testReader := runInstance.randomReader(t, size)
remote := "test/" + strconv.Itoa(i) + ".bin" remote := "test/" + strconv.Itoa(i) + ".bin"
runInstance.writeRemoteReader(t, rootFs, remote, testReader) runInstance.writeRemoteReader(t, rootFs, remote, testReader)

View file

@ -389,10 +389,7 @@ func rcSetSoftMemoryLimit(ctx context.Context, in Params) (out Params, err error
if err != nil { if err != nil {
return nil, err return nil, err
} }
oldMemLimit, err := debug.SetMemoryLimit(memLimit) oldMemLimit := debug.SetMemoryLimit(memLimit)
if err != nil {
return nil, err
}
out = Params{ out = Params{
"existing-mem-limit": oldMemLimit, "existing-mem-limit": oldMemLimit,
} }

View file

@ -1,8 +1,8 @@
//go:build !go1.18 //go:build !go1.19
// +build !go1.18 // +build !go1.19
package fs package fs
// Upgrade to Go version 1.18 to compile rclone - latest stable go // Upgrade to Go version 1.19 to compile rclone - latest stable go
// compiler recommended. // compiler recommended.
func init() { Go_version_1_18_required_for_compilation() } func init() { Go_version_1_19_required_for_compilation() }

View file

@ -73,7 +73,7 @@ func main() {
configfile.Install() configfile.Install()
// Seed the random number generator // Seed the random number generator
rand.Seed(time.Now().UTC().UnixNano()) randInstance := rand.New(rand.NewSource(time.Now().UTC().UnixNano()))
// Filter selection // Filter selection
if *testRemotes != "" { if *testRemotes != "" {
@ -103,7 +103,7 @@ func main() {
// Runs we will do for this test in random order // Runs we will do for this test in random order
runs := conf.MakeRuns() runs := conf.MakeRuns()
rand.Shuffle(len(runs), runs.Swap) randInstance.Shuffle(len(runs), runs.Swap)
// Create Report // Create Report
report := NewReport() report := NewReport()

2
go.mod
View file

@ -1,6 +1,6 @@
module github.com/rclone/rclone module github.com/rclone/rclone
go 1.18 go 1.19
require ( require (
bazil.org/fuse v0.0.0-20221209211307-2abb8038c751 bazil.org/fuse v0.0.0-20221209211307-2abb8038c751

View file

@ -10,3 +10,9 @@ import (
func SetGCPercent(percent int) int { func SetGCPercent(percent int) int {
return debug.SetGCPercent(percent) return debug.SetGCPercent(percent)
} }
// SetMemoryLimit calls the runtime/debug.SetMemoryLimit function to set the
// soft-memory limit.
func SetMemoryLimit(limit int64) int64 {
return debug.SetMemoryLimit(limit)
}

View file

@ -1,14 +0,0 @@
//go:build go1.19
// +build go1.19
package debug
import (
"runtime/debug"
)
// SetMemoryLimit calls the runtime/debug.SetMemoryLimit function to set the
// soft-memory limit.
func SetMemoryLimit(limit int64) (int64, error) {
return debug.SetMemoryLimit(limit), nil
}

View file

@ -1,14 +0,0 @@
//go:build !go1.19
// +build !go1.19
package debug
import (
"fmt"
"runtime"
)
// SetMemoryLimit is a no-op on Go version < 1.19.
func SetMemoryLimit(limit int64) (int64, error) {
return limit, fmt.Errorf("not implemented on Go version below 1.19: %s", runtime.Version())
}

View file

@ -11,7 +11,6 @@ import (
"errors" "errors"
"fmt" "fmt"
"io" "io"
"io/ioutil"
"mime/multipart" "mime/multipart"
"net/http" "net/http"
"net/url" "net/url"
@ -163,7 +162,7 @@ const drainLimit = 10 * 1024 * 1024
// drainAndClose discards up to drainLimit bytes from r and closes // drainAndClose discards up to drainLimit bytes from r and closes
// it. Any errors from the Read or Close are returned. // it. Any errors from the Read or Close are returned.
func drainAndClose(r io.ReadCloser) (err error) { func drainAndClose(r io.ReadCloser) (err error) {
_, readErr := io.CopyN(ioutil.Discard, r, drainLimit) _, readErr := io.CopyN(io.Discard, r, drainLimit)
if readErr == io.EOF { if readErr == io.EOF {
readErr = nil readErr = nil
} }