[svn:parrot] r45084 - trunk/runtime/parrot/library

fperrad at svn.parrot.org fperrad at svn.parrot.org
Sun Mar 21 11:08:05 UTC 2010


Author: fperrad
Date: Sun Mar 21 11:08:01 2010
New Revision: 45084
URL: https://trac.parrot.org/parrot/changeset/45084

Log:
[distutils] refactor for parallel build (step 1)

Modified:
   trunk/runtime/parrot/library/distutils.pir

Modified: trunk/runtime/parrot/library/distutils.pir
==============================================================================
--- trunk/runtime/parrot/library/distutils.pir	Sun Mar 21 10:14:48 2010	(r45083)
+++ trunk/runtime/parrot/library/distutils.pir	Sun Mar 21 11:08:01 2010	(r45084)
@@ -540,6 +540,8 @@
 
 .sub 'build_pbc_pir'
     .param pmc hash
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     $P0 = iter hash
   L1:
     unless $P0 goto L2
@@ -566,7 +568,18 @@
     cmd .= pbc
     cmd .= " "
     cmd .= src
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
+    goto L1
+  L2:
+    .tailcall run_jobs(jobs)
+.end
+
+.sub 'run_jobs'
+    .param pmc jobs
+  L1:
+    unless jobs goto L2
+    $S0 = shift jobs
+    system($S0, 1 :named('verbose'))
     goto L1
   L2:
 .end
@@ -596,6 +609,8 @@
 .sub 'build_pir_pge'
     .param pmc hash
     .param string flags
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     $P0 = iter hash
   L1:
     unless $P0 goto L2
@@ -627,9 +642,10 @@
     cmd .= flags
     cmd .= " "
     cmd .= src
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 =item pir_tge
@@ -653,6 +669,8 @@
 
 .sub 'build_pir_tge'
     .param pmc hash
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     $P0 = iter hash
   L1:
     unless $P0 goto L2
@@ -672,9 +690,10 @@
     cmd .= pir
     cmd .= " "
     cmd .= tge
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 =item pir_nqp
@@ -702,6 +721,8 @@
 .sub 'build_pir_nqp'
     .param pmc hash
     .param string flags
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     $P0 = iter hash
   L1:
     unless $P0 goto L2
@@ -723,9 +744,10 @@
     cmd .= flags
     cmd .= " "
     cmd .= nqp
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 =item pir_nqp-rx / pir_nqprx
@@ -754,6 +776,8 @@
 
 .sub 'build_pir_nqp_rx'
     .param pmc hash
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     $P0 = iter hash
   L1:
     unless $P0 goto L2
@@ -770,9 +794,10 @@
     cmd .= pir
     cmd .= " "
     cmd .= nqp
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 =item pir_pir (concat)
@@ -842,6 +867,8 @@
 
 .sub 'build_pbc_pbc'
     .param pmc hash
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     $P0 = iter hash
   L1:
     unless $P0 goto L2
@@ -860,9 +887,10 @@
     cmd .= " "
     $S0 = join " ", srcs
     cmd .= $S0
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 =item exe_pbc
@@ -886,6 +914,8 @@
 
 .sub 'build_exe_pbc'
     .param pmc hash
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     .local string exe
     exe = get_exe()
     $P0 = iter hash
@@ -904,9 +934,10 @@
     cmd = get_executable('pbc_to_exe')
     cmd .= " "
     cmd .= pbc
-    system(cmd, 1 :named('verbose'))
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 =item installable_pbc
@@ -930,6 +961,8 @@
 
 .sub 'build_installable_pbc'
     .param pmc hash
+    .local pmc jobs
+    jobs = new 'ResizableStringArray'
     .local string exe
     exe = get_exe()
     .local int has_strip
@@ -952,12 +985,14 @@
     cmd .= " "
     cmd .= pbc
     cmd .= " --install"
-    system(cmd, 1 :named('verbose'))
-    unless has_strip goto L1
-    cmd = "strip " . $S1
-    system(cmd, 1 :named('verbose'))
+    unless has_strip goto L3
+    cmd .= " && strip "
+    cmd .= $S1
+  L3:
+    push jobs, cmd
     goto L1
   L2:
+    .tailcall run_jobs(jobs)
 .end
 
 .sub '_has_strip' :anon


More information about the parrot-commits mailing list