diff --git a/scripts/install-golang b/scripts/install-golang index 5ff82d1..64873a2 100755 --- a/scripts/install-golang +++ b/scripts/install-golang @@ -15,7 +15,6 @@ function build_debian() { function build_ubi() { GO_MAJOR_VERSION=${INSTALL_GOLANG_VERSION%.*} - GOLANG_FIPS_BRANCH="go${GO_MAJOR_VERSION}-openssl-fips" mkdir -p /tmp/golang curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz @@ -23,16 +22,31 @@ function build_ubi() { tar -C /tmp/golang -xzf golang.tar.gz # For UBI, we will be installing golang-fips - git clone https://github.com/golang-fips/go.git --branch ${GOLANG_FIPS_BRANCH} --single-branch --depth 1 /usr/local/go + # Use a different build process when golang version is less-than-equal to 1.18 + if [[ $(echo -e "1.18\n${GO_MAJOR_VERSION}" | sort -V | tail -1) == '1.18' ]]; then + git clone https://github.com/golang-fips/go.git --branch "go${GO_MAJOR_VERSION}-openssl-fips" --single-branch --depth 1 /usr/local/go - cd /usr/local/go/src + cd /usr/local/go/src + PATH=$PATH:/tmp/golang/go/bin CGO_ENABLED=1 ./make.bash + else + git clone https://github.com/golang-fips/go.git --branch "go${GO_MAJOR_VERSION}-fips-release" --single-branch --depth 1 /tmp/golang-fips + cd /tmp/golang-fips - PATH=$PATH:/tmp/golang/go/bin CGO_ENABLED=1 ./make.bash + # The initialize script ends with a commit, so we need to set the user info. And needs to be global due to submodules in use. + git config --global user.email "builder@example.com" + git config --global user.name "Builder" + + PATH=$PATH:/tmp/golang/go/bin ./scripts/full-initialize-repo.sh + + cd /tmp/golang-fips/go/src + PATH=$PATH:/tmp/golang/go/bin GOROOT_FINAL=/usr/local/go CGO_ENABLED=1 ./make.bash + mv /tmp/golang-fips/go /usr/local/go + fi rm -rf /usr/local/go/pkg/*/cmd /usr/local/go/pkg/bootstrap \ /usr/local/go/pkg/obj /usr/local/go/pkg/tool/*/api \ /usr/local/go/pkg/tool/*/go_bootstrap /usr/local/go/src/cmd/dist/dist \ - /usr/local/go/.git* /tmp/golang + /usr/local/go/.git* /tmp/golang /tmp/golang-fips ln -sf /usr/local/go/bin/go /usr/local/go/bin/gofmt /usr/local/go/bin/godoc /usr/local/bin/ }