|
2 | 2 | set -e # exit when any command fails |
3 | 3 | set -x # show all commands being run |
4 | 4 |
|
5 | | -GC=go |
| 5 | +# Default to Go 1.18 if GO_VERSION is not set. |
| 6 | +# |
| 7 | +# Use the "=" operator (instead of the more common ":-" operator) so that it |
| 8 | +# allows setting GO_VERSION="" to use the Go installation in the PATH, and it |
| 9 | +# sets the GO_VERSION variable if the default is used. |
| 10 | +GC=go${GO_VERSION="1.18"} |
6 | 11 | COMPILE_CHECK_DIR="internal/cmd/compilecheck" |
7 | | -ARCHITECTURES=("386" "arm" "arm64" "ppc64le" "s390x") |
8 | | -BUILD_CMD="${GC} build -buildvcs=false" |
9 | | - |
10 | | -# Compilation modules are not part of the workspace as testcontainers requires |
11 | | -# a version of klauspost/compress not supported by the Go Driver / other modules |
12 | | -# in the workspace. |
13 | | -export GOWORK=off |
14 | 12 |
|
15 | 13 | # compile_check will attempt to build the internal/test/compilecheck project |
16 | 14 | # using the provided Go version. This is to simulate an end-to-end use case. |
17 | 15 | function compile_check { |
18 | 16 | # Change the directory to the compilecheck test directory. |
19 | | - pushd "${COMPILE_CHECK_DIR}" >/dev/null |
| 17 | + pushd ${COMPILE_CHECK_DIR} |
| 18 | + |
| 19 | + # If a custom Go version is set using the GO_VERSION env var (e.g. "1.18"), |
| 20 | + # add the GOPATH bin directory to PATH and then install that Go version. |
| 21 | + if [ ! -z "$GO_VERSION" ]; then |
| 22 | + PATH=$(go env GOPATH)/bin:$PATH |
| 23 | + export PATH |
| 24 | + |
| 25 | + go install golang.org/dl/go$GO_VERSION@latest |
| 26 | + ${GC} download |
| 27 | + fi |
20 | 28 |
|
21 | 29 | ${GC} version |
22 | 30 | ${GC} mod tidy |
23 | 31 |
|
24 | | - # Standard build |
25 | | - $BUILD_CMD ./... |
| 32 | + # Check simple build. |
| 33 | + ${GC} build ./... |
26 | 34 |
|
27 | | - # Dynamic linking |
28 | | - $BUILD_CMD -buildmode=plugin |
| 35 | + # Check build with dynamic linking. |
| 36 | + ${GC} build -buildmode=plugin |
29 | 37 |
|
30 | 38 | # Check build with tags. |
31 | | - [[ -n "$BUILD_TAGS" ]] && $BUILD_CMD $BUILD_TAGS ./... |
| 39 | + ${GC} build $BUILD_TAGS ./... |
32 | 40 |
|
33 | 41 | # Check build with various architectures. |
34 | | - for ARCH in "${ARCHITECTURES[@]}"; do |
35 | | - GOOS=linux GOARCH=$ARCH $BUILD_CMD ./... |
36 | | - done |
| 42 | + GOOS=linux GOARCH=386 ${GC} build ./... |
| 43 | + GOOS=linux GOARCH=arm ${GC} build ./... |
| 44 | + GOOS=linux GOARCH=arm64 ${GC} build ./... |
| 45 | + GOOS=linux GOARCH=amd64 ${GC} build ./... |
| 46 | + GOOS=linux GOARCH=ppc64le ${GC} build ./... |
| 47 | + GOOS=linux GOARCH=s390x ${GC} build ./... |
| 48 | + |
| 49 | + # Remove the binaries. |
| 50 | + rm compilecheck |
| 51 | + rm compilecheck.so |
37 | 52 |
|
38 | 53 | # Change the directory back to the working directory. |
39 | | - popd >/dev/null |
| 54 | + popd |
40 | 55 | } |
41 | 56 |
|
42 | 57 | compile_check |
| 58 | +##!/usr/bin/env bash |
| 59 | +#set -e # exit when any command fails |
| 60 | +#set -x # show all commands being run |
| 61 | +# |
| 62 | +#GC=go |
| 63 | +#COMPILE_CHECK_DIR="internal/cmd/compilecheck" |
| 64 | +#ARCHITECTURES=("386" "arm" "arm64" "ppc64le" "s390x") |
| 65 | +#BUILD_CMD="${GC} build -buildvcs=false" |
| 66 | +# |
| 67 | +## Compilation modules are not part of the workspace as testcontainers requires |
| 68 | +## a version of klauspost/compress not supported by the Go Driver / other modules |
| 69 | +## in the workspace. |
| 70 | +#export GOWORK=off |
| 71 | +# |
| 72 | +## compile_check will attempt to build the internal/test/compilecheck project |
| 73 | +## using the provided Go version. This is to simulate an end-to-end use case. |
| 74 | +#function compile_check { |
| 75 | +# # Change the directory to the compilecheck test directory. |
| 76 | +# pushd "${COMPILE_CHECK_DIR}" >/dev/null |
| 77 | +# |
| 78 | +# ${GC} version |
| 79 | +# ${GC} mod tidy |
| 80 | +# |
| 81 | +# # Standard build |
| 82 | +# $BUILD_CMD ./... |
| 83 | +# |
| 84 | +# # Dynamic linking |
| 85 | +# $BUILD_CMD -buildmode=plugin |
| 86 | +# |
| 87 | +# # Check build with tags. |
| 88 | +# [[ -n "$BUILD_TAGS" ]] && $BUILD_CMD $BUILD_TAGS ./... |
| 89 | +# |
| 90 | +# # Check build with various architectures. |
| 91 | +# for ARCH in "${ARCHITECTURES[@]}"; do |
| 92 | +# GOOS=linux GOARCH=$ARCH $BUILD_CMD ./... |
| 93 | +# done |
| 94 | +# |
| 95 | +# # Change the directory back to the working directory. |
| 96 | +# popd >/dev/null |
| 97 | +#} |
| 98 | +# |
| 99 | +#compile_check |
0 commit comments