Merge lp:~dave-cheney/goose/100-more-gccgo-fixes into lp:goose

Proposed by Dave Cheney on 2014-09-08
Status: Merged
Approved by: Dave Cheney on 2014-09-08
Approved revision: 128
Merged at revision: 128
Proposed branch: lp:~dave-cheney/goose/100-more-gccgo-fixes
Merge into: lp:goose
Diff against target: 36 lines (+10/-2)
1 file modified
testservices/hook/service_gccgo.go (+10/-2)
To merge this branch: bzr merge lp:~dave-cheney/goose/100-more-gccgo-fixes
Reviewer Review Type Date Requested Status
Juju Engineering 2014-09-08 Pending
Review via email: mp+233669@code.launchpad.net

Commit message

testservices/hook: fix gccgo build failure

Try to make the detection of the location in the raw stack trace where the method name is mentioned smarter.

Fixes build errors on ppc

https://codereview.appspot.com/141720043/

Description of the change

testservices/hook: fix gccgo build failure

Try to make the detection of the location in the raw stack trace where the method name is mentioned smarter.

Fixes build errors on ppc

https://codereview.appspot.com/141720043/

To post a comment you must log in.
Dave Cheney (dave-cheney) wrote :

Reviewers: mp+233669_code.launchpad.net,

Message:
Please take a look.

Description:
testservices/hook: fix gccgo build failure

Try to make the detection of the location in the raw stack trace where
the method name is mentioned smarter.

Fixes build errors on ppc

https://code.launchpad.net/~dave-cheney/goose/100-more-gccgo-fixes/+merge/233669

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/141720043/

Affected files (+12, -2 lines):
   A [revision details]
   M testservices/hook/service_gccgo.go

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-20140702055133-xpuj6gm4pa0f3a0e
+New revision: <email address hidden>

Index: testservices/hook/service_gccgo.go
=== modified file 'testservices/hook/service_gccgo.go'
--- testservices/hook/service_gccgo.go 2014-02-06 00:42:49 +0000
+++ testservices/hook/service_gccgo.go 2014-09-08 06:57:41 +0000
@@ -12,6 +12,9 @@
  // versions.
  var callerDepth int

+// namePartsPos defines the position within the raw method name,
deliniated by periods.
+var namePartsPos = -1 // will panic if we cannot determine the position.
+
  type inner struct{}

  func (i *inner) m() {
@@ -21,6 +24,12 @@
     panic("current method name cannot be found")
    }
    if name := runtime.FuncForPC(pc).Name(); name == "hook.setCallerDepth" {
+ for i, s := range strings.Split(name, ".") {
+ if s == "setCallerDepth" {
+ namePartsPos = i
+ break
+ }
+ }
     return
    }
   }
@@ -67,8 +76,7 @@
   // This is very fragile. fullName will be something like:
   //
launchpad.net_goose_testservices_novaservice.removeServer.pN49_launchpad.net_goose_testservices_novaservice.Nova
   // so if the number of dots in the full package path changes,
- // this will need to too...
- const namePartsPos = 2
+ // We try to figure sniff this value at the top, but it may not work.
   nameParts := strings.Split(fullName, ".")
   return nameParts[namePartsPos]
  }

Dave Cheney (dave-cheney) wrote :
Dave Cheney (dave-cheney) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'testservices/hook/service_gccgo.go'
2--- testservices/hook/service_gccgo.go 2014-02-06 00:42:49 +0000
3+++ testservices/hook/service_gccgo.go 2014-09-08 06:59:26 +0000
4@@ -12,6 +12,9 @@
5 // versions.
6 var callerDepth int
7
8+// namePartsPos defines the position within the raw method name, deliniated by periods.
9+var namePartsPos = -1 // will panic if we cannot determine the position.
10+
11 type inner struct{}
12
13 func (i *inner) m() {
14@@ -21,6 +24,12 @@
15 panic("current method name cannot be found")
16 }
17 if name := runtime.FuncForPC(pc).Name(); name == "hook.setCallerDepth" {
18+ for i, s := range strings.Split(name, ".") {
19+ if s == "setCallerDepth" {
20+ namePartsPos = i
21+ break
22+ }
23+ }
24 return
25 }
26 }
27@@ -67,8 +76,7 @@
28 // This is very fragile. fullName will be something like:
29 // launchpad.net_goose_testservices_novaservice.removeServer.pN49_launchpad.net_goose_testservices_novaservice.Nova
30 // so if the number of dots in the full package path changes,
31- // this will need to too...
32- const namePartsPos = 2
33+ // We try to figure sniff this value at the top, but it may not work.
34 nameParts := strings.Split(fullName, ".")
35 return nameParts[namePartsPos]
36 }

Subscribers

People subscribed via source and target branches