Till Wegmüller
2024-04-07 32d55185c6e52012a7f3fbcd5ff32dbce22c3104
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
 
#
# Copyright 2023 Till Wegmueller
#
 
BUILD_BITS= 64
BUILD_STYLE= justmake
USE_COMMON_TEST_MASTER= no
CLONEY_ARGS= CLONEY_MODE="copy"
USE_PARALLEL_BUILD= yes
include ../../../make-rules/shared-macros.mk
 
COMPONENT_NAME=            golang
COMPONENT_MAJOR_VERSION=    1.22
COMPONENT_VERSION=        $(COMPONENT_MAJOR_VERSION).2
COMPONENT_SUMMARY=        The Go Programming Language
COMPONENT_SRC=            $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_PROJECT_URL=        https://golang.org/
COMPONENT_ARCHIVE=        go$(COMPONENT_VERSION).src.tar.gz
COMPONENT_ARCHIVE_URL=        https://storage.googleapis.com/golang/$(COMPONENT_ARCHIVE)
COMPONENT_ARCHIVE_HASH=        sha256:374ea82b289ec738e968267cac59c7d5ff180f9492250254784b2044e90df5a9
COMPONENT_FMRI=            developer/golang
COMPONENT_CLASSIFICATION=    Development/Other Languages
COMPONENT_LICENSE=        BSD-style, Patent Grant
COMPONENT_LICENSE_FILE=        LICENSE
 
PATCH_EACH_ARCHIVE= 1
 
MEDIATEDUSRSHAREMAN1DIR=    $(PROTO_DIR)/usr/share/golang/$(COMPONENT_MAJOR_VERSION)/man/man1
 
# Go has a number of supplementary tools and packages that are located in
# separate archives or source repositories. Because Go currently forces a
# recompile of all packages whenever the compiler changes, building and
# delivering them within the same build component build process is the best
# option for now.
 
# Bake in where Go package will be installed.
GOROOT_FINAL=        /usr/lib/golang/$(COMPONENT_MAJOR_VERSION)
# Enable easier stack unwinding for debugging.
GOEXPERIMENT=
COMPONENT_BUILD_ENV +=    GOROOT_FINAL="$(GOROOT_FINAL)"
COMPONENT_BUILD_ENV +=    GOEXPERIMENT="$(GOEXPERIMENT)"
COMPONENT_BUILD_ENV +=    GOOS="illumos"
COMPONENT_BUILD_ENV +=    GOCACHE="$(SOURCE_DIR)/gocache"
COMPONENT_BUILD_ENV +=  GOPATH="$(SOURCE_DIR)/gopath"
COMPONENT_BUILD_ENV +=  GO_LDSO=/lib/64/ld.so.1
COMPONENT_BUILD_ENV +=  GOROOT_BOOTSTRAP=/usr/lib/golang/1.21
 
# For convenience during installation of supplementary packages.
COMPONENT_INSTALL_ENV += PATH="$(PROTO_DIR)$(GOROOT_FINAL)/bin:$(PATH)"
COMPONENT_INSTALL_ENV += GOROOT="$(PROTO_DIR)$(GOROOT_FINAL)"
COMPONENT_INSTALL_ENV += GOCACHE="$(SOURCE_DIR)/gocache"
COMPONENT_INSTALL_ENV += GOROOT_BOOTSTRAP=/usr/lib/golang/1.21
COMPONENT_INSTALL_ENV += GOPATH="$(SOURCE_DIR)/gopath"
 
include $(WS_MAKE_RULES)/common.mk
 
# We have to fiddle with the package archives to get them into the same source
# directory so that we can use the standard build targets.  We're effectively
# building multiple components using a single target.
COMPONENT_POST_UNPACK_ACTION= $(MV) go $(COMPONENT_SRC)
 
# Go doesn't have a standard Makefile-based build process, so override the
# default.
COMPONENT_BUILD_ACTION=    \
    cd $(@D)/src; $(ENV) $(COMPONENT_BUILD_ENV) ./make.bash
 
