mirror of
https://github.com/openwrt/packages.git
synced 2026-02-04 03:56:05 +08:00
golang: split src into separate packages
Split misc sources and test data into separate packages. Reduces target
src package size by a third.
Move architecture-dependent generated source from src to the main
package.
Mark doc, misc, src and tests packages with PKGARCH:=all as they don't
have any architecture-specific files.
Fix stripping and strip compiler only.
Fixes: c137c382 ("golang: new packages")
Link: https://github.com/openwrt/packages/pull/28445
Suggested-by: Jeffery To <jeffery.to@gmail.com>
Signed-off-by: George Sapkin <george@sapk.in>
This commit is contained in:
16
lang/golang/go-strip-helper
Executable file
16
lang/golang/go-strip-helper
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2026 George Sapkin
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
for last; do :; done
|
||||
|
||||
case "$last" in
|
||||
*-doc|*-misc|*-src|*-tests)
|
||||
echo "Not stripping: $last"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
"$@"
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Copyright (C) 2018-2023, Jeffery To
|
||||
# Copyright (C) 2025-2026, George Sapkin
|
||||
# Copyright (C) 2018-2023 Jeffery To
|
||||
# Copyright (C) 2025-2026 George Sapkin
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
@@ -111,9 +111,8 @@ BOOTSTRAP_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_BUILD_DIR)" --strip-components=1 -
|
||||
BOOTSTRAP_1_17_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_17_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_17_SOURCE)"
|
||||
BOOTSTRAP_1_20_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_20_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_20_SOURCE)"
|
||||
|
||||
# don't strip ELF executables in test data
|
||||
# Don't strip ELF executables in test data
|
||||
RSTRIP:=:
|
||||
STRIP:=:
|
||||
|
||||
ifeq ($(GO_TARGET_SPECTRE_SUPPORTED),1)
|
||||
PKG_CONFIG_DEPENDS+=CONFIG_GOLANG_SPECTRE
|
||||
@@ -253,13 +252,17 @@ define Host/Install
|
||||
|
||||
rm -rf "$(HOST_GO_ROOT)/pkg/$(GO_HOST_OS_ARCH)"
|
||||
|
||||
$(INSTALL_DIR) "$(STAGING_DIR_HOSTPKG)/bin"
|
||||
$(INSTALL_BIN) ../go-strip-helper "$(STAGING_DIR_HOSTPKG)/bin"
|
||||
|
||||
$(INSTALL_DIR) "$(HOST_GO_ROOT)/openwrt"
|
||||
$(INSTALL_BIN) ../go-gcc-helper "$(HOST_GO_ROOT)/openwrt/"
|
||||
$(INSTALL_BIN) ../go-gcc-helper "$(HOST_GO_ROOT)/openwrt"
|
||||
$(LN) go-gcc-helper "$(HOST_GO_ROOT)/openwrt/gcc"
|
||||
$(LN) go-gcc-helper "$(HOST_GO_ROOT)/openwrt/g++"
|
||||
endef
|
||||
|
||||
define Host/Uninstall
|
||||
rm -f "$(STAGING_DIR_HOSTPKG)/bin/go-strip-helper"
|
||||
rm -rf "$(HOST_GO_ROOT)/openwrt"
|
||||
|
||||
$(call GoCompiler/Host/Uninstall)
|
||||
|
||||
@@ -36,8 +36,22 @@ endef
|
||||
# 2: destination prefix
|
||||
# 3: go version id
|
||||
# 4: file/directory name
|
||||
# 5: filter (optional)
|
||||
define GoCompiler/Default/Install/install-lib-data
|
||||
|
||||
ifeq ($(5),)
|
||||
$(CP) "$(1)/$(4)" "$(2)/lib/go-$(3)/"
|
||||
else
|
||||
$(INSTALL_DIR) "$(2)/lib/go-$(3)/$(4)"; \
|
||||
cd "$(1)/$(4)" && \
|
||||
$(FIND) . ! -type d -a \( $(5) \) -print0 | \
|
||||
cpio \
|
||||
--make-directories \
|
||||
--null \
|
||||
--pass-through \
|
||||
--unconditional \
|
||||
"$(2)/lib/go-$(3)/$(4)/"
|
||||
endif
|
||||
endef
|
||||
|
||||
# 1: source go root
|
||||
@@ -45,6 +59,7 @@ endef
|
||||
# 3: go version id
|
||||
# 4: GOOS_GOARCH
|
||||
# 5: install suffix (optional)
|
||||
# 6: if target, package architecture-specific sources
|
||||
define GoCompiler/Default/Install/Bin
|
||||
$(call GoCompiler/Default/Install/make-dirs,$(2),$(3))
|
||||
|
||||
@@ -53,7 +68,7 @@ define GoCompiler/Default/Install/Bin
|
||||
$(INSTALL_DATA) -p "$(1)/go.env" "$(2)/lib/go-$(3)/"
|
||||
$(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/"
|
||||
|
||||
for file in CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \
|
||||
for file in $(strip $(if $(filter target,$(6)),$(GO_BIN_FILES),$(GO_LEGAL_FILES))); do \
|
||||
if [ -f "$(1)/$$$$file" ]; then \
|
||||
$(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/lib/go-$(3)/" ; \
|
||||
fi ; \
|
||||
@@ -96,18 +111,23 @@ endef
|
||||
# 1: source go root
|
||||
# 2: destination prefix
|
||||
# 3: go version id
|
||||
define GoCompiler/Default/Install/Misc
|
||||
$(call GoCompiler/Default/Install/make-dirs,$(2),$(3))
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),misc)
|
||||
endef
|
||||
|
||||
# 1: source go root
|
||||
# 2: destination prefix
|
||||
# 3: go version id
|
||||
# 4: if target, package architecture-specific sources
|
||||
define GoCompiler/Default/Install/Src
|
||||
$(call GoCompiler/Default/Install/make-dirs,$(2),$(3))
|
||||
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),lib)
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),misc)
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),src)
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),test)
|
||||
|
||||
$(FIND) \
|
||||
"$(2)/lib/go-$(3)/src/" \
|
||||
\! -type d -a \( -name "*.bat" -o -name "*.rc" \) \
|
||||
-delete
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),src,$(strip \
|
||||
$(if $(filter target,$(4)), \
|
||||
$(GO_TARGET_SRC_FILTERS), \
|
||||
$(GO_HOST_SRC_FILTERS) \
|
||||
) \
|
||||
))
|
||||
|
||||
if [ -d "$(1)/pkg/include" ]; then \
|
||||
$(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg" ; \
|
||||
@@ -115,6 +135,16 @@ define GoCompiler/Default/Install/Src
|
||||
fi
|
||||
endef
|
||||
|
||||
# 1: source go root
|
||||
# 2: destination prefix
|
||||
# 3: go version id
|
||||
define GoCompiler/Default/Install/Tests
|
||||
$(call GoCompiler/Default/Install/make-dirs,$(2),$(3))
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),lib)
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),src,$(GO_TARGET_TEST_FILTERS))
|
||||
$(call GoCompiler/Default/Install/install-lib-data,$(1),$(2),$(3),test)
|
||||
endef
|
||||
|
||||
# 1: destination prefix
|
||||
# 2: go version id
|
||||
define GoCompiler/Default/Uninstall
|
||||
@@ -148,8 +178,9 @@ define GoCompiler/AddProfile
|
||||
endef
|
||||
|
||||
# 1: override install prefix (optional)
|
||||
# 2: if target, package architecture-specific sources
|
||||
define GoCompiler/$(1)/Install/Bin
|
||||
$$(call GoCompiler/Default/Install/Bin,$(2),$$(or $$(1),$(3)),$(4),$(5),$(6))
|
||||
$$(call GoCompiler/Default/Install/Bin,$(2),$$(or $$(1),$(3)),$(4),$(5),$(6),$$(2))
|
||||
endef
|
||||
|
||||
# 1: override install prefix (optional)
|
||||
@@ -163,8 +194,19 @@ define GoCompiler/AddProfile
|
||||
endef
|
||||
|
||||
# 1: override install prefix (optional)
|
||||
define GoCompiler/$(1)/Install/Misc
|
||||
$$(call GoCompiler/Default/Install/Misc,$(2),$$(or $$(1),$(3)),$(4))
|
||||
endef
|
||||
|
||||
# 1: override install prefix (optional)
|
||||
# 2: if target, package architecture-specific sources
|
||||
define GoCompiler/$(1)/Install/Src
|
||||
$$(call GoCompiler/Default/Install/Src,$(2),$$(or $$(1),$(3)),$(4))
|
||||
$$(call GoCompiler/Default/Install/Src,$(2),$$(or $$(1),$(3)),$(4),$$(2))
|
||||
endef
|
||||
|
||||
# 1: override install prefix (optional)
|
||||
define GoCompiler/$(1)/Install/Tests
|
||||
$$(call GoCompiler/Default/Install/Tests,$(2),$$(or $$(1),$(3)),$(4),$$(2))
|
||||
endef
|
||||
|
||||
# 1: override install prefix (optional)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#
|
||||
# Copyright (C) 2018-2023 Jeffery To
|
||||
# Copyright (C) 2025-2026 George Sapkin
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
@@ -250,6 +251,30 @@ else ifeq ($(GO_ARCH),ppc64)
|
||||
|
||||
endif
|
||||
|
||||
GO_GENERATED_FILES := \
|
||||
src/cmd/cgo/zdefaultcc.go \
|
||||
src/cmd/go/internal/cfg/zdefaultcc.go \
|
||||
src/cmd/internal/objabi/zbootstrap.go \
|
||||
src/go/build/zcgo.go \
|
||||
src/internal/buildcfg/zbootstrap.go \
|
||||
src/internal/runtime/sys/zversion.go \
|
||||
src/time/tzdata/zzipdata.go
|
||||
|
||||
GO_LEGAL_FILES := \
|
||||
CONTRIBUTING.md \
|
||||
LICENSE \
|
||||
PATENTS \
|
||||
README.md \
|
||||
SECURITY.md
|
||||
|
||||
GO_BIN_FILES := \
|
||||
$(GO_GENERATED_FILES) \
|
||||
$(GO_LEGAL_FILES)
|
||||
|
||||
GO_HOST_SRC_FILTERS := ! -name '*.bat' -a ! -name '*.rc'
|
||||
GO_TARGET_SRC_FILTERS := ! -ipath '*/testdata/*' -a ! -name '*_test.go' -a ! -name '*.bat' -a ! -name '*.rc'
|
||||
GO_TARGET_TEST_FILTERS := -ipath '*/testdata/*' -o -name '*_test.go'
|
||||
|
||||
|
||||
# Target Go
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Copyright (C) 2018-2023, Jeffery To
|
||||
# Copyright (C) 2025-2026, George Sapkin
|
||||
# Copyright (C) 2018-2023 Jeffery To
|
||||
# Copyright (C) 2025-2026 George Sapkin
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
@@ -17,9 +17,8 @@ include ../golang-values.mk
|
||||
PKG_UNPACK:=$(HOST_TAR) -C "$(PKG_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)"
|
||||
HOST_UNPACK:=$(HOST_TAR) -C "$(HOST_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)"
|
||||
|
||||
# don't strip ELF executables in test data
|
||||
RSTRIP:=:
|
||||
STRIP:=:
|
||||
# Don't strip ELF executables in test data
|
||||
RSTRIP:=$(subst $(SCRIPT_DIR)/rstrip.sh,go-strip-helper $(SCRIPT_DIR)/rstrip.sh,$(RSTRIP))
|
||||
|
||||
ifeq ($(GO_TARGET_SPECTRE_SUPPORTED),1)
|
||||
PKG_CONFIG_DEPENDS+=CONFIG_GOLANG_SPECTRE
|
||||
@@ -79,6 +78,7 @@ endef
|
||||
define Package/$(PKG_NAME)-doc
|
||||
$(call Package/$(PKG_NAME)/Default)
|
||||
TITLE+= (documentation)
|
||||
PKGARCH:=all
|
||||
PROVIDES:=@golang-doc
|
||||
$(if $(filter $(GO_DEFAULT_VERSION),$(GO_VERSION_MAJOR_MINOR)),DEFAULT_VARIANT:=1)
|
||||
endef
|
||||
@@ -89,9 +89,24 @@ define Package/$(PKG_NAME)-doc/description
|
||||
This package provides the documentation for the Go programming language.
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-misc
|
||||
$(call Package/$(PKG_NAME)/Default)
|
||||
TITLE+= (misc source files)
|
||||
PKGARCH:=all
|
||||
PROVIDES:=@golang-misc
|
||||
$(if $(filter $(GO_DEFAULT_VERSION),$(GO_VERSION_MAJOR_MINOR)),DEFAULT_VARIANT:=1)
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-misc/description
|
||||
$(call Package/$(PKG_NAME)/Default/description)
|
||||
|
||||
This package provides the Go compiler miscellaneous sources.
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-src
|
||||
$(call Package/$(PKG_NAME)/Default)
|
||||
TITLE+= (source files)
|
||||
PKGARCH:=all
|
||||
PROVIDES:=@golang-src
|
||||
$(if $(filter $(GO_DEFAULT_VERSION),$(GO_VERSION_MAJOR_MINOR)),DEFAULT_VARIANT:=1)
|
||||
endef
|
||||
@@ -103,6 +118,22 @@ define Package/$(PKG_NAME)-src/description
|
||||
cross-compilation.
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-tests
|
||||
$(call Package/$(PKG_NAME)/Default)
|
||||
TITLE+= (compiler tests)
|
||||
DEPENDS+= +golang$(GO_VERSION_MAJOR_MINOR)-src
|
||||
EXTRA_DEPENDS:=golang$(GO_VERSION_MAJOR_MINOR)-src (=$(PKG_VERSION)-r$(PKG_RELEASE))
|
||||
PKGARCH:=all
|
||||
PROVIDES:=@golang-tests
|
||||
$(if $(filter $(GO_DEFAULT_VERSION),$(GO_VERSION_MAJOR_MINOR)),DEFAULT_VARIANT:=1)
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-tests/description
|
||||
$(call Package/$(PKG_NAME)/Default/description)
|
||||
|
||||
This package provides the Go compiler tests for stdlib.
|
||||
endef
|
||||
|
||||
|
||||
# Host
|
||||
|
||||
@@ -149,7 +180,7 @@ define Host/Install
|
||||
rm -rf "$(HOST_GO_ROOT)/pkg/$(GO_HOST_OS_ARCH)"
|
||||
|
||||
$(INSTALL_DIR) "$(HOST_GO_ROOT)/openwrt"
|
||||
$(INSTALL_BIN) ../go-gcc-helper "$(HOST_GO_ROOT)/openwrt/"
|
||||
$(INSTALL_BIN) ../go-gcc-helper "$(HOST_GO_ROOT)/openwrt"
|
||||
$(LN) go-gcc-helper "$(HOST_GO_ROOT)/openwrt/gcc"
|
||||
$(LN) go-gcc-helper "$(HOST_GO_ROOT)/openwrt/g++"
|
||||
endef
|
||||
@@ -242,19 +273,27 @@ define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)/install
|
||||
$(call GoCompiler/Package/Install/Bin,$(1)$(PKG_GO_PREFIX))
|
||||
$(call GoCompiler/Package/Install/Bin,$(1)$(PKG_GO_PREFIX),target)
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-doc/install
|
||||
$(call GoCompiler/Package/Install/Doc,$(1)$(PKG_GO_PREFIX))
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-misc/install
|
||||
$(call GoCompiler/Package/Install/Misc,$(1)$(PKG_GO_PREFIX))
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-src/install
|
||||
$(call GoCompiler/Package/Install/Src,$(1)$(PKG_GO_PREFIX))
|
||||
$(call GoCompiler/Package/Install/Src,$(1)$(PKG_GO_PREFIX),target)
|
||||
endef
|
||||
|
||||
define Package/$(PKG_NAME)-tests/install
|
||||
$(call GoCompiler/Package/Install/Tests,$(1)$(PKG_GO_PREFIX))
|
||||
endef
|
||||
|
||||
# src/debug contains ELF executables as test data and they reference these
|
||||
# libraries we need to call this to pass CheckDependencies in package-pack.mk
|
||||
define Package/$(PKG_NAME)-src/extra_provides
|
||||
define Package/$(PKG_NAME)-tests/extra_provides
|
||||
echo 'libc.so.6' libstdc++.so.6' libtiff.so.6' | tr ' ' '\n'
|
||||
endef
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Copyright (C) 2018-2023, Jeffery To
|
||||
# Copyright (C) 2025-2026, George Sapkin
|
||||
# Copyright (C) 2018-2023 Jeffery To
|
||||
# Copyright (C) 2025-2026 George Sapkin
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
@@ -13,7 +13,7 @@ GO_BOOTSTRAP_VERSION:=bootstrap
|
||||
PKG_HASH:=58cbf771e44d76de6f56d19e33b77d745a1e489340922875e46585b975c2b059
|
||||
|
||||
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
|
||||
PKG_RELEASE:=1
|
||||
PKG_RELEASE:=2
|
||||
|
||||
GO_SOURCE_URLS:=https://go.dev/dl/ \
|
||||
https://dl.google.com/go/ \
|
||||
@@ -78,4 +78,6 @@ include ../golang-version.mk
|
||||
$(eval $(call HostBuild))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)-doc))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)-misc))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)-src))
|
||||
$(eval $(call BuildPackage,$(PKG_NAME)-tests))
|
||||
|
||||
2
lang/golang/golang1.25/test.sh
Normal file → Executable file
2
lang/golang/golang1.25/test.sh
Normal file → Executable file
@@ -3,7 +3,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
case "$1" in
|
||||
golang*doc|golang*src) exit ;;
|
||||
golang*doc|golang*misc|golang*src|golang*tests) exit ;;
|
||||
esac
|
||||
|
||||
go version | grep -F " go$PKG_VERSION "
|
||||
|
||||
Reference in New Issue
Block a user