2016-04-04 21:31:49 +02:00
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# go
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
package/go: security bump to version 1.16.5
Fixes the following security issues:
- CVE-2021-33195: The LookupCNAME, LookupSRV, LookupMX, LookupNS, and
LookupAddr functions in net, and their respective methods on the Resolver
type may return arbitrary values retrieved from DNS which do not follow
the established RFC 1035 rules for domain names. If these names are used
without further sanitization, for instance unsafely included in HTML, they
may allow for injection of unexpected content. Note that LookupTXT may
still return arbitrary values that could require sanitization before
further use
- CVE-2021-33196: The NewReader and OpenReader functions in archive/zip can
cause a panic or an unrecoverable fatal error when reading an archive that
claims to contain a large number of files, regardless of its actual size
- CVE-2021-33197: ReverseProxy in net/http/httputil could be made to forward
certain hop-by-hop headers, including Connection. In case the target of
the ReverseProxy was itself a reverse proxy, this would let an attacker
drop arbitrary headers, including those set by the ReverseProxy.Director
- CVE-2021-33198: The SetString and UnmarshalText methods of math/big.Rat
may cause a panic or an unrecoverable fatal error if passed inputs with
very large exponents
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2021-06-06 13:50:18 +02:00
|
|
|
GO_VERSION = 1.16.5
|
2016-04-04 21:31:49 +02:00
|
|
|
GO_SITE = https://storage.googleapis.com/golang
|
|
|
|
GO_SOURCE = go$(GO_VERSION).src.tar.gz
|
|
|
|
|
2017-03-30 15:43:38 +02:00
|
|
|
GO_LICENSE = BSD-3-Clause
|
2016-04-04 21:31:49 +02:00
|
|
|
GO_LICENSE_FILES = LICENSE
|
2021-01-11 21:36:24 +01:00
|
|
|
GO_CPE_ID_VENDOR = golang
|
2016-04-04 21:31:49 +02:00
|
|
|
|
2019-04-15 22:49:51 +02:00
|
|
|
HOST_GO_DEPENDENCIES = host-go-bootstrap
|
2020-08-29 11:28:37 +02:00
|
|
|
HOST_GO_GOPATH = $(HOST_DIR)/usr/share/go-path
|
2019-04-15 22:49:51 +02:00
|
|
|
HOST_GO_HOST_CACHE = $(HOST_DIR)/usr/share/host-go-cache
|
|
|
|
HOST_GO_ROOT = $(HOST_DIR)/lib/go
|
|
|
|
HOST_GO_TARGET_CACHE = $(HOST_DIR)/usr/share/go-cache
|
|
|
|
|
2020-08-29 11:14:35 +02:00
|
|
|
# We pass an empty GOBIN, otherwise "go install: cannot install
|
|
|
|
# cross-compiled binaries when GOBIN is set"
|
2020-08-29 11:04:25 +02:00
|
|
|
HOST_GO_COMMON_ENV = \
|
2020-08-29 11:28:37 +02:00
|
|
|
GO111MODULE=on \
|
|
|
|
GOFLAGS=-mod=vendor \
|
2020-08-29 11:14:35 +02:00
|
|
|
GOROOT="$(HOST_GO_ROOT)" \
|
2020-08-29 11:28:37 +02:00
|
|
|
GOPATH="$(HOST_GO_GOPATH)" \
|
|
|
|
GOPROXY=off \
|
2020-08-29 11:14:35 +02:00
|
|
|
PATH=$(BR_PATH) \
|
|
|
|
GOBIN= \
|
|
|
|
CGO_ENABLED=$(HOST_GO_CGO_ENABLED)
|
2020-08-29 11:04:25 +02:00
|
|
|
|
2019-04-15 22:49:51 +02:00
|
|
|
ifeq ($(BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS),y)
|
|
|
|
|
2016-04-04 21:31:49 +02:00
|
|
|
ifeq ($(BR2_arm),y)
|
|
|
|
GO_GOARCH = arm
|
|
|
|
ifeq ($(BR2_ARM_CPU_ARMV5),y)
|
|
|
|
GO_GOARM = 5
|
|
|
|
else ifeq ($(BR2_ARM_CPU_ARMV6),y)
|
|
|
|
GO_GOARM = 6
|
|
|
|
else ifeq ($(BR2_ARM_CPU_ARMV7A),y)
|
|
|
|
GO_GOARM = 7
|
2020-12-18 11:00:23 +01:00
|
|
|
else ifeq ($(BR2_ARM_CPU_ARMV8A),y)
|
|
|
|
# Go doesn't support 32-bit GOARM=8 (https://github.com/golang/go/issues/29373)
|
2020-12-23 22:35:03 +01:00
|
|
|
# but can still benefit from armv7 optimisations
|
2020-12-18 11:00:23 +01:00
|
|
|
GO_GOARM = 7
|
2016-04-04 21:31:49 +02:00
|
|
|
endif
|
|
|
|
else ifeq ($(BR2_aarch64),y)
|
|
|
|
GO_GOARCH = arm64
|
|
|
|
else ifeq ($(BR2_i386),y)
|
|
|
|
GO_GOARCH = 386
|
2021-02-20 01:50:39 +01:00
|
|
|
# i386: use softfloat if no SSE2: https://golang.org/doc/go1.16#386
|
|
|
|
ifneq ($(BR2_X86_CPU_HAS_SSE2),y)
|
|
|
|
GO_GO386 = softfloat
|
|
|
|
endif
|
2016-04-04 21:31:49 +02:00
|
|
|
else ifeq ($(BR2_x86_64),y)
|
|
|
|
GO_GOARCH = amd64
|
2016-05-12 02:08:47 +02:00
|
|
|
else ifeq ($(BR2_powerpc64),y)
|
2016-04-04 21:31:49 +02:00
|
|
|
GO_GOARCH = ppc64
|
2016-05-12 02:08:47 +02:00
|
|
|
else ifeq ($(BR2_powerpc64le),y)
|
|
|
|
GO_GOARCH = ppc64le
|
2016-05-20 00:33:25 +02:00
|
|
|
else ifeq ($(BR2_mips64),y)
|
|
|
|
GO_GOARCH = mips64
|
|
|
|
else ifeq ($(BR2_mips64el),y)
|
|
|
|
GO_GOARCH = mips64le
|
2020-10-02 11:19:45 +02:00
|
|
|
else ifeq ($(BR2_s390x),y)
|
|
|
|
GO_GOARCH = s390x
|
2016-04-04 21:31:49 +02:00
|
|
|
endif
|
|
|
|
|
2016-05-26 20:21:32 +02:00
|
|
|
# For the convienience of target packages.
|
|
|
|
HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)
|
|
|
|
HOST_GO_TARGET_ENV = \
|
2020-08-29 11:04:25 +02:00
|
|
|
$(HOST_GO_COMMON_ENV) \
|
2016-05-26 20:21:32 +02:00
|
|
|
GOARCH=$(GO_GOARCH) \
|
2019-03-12 06:41:14 +01:00
|
|
|
GOCACHE="$(HOST_GO_TARGET_CACHE)" \
|
2016-05-26 21:06:26 +02:00
|
|
|
CC="$(TARGET_CC)" \
|
|
|
|
CXX="$(TARGET_CXX)" \
|
2020-08-29 11:13:07 +02:00
|
|
|
CGO_CFLAGS="$(TARGET_CFLAGS)" \
|
|
|
|
CGO_CXXFLAGS="$(TARGET_CXXFLAGS)" \
|
|
|
|
CGO_LDFLAGS="$(TARGET_LDFLAGS)" \
|
2016-05-26 20:21:32 +02:00
|
|
|
GOTOOLDIR="$(HOST_GO_TOOLDIR)"
|
|
|
|
|
2016-05-26 20:21:33 +02:00
|
|
|
# The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is
|
|
|
|
# set, build in cgo support for any go programs that may need it. Note that
|
|
|
|
# any target package needing cgo support must include
|
|
|
|
# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file.
|
2017-10-16 19:08:45 +02:00
|
|
|
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
|
2016-05-26 20:21:33 +02:00
|
|
|
HOST_GO_CGO_ENABLED = 1
|
|
|
|
else
|
|
|
|
HOST_GO_CGO_ENABLED = 0
|
|
|
|
endif
|
|
|
|
|
2019-04-15 22:49:51 +02:00
|
|
|
HOST_GO_CROSS_ENV = \
|
|
|
|
CC_FOR_TARGET="$(TARGET_CC)" \
|
|
|
|
CXX_FOR_TARGET="$(TARGET_CXX)" \
|
|
|
|
GOARCH=$(GO_GOARCH) \
|
2021-02-20 01:50:39 +01:00
|
|
|
$(if $(GO_GO386),GO386=$(GO_GO386)) \
|
2019-04-15 22:49:51 +02:00
|
|
|
$(if $(GO_GOARM),GOARM=$(GO_GOARM)) \
|
|
|
|
GO_ASSUME_CROSSCOMPILING=1
|
|
|
|
|
|
|
|
else # !BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
|
|
|
|
# host-go can still be used to build packages for the host. No need to set all
|
|
|
|
# the arch stuff since we will not be cross-compiling.
|
|
|
|
HOST_GO_CGO_ENABLED = 1
|
|
|
|
endif # BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS
|
|
|
|
|
2020-08-29 10:58:42 +02:00
|
|
|
# For the convenience of host golang packages
|
|
|
|
HOST_GO_HOST_ENV = \
|
2020-08-29 11:04:25 +02:00
|
|
|
$(HOST_GO_COMMON_ENV) \
|
2020-08-29 10:58:42 +02:00
|
|
|
GOARCH="" \
|
|
|
|
GOCACHE="$(HOST_GO_HOST_CACHE)" \
|
2020-12-18 10:57:42 +01:00
|
|
|
CC="$(HOSTCC_NOCCACHE)" \
|
|
|
|
CXX="$(HOSTCXX_NOCCACHE)" \
|
2020-08-29 10:58:42 +02:00
|
|
|
CGO_CFLAGS="$(HOST_CFLAGS)" \
|
|
|
|
CGO_CXXFLAGS="$(HOST_CXXFLAGS)" \
|
|
|
|
CGO_LDFLAGS="$(HOST_LDFLAGS)"
|
|
|
|
|
2018-05-11 22:50:34 +02:00
|
|
|
# The go build system is not compatible with ccache, so use
|
2016-05-26 20:21:32 +02:00
|
|
|
# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685.
|
2016-04-04 21:31:49 +02:00
|
|
|
HOST_GO_MAKE_ENV = \
|
2019-01-26 11:23:55 +01:00
|
|
|
GO111MODULE=off \
|
2019-03-12 06:41:14 +01:00
|
|
|
GOCACHE=$(HOST_GO_HOST_CACHE) \
|
2016-04-04 21:31:49 +02:00
|
|
|
GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_ROOT) \
|
|
|
|
GOROOT_FINAL=$(HOST_GO_ROOT) \
|
|
|
|
GOROOT="$(@D)" \
|
|
|
|
GOBIN="$(@D)/bin" \
|
|
|
|
GOOS=linux \
|
2017-10-16 19:08:45 +02:00
|
|
|
CC=$(HOSTCC_NOCCACHE) \
|
2018-05-11 22:50:33 +02:00
|
|
|
CXX=$(HOSTCXX_NOCCACHE) \
|
2019-04-15 22:49:51 +02:00
|
|
|
CGO_ENABLED=$(HOST_GO_CGO_ENABLED) \
|
|
|
|
$(HOST_GO_CROSS_ENV)
|
2016-04-04 21:31:49 +02:00
|
|
|
|
|
|
|
define HOST_GO_BUILD_CMDS
|
2017-10-16 19:08:45 +02:00
|
|
|
cd $(@D)/src && \
|
2019-04-15 22:49:51 +02:00
|
|
|
$(HOST_GO_MAKE_ENV) ./make.bash $(if $(VERBOSE),-v)
|
2016-04-04 21:31:49 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
define HOST_GO_INSTALL_CMDS
|
2018-05-11 22:50:34 +02:00
|
|
|
$(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_ROOT)/bin/go
|
|
|
|
$(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_ROOT)/bin/gofmt
|
2016-04-04 21:31:49 +02:00
|
|
|
|
2017-07-05 13:14:19 +02:00
|
|
|
ln -sf ../lib/go/bin/go $(HOST_DIR)/bin/
|
|
|
|
ln -sf ../lib/go/bin/gofmt $(HOST_DIR)/bin/
|
2016-04-04 21:31:49 +02:00
|
|
|
|
|
|
|
cp -a $(@D)/lib $(HOST_GO_ROOT)/
|
|
|
|
|
|
|
|
mkdir -p $(HOST_GO_ROOT)/pkg
|
|
|
|
cp -a $(@D)/pkg/include $(@D)/pkg/linux_* $(HOST_GO_ROOT)/pkg/
|
2018-05-11 22:50:34 +02:00
|
|
|
cp -a $(@D)/pkg/tool $(HOST_GO_ROOT)/pkg/
|
2016-04-04 21:31:49 +02:00
|
|
|
|
|
|
|
# There is a known issue which requires the go sources to be installed
|
|
|
|
# https://golang.org/issue/2775
|
|
|
|
cp -a $(@D)/src $(HOST_GO_ROOT)/
|
2016-05-26 20:21:33 +02:00
|
|
|
|
|
|
|
# Set all file timestamps to prevent the go compiler from rebuilding any
|
|
|
|
# built in packages when programs are built.
|
2018-05-11 22:50:34 +02:00
|
|
|
find $(HOST_GO_ROOT) -type f -exec touch -r $(@D)/bin/go {} \;
|
2016-04-04 21:31:49 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
$(eval $(host-generic-package))
|