mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
A recent change stopped using the correct file (the export data, not the archive) and checklocks started failing. Unfortunately, this was suppressed, since the filter command was not failing with findings. This change fixes that problem and adds a test to ensure that this cannot happen again. If nogo starts failing to identify problems, the sanity_test in nogo/sanity will also start to fail. This change also requires updating the WORKSPACE to the latest rules_go and Go version, in order to pick up the fixed go_tools. The latest rules_go in turn required an updated bazel, which in turn required a minor change in the coverdata implementation. Fixing the fact propagation brought forward a number of problems with caching for bazel workers. Its unclear whether this was a core worker issue or whether some caching was broken, but the situation was basically undebugable. Instead, the way facts are stored and loaded is optimized to be able to remove the use of workers altogether and ideally make nogo debuggable. PiperOrigin-RevId: 426327186
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
// Copyright 2019 The gVisor Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package check
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"go/build"
|
|
"io"
|
|
"os"
|
|
|
|
"gvisor.dev/gvisor/tools/nogo/flags"
|
|
)
|
|
|
|
// findStdPkg needs to find the bundled standard library packages.
|
|
var findStdPkg = func(path string) (io.ReadCloser, error) {
|
|
if path == "C" {
|
|
// Cgo builds cannot be analyzed. Skip.
|
|
return nil, ErrSkip
|
|
}
|
|
|
|
// Attempt to use the root, if available.
|
|
root, envErr := flags.Env("GOROOT")
|
|
if envErr != nil {
|
|
return nil, fmt.Errorf("unable to resolve GOROOT: %w", envErr)
|
|
}
|
|
|
|
// Attempt to resolve the library, and propagate this error.
|
|
f, err := os.Open(fmt.Sprintf("%s/pkg/%s_%s/%s.a", root, flags.GOOS, flags.GOARCH, path))
|
|
if err != nil && errors.Is(err, os.ErrNotExist) {
|
|
return nil, ErrSkip
|
|
}
|
|
return f, err
|
|
}
|
|
|
|
// releaseTags returns the default release tags.
|
|
var releaseTags = func() ([]string, error) {
|
|
return build.Default.ReleaseTags, nil
|
|
}
|