mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-12 07:26:58 +02:00
dev-lang/go: Move from overlay to portage-stable and sync
It's from Gentoo commit a1cbaebe28de048b8120c353b0669b3829a34d6f. Gentoo's ebuild look mostly like our coreos-go-lang eclass, but with possibly some improvements. The difference is in slotting - Gentoo uses "0/${PV}" and Flatcar uses "${MAJOR}.${MINOR}/${PV}". I don't think that there is any practical sense in diverging here - maybe it made sense at the times when we had several version of go because some packages were really picky about which version of go was used to build them.
This commit is contained in:
parent
7c2623b100
commit
081c415ae4
@ -1,8 +0,0 @@
|
|||||||
# Copyright 2022 Flatcar Authors
|
|
||||||
# Distributed under the terms of the GNU General Public License v2
|
|
||||||
|
|
||||||
EAPI=7
|
|
||||||
|
|
||||||
inherit coreos-go-lang
|
|
||||||
|
|
||||||
KEYWORDS="-* amd64 arm64"
|
|
@ -1 +1,2 @@
|
|||||||
DIST go1.22.11.src.tar.gz 27565913 BLAKE2B d4b8f746846f0ba45307ecf732e035c2628483d59402f0868bc42a2fd1ae3447f61d9c3a6eacbc28b1f25e0b35b99ccf8831baeba4203601810b09267d8743f6 SHA512 40c133d6008df7c7cc3bb95a41c29f7442a6af2dd78b807007daf732471c88e2c641aed32878414d57be3904e5efa580d2ecd13fff5412ee668e753e50f1356e
|
DIST go1.22.11.src.tar.gz 27565913 BLAKE2B d4b8f746846f0ba45307ecf732e035c2628483d59402f0868bc42a2fd1ae3447f61d9c3a6eacbc28b1f25e0b35b99ccf8831baeba4203601810b09267d8743f6 SHA512 40c133d6008df7c7cc3bb95a41c29f7442a6af2dd78b807007daf732471c88e2c641aed32878414d57be3904e5efa580d2ecd13fff5412ee668e753e50f1356e
|
||||||
|
DIST go1.23.5.src.tar.gz 28179014 BLAKE2B 6fe6101054a0c10ce415aea65367a48ef8397c88d66bad01b7c72107a6c60daf0b9a47f7c1cd6c8da9855ab04309f25941cc867e6a9f90ac51d1ab0c54662313 SHA512 b04317afeab2d0ced7c36b8682dd32ac085d95d874cf3f614daa34859d7f7f2b75138132e7a64e237c6b4d711d5b03a4d20533f92a44840915630f4ea7cfafa2
|
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/go.env b/go.env
|
||||||
|
index 6ff2b921d4..1112a19c9b 100644
|
||||||
|
--- a/go.env
|
||||||
|
+++ b/go.env
|
||||||
|
@@ -7,6 +7,6 @@
|
||||||
|
GOPROXY=https://proxy.golang.org,direct
|
||||||
|
GOSUMDB=sum.golang.org
|
||||||
|
|
||||||
|
-# Automatically download newer toolchains as directed by go.mod files.
|
||||||
|
+# Never download newer toolchains.
|
||||||
|
# See https://go.dev/doc/toolchain for details.
|
||||||
|
-GOTOOLCHAIN=auto
|
||||||
|
+GOTOOLCHAIN=local
|
7
sdk_container/src/third_party/portage-stable/dev-lang/go/files/go-sets.conf
vendored
Normal file
7
sdk_container/src/third_party/portage-stable/dev-lang/go/files/go-sets.conf
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Installed packages for which vdb *DEPEND includes dev-lang/go.
|
||||||
|
# This is useful after a dev-lang/go version change to rebuild all
|
||||||
|
# software written in Go.
|
||||||
|
[golang-rebuild]
|
||||||
|
class = portage.sets.dbapi.VariableSet
|
||||||
|
variable = BDEPEND
|
||||||
|
includes = dev-lang/go
|
166
sdk_container/src/third_party/portage-stable/dev-lang/go/go-1.22.11.ebuild
vendored
Normal file
166
sdk_container/src/third_party/portage-stable/dev-lang/go/go-1.22.11.ebuild
vendored
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
# Copyright 1999-2025 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
export CBUILD=${CBUILD:-${CHOST}}
|
||||||
|
export CTARGET=${CTARGET:-${CHOST}}
|
||||||
|
|
||||||
|
# See "Bootstrap" in release notes
|
||||||
|
GO_BOOTSTRAP_MIN=1.20.14
|
||||||
|
MY_PV=${PV/_/}
|
||||||
|
|
||||||
|
inherit go-env toolchain-funcs
|
||||||
|
|
||||||
|
case ${PV} in
|
||||||
|
*9999*)
|
||||||
|
EGIT_REPO_URI="https://github.com/golang/go.git"
|
||||||
|
inherit git-r3
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
SRC_URI="https://storage.googleapis.com/golang/go${MY_PV}.src.tar.gz "
|
||||||
|
S="${WORKDIR}"/go
|
||||||
|
case ${PV} in
|
||||||
|
*_beta*|*_rc*) ;;
|
||||||
|
*)
|
||||||
|
KEYWORDS="-* amd64 arm arm64 ~loong ~mips ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
|
||||||
|
DESCRIPTION="A concurrent garbage collected and typesafe programming language"
|
||||||
|
HOMEPAGE="https://go.dev"
|
||||||
|
|
||||||
|
LICENSE="BSD"
|
||||||
|
SLOT="0/${PV}"
|
||||||
|
IUSE="cpu_flags_x86_sse2"
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
arm? ( sys-devel/binutils[gold] )
|
||||||
|
arm64? ( sys-devel/binutils[gold] )"
|
||||||
|
BDEPEND="|| (
|
||||||
|
>=dev-lang/go-${GO_BOOTSTRAP_MIN}
|
||||||
|
>=dev-lang/go-bootstrap-${GO_BOOTSTRAP_MIN} )"
|
||||||
|
|
||||||
|
# the *.syso files have writable/executable stacks
|
||||||
|
QA_EXECSTACK='*.syso'
|
||||||
|
|
||||||
|
# Do not complain about CFLAGS, etc, since Go doesn't use them.
|
||||||
|
QA_FLAGS_IGNORED='.*'
|
||||||
|
|
||||||
|
# The tools in /usr/lib/go should not cause the multilib-strict check to fail.
|
||||||
|
QA_MULTILIB_PATHS="usr/lib/go/pkg/tool/.*/.*"
|
||||||
|
|
||||||
|
# This package triggers "unrecognized elf file(s)" notices on riscv.
|
||||||
|
# https://bugs.gentoo.org/794046
|
||||||
|
QA_PREBUILT='.*'
|
||||||
|
|
||||||
|
# Do not strip this package. Stripping is unsupported upstream and may
|
||||||
|
# fail.
|
||||||
|
RESTRICT=" strip"
|
||||||
|
|
||||||
|
DOCS=(
|
||||||
|
CONTRIBUTING.md
|
||||||
|
PATENTS
|
||||||
|
README.md
|
||||||
|
SECURITY.md
|
||||||
|
)
|
||||||
|
|
||||||
|
go_tuple() {
|
||||||
|
echo "$(go-env_goos $@)_$(go-env_goarch $@)"
|
||||||
|
}
|
||||||
|
|
||||||
|
go_cross_compile() {
|
||||||
|
[[ $(go_tuple ${CBUILD}) != $(go_tuple) ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}"/go-never-download-newer-toolchains.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
if has_version -b ">=dev-lang/go-${GO_BOOTSTRAP_MIN}"; then
|
||||||
|
export GOROOT_BOOTSTRAP="${BROOT}/usr/lib/go"
|
||||||
|
elif has_version -b ">=dev-lang/go-bootstrap-${GO_BOOTSTRAP_MIN}"; then
|
||||||
|
export GOROOT_BOOTSTRAP="${BROOT}/usr/lib/go-bootstrap"
|
||||||
|
else
|
||||||
|
eerror "Go cannot be built without go or go-bootstrap installed"
|
||||||
|
die "Should not be here, please report a bug"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export GOROOT_FINAL="${EPREFIX}"/usr/lib/go
|
||||||
|
export GOROOT="${PWD}"
|
||||||
|
export GOBIN="${GOROOT}/bin"
|
||||||
|
|
||||||
|
# Go's build script does not use BUILD/HOST/TARGET consistently. :(
|
||||||
|
export GOHOSTARCH=$(go-env_goarch ${CBUILD})
|
||||||
|
export GOHOSTOS=$(go-env_goos ${CBUILD})
|
||||||
|
export CC=$(tc-getBUILD_CC)
|
||||||
|
|
||||||
|
export GOARCH=$(go-env_goarch)
|
||||||
|
export GOOS=$(go-env_goos)
|
||||||
|
export CC_FOR_TARGET=$(tc-getCC)
|
||||||
|
export CXX_FOR_TARGET=$(tc-getCXX)
|
||||||
|
use arm && export GOARM=$(go-env_goarm)
|
||||||
|
use x86 && export GO386=$(go-env_go386)
|
||||||
|
|
||||||
|
cd src
|
||||||
|
bash -x ./make.bash || die "build failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
go_cross_compile && return 0
|
||||||
|
|
||||||
|
cd src
|
||||||
|
|
||||||
|
# https://github.com/golang/go/issues/42005
|
||||||
|
rm cmd/link/internal/ld/fallocate_test.go || die
|
||||||
|
|
||||||
|
PATH="${GOBIN}:${PATH}" \
|
||||||
|
./run.bash -no-rebuild -k || die "tests failed"
|
||||||
|
cd ..
|
||||||
|
rm -fr pkg/*_race || die
|
||||||
|
rm -fr pkg/obj/go-build || die
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
dodir /usr/lib/go
|
||||||
|
# The use of cp is deliberate in order to retain permissions
|
||||||
|
cp -R api bin doc lib pkg misc src test "${ED}"/usr/lib/go
|
||||||
|
einstalldocs
|
||||||
|
|
||||||
|
insinto /usr/lib/go
|
||||||
|
doins go.env VERSION*
|
||||||
|
|
||||||
|
# testdata directories are not needed on the installed system
|
||||||
|
rm -fr $(find "${ED}"/usr/lib/go -iname testdata -type d -print)
|
||||||
|
|
||||||
|
local bin_path
|
||||||
|
if go_cross_compile; then
|
||||||
|
bin_path="bin/$(go_tuple)"
|
||||||
|
else
|
||||||
|
bin_path=bin
|
||||||
|
fi
|
||||||
|
local f x
|
||||||
|
for x in ${bin_path}/*; do
|
||||||
|
f=${x##*/}
|
||||||
|
dosym ../lib/go/${bin_path}/${f} /usr/bin/${f}
|
||||||
|
done
|
||||||
|
|
||||||
|
# install the @golang-rebuild set for Portage
|
||||||
|
insinto /usr/share/portage/config/sets
|
||||||
|
newins "${FILESDIR}"/go-sets.conf go.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
[[ -z ${REPLACING_VERSIONS} ]] && return
|
||||||
|
elog "After ${CATEGORY}/${PN} is updated it is recommended to rebuild"
|
||||||
|
elog "all packages compiled with previous versions of ${CATEGORY}/${PN}"
|
||||||
|
elog "due to the static linking nature of go."
|
||||||
|
elog "If this is not done, the packages compiled with the older"
|
||||||
|
elog "version of the compiler will not be updated until they are"
|
||||||
|
elog "updated individually, which could mean they will have"
|
||||||
|
elog "vulnerabilities."
|
||||||
|
elog "Run 'emerge @golang-rebuild' to rebuild all 'go' packages"
|
||||||
|
elog "See https://bugs.gentoo.org/752153 for more info"
|
||||||
|
}
|
162
sdk_container/src/third_party/portage-stable/dev-lang/go/go-1.23.5.ebuild
vendored
Normal file
162
sdk_container/src/third_party/portage-stable/dev-lang/go/go-1.23.5.ebuild
vendored
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
# Copyright 1999-2025 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
export CBUILD=${CBUILD:-${CHOST}}
|
||||||
|
export CTARGET=${CTARGET:-${CHOST}}
|
||||||
|
|
||||||
|
# See "Bootstrap" in release notes
|
||||||
|
GO_BOOTSTRAP_MIN=1.20.14
|
||||||
|
MY_PV=${PV/_/}
|
||||||
|
|
||||||
|
inherit go-env toolchain-funcs
|
||||||
|
|
||||||
|
case ${PV} in
|
||||||
|
*9999*)
|
||||||
|
EGIT_REPO_URI="https://github.com/golang/go.git"
|
||||||
|
inherit git-r3
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
SRC_URI="https://storage.googleapis.com/golang/go${MY_PV}.src.tar.gz "
|
||||||
|
S="${WORKDIR}"/go
|
||||||
|
case ${PV} in
|
||||||
|
*_beta*|*_rc*) ;;
|
||||||
|
*)
|
||||||
|
KEYWORDS="-* amd64 arm arm64 ~loong ~mips ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
|
||||||
|
DESCRIPTION="A concurrent garbage collected and typesafe programming language"
|
||||||
|
HOMEPAGE="https://go.dev"
|
||||||
|
|
||||||
|
LICENSE="BSD"
|
||||||
|
SLOT="0/${PV}"
|
||||||
|
IUSE="cpu_flags_x86_sse2"
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
arm? ( sys-devel/binutils[gold] )
|
||||||
|
arm64? ( sys-devel/binutils[gold] )"
|
||||||
|
BDEPEND="|| (
|
||||||
|
>=dev-lang/go-${GO_BOOTSTRAP_MIN}
|
||||||
|
>=dev-lang/go-bootstrap-${GO_BOOTSTRAP_MIN} )"
|
||||||
|
|
||||||
|
# the *.syso files have writable/executable stacks
|
||||||
|
QA_EXECSTACK='*.syso'
|
||||||
|
|
||||||
|
# Do not complain about CFLAGS, etc, since Go doesn't use them.
|
||||||
|
QA_FLAGS_IGNORED='.*'
|
||||||
|
|
||||||
|
# The tools in /usr/lib/go should not cause the multilib-strict check to fail.
|
||||||
|
QA_MULTILIB_PATHS="usr/lib/go/pkg/tool/.*/.*"
|
||||||
|
|
||||||
|
# This package triggers "unrecognized elf file(s)" notices on riscv.
|
||||||
|
# https://bugs.gentoo.org/794046
|
||||||
|
QA_PREBUILT='.*'
|
||||||
|
|
||||||
|
# Do not strip this package. Stripping is unsupported upstream and may
|
||||||
|
# fail.
|
||||||
|
RESTRICT=" strip"
|
||||||
|
|
||||||
|
DOCS=(
|
||||||
|
CONTRIBUTING.md
|
||||||
|
PATENTS
|
||||||
|
README.md
|
||||||
|
SECURITY.md
|
||||||
|
)
|
||||||
|
|
||||||
|
go_tuple() {
|
||||||
|
echo "$(go-env_goos $@)_$(go-env_goarch $@)"
|
||||||
|
}
|
||||||
|
|
||||||
|
go_cross_compile() {
|
||||||
|
[[ $(go_tuple ${CBUILD}) != $(go_tuple) ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}"/go-never-download-newer-toolchains.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
if has_version -b ">=dev-lang/go-${GO_BOOTSTRAP_MIN}"; then
|
||||||
|
export GOROOT_BOOTSTRAP="${BROOT}/usr/lib/go"
|
||||||
|
elif has_version -b ">=dev-lang/go-bootstrap-${GO_BOOTSTRAP_MIN}"; then
|
||||||
|
export GOROOT_BOOTSTRAP="${BROOT}/usr/lib/go-bootstrap"
|
||||||
|
else
|
||||||
|
eerror "Go cannot be built without go or go-bootstrap installed"
|
||||||
|
die "Should not be here, please report a bug"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Go's build script does not use BUILD/HOST/TARGET consistently. :(
|
||||||
|
export GOHOSTARCH=$(go-env_goarch ${CBUILD})
|
||||||
|
export GOHOSTOS=$(go-env_goos ${CBUILD})
|
||||||
|
export CC=$(tc-getBUILD_CC)
|
||||||
|
|
||||||
|
export GOARCH=$(go-env_goarch)
|
||||||
|
export GOOS=$(go-env_goos)
|
||||||
|
export CC_FOR_TARGET=$(tc-getCC)
|
||||||
|
export CXX_FOR_TARGET=$(tc-getCXX)
|
||||||
|
use arm && export GOARM=$(go-env_goarm)
|
||||||
|
use x86 && export GO386=$(go-env_go386)
|
||||||
|
|
||||||
|
cd src
|
||||||
|
bash -x ./make.bash || die "build failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
go_cross_compile && return 0
|
||||||
|
|
||||||
|
cd src
|
||||||
|
|
||||||
|
# https://github.com/golang/go/issues/42005
|
||||||
|
rm cmd/link/internal/ld/fallocate_test.go || die
|
||||||
|
|
||||||
|
PATH="${GOBIN}:${PATH}" \
|
||||||
|
./run.bash -no-rebuild -k || die "tests failed"
|
||||||
|
cd ..
|
||||||
|
rm -fr pkg/*_race || die
|
||||||
|
rm -fr pkg/obj/go-build || die
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
dodir /usr/lib/go
|
||||||
|
# The use of cp is deliberate in order to retain permissions
|
||||||
|
cp -R api bin doc lib pkg misc src test "${ED}"/usr/lib/go
|
||||||
|
einstalldocs
|
||||||
|
|
||||||
|
insinto /usr/lib/go
|
||||||
|
doins go.env VERSION*
|
||||||
|
|
||||||
|
# testdata directories are not needed on the installed system
|
||||||
|
rm -fr $(find "${ED}"/usr/lib/go -iname testdata -type d -print)
|
||||||
|
|
||||||
|
local bin_path
|
||||||
|
if go_cross_compile; then
|
||||||
|
bin_path="bin/$(go_tuple)"
|
||||||
|
else
|
||||||
|
bin_path=bin
|
||||||
|
fi
|
||||||
|
local f x
|
||||||
|
for x in ${bin_path}/*; do
|
||||||
|
f=${x##*/}
|
||||||
|
dosym ../lib/go/${bin_path}/${f} /usr/bin/${f}
|
||||||
|
done
|
||||||
|
|
||||||
|
# install the @golang-rebuild set for Portage
|
||||||
|
insinto /usr/share/portage/config/sets
|
||||||
|
newins "${FILESDIR}"/go-sets.conf go.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
[[ -z ${REPLACING_VERSIONS} ]] && return
|
||||||
|
elog "After ${CATEGORY}/${PN} is updated it is recommended to rebuild"
|
||||||
|
elog "all packages compiled with previous versions of ${CATEGORY}/${PN}"
|
||||||
|
elog "due to the static linking nature of go."
|
||||||
|
elog "If this is not done, the packages compiled with the older"
|
||||||
|
elog "version of the compiler will not be updated until they are"
|
||||||
|
elog "updated individually, which could mean they will have"
|
||||||
|
elog "vulnerabilities."
|
||||||
|
elog "Run 'emerge @golang-rebuild' to rebuild all 'go' packages"
|
||||||
|
elog "See https://bugs.gentoo.org/752153 for more info"
|
||||||
|
}
|
166
sdk_container/src/third_party/portage-stable/dev-lang/go/go-9999.ebuild
vendored
Normal file
166
sdk_container/src/third_party/portage-stable/dev-lang/go/go-9999.ebuild
vendored
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
# Copyright 1999-2024 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
|
||||||
|
export CBUILD=${CBUILD:-${CHOST}}
|
||||||
|
export CTARGET=${CTARGET:-${CHOST}}
|
||||||
|
|
||||||
|
# See "Bootstrap" in release notes
|
||||||
|
GO_BOOTSTRAP_MIN=1.20.14
|
||||||
|
MY_PV=${PV/_/}
|
||||||
|
|
||||||
|
inherit go-env toolchain-funcs
|
||||||
|
|
||||||
|
case ${PV} in
|
||||||
|
*9999*)
|
||||||
|
EGIT_REPO_URI="https://github.com/golang/go.git"
|
||||||
|
inherit git-r3
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
SRC_URI="https://storage.googleapis.com/golang/go${MY_PV}.src.tar.gz "
|
||||||
|
S="${WORKDIR}"/go
|
||||||
|
case ${PV} in
|
||||||
|
*_beta*|*_rc*) ;;
|
||||||
|
*)
|
||||||
|
# KEYWORDS="-* ~amd64 ~arm ~arm64 ~loong ~mips ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
|
||||||
|
DESCRIPTION="A concurrent garbage collected and typesafe programming language"
|
||||||
|
HOMEPAGE="https://go.dev"
|
||||||
|
|
||||||
|
LICENSE="BSD"
|
||||||
|
SLOT="0/${PV}"
|
||||||
|
IUSE="cpu_flags_x86_sse2"
|
||||||
|
|
||||||
|
RDEPEND="
|
||||||
|
arm? ( sys-devel/binutils[gold] )
|
||||||
|
arm64? ( sys-devel/binutils[gold] )"
|
||||||
|
BDEPEND="|| (
|
||||||
|
>=dev-lang/go-${GO_BOOTSTRAP_MIN}
|
||||||
|
>=dev-lang/go-bootstrap-${GO_BOOTSTRAP_MIN} )"
|
||||||
|
|
||||||
|
# the *.syso files have writable/executable stacks
|
||||||
|
QA_EXECSTACK='*.syso'
|
||||||
|
|
||||||
|
# Do not complain about CFLAGS, etc, since Go doesn't use them.
|
||||||
|
QA_FLAGS_IGNORED='.*'
|
||||||
|
|
||||||
|
# The tools in /usr/lib/go should not cause the multilib-strict check to fail.
|
||||||
|
QA_MULTILIB_PATHS="usr/lib/go/pkg/tool/.*/.*"
|
||||||
|
|
||||||
|
# This package triggers "unrecognized elf file(s)" notices on riscv.
|
||||||
|
# https://bugs.gentoo.org/794046
|
||||||
|
QA_PREBUILT='.*'
|
||||||
|
|
||||||
|
# Do not strip this package. Stripping is unsupported upstream and may
|
||||||
|
# fail.
|
||||||
|
RESTRICT=" strip"
|
||||||
|
|
||||||
|
DOCS=(
|
||||||
|
CONTRIBUTING.md
|
||||||
|
PATENTS
|
||||||
|
README.md
|
||||||
|
SECURITY.md
|
||||||
|
)
|
||||||
|
|
||||||
|
go_tuple() {
|
||||||
|
echo "$(go-env_goos $@)_$(go-env_goarch $@)"
|
||||||
|
}
|
||||||
|
|
||||||
|
go_cross_compile() {
|
||||||
|
[[ $(go_tuple ${CBUILD}) != $(go_tuple) ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
PATCHES=(
|
||||||
|
"${FILESDIR}"/go-never-download-newer-toolchains.patch
|
||||||
|
)
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
if has_version -b ">=dev-lang/go-${GO_BOOTSTRAP_MIN}"; then
|
||||||
|
export GOROOT_BOOTSTRAP="${BROOT}/usr/lib/go"
|
||||||
|
elif has_version -b ">=dev-lang/go-bootstrap-${GO_BOOTSTRAP_MIN}"; then
|
||||||
|
export GOROOT_BOOTSTRAP="${BROOT}/usr/lib/go-bootstrap"
|
||||||
|
else
|
||||||
|
eerror "Go cannot be built without go or go-bootstrap installed"
|
||||||
|
die "Should not be here, please report a bug"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export GOROOT_FINAL="${EPREFIX}"/usr/lib/go
|
||||||
|
export GOROOT="${PWD}"
|
||||||
|
export GOBIN="${GOROOT}/bin"
|
||||||
|
|
||||||
|
# Go's build script does not use BUILD/HOST/TARGET consistently. :(
|
||||||
|
export GOHOSTARCH=$(go-env_goarch ${CBUILD})
|
||||||
|
export GOHOSTOS=$(go-env_goos ${CBUILD})
|
||||||
|
export CC=$(tc-getBUILD_CC)
|
||||||
|
|
||||||
|
export GOARCH=$(go-env_goarch)
|
||||||
|
export GOOS=$(go-env_goos)
|
||||||
|
export CC_FOR_TARGET=$(tc-getCC)
|
||||||
|
export CXX_FOR_TARGET=$(tc-getCXX)
|
||||||
|
use arm && export GOARM=$(go-env_goarm)
|
||||||
|
use x86 && export GO386=$(go-env_go386)
|
||||||
|
|
||||||
|
cd src
|
||||||
|
bash -x ./make.bash || die "build failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_test() {
|
||||||
|
go_cross_compile && return 0
|
||||||
|
|
||||||
|
cd src
|
||||||
|
|
||||||
|
# https://github.com/golang/go/issues/42005
|
||||||
|
rm cmd/link/internal/ld/fallocate_test.go || die
|
||||||
|
|
||||||
|
PATH="${GOBIN}:${PATH}" \
|
||||||
|
./run.bash -no-rebuild -k || die "tests failed"
|
||||||
|
cd ..
|
||||||
|
rm -fr pkg/*_race || die
|
||||||
|
rm -fr pkg/obj/go-build || die
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
dodir /usr/lib/go
|
||||||
|
# The use of cp is deliberate in order to retain permissions
|
||||||
|
cp -R api bin doc lib pkg misc src test "${ED}"/usr/lib/go
|
||||||
|
einstalldocs
|
||||||
|
|
||||||
|
insinto /usr/lib/go
|
||||||
|
doins go.env VERSION*
|
||||||
|
|
||||||
|
# testdata directories are not needed on the installed system
|
||||||
|
rm -fr $(find "${ED}"/usr/lib/go -iname testdata -type d -print)
|
||||||
|
|
||||||
|
local bin_path
|
||||||
|
if go_cross_compile; then
|
||||||
|
bin_path="bin/$(go_tuple)"
|
||||||
|
else
|
||||||
|
bin_path=bin
|
||||||
|
fi
|
||||||
|
local f x
|
||||||
|
for x in ${bin_path}/*; do
|
||||||
|
f=${x##*/}
|
||||||
|
dosym ../lib/go/${bin_path}/${f} /usr/bin/${f}
|
||||||
|
done
|
||||||
|
|
||||||
|
# install the @golang-rebuild set for Portage
|
||||||
|
insinto /usr/share/portage/config/sets
|
||||||
|
newins "${FILESDIR}"/go-sets.conf go.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_postinst() {
|
||||||
|
[[ -z ${REPLACING_VERSIONS} ]] && return
|
||||||
|
elog "After ${CATEGORY}/${PN} is updated it is recommended to rebuild"
|
||||||
|
elog "all packages compiled with previous versions of ${CATEGORY}/${PN}"
|
||||||
|
elog "due to the static linking nature of go."
|
||||||
|
elog "If this is not done, the packages compiled with the older"
|
||||||
|
elog "version of the compiler will not be updated until they are"
|
||||||
|
elog "updated individually, which could mean they will have"
|
||||||
|
elog "vulnerabilities."
|
||||||
|
elog "Run 'emerge @golang-rebuild' to rebuild all 'go' packages"
|
||||||
|
elog "See https://bugs.gentoo.org/752153 for more info"
|
||||||
|
}
|
@ -1,13 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
|
||||||
<pkgmetadata>
|
<pkgmetadata>
|
||||||
<maintainer>
|
<maintainer type="person">
|
||||||
<email>williamh@gentoo.org</email>
|
<email>williamh@gentoo.org</email>
|
||||||
<name>William Hubbs</name>
|
<name>William Hubbs</name>
|
||||||
</maintainer>
|
</maintainer>
|
||||||
<longdescription lang="en">
|
<longdescription lang="en">
|
||||||
Go is a new systems programming language developped at google by
|
Go is a new systems programming language developed at google by
|
||||||
Rob Pike. It has garbage collection, coroutines, communication
|
Rob Pike. It has garbage collection, coroutines, communication
|
||||||
channels and a clean syntax.
|
channels and a clean syntax.
|
||||||
</longdescription>
|
</longdescription>
|
||||||
|
<upstream>
|
||||||
|
<remote-id type="cpe">cpe:/a:golang:go</remote-id>
|
||||||
|
<remote-id type="github">golang/go</remote-id>
|
||||||
|
</upstream>
|
||||||
</pkgmetadata>
|
</pkgmetadata>
|
Loading…
Reference in New Issue
Block a user