Browse code

Enable Go 1.5

Clayton Coleman authored on 2015/08/22 11:44:54
Showing 3 changed files
... ...
@@ -2,10 +2,16 @@ language: go
2 2
 
3 3
 go:
4 4
   - 1.4
5
+  - 1.5
5 6
 
6 7
 env:
7
- - TEST_ASSETS=true
8
- - TEST_ASSETS=false
8
+  - TEST_ASSETS=true
9
+  - TEST_ASSETS=false
10
+
11
+matrix:
12
+  exclude:
13
+  - go: 1.5
14
+    env: TEST_ASSETS=true
9 15
 
10 16
 install:
11 17
   - export PATH=$GOPATH/bin:./_tools/etcd/bin:$PATH
... ...
@@ -485,29 +485,49 @@ KUBE_GIT_VERSION='${KUBE_GIT_VERSION-}'
485 485
 EOF
486 486
 }
487 487
 
488
+# golang 1.5 wants `-X key=val`, but golang 1.4- REQUIRES `-X key val`
489
+os::build::ldflag() {
490
+  local key=${1}
491
+  local val=${2}
492
+
493
+  GO_VERSION=($(go version))
494
+
495
+  if [[ -z $(echo "${GO_VERSION[2]}" | grep -E 'go1.5') ]]; then
496
+    echo "-X ${OS_GO_PACKAGE}/pkg/version.${key} ${val}"
497
+  else
498
+    echo "-X ${OS_GO_PACKAGE}/pkg/version.${key}=${val}"
499
+  fi
500
+}
501
+
488 502
 # os::build::ldflags calculates the -ldflags argument for building OpenShift
489 503
 os::build::ldflags() {
490
-  (
491
-    # Run this in a subshell to prevent settings/variables from leaking.
492
-    set -o errexit
493
-    set -o nounset
494
-    set -o pipefail
504
+  # Run this in a subshell to prevent settings/variables from leaking.
505
+  set -o errexit
506
+  set -o nounset
507
+  set -o pipefail
508
+
509
+  cd "${OS_ROOT}"
510
+
511
+  os::build::get_version_vars
495 512
 
496
-    cd "${OS_ROOT}"
513
+  declare -a ldflags=()
497 514
 
498
-    os::build::get_version_vars
515
+  ldflags+=($(os::build::ldflag "majorFromGit" "${OS_GIT_MAJOR}"))
516
+  ldflags+=($(os::build::ldflag "minorFromGit" "${OS_GIT_MINOR}"))
517
+  ldflags+=($(os::build::ldflag "versionFromGit" "${OS_GIT_VERSION}"))
518
+  ldflags+=($(os::build::ldflag "commitFromGit" "${OS_GIT_COMMIT}"))
499 519
 
500
-    declare -a ldflags=()
501
-    ldflags+=(-X "${OS_GO_PACKAGE}/pkg/version.majorFromGit" "${OS_GIT_MAJOR}")
502
-    ldflags+=(-X "${OS_GO_PACKAGE}/pkg/version.minorFromGit" "${OS_GIT_MINOR}")
503
-    ldflags+=(-X "${OS_GO_PACKAGE}/pkg/version.versionFromGit" "${OS_GIT_VERSION}")
504
-    ldflags+=(-X "${OS_GO_PACKAGE}/pkg/version.commitFromGit" "${OS_GIT_COMMIT}")
520
+  GO_VERSION=($(go version))
521
+  if [[ -z $(echo "${GO_VERSION[2]}" | grep -E 'go1.5') ]]; then
505 522
     ldflags+=(-X "k8s.io/kubernetes/pkg/version.gitCommit" "${KUBE_GIT_COMMIT}")
506 523
     ldflags+=(-X "k8s.io/kubernetes/pkg/version.gitVersion" "${KUBE_GIT_VERSION}")
524
+  else
525
+    ldflags+=(-X "k8s.io/kubernetes/pkg/version.gitCommit=${KUBE_GIT_COMMIT}")
526
+    ldflags+=(-X "k8s.io/kubernetes/pkg/version.gitVersion=${KUBE_GIT_VERSION}")
527
+  fi
507 528
 
508
-    # The -ldflags parameter takes a single string, so join the output.
509
-    echo "${ldflags[*]-}"
510
-  )
529
+  # The -ldflags parameter takes a single string, so join the output.
530
+  echo "${ldflags[*]-}"
511 531
 }
512 532
 
513 533
 # os::build::require_clean_tree exits if the current Git tree is not clean.
... ...
@@ -8,7 +8,6 @@ import (
8 8
 	"github.com/golang/glog"
9 9
 	"github.com/gonum/graph"
10 10
 	"github.com/gonum/graph/encoding/dot"
11
-	"github.com/gonum/graph/internal"
12 11
 	"github.com/gonum/graph/path"
13 12
 	kapi "k8s.io/kubernetes/pkg/api"
14 13
 	utilerrors "k8s.io/kubernetes/pkg/util/errors"
... ...
@@ -205,7 +204,7 @@ func outputHelper(info, namespace string, singleNamespace bool) string {
205 205
 type DepthFirst struct {
206 206
 	EdgeFilter func(graph.Edge) bool
207 207
 	Visit      func(u, v graph.Node)
208
-	stack      internal.NodeStack
208
+	stack      NodeStack
209 209
 }
210 210
 
211 211
 // Walk performs a depth-first traversal of the graph g starting from the given node
... ...
@@ -247,3 +246,22 @@ func (d *DepthFirst) visited(id int) bool {
247 247
 	}
248 248
 	return false
249 249
 }
250
+
251
+// NodeStack implements a LIFO stack of graph.Node.
252
+// NodeStack is internal only in go 1.5.
253
+type NodeStack []graph.Node
254
+
255
+// Len returns the number of graph.Nodes on the stack.
256
+func (s *NodeStack) Len() int { return len(*s) }
257
+
258
+// Pop returns the last graph.Node on the stack and removes it
259
+// from the stack.
260
+func (s *NodeStack) Pop() graph.Node {
261
+	v := *s
262
+	v, n := v[:len(v)-1], v[len(v)-1]
263
+	*s = v
264
+	return n
265
+}
266
+
267
+// Push adds the node n to the stack at the last position.
268
+func (s *NodeStack) Push(n graph.Node) { *s = append(*s, n) }