@@ -11,6 +11,7 @@ import (
11
11
"github.com/nanovms/ops/constants"
12
12
"github.com/nanovms/ops/fs"
13
13
"github.com/nanovms/ops/log"
14
+ "github.com/nanovms/ops/types"
14
15
)
15
16
16
17
// GetElfFileInfo returns an object with elf information of the path program
@@ -75,7 +76,7 @@ func findLib(targetRoot string, origin string, libDirs []string, path string) (s
75
76
return "" , "" , os .ErrNotExist
76
77
}
77
78
78
- func _getSharedLibs (libs map [string ]string , targetRoot string , path string ) error {
79
+ func _getSharedLibs (libs map [string ]string , targetRoot string , path string , c * types. Config ) error {
79
80
path , err := fs .LookupFile (targetRoot , path )
80
81
if err != nil {
81
82
return errors .WrapPrefix (err , path , 0 )
@@ -120,6 +121,11 @@ func _getSharedLibs(libs map[string]string, targetRoot string, path string) erro
120
121
libDirs = append (libDirs , strings .Split (d , ":" )... )
121
122
}
122
123
}
124
+
125
+ // 3. read LD_LIBRARY_PATH from config
126
+ if configEnv , hasLibPaths := c .Env ["LD_LIBRARY_PATH" ]; hasLibPaths {
127
+ libDirs = append (libDirs , strings .Split (configEnv , ":" )... )
128
+ }
123
129
libDirs = append (libDirs , "/lib64" , "/lib/x86_64-linux-gnu" , "/usr/lib" , "/usr/lib64" , "/usr/lib/x86_64-linux-gnu" )
124
130
125
131
dtNeeded , err := fd .DynString (elf .DT_NEEDED )
@@ -141,7 +147,7 @@ func _getSharedLibs(libs map[string]string, targetRoot string, path string) erro
141
147
libs [libpath ] = absLibpath
142
148
143
149
// append library dependencies
144
- err := _getSharedLibs (libs , targetRoot , absLibpath )
150
+ err := _getSharedLibs (libs , targetRoot , absLibpath , c )
145
151
if err != nil {
146
152
return err
147
153
}
@@ -166,7 +172,7 @@ func _getSharedLibs(libs map[string]string, targetRoot string, path string) erro
166
172
}
167
173
if _ , ok := libs [ipath ]; ! ok {
168
174
libs [ipath ] = absIpath
169
- err := _getSharedLibs (libs , targetRoot , ipath )
175
+ err := _getSharedLibs (libs , targetRoot , ipath , c )
170
176
if err != nil {
171
177
return err
172
178
}
@@ -176,9 +182,9 @@ func _getSharedLibs(libs map[string]string, targetRoot string, path string) erro
176
182
return nil
177
183
}
178
184
179
- func getSharedLibs (targetRoot string , path string ) (map [string ]string , error ) {
185
+ func getSharedLibs (targetRoot string , path string , c * types. Config ) (map [string ]string , error ) {
180
186
libs := make (map [string ]string )
181
- err := _getSharedLibs (libs , targetRoot , path )
187
+ err := _getSharedLibs (libs , targetRoot , path , c )
182
188
if err != nil {
183
189
return nil , err
184
190
}
0 commit comments