COMPONENT_TARGET_DIR= \
    $(PROTOUSRLIBDIR)/$(COMPONENT_NAME)/$(COMPONENT_MAJOR_VERSION)
 
# We can't do any ASLR'ing as the Go 6l linker has no understanding of the
# -z aslr=... option. So just override where needed in the .p5m files.
ASLR_MODE = $(ASLR_DISABLE)
 
COMPONENT_TEST_ENV +=    PATH="$(@D)/bin:$(PATH)"
COMPONENT_TEST_ENV +=    GOROOT="$(@D)"
COMPONENT_TEST_ENV +=     GOCACHE="$(SOURCE_DIR)/gocache"
COMPONENT_TEST_ENV +=    TMPDIR="/var/tmp"
COMPONENT_TEST_DIR =    $(@D)/src
COMPONENT_TEST_CMD =    ./run.bash
COMPONENT_TEST_TARGETS =
# Remove measured times (eg. 11.106s, 0.312s or 1,16s):
COMPONENT_TEST_TRANSFORMS += '-e "s/[0-9][0-9].[0-9][0-9][0-9]s//" '
COMPONENT_TEST_TRANSFORMS += '-e "s/[0-9].[0-9][0-9][0-9]s//" '
COMPONENT_TEST_TRANSFORMS += '-e "s/[0-9].[0-9][0-9]s//" '
# Remove occurrences of "(cached)":
COMPONENT_TEST_TRANSFORMS += '-e "s/(cached)//" '
# Replace port numbers with nnnnn on localhost:
COMPONENT_TEST_TRANSFORMS += '-e "s/127.0.0.1\:[0-9]*/127.0.0.1\:nnnnn/" '
# Remove trailing random numbers on TestReadOnlyWriteFile: 
COMPONENT_TEST_TRANSFORMS += '-e "s/TestReadOnlyWriteFile[0-9]*/TestReadOnlyWriteFile/" '
 
# Use this Command to copy the Go Source tree into the proto area. In order to deliver the Go SDK under GOROOT
# Additionally nuke all the funky binary files used for test suites. They keep bothering the packaging tools
define COMPONENT_INSTALL_ACTION=
    ($(MKDIR) $(COMPONENT_TARGET_DIR)/src); \
    (cd $(SOURCE_DIR) && \
    /usr/gnu/bin/find . -maxdepth 1 -path "./$(COMPONENT_SRC_NAME)" \
      -prune -o \( ! -iname ".*" \) -print \
      -exec /usr/gnu/bin/cp -r \
      --parents {} $(COMPONENT_TARGET_DIR) \;); \
    (cd $(BUILD_DIR_64) && \
    /usr/gnu/bin/find src -type f \
        -exec /usr/gnu/bin/cp --parents {} $(COMPONENT_TARGET_DIR) \;); \
    (cd $(BUILD_DIR_64) && $(CP) -r bin $(COMPONENT_TARGET_DIR)/); \
    (cd $(BUILD_DIR_64) && $(CP) -r pkg $(COMPONENT_TARGET_DIR)/); \
    (rm -r $(COMPONENT_TARGET_DIR)/pkg/obj); \
    ($(MKDIR) -p $(MEDIATEDUSRSHAREMAN1DIR)); \
    /usr/gnu/bin/find $(COMPONENT_TARGET_DIR)/src -type f \
           | egrep -v '\.go|\.s|\.bash|\.txt|\.c|\.tmpl|\.h|\.pl|\.md|\.S|\.py|\.dist|\.rc|\.bat|README|Makefile|\.awk|\.rules|\.mod|\.json|LICENSE|PATENTS|\.bin'\
    | xargs rm;
endef
 
REQUIRED_PACKAGES += developer/golang-121
 
# Auto-generated dependencies
REQUIRED_PACKAGES += system/library