@@ -30,6 +30,8 @@ var typesConfig = &types.Config{
30
30
Packages : make (map [string ]* types.Package ),
31
31
}
32
32
33
+ var currentDirectory , goRoot , goPath string
34
+
33
35
func init () {
34
36
typesConfig .Import = func (imports map [string ]* types.Package , path string ) (* types.Package , error ) {
35
37
if _ , found := packages [path ]; found {
@@ -47,6 +49,18 @@ func init() {
47
49
48
50
return imports [path ], nil
49
51
}
52
+
53
+ var err error
54
+ currentDirectory , err = os .Getwd ()
55
+ if err != nil {
56
+ fmt .Println (err )
57
+ os .Exit (1 )
58
+ }
59
+ currentDirectory , err = filepath .EvalSymlinks (currentDirectory )
60
+ if err != nil {
61
+ fmt .Println (err )
62
+ os .Exit (1 )
63
+ }
50
64
}
51
65
52
66
func buildImport (path string , mode build.ImportMode ) (* build.Package , error ) {
@@ -65,7 +79,7 @@ func buildImport(path string, mode build.ImportMode) (*build.Package, error) {
65
79
if path == "hash/crc32" {
66
80
pkg .GoFiles = []string {"crc32.go" , "crc32_generic.go" }
67
81
}
68
- if _ , err := os .Stat (pkg .PkgObj ); os .IsNotExist (err ) && filepath .HasPrefix (pkg .PkgObj , build .Default .GOROOT ) {
82
+ if _ , err := os .Stat (pkg .PkgObj ); os .IsNotExist (err ) && strings .HasPrefix (pkg .PkgObj , build .Default .GOROOT ) {
69
83
// fall back to GOPATH
70
84
gopathPkgObj := build .Default .GOPATH + pkg .PkgObj [len (build .Default .GOROOT ):]
71
85
if _ , err := os .Stat (gopathPkgObj ); err == nil {
@@ -108,28 +122,24 @@ func tool() error {
108
122
buildFlags .Parse (flag .Args ()[1 :])
109
123
110
124
if buildFlags .NArg () == 0 {
111
- wd , err := os .Getwd ()
112
- if err != nil {
113
- return err
114
- }
115
125
buildContext := & build.Context {
116
126
GOROOT : build .Default .GOROOT ,
117
127
GOPATH : build .Default .GOPATH ,
118
128
GOOS : build .Default .GOOS ,
119
129
GOARCH : "js" ,
120
130
Compiler : "gc" ,
121
131
}
122
- buildPkg , err := buildContext .ImportDir (wd , 0 )
132
+ buildPkg , err := buildContext .ImportDir (currentDirectory , 0 )
123
133
if err != nil {
124
134
return err
125
135
}
126
136
pkg := & Package {Package : buildPkg }
127
- pkg .ImportPath = wd
137
+ pkg .ImportPath = currentDirectory
128
138
if err := buildPackage (pkg ); err != nil {
129
139
return err
130
140
}
131
141
if pkgObj == "" {
132
- pkgObj = filepath .Base (wd ) + ".js"
142
+ pkgObj = filepath .Base (currentDirectory ) + ".js"
133
143
}
134
144
if err := writeCommandPackage (pkg , pkgObj ); err != nil {
135
145
return err
@@ -178,15 +188,14 @@ func tool() error {
178
188
installMode = true
179
189
pkgs := installFlags .Args ()
180
190
if len (pkgs ) == 0 {
181
- wd , err := os . Getwd ( )
191
+ srcDir , err := filepath . EvalSymlinks ( filepath . Join ( build . Default . GOPATH , "src" ) )
182
192
if err != nil {
183
193
return err
184
194
}
185
- srcDir := filepath .Join (build .Default .GOPATH , "src" )
186
- if ! filepath .HasPrefix (wd , srcDir ) {
187
- return fmt .Errorf ("gopherjs install: no install location for directory %s outside GOPATH" , wd )
195
+ if ! strings .HasPrefix (currentDirectory , srcDir ) {
196
+ return fmt .Errorf ("gopherjs install: no install location for directory %s outside GOPATH" , currentDirectory )
188
197
}
189
- pkgPath , err := filepath .Rel (srcDir , wd )
198
+ pkgPath , err := filepath .Rel (srcDir , currentDirectory )
190
199
if err != nil {
191
200
return err
192
201
}
@@ -367,15 +376,11 @@ The commands are:
367
376
}
368
377
369
378
func buildFiles (filenames []string , pkgObj string ) error {
370
- wd , err := os .Getwd ()
371
- if err != nil {
372
- return err
373
- }
374
379
pkg := & Package {
375
380
Package : & build.Package {
376
381
Name : "main" ,
377
382
ImportPath : "main" ,
378
- Dir : wd ,
383
+ Dir : currentDirectory ,
379
384
GoFiles : filenames ,
380
385
},
381
386
}
@@ -453,7 +458,6 @@ func buildPackage(pkg *Package) error {
453
458
}
454
459
}
455
460
456
- wd , _ := os .Getwd ()
457
461
files := make ([]* ast.File , 0 )
458
462
var errList translator.ErrorList
459
463
for _ , name := range pkg .GoFiles {
@@ -469,7 +473,7 @@ func buildPackage(pkg *Package) error {
469
473
if err != nil {
470
474
return err
471
475
}
472
- if relname , err := filepath .Rel (wd , name ); err == nil {
476
+ if relname , err := filepath .Rel (currentDirectory , name ); err == nil {
473
477
name = relname
474
478
if name [0 ] != '.' {
475
479
name = "." + string (filepath .Separator ) + name
0 commit comments