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

fperrad at svn.parrot.org fperrad at svn.parrot.org
Mon Nov 30 18:46:45 UTC 2009


Author: fperrad
Date: Mon Nov 30 18:46:44 2009
New Revision: 42826
URL: https://trac.parrot.org/parrot/changeset/42826

Log:
[distutils] add steps 'sdist', 'sdist_gztar' & 'sdist_zip'

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

Modified: trunk/runtime/parrot/library/distutils.pir
==============================================================================
--- trunk/runtime/parrot/library/distutils.pir	Mon Nov 30 17:21:11 2009	(r42825)
+++ trunk/runtime/parrot/library/distutils.pir	Mon Nov 30 18:46:44 2009	(r42826)
@@ -65,6 +65,10 @@
 
 Output a skeleton for Plumage
 
+=item sdist, sdist_gztar, sdist_zip, manifest
+
+Create a source distribution
+
 =item help
 
 Print this help message.
@@ -215,6 +219,12 @@
     .const 'Sub' _plumage = '_plumage'
     register_step('plumage', _plumage)
 
+    .const 'Sub' _sdist = '_sdist'
+    register_step('sdist', _sdist)
+    .const 'Sub' _sdist_gztar = '_sdist_gztar'
+    register_step('sdist_gztar', _sdist_gztar)
+    .const 'Sub' _sdist_zip = '_sdist_zip'
+    register_step('sdist_zip', _sdist_zip)
     .const 'Sub' _manifest = '_manifest'
     register_step('manifest', _manifest)
 
@@ -383,6 +393,8 @@
 
         plumage:        Output a skeleton for Plumage
 
+        sdist:          Create a source distribution
+
         help:           Print this help message.
 USAGE
     $I0 = exists kv['usage']
@@ -2570,8 +2582,8 @@
     unless $P0 goto L2
     $S0 = shift $P0
     .local string cmd                   #
-    cmd = 'perl -e "for (<' . $S0       # refactoring needed
-    cmd .= '>) { print $_, qq{\n};}"'   # without perl
+    cmd = "perl -e 'for (<" . $S0       # refactoring needed
+    cmd .= ">) { print $_, qq{\n};}'"   # without perl
     $P1 = open cmd, 'rp'                #
   L3:
     $S0 = $P1.'readline'()
@@ -2587,6 +2599,113 @@
   L2:
 .end
 
+=head3 Step sdist
+
+On Windows calls sdist_zip, otherwise sdist_gztar
+
+=cut
+
+.sub '_sdist' :anon
+    .param pmc kv :slurpy :named
+    $P0 = get_config()
+    $S0 = $P0['osname']
+    unless $S0 == 'MSWin32' goto L1
+    .tailcall run_step('sdist_zip', kv :flat :named)
+  L1:
+    .tailcall run_step('sdist_gztar', kv :flat :named)
+.end
+
+=head3 Step sdist_gztar
+
+=cut
+
+.sub '_sdist_gztar' :anon
+    .param pmc kv :slurpy :named
+    run_step('manifest', kv :flat :named)
+
+    $S0 = get_tarname(kv :flat :named)
+
+    .local string cmd
+    cmd = 'tar -cvf ' . $S0
+    cmd .= ' -T MANIFEST'
+    system(cmd)
+
+    cmd = 'gzip --best ' . $S0
+    system(cmd)
+.end
+
+.sub 'get_tarname' :anon
+    .param pmc kv :slurpy :named
+    .local string name
+    $S0 = cwd()
+    name = basename($S0)
+    $I0 = exists kv['name']
+    unless $I0 goto L1
+    $S0 = kv['name']
+    name = downcase $S0
+  L1:
+
+    .local string version
+    version = 'HEAD'
+    $I0 = exists kv['version']
+    unless $I0 goto L2
+    version = kv['version']
+  L2:
+
+    $S0 = 'parrot-' . name
+    $S0 .= '-'
+    $S0 .= version
+    $S0 .= '.tar'
+    .return ($S0)
+.end
+
+=head3 Step sdist_zip
+
+=cut
+
+.sub '_sdist_zip' :anon
+    .param pmc kv :slurpy :named
+    run_step('manifest', kv :flat :named)
+
+    $S0 = get_zipname(kv :flat :named)
+
+    .local string cmd
+    cmd = 'cat'
+    $P0 = get_config()
+    $S1 = $P0['osname']
+    unless $S1 == 'MSWin32' goto L1
+    cmd = 'type'
+  L1:
+    cmd .= ' MANIFEST | zip -9 -@ '
+    cmd .= $S0
+    system(cmd)
+.end
+
+.sub 'get_zipname' :anon
+    .param pmc kv :slurpy :named
+    .local string name
+    $S0 = cwd()
+    name = basename($S0)
+    $I0 = exists kv['name']
+    unless $I0 goto L1
+    $S0 = kv['name']
+    name = downcase $S0
+  L1:
+
+    .local string version
+    version = 'HEAD'
+    $I0 = exists kv['version']
+    unless $I0 goto L2
+    version = kv['version']
+  L2:
+
+    $S0 = 'parrot-' . name
+    $S0 .= '-'
+    $S0 .= version
+    $S0 .= '.zip'
+    .return ($S0)
+.end
+
 =head3 Step win32-inno-installer
 
 Only on Windows.


More information about the parrot-commits mailing list