From 44c4e44db7300f241e6740b389489e84ef7c1f65 Mon Sep 17 00:00:00 2001 From: Bruce Ashfield Date: Thu, 4 Dec 2025 22:18:41 +0000 Subject: devtools: add go-dirhash-native for Go module hash calculation Add a native recipe that builds the Go dirhash tool for calculating h1: hashes on module zip files. This is used as a fallback when the pure Python implementation cannot be used. The tool implements the Go module hash algorithm per the Go modules reference specification. Signed-off-by: Bruce Ashfield --- .../go-dirhash-native/go-dirhash/LICENSE | 26 ++++++++++++++++++++++ .../go-dirhash-native/go-dirhash/dirhash-helper.go | 24 ++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 recipes-devtools/go-dirhash-native/go-dirhash/LICENSE create mode 100644 recipes-devtools/go-dirhash-native/go-dirhash/dirhash-helper.go (limited to 'recipes-devtools/go-dirhash-native/go-dirhash') diff --git a/recipes-devtools/go-dirhash-native/go-dirhash/LICENSE b/recipes-devtools/go-dirhash-native/go-dirhash/LICENSE new file mode 100644 index 00000000..9feb7621 --- /dev/null +++ b/recipes-devtools/go-dirhash-native/go-dirhash/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/recipes-devtools/go-dirhash-native/go-dirhash/dirhash-helper.go b/recipes-devtools/go-dirhash-native/go-dirhash/dirhash-helper.go new file mode 100644 index 00000000..d2aec41c --- /dev/null +++ b/recipes-devtools/go-dirhash-native/go-dirhash/dirhash-helper.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "os" + + "golang.org/x/mod/sumdb/dirhash" +) + +func main() { + if len(os.Args) != 2 { + fmt.Fprintf(os.Stderr, "Usage: %s \n", os.Args[0]) + os.Exit(1) + } + + zipPath := os.Args[1] + hash, err := dirhash.HashZip(zipPath, dirhash.DefaultHash) + if err != nil { + fmt.Fprintf(os.Stderr, "Error: %v\n", err) + os.Exit(1) + } + + fmt.Println(hash) +} -- cgit v1.2.3-54-g00ecf