@@ -101,11 +101,21 @@ class build_rust(Command):
101
101
('inplace' , 'i' ,
102
102
"ignore build-lib and put compiled extensions into the source " +
103
103
"directory alongside your pure Python modules" ),
104
+ ('debug' , 'd' ,
105
+ "Force debug to true for all rust extensions " ),
106
+ ('release' , 'r' ,
107
+ "Force debug to false for all rust extensions " ),
108
+ ('qbuild' , None ,
109
+ "Force enable quiet option for all rust extensions " ),
104
110
]
111
+ boolean_options = ['inplace' , 'debug' , 'release' , 'qbuild' ]
105
112
106
113
def initialize_options (self ):
107
114
self .extensions = ()
108
- self .inplace = False
115
+ self .inplace = None
116
+ self .debug = None
117
+ self .release = None
118
+ self .qbuild = None
109
119
110
120
def finalize_options (self ):
111
121
self .extensions = [ext for ext in self .distribution .rust_extensions
@@ -147,12 +157,20 @@ def build_extension(self, ext):
147
157
else :
148
158
debug_build = ext .debug
149
159
160
+ debug_build = self .debug if self .debug is not None else debug_build
161
+ if self .release :
162
+ debug_build = False
163
+
164
+ quiet = self .qbuild or ext .quiet
165
+
150
166
# build cargo command
151
167
args = (["cargo" , "rustc" , "--lib" , "--manifest-path" , ext .path ,
152
168
"--features" , " " .join (features )]
153
169
+ list (ext .args or []))
154
170
if not debug_build :
155
171
args .append ("--release" )
172
+ if quiet :
173
+ args .append ("-q" )
156
174
157
175
args .extend (["--" , '--crate-type' , 'cdylib' ])
158
176
@@ -161,7 +179,7 @@ def build_extension(self, ext):
161
179
args .extend (["-C" , "link-arg=-undefined" ,
162
180
"-C" , "link-arg=dynamic_lookup" ])
163
181
164
- if not ext . quiet :
182
+ if not quiet :
165
183
print (" " .join (args ), file = sys .stderr )
166
184
167
185
# Execute cargo
@@ -175,7 +193,7 @@ def build_extension(self, ext):
175
193
"Unable to execute 'cargo' - this package "
176
194
"requires rust to be installed and cargo to be on the PATH" )
177
195
178
- if not ext . quiet :
196
+ if not quiet :
179
197
if isinstance (output , bytes ):
180
198
output = output .decode ('latin-1' )
181
199
print (output , file = sys .stderr )
0 commit comments