Till Wegmüller
2020-09-10 3665e8d96f4e9367bbea3c1dd3283636d145bf46
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
#
# 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 2020 Till Wegmueller
#
 
include ../../../make-rules/shared-macros.mk
 
PATCH_EACH_ARCHIVE= 1
 
COMPONENT_NAME=            golang
COMPONENT_MAJOR_VERSION=    1.15
COMPONENT_VERSION=        $(COMPONENT_MAJOR_VERSION).1
COMPONENT_FMRI=            developer/golang
COMPONENT_CLASSIFICATION=    Development/Other Languages
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:d3743752a421881b5cc007c76b4b68becc3ad053e61275567edab1c99e154d30
COMPONENT_LICENSE=        BSD-style, Patent Grant
COMPONENT_LICENSE_FILE=        $(COMPONENT_NAME).license
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=        framepointer
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 +=    \
    GOROOT_BOOTSTRAP="/usr/lib/golang/$(COMPONENT_MAJOR_VERSION)"
 
# 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 += GOPATH="$(SOURCE_DIR)/gopath"
 
 
include $(WS_MAKE_RULES)/prep.mk
include $(WS_MAKE_RULES)/justmake.mk
include $(WS_MAKE_RULES)/ips.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_DIR=    $(@D)/src
COMPONENT_TEST_CMD=    ./run.bash
COMPONENT_TEST_TARGETS=
 
# 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'\
    | xargs rm;
endef
 
# common targets
build:        $(BUILD_64)
 
install:    build $(INSTALL_64)
 
test:        $(TEST_64)
 
REQUIRED_PACKAGES += developer/golang-114
# Auto-generated dependencies
REQUIRED_PACKAGES += system/library