1
0
mirror of https://git.openwrt.org/feed/packages.git synced 2024-06-13 10:59:13 +02:00
Commit Graph

85 Commits

Author SHA1 Message Date
Jeffery To
d276c81ea8
golang: Update to 1.15.3
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-20 07:01:44 +08:00
Jeffery To
0a4d40b37e
golang: Fix vars not passed when calling cache_cleanup
Fixes https://github.com/openwrt/packages/issues/13674.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-16 17:38:17 +08:00
Jeffery To
b70fb40c11
golang: Move build cache into $(TMP_DIR)
This changes the default build cache directory from $(TOPDIR)/.go-build
to $(TMP_DIR)/go-build, so that the cache directory is ignored by git
and is removed by "make dirclean".

This does not move/remove a build cache directory in the previous
location; it will need to be removed manually.

Fixes https://github.com/openwrt/packages/issues/13675.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-16 17:13:42 +08:00
Jeffery To
d5dc30fe80
golang: Add option to enable Spectre mitigations
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:34:41 +08:00
Jeffery To
3d6df5d7d9
golang: Add golang-host-build.mk
This adds a Makefile for host builds of Go programs.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:34:41 +08:00
Jeffery To
2d22a629f5
golang: Move package scripts into golang-build.sh
This also adds GO_PKG_INSTALL_BIN_PATH which determines the path where
binaries are installed by GoPackage/Package/Install/Bin (this was
previously hard-coded to /usr/bin).

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:34:40 +08:00
Jeffery To
4773c288cd
golang: Quote variables passed to the shell
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:34:40 +08:00
Jeffery To
7aaaa8ae64
golang: Add more error handling for go-gcc-helper
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:34:36 +08:00
Jeffery To
a95afd67df
golang: Use external linking for target Go
In Go 1.15, the linker now defaults to internal linking mode for
-buildmode=pie on amd64 and arm64[1], however this results in go tool
binaries with the wrong dynamic linker/interpreter.

External linking is still used when PIE is enabled for other platforms,
whereas internal linking is used when PIE is not enabled.

This changes target Go to always use external linking, to fix PIE
binaries for amd64/arm64 and for consistency.

[1]: https://golang.org/doc/go1.15#linker

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:08 +08:00
Jeffery To
93ee27edb8
golang: Simplify target compile
* Reuse GO_PKG_ENABLE_PIE from golang-package.mk
* Replace $(if ...) with $(or ...) to get default values
* Refactor vars common to each compile stage into variable

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:08 +08:00
Jeffery To
03a1f87549
golang: Use GO_LDFLAGS to set buildmode=pie for host Go
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:07 +08:00
Jeffery To
66eabf18f5
golang: Refactor vars common to each host compile stage into variable
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:07 +08:00
Jeffery To
4fb4ec963f
golang: Simplify bootstrap stage
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:07 +08:00
Jeffery To
40bff64ad3
golang: Group variables by stage (bootstrap/host/target)
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:06 +08:00
Jeffery To
9074dbd917
golang: Share build cache across package builds
This also adds a config option GOLANG_BUILD_CACHE_DIR to customize the
location of the build cache directory.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:28:06 +08:00
Jeffery To
3dd55b504c
golang: Move module cache into DL_DIR
This also adds a config option GOLANG_MOD_CACHE_WORLD_READABLE; if
enabled, chmod is run after a Go package build to make all
files/directories in the module cache world-readable.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-06 16:27:52 +08:00
Jeffery To
4674564e42
golang: Move config option into separate file
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-05 00:25:28 +08:00
Jeffery To
fc7cf379e3
golang: Update to 1.15.2
1.15.1 includes a fix for CVE-2020-24553:
net/http/cgi,net/http/fcgi: Cross-Site Scripting (XSS) when Content-Type
is not specified

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-10-05 00:25:18 +08:00
Jeffery To
8433270034
golang: Update to 1.14.7
This includes a fix for CVE-2020-16845 (encoding/binary: ReadUvarint and
ReadVarint can read an unlimited number of bytes from invalid inputs).

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-08-12 04:38:38 +08:00
Jeffery To
adb43f7643
golang: Update to 1.14.6
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-07-20 03:10:57 +08:00
Jeffery To
34a3e58a12 golang: Add GO_PKG_TAGS for Go packages
This adds a new Makefile variable, GO_PKG_TAGS, for Go packages. When
set, the value is passed as the parameter of the -tags option for 'go
install'.

