13
13
windows = platform .platform ().startswith ('Windows' )
14
14
osx = platform .platform ().startswith (
15
15
'Darwin' ) or platform .platform ().startswith ("macOS" )
16
- hbb_name = 'rustdesk' + ('.exe' if windows else '' )
17
- exe_path = 'target/release/' + hbb_name
18
- if windows :
19
- flutter_build_dir = 'build/windows/x64/runner/Release/'
20
- elif osx :
21
- flutter_build_dir = 'build/macos/Build/Products/Release/'
22
- else :
23
- flutter_build_dir = 'build/linux/x64/release/bundle/'
24
- flutter_build_dir_2 = f'flutter/{ flutter_build_dir } '
16
+ hbb_name = ''
17
+ exe_path = ''
18
+ flutter_build_dir = ''
19
+ flutter_build_dir_2 = ''
25
20
skip_cargo = False
21
+ debug_release = ''
22
+ cargo_debug_release = ''
23
+
24
+ def prepare_global_vars (debug ):
25
+ global debug_release
26
+ global cargo_debug_release
27
+ global exe_path
28
+ global flutter_build_dir
29
+ global flutter_build_dir_2
30
+
31
+ debug_release = 'debug' if debug else 'release'
32
+ cargo_debug_release = '--release' if not debug else ''
33
+ exe_path = f'target/{ debug_release } /' + hbb_name
34
+ if windows :
35
+ flutter_build_dir = f'build/windows/x64/runner/{ debug_release } /'
36
+ elif osx :
37
+ flutter_build_dir = f'build/macos/Build/Products/{ debug_release } /'
38
+ else :
39
+ flutter_build_dir = f'build/linux/x64/{ debug_release } /bundle/'
40
+ flutter_build_dir_2 = f'flutter/{ flutter_build_dir } '
26
41
42
+ def zip_directory (directory_path , zip_file_path ):
43
+ with zipfile .ZipFile (zip_file_path , 'w' , zipfile .ZIP_DEFLATED ) as zipf :
44
+ for root , dirs , files in os .walk (directory_path ):
45
+ for file in files :
46
+ file_path = os .path .join (root , file )
47
+ arcname = os .path .relpath (file_path , directory_path )
48
+ zipf .write (file_path , arcname )
27
49
28
50
def get_arch () -> str :
29
51
custom_arch = os .environ .get ("ARCH" )
@@ -122,11 +144,6 @@ def make_parser():
122
144
action = 'store_true' ,
123
145
help = 'Enable feature vram, only available on windows now.'
124
146
)
125
- parser .add_argument (
126
- '--portable' ,
127
- action = 'store_true' ,
128
- help = 'Build windows portable'
129
- )
130
147
parser .add_argument (
131
148
'--unix-file-copy-paste' ,
132
149
action = 'store_true' ,
@@ -147,6 +164,11 @@ def make_parser():
147
164
"--package" ,
148
165
type = str
149
166
)
167
+ parser .add_argument (
168
+ "--debug" ,
169
+ action = "store_true" ,
170
+ help = "Build debug version"
171
+ )
150
172
return parser
151
173
152
174
@@ -426,15 +448,17 @@ def build_flutter_arch_manjaro(version, features):
426
448
427
449
428
450
def build_flutter_windows (version , features , skip_portable_pack ):
451
+ global debug_release
452
+ global cargo_debug_release
429
453
if not skip_cargo :
430
- system2 (f'cargo build --features { features } --lib --release ' )
431
- if not os .path .exists ("target/release /librustdesk.dll" ):
454
+ system2 (f'cargo build --features { features } --lib { cargo_debug_release } ' )
455
+ if not os .path .exists (f "target/{ debug_release } /librustdesk.dll" ):
432
456
print ("cargo build failed, please check rust source code." )
433
457
exit (- 1 )
434
458
os .chdir ('flutter' )
435
- system2 ('flutter build windows --release ' )
459
+ system2 (f 'flutter build windows { cargo_debug_release } ' )
436
460
os .chdir ('..' )
437
- shutil .copy2 ('target/release /deps/dylib_virtual_display.dll' ,
461
+ shutil .copy2 (f 'target/{ debug_release } /deps/dylib_virtual_display.dll' ,
438
462
flutter_build_dir_2 )
439
463
if skip_portable_pack :
440
464
return
@@ -461,6 +485,11 @@ def main():
461
485
parser = make_parser ()
462
486
args = parser .parse_args ()
463
487
488
+ debug = args .debug
489
+ prepare_global_vars (debug )
490
+ global debug_release
491
+ global cargo_debug_release
492
+
464
493
if os .path .exists (exe_path ):
465
494
os .unlink (exe_path )
466
495
if os .path .isfile ('/usr/bin/pacman' ):
@@ -473,7 +502,6 @@ def main():
473
502
print (args .skip_cargo )
474
503
if args .skip_cargo :
475
504
skip_cargo = True
476
- portable = args .portable
477
505
package = args .package
478
506
if package :
479
507
build_deb_from_folder (version , package )
@@ -483,30 +511,40 @@ def main():
483
511
if windows :
484
512
# build virtual display dynamic library
485
513
os .chdir ('libs/virtual_display/dylib' )
486
- system2 ('cargo build --release ' )
514
+ system2 (f 'cargo build { cargo_debug_release } ' )
487
515
os .chdir ('../../..' )
488
516
489
517
if flutter :
490
- build_flutter_windows (version , features , args .skip_portable_pack )
518
+ skip_portable_pack = args .skip_portable_pack or debug
519
+ build_flutter_windows (version , features , skip_portable_pack )
520
+ if debug :
521
+ system2 (f'cd { flutter_build_dir_2 } /..' )
522
+ dir_name = f'rustdesk-{ version } -debug'
523
+ system2 (f'mv debug { dir_name } ' )
524
+ zip_directory (dir_name , f'{ dir_name } .zip' )
491
525
return
492
- system2 ('cargo build --release --features ' + features )
526
+ system2 (f 'cargo build { cargo_debug_release } --features ' + features )
493
527
# system2('upx.exe target/release/rustdesk.exe')
494
- system2 ('mv target/release /rustdesk.exe target/release /RustDesk.exe' )
495
- pa = os .environ .get ('P' )
528
+ system2 (f 'mv target/{ debug_release } /rustdesk.exe target/{ debug_release } /RustDesk.exe' )
529
+ pa = os .environ .get ('P' ) if not debug else None
496
530
if pa :
497
531
# https://certera.com/kb/tutorial-guide-for-safenet-authentication-client-for-code-signing/
498
532
system2 (
499
533
f'signtool sign /a /v /p { pa } /debug /f .\\ cert.pfx /t http://timestamp.digicert.com '
500
534
'target\\ release\\ rustdesk.exe' )
501
535
else :
502
536
print ('Not signed' )
503
- system2 (
504
- f'cp -rf target/release/RustDesk.exe { res_dir } ' )
505
- os .chdir ('libs/portable' )
506
- system2 ('pip3 install -r requirements.txt' )
507
- system2 (
508
- f'python3 ./generate.py -f ../../{ res_dir } -o . -e ../../{ res_dir } /rustdesk-{ version } -win7-install.exe' )
509
- system2 ('mv ../../{res_dir}/rustdesk-{version}-win7-install.exe ../..' )
537
+ if debug :
538
+ system2 (
539
+ f'cp -rf target/{ debug_release } /RustDesk.exe rustdesk-{ version } -win7.exe' )
540
+ else :
541
+ system2 (
542
+ f'cp -rf target/{ debug_release } /RustDesk.exe { res_dir } ' )
543
+ os .chdir ('libs/portable' )
544
+ system2 ('pip3 install -r requirements.txt' )
545
+ system2 (
546
+ f'python3 ./generate.py -f ../../{ res_dir } -o . -e ../../{ res_dir } /rustdesk-{ version } -win7-install.exe' )
547
+ system2 ('mv ../../{res_dir}/rustdesk-{version}-win7-install.exe ../..' )
510
548
elif os .path .isfile ('/usr/bin/pacman' ):
511
549
# pacman -S -needed base-devel
512
550
system2 ("sed -i 's/pkgver=.*/pkgver=%s/g' res/PKGBUILD" % version )
0 commit comments