1
1
#!/usr/bin/env python
2
- import errno
3
2
import argparse
3
+ import errno
4
4
import glob
5
5
import os
6
6
import platform
19
19
"USE_HDFS" : "OFF" ,
20
20
"USE_AZURE" : "OFF" ,
21
21
"USE_S3" : "OFF" ,
22
-
23
22
"USE_CUDA" : "OFF" ,
24
23
"USE_NCCL" : "OFF" ,
25
24
"JVM_BINDINGS" : "ON" ,
26
- "LOG_CAPI_INVOCATION" : "OFF"
25
+ "LOG_CAPI_INVOCATION" : "OFF" ,
27
26
}
28
27
29
28
@@ -70,39 +69,35 @@ def normpath(path):
70
69
return normalized
71
70
72
71
73
- if __name__ == "__main__" :
74
- parser = argparse .ArgumentParser ()
75
- parser .add_argument ('--log-capi-invocation' , type = str , choices = ['ON' , 'OFF' ], default = 'OFF' )
76
- parser .add_argument ('--use-cuda' , type = str , choices = ['ON' , 'OFF' ], default = 'OFF' )
77
- cli_args = parser .parse_args ()
78
-
72
+ def native_build (args ):
79
73
if sys .platform == "darwin" :
80
74
# Enable of your compiler supports OpenMP.
81
75
CONFIG ["USE_OPENMP" ] = "OFF"
82
- os .environ ["JAVA_HOME" ] = subprocess .check_output (
83
- "/usr/libexec/java_home" ).strip ().decode ()
76
+ os .environ ["JAVA_HOME" ] = (
77
+ subprocess .check_output ("/usr/libexec/java_home" ).strip ().decode ()
78
+ )
84
79
85
80
print ("building Java wrapper" )
86
81
with cd (".." ):
87
- build_dir = ' build-gpu' if cli_args .use_cuda == 'ON' else ' build'
82
+ build_dir = " build-gpu" if cli_args .use_cuda == "ON" else " build"
88
83
maybe_makedirs (build_dir )
89
84
with cd (build_dir ):
90
85
if sys .platform == "win32" :
91
86
# Force x64 build on Windows.
92
- maybe_generator = ' -A x64'
87
+ maybe_generator = " -A x64"
93
88
else :
94
89
maybe_generator = ""
95
90
if sys .platform == "linux" :
96
91
maybe_parallel_build = " -- -j $(nproc)"
97
92
else :
98
93
maybe_parallel_build = ""
99
94
100
- if cli_args .log_capi_invocation == 'ON' :
101
- CONFIG [' LOG_CAPI_INVOCATION' ] = 'ON'
95
+ if cli_args .log_capi_invocation == "ON" :
96
+ CONFIG [" LOG_CAPI_INVOCATION" ] = "ON"
102
97
103
- if cli_args .use_cuda == 'ON' :
104
- CONFIG [' USE_CUDA' ] = 'ON'
105
- CONFIG [' USE_NCCL' ] = 'ON'
98
+ if cli_args .use_cuda == "ON" :
99
+ CONFIG [" USE_CUDA" ] = "ON"
100
+ CONFIG [" USE_NCCL" ] = "ON"
106
101
107
102
args = ["-D{0}:BOOL={1}" .format (k , v ) for k , v in CONFIG .items ()]
108
103
@@ -115,7 +110,7 @@ def normpath(path):
115
110
if gpu_arch_flag is not None :
116
111
args .append ("%s" % gpu_arch_flag )
117
112
118
- lib_dir = os .path .join (os .pardir , ' lib' )
113
+ lib_dir = os .path .join (os .pardir , " lib" )
119
114
if os .path .exists (lib_dir ):
120
115
shutil .rmtree (lib_dir )
121
116
run ("cmake .. " + " " .join (args ) + maybe_generator )
@@ -125,8 +120,10 @@ def normpath(path):
125
120
run (f'"{ sys .executable } " mapfeat.py' )
126
121
run (f'"{ sys .executable } " mknfold.py machine.txt 1' )
127
122
128
- xgboost4j = 'xgboost4j-gpu' if cli_args .use_cuda == 'ON' else 'xgboost4j'
129
- xgboost4j_spark = 'xgboost4j-spark-gpu' if cli_args .use_cuda == 'ON' else 'xgboost4j-spark'
123
+ xgboost4j = "xgboost4j-gpu" if cli_args .use_cuda == "ON" else "xgboost4j"
124
+ xgboost4j_spark = (
125
+ "xgboost4j-spark-gpu" if cli_args .use_cuda == "ON" else "xgboost4j-spark"
126
+ )
130
127
131
128
print ("copying native library" )
132
129
library_name , os_folder = {
@@ -141,14 +138,19 @@ def normpath(path):
141
138
"i86pc" : "x86_64" , # on Solaris x86_64
142
139
"sun4v" : "sparc" , # on Solaris sparc
143
140
"arm64" : "aarch64" , # on macOS & Windows ARM 64-bit
144
- "aarch64" : "aarch64"
141
+ "aarch64" : "aarch64" ,
145
142
}[platform .machine ().lower ()]
146
- output_folder = "{}/src/main/resources/lib/{}/{}" .format (xgboost4j , os_folder , arch_folder )
143
+ output_folder = "{}/src/main/resources/lib/{}/{}" .format (
144
+ xgboost4j , os_folder , arch_folder
145
+ )
147
146
maybe_makedirs (output_folder )
148
147
cp ("../lib/" + library_name , output_folder )
149
148
150
149
print ("copying pure-Python tracker" )
151
- cp ("../python-package/xgboost/tracker.py" , "{}/src/main/resources" .format (xgboost4j ))
150
+ cp (
151
+ "../python-package/xgboost/tracker.py" ,
152
+ "{}/src/main/resources" .format (xgboost4j ),
153
+ )
152
154
153
155
print ("copying train/test files" )
154
156
maybe_makedirs ("{}/src/test/resources" .format (xgboost4j_spark ))
@@ -164,3 +166,18 @@ def normpath(path):
164
166
maybe_makedirs ("{}/src/test/resources" .format (xgboost4j ))
165
167
for file in glob .glob ("../demo/data/agaricus.*" ):
166
168
cp (file , "{}/src/test/resources" .format (xgboost4j ))
169
+
170
+
171
+ if __name__ == "__main__" :
172
+ if "MAVEN_SKIP_NATIVE_BUILD" in os .environ :
173
+ print ("MAVEN_SKIP_NATIVE_BUILD is set. Skipping native build..." )
174
+ else :
175
+ parser = argparse .ArgumentParser ()
176
+ parser .add_argument (
177
+ "--log-capi-invocation" , type = str , choices = ["ON" , "OFF" ], default = "OFF"
178
+ )
179
+ parser .add_argument (
180
+ "--use-cuda" , type = str , choices = ["ON" , "OFF" ], default = "OFF"
181
+ )
182
+ cli_args = parser .parse_args ()
183
+ native_build (cli_args )
0 commit comments