This also updates syncthing to use this variable.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-07-15 21:09:17 -10:00
Jeffery To
d73fe8ebc3
golang: Evaluate "go install" arguments during Build/Compile
This evaluates the arguments passed to "go install" during Build/Compile
rather than when golang-package.mk is included.

This also changes build directory-related variables to be recursively
expanded, because PKG_BUILD_DIR depends on BUILD_VARIANT and so can
change during different runs of Build/Compile.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-06-29 02:24:52 +08:00
Jeffery To
4ea95b49a2
golang: Update to 1.14.4
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-06-08 16:06:53 +08:00
Jeffery To
2b8f9b7349 golang: Update to 1.14.3
This also removes a (useless) test for PKG_GO_ZBOOTSTRAP_MODS (it is
always non-empty).

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-17 03:37:45 +08:00
Jeffery To
da3fb97b9c golang: Set/reset default platform options for target Go compiler
Because the first stage for building target Go is actually a host build,
the default platform options (GO386, GOARM, etc.) are detected from the
host. These values are written to a source file and kept when building
the second stage.

This modifies this source file to set the appropriate values for the
target platform, and reset values for other platforms to their
cross-compiling / most compatible defaults.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-14 17:45:18 +08:00
Jeffery To
46017682f4 golang: Set buildid and enable stripping for Go compiler
Doing both should make the compiler reproducible.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-13 16:07:27 +08:00
Jeffery To
74b02ca24c golang: Blacklist older (or no) FPUs rather than whitelist newer FPUs
This should be more future-proof (presumably all future ARM FPUs will be
at least VFPv3).

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-13 16:07:27 +08:00
Jeffery To
25a7f0045e golang: Move "go install" arguments logic, add buildid
The moves the setting of arguments for "go install" out of the shell
script in GoPackage/Build/Compile and into make.

This also adds the -buildid link flag for reproducible builds.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-13 16:07:27 +08:00
Jeffery To
d2f5e6966b golang: Rename GoPackage/Environment to GO_PKG_VARS
The variable is a list of shell variables; the new name is more in-line
with other parts the build system (CONFIGURE_VARS, MAKE_VARS, etc.).

GoPackage/Environment is kept (for now) in case other feeds are using
it.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-13 16:07:20 +08:00
Jeffery To
bcdd6e64fa golang: Remove RSTRIP definition from golang-package.mk
Since RSTRIP is defined in rules.mk as a recursively expanded variable,
there is no need to define it again after setting STRIP in
golang-package.mk.

This also adds a note to the comment for GO_PKG_LDFLAGS to say that -s
and -w flags are not necessary.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-13 00:18:50 +08:00
Jeffery To
49a2ff493b golang: Add option to use external bootstrap Go
The default bootstrap Go (Go 1.4) can only be compiled on a limited
number of platforms compared to newer versions of Go.

This adds a config option to use an external bootstrap Go, e.g.
installed through the build system's package manager or downloaded from
golang.org.

See: https://github.com/openwrt/packages/issues/11731

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-05-12 17:42:48 +08:00
Jeffery To
a00a0230b4 golang: Update to 1.14.2
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-04-23 02:40:50 +08:00
Jeffery To
5f392c62a5 golang: Update to 1.14.1
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-03-23 21:25:52 +08:00
Jeffery To
074b417c67 golang: Update to 1.14
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-03-05 02:53:44 +08:00
Jeffery To
1772267747 golang: Update to 1.13.8
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-02-18 17:57:55 +08:00
Jeffery To
bddd1ec588 golang: Update files installed
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-02-05 14:19:34 +08:00
Jeffery To
89d3f0ab54 golang: Reorganize GoPackage/Environment and Makefile variables
* Move more environment variables into GoPackage/Environment
* Split GoPackage/Environment into target and build sections
* Do not set GOROOT_FINAL for Go packages (setting it should only affect
  the Go compiler and not Go packages)
