You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by ib...@apache.org on 2019/07/17 08:05:31 UTC

[incubator-mxnet] 01/01: julia: rename build env var `MXNET_HOME` to `MXNET_ROOT`

This is an automated email from the ASF dual-hosted git repository.

iblis pushed a commit to branch ib/jl-mxnet-root-env
in repository https://gitbox.apache.org/repos/asf/incubator-mxnet.git

commit aa9d14926a0f8dfb3da9d4d0d89ae3dc9b5fc400
Author: Iblis Lin <ib...@hs.ntnu.edu.tw>
AuthorDate: Wed Jul 17 16:02:17 2019 +0800

    julia: rename build env var `MXNET_HOME` to `MXNET_ROOT`
    
    - Add MXNET_LIBRARY_PATH support
    
    Ref: https://github.com/apache/incubator-mxnet/pull/15561
---
 ci/docker/runtime_functions.sh |  8 ++++----
 ci/windows/test_jl07_cpu.ps1   |  2 +-
 ci/windows/test_jl10_cpu.ps1   |  2 +-
 julia/deps/build.jl            | 27 ++++++++++++++++++++-------
 julia/src/base.jl              | 13 ++++++++++---
 5 files changed, 36 insertions(+), 16 deletions(-)

diff --git a/ci/docker/runtime_functions.sh b/ci/docker/runtime_functions.sh
index d2b0d6b..6ca00c2 100755
--- a/ci/docker/runtime_functions.sh
+++ b/ci/docker/runtime_functions.sh
@@ -1052,7 +1052,7 @@ unittest_ubuntu_gpu_R() {
 unittest_ubuntu_cpu_julia() {
     set -ex
     export PATH="$1/bin:$PATH"
-    export MXNET_HOME='/work/mxnet'
+    export MXNET_ROOT='/work/mxnet'
     export JULIA_DEPOT_PATH='/work/julia-depot'
     export INTEGRATION_TEST=1
 
@@ -1062,7 +1062,7 @@ unittest_ubuntu_cpu_julia() {
     export LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libjemalloc.so'
     export LD_LIBRARY_PATH=/work/mxnet/lib:$LD_LIBRARY_PATH
 
-    # use the prebuilt binary from $MXNET_HOME/lib
+    # use the prebuilt binary from $MXNET_ROOT/lib
     julia --project=./julia -e 'using Pkg; Pkg.build("MXNet")'
 
     # run the script `julia/test/runtests.jl`
@@ -1213,7 +1213,7 @@ build_docs() {
 
     # Setup environment for Julia docs
     export PATH="/work/julia10/bin:$PATH"
-    export MXNET_HOME='/work/mxnet'
+    export MXNET_ROOT='/work/mxnet'
     export JULIA_DEPOT_PATH='/work/julia-depot'
 
     julia -e 'using InteractiveUtils; versioninfo()'
@@ -1425,7 +1425,7 @@ deploy_docs() {
 
     # Setup for Julia docs
     export PATH="/work/julia10/bin:$PATH"
-    export MXNET_HOME='/work/mxnet'
+    export MXNET_ROOT='/work/mxnet'
     export JULIA_DEPOT_PATH='/work/julia-depot'
 
     julia -e 'using InteractiveUtils; versioninfo()'
diff --git a/ci/windows/test_jl07_cpu.ps1 b/ci/windows/test_jl07_cpu.ps1
index 6cd34ef..d3b77b1 100644
--- a/ci/windows/test_jl07_cpu.ps1
+++ b/ci/windows/test_jl07_cpu.ps1
@@ -20,7 +20,7 @@
 # set default output encoding to utf8
 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
 
-$env:MXNET_HOME = [System.IO.Path]::GetFullPath('.\windows_package')
+$env:MXNET_ROOT = [System.IO.Path]::GetFullPath('.\windows_package')
 $env:JULIA_URL = "https://julialang-s3.julialang.org/bin/winnt/x64/0.7/julia-0.7.0-win64.exe"
 $env:JULIA_DEPOT_PATH = [System.IO.Path]::GetFullPath('.\julia-depot')
 
diff --git a/ci/windows/test_jl10_cpu.ps1 b/ci/windows/test_jl10_cpu.ps1
index 96c4190..2dbda48 100644
--- a/ci/windows/test_jl10_cpu.ps1
+++ b/ci/windows/test_jl10_cpu.ps1
@@ -20,7 +20,7 @@
 # set default output encoding to utf8
 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
 
-$env:MXNET_HOME = [System.IO.Path]::GetFullPath('.\windows_package')
+$env:MXNET_ROOT = [System.IO.Path]::GetFullPath('.\windows_package')
 $env:JULIA_URL = "https://julialang-s3.julialang.org/bin/winnt/x64/1.0/julia-1.0.3-win64.exe"
 $env:JULIA_DEPOT_PATH = [System.IO.Path]::GetFullPath('.\julia-depot')
 
diff --git a/julia/deps/build.jl b/julia/deps/build.jl
index badca65..fd18e10 100644
--- a/julia/deps/build.jl
+++ b/julia/deps/build.jl
@@ -26,14 +26,27 @@ libmxnet_detected = false
 libmxnet_curr_ver = get(ENV, "MXNET_COMMIT", "master")
 curr_win = "20180211"  # v1.1.0
 
-if haskey(ENV, "MXNET_HOME")
-  MXNET_HOME = ENV["MXNET_HOME"]
-  @info("MXNET_HOME environment detected: $MXNET_HOME")
+MXNET_ROOT = get(ENV, "MXNET_ROOT", "")
+search_locations = if !isempty(MXNET_ROOT)
+  @info "env var: MXNET_ROOT -> $MXNET_ROOT"
+  [joinpath(MXNET_ROOT, "lib"), MXNET_ROOT]
+else
+  []
+end
+
+MXNET_LIBRARY_PATH = get(ENV, "MXNET_LIBRARY_PATH", "")
+println(typeof(MXNET_LIBRARY_PATH))
+# In case of macOS, if user build libmxnet from source and set the MXNET_ROOT,
+# the output is still named as `libmxnet.so`.
+search_names = ["libmxnet.$(Libdl.dlext)", "libmxnet.so"]
+if !isempty(MXNET_LIBRARY_PATH)
+  @info "env var: MXNET_LIBRARY_PATH -> $MXNET_LIBRARY_PATH"
+  pushfirst!(search_names, MXNET_LIBRARY_PATH)
+end
+
+if (!isempty(MXNET_ROOT)) || (!isempty(MXNET_LIBRARY_PATH))
   @info("Trying to load existing libmxnet...")
-  # In case of macOS, if user build libmxnet from source and set the MXNET_HOME,
-  # the output is still named as `libmxnet.so`.
-  lib = Libdl.find_library(["libmxnet.$(Libdl.dlext)", "libmxnet.so"],
-                           [joinpath(MXNET_HOME, "lib"), MXNET_HOME])
+  lib = Libdl.find_library(search_names, search_locations)
   if !isempty(lib)
     @info("Existing libmxnet detected at $lib, skip building...")
     libmxnet_detected = true
diff --git a/julia/src/base.jl b/julia/src/base.jl
index 6831464..f9ec32d 100644
--- a/julia/src/base.jl
+++ b/julia/src/base.jl
@@ -47,9 +47,16 @@ const grad_req_map = Dict{Symbol,GRAD_REQ}(
 ################################################################################
 # Initialization and library API entrance
 ################################################################################
-const MXNET_LIB = Libdl.find_library(["libmxnet.$(Libdl.dlext)", "libmxnet.so"],  # see build.jl
-                                     [joinpath(get(ENV, "MXNET_HOME", ""), "lib"),
-                                      get(ENV, "MXNET_HOME", ""),
+function _get_search_names()
+  MXNET_LIBRARY_PATH = get(ENV, "MXNET_LIBRARY_PATH", "")
+  A = ["libmxnet.$(Libdl.dlext)", "libmxnet.so"]  # see build.jl
+  !isempty(MXNET_LIBRARY_PATH) && pushfirst!(A, MXNET_LIBRARY_PATH)
+  A
+end
+
+const MXNET_LIB = Libdl.find_library(_get_search_names(),
+                                     [joinpath(get(ENV, "MXNET_ROOT", ""), "lib"),
+                                      get(ENV, "MXNET_ROOT", ""),
                                       joinpath(@__DIR__, "..",
                                                "deps", "usr", "lib")])
 const LIB_VERSION = Ref{Cint}(0)