e892b46432
Fixes multi-package builds. [ci skip]
48 lines
1.5 KiB
Bash
48 lines
1.5 KiB
Bash
#
|
|
# This helper is for templates for Go packages.
|
|
#
|
|
|
|
do_configure() {
|
|
# $go_import_path must be set, or we can't link $PWD into $GOSRCPATH
|
|
# nor build from modules
|
|
if [ -z "$go_import_path" ]; then
|
|
msg_error "\"\$go_import_path\" not set on $pkgname template.\n"
|
|
fi
|
|
|
|
# This isn't really configuration, but its needed by packages
|
|
# that do unusual things with the build where the expect to be
|
|
# able to cd into the $GOSRCPATH
|
|
if [[ "${go_mod_mode}" != "off" ]] && [[ -f go.mod ]]; then
|
|
# Skip GOPATH symlink for Go modules
|
|
msg_normal "Building $pkgname using Go modules.\n"
|
|
elif [[ "${go_get}" != "yes" ]]; then
|
|
mkdir -p "$(dirname ${GOSRCPATH})"
|
|
ln -fs $PWD "${GOSRCPATH}"
|
|
fi
|
|
}
|
|
|
|
do_build() {
|
|
go_package=${go_package:-$go_import_path}
|
|
# Build using Go modules if there's a go.mod file
|
|
if [[ "${go_mod_mode}" != "off" ]] && [[ -f go.mod ]]; then
|
|
if [[ -z "${go_mod_mode}" ]] && [[ -d vendor ]]; then
|
|
msg_normal "Using vendor dir for $pkgname Go dependencies.\n"
|
|
go_mod_mode=vendor
|
|
elif [[ "${go_mod_mode}" = "default" ]]; then
|
|
# Allow templates to explicitly opt into the go tool's
|
|
# default behavior.
|
|
go_mod_mode=
|
|
fi
|
|
go install -mod="${go_mod_mode}" -x -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
|
|
else
|
|
# Otherwise, build using GOPATH
|
|
go get -x -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
|
|
fi
|
|
}
|
|
|
|
do_install() {
|
|
find "${GOPATH}/bin" -type f -executable | while read line
|
|
do
|
|
vbin "${line}"
|
|
done
|
|
}
|