-
Notifications
You must be signed in to change notification settings - Fork 9.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #32973 from hashicorp/radditude/one-version-to-rul…
…e-them-all consolidate version information
- Loading branch information
Showing
6 changed files
with
106 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Building from Source | ||
|
||
Pre-built binaries are available for download for a variety of supported platforms through the [HashiCorp Releases website](https://releases.hashicorp.com/terraform/). | ||
|
||
However, if you'd like to build Terraform yourself, you can do so using the Go build toolchain and the options specified in this document. | ||
|
||
## Prerequisites | ||
|
||
1. Ensure you've installed the Go language version specified in [`.go-version`](https://github.com/hashicorp/terraform/blob/main/.go-version). | ||
2. Clone this repository to a location of your choice. | ||
|
||
## Terraform Build Options | ||
|
||
Terraform accepts certain options passed using `ldflags` at build time which control the behavior of the resulting binary. | ||
|
||
### Dev Version Reporting | ||
|
||
Terraform will include a `-dev` flag when reporting its own version (ex: 1.5.0-dev) unless `version.dev` is set to `no`: | ||
|
||
``` | ||
go build -ldflags "-w -s -X 'github.com/hashicorp/terraform/version.dev=no'" -o bin/ . | ||
``` | ||
|
||
### Experimental Features | ||
|
||
Experimental features of Terraform will be disabled unless `main.experimentsAllowed` is set to `yes`: | ||
|
||
``` | ||
go build -ldflags "-w -s -X 'main.experimentsAllowed=yes'" -o bin/ . | ||
``` | ||
|
||
In the official build process for Terraform, experiments are only allowed in alpha release builds. We recommend that third-party distributors follow that convention in order to reduce user confusion. | ||
|
||
## Go Options | ||
|
||
For the most part, the Terraform release process relies on the Go toolchain defaults for the target operating system and processor architecture. | ||
|
||
### `CGO_ENABLED` | ||
|
||
One exception is the `CGO_ENABLED` option, which is set explicitly when building Terraform binaries. For most platforms, we build with `CGO_ENABLED=0` in order to produce a statically linked binary. For MacOS/Darwin operating systems, we build with `CGO_ENABLED=1` to avoid a platform-specific issue with DNS resolution. | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
1.6.0-dev | ||
1.6.0-alpha1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// Copyright (c) HashiCorp, Inc. | ||
// SPDX-License-Identifier: MPL-2.0 | ||
|
||
package version | ||
|
||
import ( | ||
"regexp" | ||
"strings" | ||
"testing" | ||
) | ||
|
||
// Smoke test to validate that the version file can be read correctly and all exported | ||
// variables include the expected information. | ||
func TestVersion(t *testing.T) { | ||
if match, _ := regexp.MatchString("[^\\d+\\.]", Version); match != false { | ||
t.Fatalf("Version should contain only the main version") | ||
} | ||
|
||
if match, _ := regexp.MatchString("[^a-z\\d]", Prerelease); match != false { | ||
t.Fatalf("Prerelease should contain only letters and numbers") | ||
} | ||
|
||
if SemVer.Prerelease() != "" { | ||
t.Fatalf("SemVer should not include prerelease information") | ||
} | ||
|
||
if !strings.Contains(String(), Prerelease) { | ||
t.Fatalf("Full version string should include prerelease information") | ||
} | ||
} |