Go build system: reduce resulting installation sizes (#47943)
* Reduce the size of outputted go built binaries * Remove unused import from go package * go: remove comment from setup dependents build env * Add back missing imports after rebase
This commit is contained in:
parent
8ac0bd2825
commit
ebc9f03dda
@ -9,7 +9,7 @@
|
||||
import spack.phase_callbacks
|
||||
import spack.spec
|
||||
import spack.util.prefix
|
||||
from spack.directives import build_system, extends
|
||||
from spack.directives import build_system, depends_on
|
||||
from spack.multimethod import when
|
||||
|
||||
from ._checks import BuilderWithDefaults, execute_install_time_tests
|
||||
@ -28,9 +28,7 @@ class GoPackage(spack.package_base.PackageBase):
|
||||
build_system("go")
|
||||
|
||||
with when("build_system=go"):
|
||||
# TODO: this seems like it should be depends_on, see
|
||||
# setup_dependent_build_environment in go for why I kept it like this
|
||||
extends("go@1.14:", type="build")
|
||||
depends_on("go", type="build")
|
||||
|
||||
|
||||
@spack.builder.builder("go")
|
||||
@ -73,6 +71,7 @@ class GoBuilder(BuilderWithDefaults):
|
||||
def setup_build_environment(self, env):
|
||||
env.set("GO111MODULE", "on")
|
||||
env.set("GOTOOLCHAIN", "local")
|
||||
env.set("GOPATH", fs.join_path(self.pkg.stage.path, "go"))
|
||||
|
||||
@property
|
||||
def build_directory(self):
|
||||
|
@ -5,8 +5,6 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
from llnl.util import tty
|
||||
|
||||
from spack.package import *
|
||||
|
||||
# - vanilla CentOS 7, and possibly other systems, fail a test:
|
||||
@ -119,30 +117,8 @@ def install(self, spec, prefix):
|
||||
def setup_dependent_package(self, module, dependent_spec):
|
||||
"""Called before go modules' build(), install() methods.
|
||||
|
||||
In most cases, extensions will only need to set GOPATH and use go::
|
||||
|
||||
env['GOPATH'] = self.source_path + ':' + env['GOPATH']
|
||||
go('get', '<package>', env=env)
|
||||
install_tree('bin', prefix.bin)
|
||||
"""
|
||||
# Add a go command/compiler for extensions
|
||||
module.go = self.spec["go"].command
|
||||
|
||||
def generate_path_components(self, dependent_spec):
|
||||
if os.environ.get("GOROOT", False):
|
||||
tty.warn("GOROOT is set, this is not recommended")
|
||||
|
||||
# Set to include paths of dependencies
|
||||
path_components = [dependent_spec.prefix]
|
||||
for d in dependent_spec.traverse():
|
||||
if d.package.extends(self.spec):
|
||||
path_components.append(d.prefix)
|
||||
return ":".join(path_components)
|
||||
|
||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
# This *MUST* be first, this is where new code is installed
|
||||
env.prepend_path("GOPATH", self.generate_path_components(dependent_spec))
|
||||
|
||||
def setup_dependent_run_environment(self, env, dependent_spec):
|
||||
# Allow packages to find this when using module files
|
||||
env.prepend_path("GOPATH", self.generate_path_components(dependent_spec))
|
||||
|
Loading…
Reference in New Issue
Block a user