net-misc/baidupcs-go: fix compile error when using go 1.23 or later

This commit is contained in:
123485k 2024-08-20 06:48:01 +08:00 committed by 梁永祥
parent 61346675fe
commit d78b958048
2 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,40 @@
# Copyright 2020-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
MY_PN="BaiduPCS-Go"
inherit go-module
if [[ ${PV} == *9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/qjfoidnh/${MY_PN}.git"
src_unpack() {
git-r3_src_unpack
}
else
SRC_URI="https://github.com/qjfoidnh/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
https://github.com/liangyongxiang/gentoo-go-deps/releases/download/${P}/${P}-deps.tar.xz"
KEYWORDS="~amd64 ~x86"
S="${WORKDIR}/${MY_PN}-${PV}"
fi
DESCRIPTION="The terminal utility for Baidu Network Disk (Golang Version)."
HOMEPAGE="https://github.com/qjfoidnh/BaiduPCS-Go"
LICENSE="Apache-2.0"
SLOT="0"
PATCHES="
${FILESDIR}/${PN}-${PV}-0001-fix-go-1.23.0-build.patch
"
src_compile()
{
ego build -o bin/${PN} -trimpath
}
src_install() {
dobin bin/${PN}
}

View File

@ -0,0 +1,69 @@
diff --git a/BaiduPCS-Go b/BaiduPCS-Go
new file mode 100755
index 0000000..d029fb4
Binary files /dev/null and b/BaiduPCS-Go differ
diff --git a/pcsutil/cachepool/malloc.go b/pcsutil/cachepool/malloc.go
index 307a2d4..612fdd9 100644
--- a/pcsutil/cachepool/malloc.go
+++ b/pcsutil/cachepool/malloc.go
@@ -1,3 +1,6 @@
+//go:build !go1.23
+// +build !go1.23
+
package cachepool
import (
@@ -5,6 +8,8 @@ import (
"unsafe"
)
+// 函数声明可以省略主体。 这样的声明为Go外部实现的功能例如汇编例程提供了签名。这是在汇编中实现函数的方式。
+
//go:linkname mallocgc runtime.mallocgc
func mallocgc(size uintptr, typ uintptr, needzero bool) unsafe.Pointer
@@ -30,4 +35,4 @@ func RawMallocByteSlice(size int) []byte {
Cap: size,
}))
return b
-}
+}
\ No newline at end of file
diff --git a/pcsutil/cachepool/malloc_go_1.23.go b/pcsutil/cachepool/malloc_go_1.23.go
new file mode 100644
index 0000000..8c2b78d
--- /dev/null
+++ b/pcsutil/cachepool/malloc_go_1.23.go
@@ -0,0 +1,31 @@
+//go:build go1.23
+// +build go1.23
+
+package cachepool
+
+import (
+ "unsafe"
+)
+
+// 说明:
+// 由于GO 1.23版本取消了 go:linkname 的支持所以1.23以及以上版本需要使用本文件替代原始文件 malloc.go
+
+// RawByteSlice point to runtime.rawbyteslice
+func RawByteSlice(size int) (b []byte) {
+ bytesArray := make([]byte, size)
+ return bytesArray
+}
+
+// RawMalloc allocates a new slice. The slice is not zeroed.
+func RawMalloc(size int) unsafe.Pointer {
+ bytesArray := make([]byte, size)
+ // 使用unsafe.Pointer获取字节数组的指针
+ bytesPtr := unsafe.Pointer(&bytesArray[0])
+ return bytesPtr
+}
+
+// RawMallocByteSlice allocates a new byte slice. The slice is not zeroed.
+func RawMallocByteSlice(size int) []byte {
+ bytesArray := make([]byte, size)
+ return bytesArray
+}
\ No newline at end of file