mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	| @@ -4,6 +4,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"os" | 	"os" | ||||||
|  |  | ||||||
|  | 	"github.com/containerd/containerd/pkg/seed" | ||||||
| 	"github.com/docker/buildx/commands" | 	"github.com/docker/buildx/commands" | ||||||
| 	"github.com/docker/buildx/version" | 	"github.com/docker/buildx/version" | ||||||
| 	"github.com/docker/cli/cli-plugins/manager" | 	"github.com/docker/cli/cli-plugins/manager" | ||||||
| @@ -24,6 +25,10 @@ import ( | |||||||
|  |  | ||||||
| var experimental string | var experimental string | ||||||
|  |  | ||||||
|  | func init() { | ||||||
|  | 	seed.WithTimeAndRand() | ||||||
|  | } | ||||||
|  |  | ||||||
| func main() { | func main() { | ||||||
| 	if os.Getenv("DOCKER_CLI_PLUGIN_ORIGINAL_CLI_COMMAND") == "" { | 	if os.Getenv("DOCKER_CLI_PLUGIN_ORIGINAL_CLI_COMMAND") == "" { | ||||||
| 		if len(os.Args) < 2 || os.Args[1] != manager.MetadataSubcommandName { | 		if len(os.Args) < 2 || os.Args[1] != manager.MetadataSubcommandName { | ||||||
|   | |||||||
							
								
								
									
										38
									
								
								vendor/github.com/containerd/containerd/pkg/seed/seed.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/containerd/containerd/pkg/seed/seed.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | /* | ||||||
|  |    Copyright The containerd 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 seed | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"math/rand" | ||||||
|  | 	"time" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // WithTimeAndRand seeds the global math rand generator with nanoseconds | ||||||
|  | // XOR'ed with a crypto component if available for uniqueness. | ||||||
|  | func WithTimeAndRand() { | ||||||
|  | 	var ( | ||||||
|  | 		b [4]byte | ||||||
|  | 		u int64 | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	tryReadRandom(b[:]) | ||||||
|  |  | ||||||
|  | 	// Set higher 32 bits, bottom 32 will be set with nanos | ||||||
|  | 	u |= (int64(b[0]) << 56) | (int64(b[1]) << 48) | (int64(b[2]) << 40) | (int64(b[3]) << 32) | ||||||
|  |  | ||||||
|  | 	rand.Seed(u ^ time.Now().UnixNano()) | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								vendor/github.com/containerd/containerd/pkg/seed/seed_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/containerd/containerd/pkg/seed/seed_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | /* | ||||||
|  |    Copyright The containerd 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 seed | ||||||
|  |  | ||||||
|  | import "golang.org/x/sys/unix" | ||||||
|  |  | ||||||
|  | func tryReadRandom(p []byte) { | ||||||
|  | 	// Ignore errors, just decreases uniqueness of seed | ||||||
|  | 	unix.Getrandom(p, unix.GRND_NONBLOCK) | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								vendor/github.com/containerd/containerd/pkg/seed/seed_other.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/containerd/containerd/pkg/seed/seed_other.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | |||||||
|  | // +build !linux | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |    Copyright The containerd 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 seed | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"crypto/rand" | ||||||
|  | 	"io" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func tryReadRandom(p []byte) { | ||||||
|  | 	io.ReadFull(rand.Reader, p) | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -49,6 +49,7 @@ github.com/containerd/containerd/filters | |||||||
| github.com/containerd/containerd/images | github.com/containerd/containerd/images | ||||||
| github.com/containerd/containerd/labels | github.com/containerd/containerd/labels | ||||||
| github.com/containerd/containerd/log | github.com/containerd/containerd/log | ||||||
|  | github.com/containerd/containerd/pkg/seed | ||||||
| github.com/containerd/containerd/platforms | github.com/containerd/containerd/platforms | ||||||
| github.com/containerd/containerd/reference | github.com/containerd/containerd/reference | ||||||
| github.com/containerd/containerd/remotes | github.com/containerd/containerd/remotes | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Tonis Tiigi
					Tonis Tiigi