* Set CGO_LDFLAGS to $(TARGET_LDFLAGS)
* Move GO_TARGET_* variables from golang-values.mk, and GO_VERSION_*
  variables from golang-version.mk, into golang/Makefile

This also updates runc, containerd, and docker-ce to reflect the changes
in GoPackage/Environment.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-02-05 14:19:34 +08:00
Jeffery To
3b5f1c73fb golang: Improve build isolation from user environment
* Set GOENV=off when building Go compiler and packages, to ignore user's
  environment configuration file
* Set GOCACHE when building host Go
* Unset GOTMPDIR, to use the buildroot temp directory instead of temp
  directories in build_dir

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-02-04 04:05:29 +08:00
Jeffery To
0dc4fa6efb golang: Update to 1.13.7, add PKG_CPE_ID to Makefile
This update includes fixes for[1]:
* CVE-2020-7919 - doesn't appear to be published publicly yet
* CVE-2020-0601 - a Windows-related issue

[1]: https://github.com/golang/go/issues?q=milestone%3AGo1.13.7+label%3ACherryPickApproved

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-02-03 04:58:58 +08:00
Jeffery To
b621d1b0f3 golang: Update for ASLR PIE tristate option change
The ASLR PIE option was changed to a tristate option
(openwrt/openwrt@19cbac7d26). This updates
the Go compiler package and golang-package.mk to account for this
change.

This also adds warning messages for when the user has selected PIE but
Go does not have PIE support for the chosen target.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-15 19:36:09 +08:00
Jeffery To
7459757039 golang: Update to 1.13.6
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-14 22:34:07 +08:00
Jeffery To
c18adadd91 golang: Add support for ASLR/PIE for Go packages
This adds support to compile position-independent executables for
packages that use golang-package.mk.

Go packages will have PIE enabled if:
* Go supports PIE on the target platform;
* CONFIG_PKG_ASLR_PIE is selected; and
* PKG_ASLR_PIE (for the package) is not set to 0

Go 1.13 supports PIE for x86 and arm targets; mips support is in
progress[1].

[1]: https://github.com/golang/go/issues/21222#issuecomment-542064462

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-14 22:17:21 +08:00
Jeffery To
b36f27716f golang: Fix selection of GOARM value
This fixes how GOARM is selected for arm platforms, based on support for
VFP/VFPv3 rather than CPU version.

Fixes #10967.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-14 22:11:02 +08:00
Jeffery To
c377576734 golang: Add support for ASLR/PIE for host and target Go
This adds support to compile host and target Go as position-independent
executables.

Host Go will have PIE enabled if Go supports PIE on the host platform.

Target Go will have PIE enabled if Go supports PIE on the target
platform and CONFIG_PKG_ASLR_PIE is selected.

Go 1.13 supports PIE for x86 and arm targets; mips support is in
progress[1].

[1]: https://github.com/golang/go/issues/21222#issuecomment-542064462

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-08 19:29:54 +08:00
Jeffery To
53603abaae golang: Make golang-values.mk more readable
This replaces conditional functions with conditional directives to make
golang-values.mk more readable.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-08 19:29:54 +08:00
Jeffery To
232634fb9a golang: Strip whitespace when using Go package variables
This adds calls to the strip function in golang-package.mk when using
variables expected to be set by Go packages.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-08 19:29:54 +08:00
Jeffery To
12812d328f golang: Update valid os/arch combinations for host Go
The list is updated for Go 1.13.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-08 19:29:54 +08:00
Jeffery To
c9781b027a golang: Update variables unexported in golang-values.mk
The lists of variables are updated for Go 1.13.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-08 19:29:54 +08:00
Jeffery To
afaf95b4d8 golang: Re-format environment variable unexports
This changes the formatting of environment variable unexports in
golang-values.mk to be more maintainable, and to document the sources of
variables.

There should be no change to the actual list of variables unexported.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2020-01-08 19:29:54 +08:00
Jeffery To
dbd6f224c3 golang: Format TARGET_LDFLAGS for gcc
go invokes the external linker by calling gcc, so -zxxx options in
TARGET_LDFLAGS (in golang-package.mk) need to be formatted as -Wl,z,xxx.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2019-12-29 18:49:06 +08:00