this is still verbose (prints each module being compiled), but build logs should be more readable (for finding things like errors) now
62 lines
1.9 KiB
Bash
62 lines
1.9 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"
|
|
else
|
|
mkdir -p ${GOSRCPATH%/*}/
|
|
ln -fs "$PWD" "${GOSRCPATH}"
|
|
fi
|
|
}
|
|
|
|
do_build() {
|
|
# remove -s and -w from go_ldflags, we should let xbps-src strip binaries itself
|
|
for wd in $go_ldflags; do
|
|
if [ "$wd" == "-s" ] || [ "$wd" == "-w" ]; then
|
|
msg_error "$pkgname: remove -s and -w from go_ldflags\n"
|
|
fi
|
|
done
|
|
|
|
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
|
|
# Check if go_import_path matches module
|
|
if [ "module $go_import_path" != "$(head -n1 go.mod)" ]; then
|
|
msg_error "\"\$go_import_path\" doesn't match the one defined in go.mod!\n"
|
|
fi
|
|
|
|
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 -p "$XBPS_MAKEJOBS" -mod="${go_mod_mode}" -modcacherw -v -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
|
|
else
|
|
# Otherwise, build using GOPATH
|
|
go get -p "$XBPS_MAKEJOBS" -v -tags "${go_build_tags}" -ldflags "${go_ldflags}" ${go_package}
|
|
fi
|
|
}
|
|
|
|
do_install() {
|
|
for f in ${GOPATH}/bin/* ${GOPATH}/bin/**/*; do
|
|
if [ -f "$f" ] && [ -x "$f" ]; then
|
|
vbin "$f"
|
|
fi
|
|
done
|
|
}
|