@@ -55,62 +55,63 @@ from common import * # NOQA
55
55
def prepare_target ():
56
56
info ('preparing target' )
57
57
58
- with cwd ('{target}' ):
59
- mkdir ('bin' , 'doc' , 'etc' , 'lib' , 'm68k-amigaos' , 'os-include' ,
60
- 'os-include/lvo' , 'os-lib' , 'os-lib/fd' , 'os-lib/sfd' ,
61
- 'vbcc-include' , 'vbcc-lib' )
58
+ with cwd ('{prefix}' ):
59
+ mkdir ('bin' , 'etc' , '{target}' )
60
+ with cwd ('{prefix}/{target}' ):
61
+ mkdir ('bin' , 'ndk/include' , 'ndk/include/lvo' ,
62
+ 'ndk/lib' , 'ndk/lib/fd' , 'ndk/lib/sfd' )
62
63
63
64
64
65
@recipe ('{NDK}-install' )
65
66
def install_ndk ():
66
67
info ('installing ndk' )
67
68
68
- copytree ('{sources}/{NDK}/Include/include_h' , '{target}/os- include' )
69
- copytree ('{sources}/{NDK}/Include/include_i' , '{target}/os- include' )
70
- copytree ('{sources}/{NDK}/Include/fd' , '{target}/os- lib/fd' )
71
- copytree ('{sources}/{NDK}/Include/sfd' , '{target}/os- lib/sfd' )
72
- copytree ('{sources}/{NDK}/Include/linker_libs' , '{target}/os- lib' ,
69
+ copytree ('{sources}/{NDK}/Include/include_h' , '{prefix}/{ target}/ndk/ include' )
70
+ copytree ('{sources}/{NDK}/Include/include_i' , '{prefix}/{ target}/ndk/ include' )
71
+ copytree ('{sources}/{NDK}/Include/fd' , '{prefix}/{ target}/ndk/ lib/fd' )
72
+ copytree ('{sources}/{NDK}/Include/sfd' , '{prefix}/{ target}/ndk/ lib/sfd' )
73
+ copytree ('{sources}/{NDK}/Include/linker_libs' , '{prefix}/{ target}/ndk/ lib' ,
73
74
exclude = ['README' ])
74
- copytree ('{sources}/{NDK}/Documentation/Autodocs' , '{target}/doc' )
75
+ copytree ('{sources}/{NDK}/Documentation/Autodocs' , '{prefix}/{ target}/ndk /doc' )
75
76
76
- for name in find ('{target}/os- lib/sfd' , include = ['*.sfd' ]):
77
+ for name in find ('{prefix}/{ target}/ndk/ lib/sfd' , include = ['*.sfd' ]):
77
78
base = path .basename (name ).split ('_' )[0 ]
78
79
79
80
execute ('sfdc' , '--target=m68k-amigaos' , '--mode=proto' ,
80
- '--output={target}/os- include/proto/' + base + '.h' , name )
81
+ '--output={prefix}/{ target}/ndk/ include/proto/%s.h' % base , name )
81
82
execute ('sfdc' , '--target=m68k-amigaos' , '--mode=macros' ,
82
- '--output={target}/os- include/inline/' + base + '.h' , name )
83
+ '--output={prefix}/{ target}/ndk/ include/inline/%s.h' % base , name )
83
84
execute ('sfdc' , '--target=m68k-amigaos' , '--mode=lvo' ,
84
- '--output={target}/os- include/lvo/' + base + '_lib.i' , name )
85
+ '--output={prefix}/{ target}/ndk/ include/lvo/%s_lib.i' % base , name )
85
86
86
87
87
88
@recipe ('headers-install' )
88
89
def headers_install ():
89
90
info ('installing ixemul header files' )
90
91
91
- copytree ('{sources}/{ixemul}/include' , '{target}/m68k-amigaos /libnix/include' )
92
+ copytree ('{sources}/{ixemul}/include' , '{prefix}/{target} /libnix/include' )
92
93
93
94
94
95
@recipe ('tools-install' )
95
96
def install_tools ():
96
97
info ('installing extra tools' )
97
98
98
- copy ('{build}/ira/ira' , '{target }/bin' )
99
- copy ('{build}/vdam68k/vda68k' , '{target }/bin' )
99
+ copy ('{build}/ira/ira' , '{prefix }/bin' )
100
+ copy ('{build}/vdam68k/vda68k' , '{prefix }/bin' )
100
101
101
102
102
103
@recipe ('{libamiga}-install' )
103
104
def install_libamiga ():
104
105
info ('installing libamiga' )
105
106
106
- copytree ('{sources}/{libamiga}/lib' , '{target}/m68k-amigaos /libnix/lib' )
107
+ copytree ('{sources}/{libamiga}/lib' , '{prefix}/{target} /libnix/lib' )
107
108
108
109
109
110
@recipe ('{clib2}-install' )
110
111
def install_clib2 ():
111
112
info ('installing clib2' )
112
113
113
- with cwd ('{target}/m68k-amigaos /clib2' ):
114
+ with cwd ('{prefix}/{target} /clib2' ):
114
115
copytree ('{build}/{clib2}/lib' , 'lib' )
115
116
copytree ('{build}/{clib2}/include' , 'include' )
116
117
@@ -130,7 +131,7 @@ def build_vbcc():
130
131
'n' , 'y' , 'unsigned long long' ,
131
132
'n' , 'y' , 'float' ,
132
133
'n' , 'y' , 'double' )
133
- make ('vbcc' , TARGET = 'm68k' , ETCDIR = '\\ "{target }/etc/\\ "' , CONFIG = config )
134
+ make ('vbcc' , TARGET = 'm68k' , ETCDIR = '\\ "{prefix }/etc/\\ "' , CONFIG = config )
134
135
remove (config )
135
136
136
137
@@ -144,57 +145,61 @@ def build_vlink():
144
145
def install_vbcc_toolchain ():
145
146
info ('installing vasm' )
146
147
147
- copy ('{build}/vasm/vasmm68k_mot' , '{target}/bin' )
148
- copy ('{build}/vasm/vobjdump' , '{target }/bin' )
148
+ copy ('{build}/vasm/vasmm68k_mot' , '{prefix}/{ target}/bin' )
149
+ copy ('{build}/vasm/vobjdump' , '{prefix }/bin' )
149
150
vasm = textfile (
150
151
'#!/bin/sh' ,
151
152
'' ,
152
- 'vasmm68k_mot -I{target}/os- include "$@"' )
153
+ '{prefix}/{target}/ vasmm68k_mot -I{prefix}/ndk/ include "$@"' )
153
154
chmod (vasm , 0755 )
154
- move (vasm , '{target }/bin/vasm' )
155
+ move (vasm , '{prefix }/bin/vasm' )
155
156
156
157
info ('installing vlink' )
157
158
158
- copy ('{build}/vlink/vlink' , '{target }/bin' )
159
+ copy ('{build}/vlink/vlink' , '{prefix }/bin' )
159
160
160
161
info ('installing vbcc' )
161
162
162
- copy ('{build}/vbcc/bin/vbccm68k' , '{target}/bin' )
163
- copy ('{build}/vbcc/bin/vc' , '{target }/bin' )
164
- copy ('{build}/vbcc/bin/vprof' , '{target }/bin' )
163
+ copy ('{build}/vbcc/bin/vbccm68k' , '{prefix}/{ target}/bin' )
164
+ copy ('{build}/vbcc/bin/vc' , '{prefix }/bin' )
165
+ copy ('{build}/vbcc/bin/vprof' , '{prefix }/bin' )
165
166
166
167
info ('installing vbcc_target_m68k-amigaos' )
167
168
168
169
copytree ('{sources}/vclib/targets/m68k-amigaos/include' ,
169
- '{target}/vbcc- include' )
170
+ '{prefix}/{ target}/vbcc/ include' )
170
171
copytree ('{sources}/vclib/targets/m68k-amigaos/lib' ,
171
- '{target}/vbcc- lib' )
172
+ '{prefix}/{ target}/vbcc/ lib' )
172
173
config = textfile (
173
- ('-cc={target}/bin/vbccm68k -hunkdebug %s -o= %s %s -O=%ld' +
174
- ' -quiet -I{target}/vbcc- include -I{target}/os- include' ),
175
- ('-ccv={target}/bin/vbccm68k -hunkdebug %s -o= %s %s -O=%ld' +
176
- ' -I{target}/vbcc- include -I{target}/os- include' ),
177
- ('-as={target}/bin/vasmm68k_mot -Fhunk -phxass -opt-fconst -nowarn=62 ' +
178
- ' -quiet -I{target}/os- include %s -o %s' ),
179
- ('-asv={target}/bin/vasmm68k_mot -Fhunk -phxass -opt-fconst -nowarn=62 ' +
180
- ' -I{target}/os- include %s -o %s' ),
174
+ ('-cc={prefix}/{ target}/bin/vbccm68k -hunkdebug %s -o= %s %s -O=%ld' +
175
+ ' -quiet -I{prefix}/{ target}/vbcc/ include -I{prefix}/ndk/ include' ),
176
+ ('-ccv={prefix}/{ target}/bin/vbccm68k -hunkdebug %s -o= %s %s -O=%ld' +
177
+ ' -I{prefix}/{ target}/vbcc/ include -I{prefix}/ndk/ include' ),
178
+ ('-as={prefix}/{ target}/bin/vasmm68k_mot -Fhunk -phxass -opt-fconst' +
179
+ ' -nowarn=62 - quiet -I{prefix}/ndk/ include %s -o %s' ),
180
+ ('-asv={prefix}/{ target}/bin/vasmm68k_mot -Fhunk -phxass -opt-fconst' +
181
+ ' -nowarn=62 -I{prefix}/ndk/ include %s -o %s' ),
181
182
'-rm=rm %s' ,
182
183
'-rmv=rm -v %s' ,
183
- ('-ld={target}/bin/vlink -bamigahunk -x -Bstatic -Cvbcc -nostdlib' +
184
- ' {target}/vbcc-lib/startup.o %s %s' +
185
- ' -L{target}/vbcc-lib -L{target}/vbcc-include -lvc -o %s' ),
186
- ('-l2={target}/bin/vlink -bamigahunk -x -Bstatic -Cvbcc -nostdlib' +
187
- ' %s %s -L{target}/vbcc-lib -L{target}/vbcc-include -o %s' ),
188
- ('-ldv={target}/bin/vlink -bamigahunk -t -x -Bstatic -Cvbcc -nostdlib' +
189
- ' {target}/vbcc-lib/startup.o %s %s' +
190
- ' -L{target}/vbcc-lib -L{target}/vbcc-include -lvc -o %s' ),
191
- ('-l2v={target}/bin/vlink -bamigahunk -t -x -Bstatic -Cvbcc -nostdlib' +
192
- ' %s %s -L{target}/vbcc-lib -L{target}/vbcc-include -o %s' ),
184
+ ('-ld={prefix}/bin/vlink -bamigahunk -x -Bstatic -Cvbcc -nostdlib' +
185
+ ' {prefix}/{target}/vbcc/lib/startup.o %s %s' +
186
+ ' -L{prefix}/{target}/vbcc/lib' +
187
+ ' -L{prefix}/{target}/vbcc/include -lvc -o %s' ),
188
+ ('-l2={prefix}/bin/vlink -bamigahunk -x -Bstatic -Cvbcc -nostdlib' +
189
+ ' %s %s -L{prefix}/{target}/vbcc/lib' +
190
+ ' -L{prefix}/{target}/vbcc/include -o %s' ),
191
+ ('-ldv={prefix}/bin/vlink -bamigahunk -t -x -Bstatic -Cvbcc -nostdlib' +
192
+ ' {prefix}/{target}/vbcc/lib/startup.o %s %s' +
193
+ ' -L{prefix}/{target}/vbcc/lib' +
194
+ ' -L{prefix}/{target}/vbcc/include -lvc -o %s' ),
195
+ ('-l2v={prefix}/bin/vlink -bamigahunk -t -x -Bstatic -Cvbcc -nostdlib' +
196
+ ' %s %s -L{prefix}/{target}/vbcc/lib' +
197
+ ' -L{prefix}/{target}/vbcc/include -o %s' ),
193
198
'-ldnodb=-s -Rshort' ,
194
199
'-ul=-l%s' ,
195
200
'-cf=-F%s' ,
196
201
'-ml=500' )
197
- move (config , '{target }/etc/vc.config' )
202
+ move (config , '{prefix }/etc/vc.config' )
198
203
199
204
200
205
def update_autotools (dst ):
@@ -257,7 +262,7 @@ def build():
257
262
258
263
environ ['CC' ] = CC
259
264
environ ['CXX' ] = CXX
260
- environ ['PATH' ] = ':' .join ([path .join ('{target }' , 'bin' ),
265
+ environ ['PATH' ] = ':' .join ([path .join ('{prefix }' , 'bin' ),
261
266
path .join ('{host}' , 'bin' ),
262
267
environ ['PATH' ]])
263
268
@@ -340,13 +345,13 @@ def build():
340
345
341
346
update_autotools ('{submodules}/fd2sfd' )
342
347
unpack ('fd2sfd' , work_dir = '{build}' )
343
- configure ('fd2sfd' , '--prefix={target }' , from_dir = '{build}/fd2sfd' )
348
+ configure ('fd2sfd' , '--prefix={prefix }' , from_dir = '{build}/fd2sfd' )
344
349
make ('fd2sfd' )
345
350
make ('fd2sfd' , 'install' )
346
351
347
352
unpack ('sfdc' )
348
353
patch ('sfdc' )
349
- configure ('sfdc' , '--prefix={target }' , copy_source = True )
354
+ configure ('sfdc' , '--prefix={prefix }' , copy_source = True )
350
355
make ('sfdc' )
351
356
make ('sfdc' , 'install' )
352
357
@@ -373,20 +378,27 @@ def build():
373
378
374
379
with env (CC = CC , CXX = CXX , CFLAGS = '-g -O2 -Wall' , CXXFLAGS = '-g -O2 -Wall' ):
375
380
configure ('{binutils}' ,
376
- '--prefix={target}' ,
381
+ '--prefix={prefix}' ,
382
+ '--infodir={prefix}/{target}/info' ,
383
+ '--mandir={prefix}/share/man' ,
377
384
'--host=i686-linux-gnu' ,
378
385
'--target=m68k-amigaos' ,
379
386
from_dir = '{submodules}/{binutils}' )
380
387
touch_genfiles ('{submodules}/{binutils}' )
381
388
make ('{binutils}' )
382
- make ('{binutils}' , 'install' )
389
+ make ('{binutils}' , 'install-binutils' )
390
+ make ('{binutils}' , 'install-gas' )
391
+ make ('{binutils}' , 'install-ld' )
392
+ make ('{binutils}' , 'install-info' )
383
393
384
394
unpack ('{ixemul}' , top_dir = 'ixemul' )
385
395
patch ('{ixemul}' )
386
396
387
397
with env (CC = CC , CXX = CXX , CFLAGS = '-g -O2 -Wall' , CXXFLAGS = '-g -O2 -Wall' ):
388
398
configure ('{gcc}' ,
389
- '--prefix={target}' ,
399
+ '--prefix={prefix}' ,
400
+ '--infodir={prefix}/{target}/info' ,
401
+ '--mandir={prefix}/share/man' ,
390
402
'--host=i686-linux-gnu' ,
391
403
'--build=i686-linux-gnu' ,
392
404
'--target=m68k-amigaos' ,
@@ -408,7 +420,7 @@ def build():
408
420
install_libamiga ()
409
421
410
422
configure ('{libnix}' ,
411
- '--prefix={target}/m68k-amigaos /libnix' ,
423
+ '--prefix={prefix}/{target} /libnix' ,
412
424
'--host=i686-linux-gnu' ,
413
425
'--target=m68k-amigaos' ,
414
426
from_dir = '{submodules}/{libnix}' )
@@ -422,15 +434,15 @@ def build():
422
434
make ('{libnix}' , 'install' )
423
435
424
436
copy ('{submodules}/{libnix}/sources/headers/stabs.h' ,
425
- '{target}/m68k-amigaos /libnix/include' )
437
+ '{prefix}/{target} /libnix/include' )
426
438
427
439
unpack ('{libm}' , top_dir = 'contrib/libm' )
428
440
update_autotools ('{sources}/{libm}' )
429
441
with env (CC = 'm68k-amigaos-gcc -noixemul' ,
430
442
AR = 'm68k-amigaos-ar' ,
431
443
RANLIB = 'm68k-amigaos-ranlib' ):
432
444
configure ('{libm}' ,
433
- '--prefix={target}/m68k-amigaos /libnix' ,
445
+ '--prefix={prefix}/{target} /libnix' ,
434
446
'--host=i686-linux-gnu' ,
435
447
'--target=m68k-amigaos' )
436
448
make ('{libm}' )
@@ -441,7 +453,7 @@ def build():
441
453
RANLIB = 'm68k-amigaos-ranlib' ):
442
454
touch ('{submodules}/{libdebug}/configure' )
443
455
configure ('{libdebug}' ,
444
- '--prefix={target}/m68k-amigaos /libnix' ,
456
+ '--prefix={prefix}/{target} /libnix' ,
445
457
'--host=m68k-amigaos' ,
446
458
from_dir = '{submodules}/{libdebug}' )
447
459
make ('{libdebug}' )
@@ -452,8 +464,10 @@ def build():
452
464
install_clib2 ()
453
465
454
466
with env (CC = CC , CXX = CXX , CFLAGS = '-g -O2 -Wall' , CXXFLAGS = '-g -O2 -Wall' ):
455
- make ('{gcc}' , MAKEINFO = 'makeinfo' , CFLAGS_FOR_TARGET = '-noixemul' )
456
- make ('{gcc}' , 'install' , MAKEINFO = 'makeinfo' , CFLAGS_FOR_TARGET = '-noixemul' )
467
+ make ('{gcc}' , 'cross' ,
468
+ MAKEINFO = 'makeinfo' , CFLAGS_FOR_TARGET = '-noixemul' )
469
+ make ('{gcc}' , 'install-gcc-cross' ,
470
+ MAKEINFO = 'makeinfo' , CFLAGS_FOR_TARGET = '-noixemul' )
457
471
458
472
unpack ('ira' , top_dir = '.' , work_dir = '{build}' )
459
473
patch ('ira' , work_dir = '{build}' )
@@ -513,7 +527,7 @@ def add_stubs(src):
513
527
obj = re .sub (r'\.c$' , r'.o' , src )
514
528
515
529
for libdir , cflags in MULTILIB :
516
- lib = path .join ('{target}/m68k-amigaos /libnix/lib' ,
530
+ lib = path .join ('{prefix}/{target} /libnix/lib' ,
517
531
libdir , 'libnix/libstubs.a' )
518
532
info ('stubs: "%s" -> "%s"' , obj , lib )
519
533
cflags = list (cflags ) + ['-noixemul' , '-c' , '-o' , obj , src ]
@@ -526,7 +540,7 @@ def add_lib(src, libname):
526
540
obj = re .sub (r'\.a$' , r'.o' , libname )
527
541
528
542
for libdir , cflags in MULTILIB :
529
- lib = path .join ('{target}/m68k-amigaos /libnix/lib' , libdir , libname )
543
+ lib = path .join ('{prefix}/{target} /libnix/lib' , libdir , libname )
530
544
info ('lib: "%s" -> "%s"' , obj , lib )
531
545
cflags = list (cflags ) + ['-noixemul' , '-c' , '-o' , obj , src ]
532
546
execute ('m68k-amigaos-gcc' , '-Wall' , '-O3' , '-fomit-frame-pointer' , * cflags )
@@ -549,14 +563,14 @@ def process_sdk(sdk, dirname, files):
549
563
sfd = sfd + '.sfd'
550
564
info ('fd2sfd: "%s" "%s" -> "%s"' , fd , protos , sfd )
551
565
execute ('fd2sfd' , '-o' , sfd , fd , protos )
552
- copy (sfd , path .join ('{target}/os- lib/sfd' , sfd ))
566
+ copy (sfd , path .join ('{prefix}/ndk/ lib/sfd' , sfd ))
553
567
elif kind == 'sfdc' :
554
568
source = f [1 ]
555
569
basename = re .sub (r'_lib.sfd$' , r'' , path .basename (source ))
556
570
557
- proto = path .join ('{target}/os- include/proto' , basename + '.h' )
558
- inline = path .join ('{target}/os- include/inline' , basename + '.h' )
559
- lvo = path .join ('{target}/os- include/lvo' , basename + '.i' )
571
+ proto = path .join ('{prefix}/ndk/ include/proto' , basename + '.h' )
572
+ inline = path .join ('{prefix}/ndk/ include/inline' , basename + '.h' )
573
+ lvo = path .join ('{prefix}/ndk/ include/lvo' , basename + '.i' )
560
574
561
575
info ('sfdc: "%s" -> "%s"' , source , proto )
562
576
execute ('sfdc' , '--quiet' , '--target=m68k-amigaos' , '--mode=proto' ,
@@ -592,25 +606,25 @@ def process_sdk(sdk, dirname, files):
592
606
name = path .basename (f [1 ])
593
607
594
608
if any (name .endswith (ext ) for ext in ['.doc' , '.html' , '.pdf' , '.ps' ]):
595
- mkdir ('{target}/doc' )
596
- copy (source , path .join ('{target}/doc' , name ))
609
+ mkdir ('{prefix}/{ target}/doc' )
610
+ copy (source , path .join ('{prefix}/{ target}/doc' , name ))
597
611
elif name .endswith ('.guide' ):
598
- mkdir ('{target}/guide' )
599
- copy (source , path .join ('{target}/guide' , name ))
612
+ mkdir ('{prefix}/{ target}/guide' )
613
+ copy (source , path .join ('{prefix}/{ target}/guide' , name ))
600
614
elif any (name .endswith (ext ) for ext in ['.h' , '.i' ]):
601
615
lastdir = path .basename (path .dirname (f [1 ]))
602
- mkdir (path .join ('{target}/os- include' , lastdir ))
603
- copy (source , path .join ('{target}/os- include' , lastdir , name ))
616
+ mkdir (path .join ('{prefix}/ndk/ include' , lastdir ))
617
+ copy (source , path .join ('{prefix}/ndk/ include' , lastdir , name ))
604
618
elif name .endswith ('.fd' ):
605
- mkdir ('{target}/os- lib/fd' )
606
- copy (source , path .join ('{target}/os- lib/fd' , name ))
619
+ mkdir ('{prefix}/ndk/ lib/fd' )
620
+ copy (source , path .join ('{prefix}/ndk/ lib/fd' , name ))
607
621
elif name .endswith ('.sfd' ):
608
- mkdir ('{target}/os- lib/sfd' )
609
- copy (source , path .join ('{target}/os- lib/sfd' , name ))
622
+ mkdir ('{prefix}/ndk/ lib/sfd' )
623
+ copy (source , path .join ('{prefix}/ndk/ lib/sfd' , name ))
610
624
611
625
612
626
def install_sdk (* names ):
613
- environ ['PATH' ] = ":" .join ([path .join ('{target }' , 'bin' ),
627
+ environ ['PATH' ] = ":" .join ([path .join ('{prefix }' , 'bin' ),
614
628
path .join ('{host}' , 'bin' ),
615
629
environ ['PATH' ]])
616
630
@@ -637,7 +651,7 @@ def install_sdk(*names):
637
651
def test ():
638
652
install_sdk ('mmu' , 'mui' )
639
653
640
- environ ['PATH' ] = ":" .join ([path .join ('{target }' , 'bin' ),
654
+ environ ['PATH' ] = ":" .join ([path .join ('{prefix }' , 'bin' ),
641
655
environ ['PATH' ]])
642
656
643
657
with cwd (path .join ('{top}' , 'examples' )):
@@ -694,21 +708,22 @@ if __name__ == "__main__":
694
708
binutils = 'binutils-{binutils_ver}' ,
695
709
gcc = 'gcc-{gcc_ver}' ,
696
710
gpp = 'g++-{gcc_ver}' ,
711
+ target = 'm68k-amigaos' ,
697
712
patches = path .join ('{top}' , 'patches' ),
698
713
stamps = path .join ('{top}' , '.build-m68k' , 'stamps' ),
699
714
build = path .join ('{top}' , '.build-m68k' , 'build' ),
700
715
sources = path .join ('{top}' , '.build-m68k' , 'sources' ),
701
716
host = path .join ('{top}' , '.build-m68k' , 'host' ),
702
717
tmpdir = path .join ('{top}' , '.build-m68k' , 'tmp' ),
703
- target = path .join ('{top}' , 'm68k-amigaos' ),
718
+ prefix = path .join ('{top}' , 'm68k-amigaos' ),
704
719
archives = path .join ('{top}' , '.build-m68k' , 'archives' ),
705
720
submodules = path .join ('{top}' , 'submodules' ))
706
721
707
722
if args .prefix is not None :
708
723
setvar (target = args .prefix )
709
724
710
- if not path .exists ('{target }' ):
711
- mkdir ('{target }' )
725
+ if not path .exists ('{prefix }' ):
726
+ mkdir ('{prefix }' )
712
727
713
728
action = args .action .replace ('-' , '_' )
714
729
globals ()[action ].__call__ (* args .args )
0 commit comments