You need a working Go environment (1.11 or newer) with the module support enabled.
$ git clone git://github.com/osrg/gobgp
$ cd gobgp && go mod download
Now ready to modify the code and build two binaries, cmd/gobgp
and cmd/gobgpd
.
GoBGP releases are time-based. Minor releases will occur every month (Semantic Versioning). Major releases occur only when absolutely necessary.
GoBGP has a internal module for version information.
internal/pkg/version/version.go
defines the following variables
MAJOR
MINOR
PATCH
these constants are for the Semantic Versioning scheme.
These will be updated upon release by maintainer.
There is also two more variables that are ment to be changed by ldflags;
TAG
is supposed to be used to denote which branch the build is based upon.
SHA
is supposed to be used to inform about which git sha sum the build is based on.
A normal release version of GoBGP Version 2.5.0 should should have;
const MAJOR uint = 2
const MINOR uint = 5
const PATCH uint = 0
If you have a non-standard release and want to have more build information there is some flags to be used.
COMMIT
, IDENTIFIER
and METADATA
.
go build -ldflags \
"-X github.com/osrg/gobgp/internal/pkg/version.COMMIT=`git rev-parse --short HEAD` \
-X github.com/osrg/gobgp/internal/pkg/version.METADATA="date.`date "+%Y%m%d"`" \
-X github.com/osrg/gobgp/internal/pkg/version.IDENTIFIER=alpha"
This will produce a version number of
2.5.0-alpaha+commit.XXXYYYZZ.date.20190526
The GoBGP project adopts Standard Go Project Layout.
If you change the gRPC API, generate api/gobgp.pb.go
in the following way:
$ ./tools/grpc/genproto.sh
In order for the script to run, you'll need protoc (version 3.7.1) in your PATH.