@@ -39,6 +39,25 @@ def add_rust_extension(dist: Distribution) -> None:
39
39
sdist_boolean_options .append ("vendor-crates" )
40
40
sdist_negative_opt ["no-vendor-crates" ] = "vendor-crates"
41
41
42
+ # Patch dist to include console_scripts for Exec binding
43
+ console_scripts = []
44
+ for ext in dist .rust_extensions : # type: ignore[attr-defined]
45
+ console_scripts .extend (ext .entry_points ())
46
+
47
+ if console_scripts :
48
+ if not dist .entry_points : # type: ignore[attr-defined]
49
+ dist .entry_points = {"console_scripts" : console_scripts } # type: ignore[attr-defined]
50
+ else :
51
+ ep_scripts = dist .entry_points .get ("console_scripts" ) # type: ignore[attr-defined]
52
+ if ep_scripts :
53
+ for script in console_scripts :
54
+ if script not in ep_scripts :
55
+ ep_scripts .append (console_scripts )
56
+ else :
57
+ ep_scripts = console_scripts
58
+
59
+ dist .entry_points ["console_scripts" ] = ep_scripts # type: ignore[attr-defined]
60
+
42
61
class sdist_rust_extension (sdist_base_class ): # type: ignore[misc,valid-type]
43
62
user_options = sdist_options
44
63
boolean_options = sdist_boolean_options
@@ -152,32 +171,8 @@ def run(self) -> None:
152
171
153
172
install_base_class = cast (Type [install ], dist .cmdclass .get ("install" , install ))
154
173
155
- # this is required for console_scripts and to make install_scripts compatible with RustBin
174
+ # this is required to make install_scripts compatible with RustBin
156
175
class install_rust_extension (install_base_class ): # type: ignore[misc,valid-type]
157
- def finalize_options (self ) -> None :
158
- if self .distribution .rust_extensions :
159
- scripts = []
160
- for ext in self .distribution .rust_extensions :
161
- scripts .extend (ext .entry_points ())
162
-
163
- if scripts :
164
- if not self .distribution .entry_points :
165
- self .distribution .entry_points = {"console_scripts" : scripts }
166
- else :
167
- ep_scripts = self .distribution .entry_points .get (
168
- "console_scripts"
169
- )
170
- if ep_scripts :
171
- for script in scripts :
172
- if script not in ep_scripts :
173
- ep_scripts .append (scripts )
174
- else :
175
- ep_scripts = scripts
176
-
177
- self .distribution .entry_points ["console_scripts" ] = ep_scripts
178
-
179
- install_base_class .finalize_options (self )
180
-
181
176
def run (self ) -> None :
182
177
install_base_class .run (self )
183
178
install_rustbin = False
@@ -252,29 +247,6 @@ def initialize_options(self) -> None:
252
247
super ().initialize_options ()
253
248
self .target = os .getenv ("CARGO_BUILD_TARGET" )
254
249
255
- def finalize_options (self ) -> None :
256
- scripts = []
257
- for ext in self .distribution .rust_extensions :
258
- scripts .extend (ext .entry_points ())
259
-
260
- if scripts :
261
- if not self .distribution .entry_points :
262
- self .distribution .entry_points = {"console_scripts" : scripts }
263
- else :
264
- ep_scripts = self .distribution .entry_points .get (
265
- "console_scripts"
266
- )
267
- if ep_scripts :
268
- for script in scripts :
269
- if script not in ep_scripts :
270
- ep_scripts .append (scripts )
271
- else :
272
- ep_scripts = scripts
273
-
274
- self .distribution .entry_points ["console_scripts" ] = ep_scripts
275
-
276
- bdist_wheel_base_class .finalize_options (self )
277
-
278
250
def get_tag (self ) -> Tuple [str , str , str ]:
279
251
python , abi , plat = super ().get_tag ()
280
252
arch_flags = os .getenv ("ARCHFLAGS" )
0 commit comments