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

fperrad at svn.parrot.org fperrad at svn.parrot.org
Fri Dec 18 20:37:25 UTC 2009


Author: fperrad
Date: Fri Dec 18 20:37:22 2009
New Revision: 43145
URL: https://trac.parrot.org/parrot/changeset/43145

Log:
[distutils] fix directory hierarchy in sdist (tar.gz, tar.bz2, zip)

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

Modified: trunk/runtime/parrot/library/distutils.pir
==============================================================================
--- trunk/runtime/parrot/library/distutils.pir	Fri Dec 18 19:38:51 2009	(r43144)
+++ trunk/runtime/parrot/library/distutils.pir	Fri Dec 18 20:37:22 2009	(r43145)
@@ -2641,7 +2641,7 @@
     $S0 = slurp('MANIFEST')
   L1:
 
-    $S1 = mk_manifest()
+    $S1 = mk_manifest(kv :flat :named)
     unless $S0 != $S1 goto L2
     spew('MANIFEST', $S1, 1 :named('verbose'))
   L2:
@@ -2851,13 +2851,19 @@
     $S0 = get_tarname('.tar.gz', kv :flat :named)
     $I0 = newer($S0, $P0)
     if $I0 goto L1
+    $S0 = get_tarname('', kv :flat :named)
+    copy_sdist($S0, $P0)
+
     .local string cmd
-    $S0 = get_tarname('.tar', kv :flat :named)
     cmd = 'tar -cvf ' . $S0
-    cmd .= ' -T MANIFEST'
+    cmd .= '.tar '
+    cmd .= $S0
     system(cmd, 1 :named('verbose'))
 
+    rmtree($S0)
+
     cmd = 'gzip --best ' . $S0
+    cmd .= '.tar'
     system(cmd, 1 :named('verbose'))
   L1:
 .end
@@ -2870,6 +2876,21 @@
     unlink('MANIFEST', 1 :named('verbose'))
 .end
 
+.sub 'copy_sdist'
+    .param string dirname
+    .param pmc files
+    mkdir(dirname)
+    $S1 = dirname . "/"
+    $P0 = iter files
+  L1:
+    unless $P0 goto L2
+    $S0 = shift $P0
+    $S2 = $S1 . $S0
+    install($S0, $S2)
+    goto L1
+  L2:
+.end
+
 .sub 'get_tarname' :anon
     .param string ext
     .param pmc kv :slurpy :named
@@ -2897,13 +2918,19 @@
     $S0 = get_tarname('.tar.bz2', kv :flat :named)
     $I0 = newer($S0, $P0)
     if $I0 goto L1
+    $S0 = get_tarname('', kv :flat :named)
+    copy_sdist($S0, $P0)
+
     .local string cmd
-    $S0 = get_tarname('.tar', kv :flat :named)
     cmd = 'tar -cvf ' . $S0
-    cmd .= ' -T MANIFEST'
+    cmd .= '.tar '
+    cmd .= $S0
     system(cmd, 1 :named('verbose'))
 
+    rmtree($S0)
+
     cmd = 'bzip2 ' . $S0
+    cmd .= '.tar'
     system(cmd, 1 :named('verbose'))
   L1:
 .end
@@ -2930,15 +2957,16 @@
     $I0 = newer($S0, $P0)
     if $I0 goto L1
     .local string cmd
-    cmd = 'cat'
-    $P0 = get_config()
-    $S1 = $P0['osname']
-    unless $S1 == 'MSWin32' goto L2
-    cmd = 'type'
-  L2:
-    cmd .= ' MANIFEST | zip -9 -@ '
+    $S0 = get_tarname('', kv :flat :named)
+    copy_sdist($S0, $P0)
+
+    cmd = 'zip -9 -r '
+    cmd .= $S0
+    cmd .= '.zip '
     cmd .= $S0
     system(cmd, 1 :named('verbose'))
+
+    rmtree($S0)
   L1:
 .end
 
@@ -3095,8 +3123,8 @@
 URL:            %s
 Source0:        %s
 BuildRoot:      %%{_tmppath}/%%{name}-%%{version}-%%{release}
-#BuildRequires:  parrot           >= %%parrot_version
-#BuildRequires:  parrot-devel     >= %%parrot_version
+#BuildRequires:  parrot           = %%parrot_version
+#BuildRequires:  parrot-devel     = %%parrot_version
 
 %%description
 %s
@@ -3107,7 +3135,7 @@
 parrot setup.pir
 
 %%install
-parrot setup.pir install
+sudo parrot setup.pir install
 
 %%check
 parrot setup.pir test
@@ -4250,6 +4278,18 @@
   L2:
 .end
 
+=item rmtree
+
+=cut
+
+.sub 'rmtree'
+    .param string path
+    .param int verbose          :named('verbose') :optional
+    .param int has_verbose      :opt_flag
+    $S0 = 'perl -MExtUtils::Command -e rm_rf ' . path
+    system($S0, verbose :named('verbose'))
+.end
+
 =item basename
 
 =cut


More information about the parrot-commits mailing list