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

fperrad at svn.parrot.org fperrad at svn.parrot.org
Thu Dec 24 11:08:43 UTC 2009


Author: fperrad
Date: Thu Dec 24 11:08:39 2009
New Revision: 43232
URL: https://trac.parrot.org/parrot/changeset/43232

Log:
[distutils] add a target ebuild (gentoo)

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

Modified: trunk/runtime/parrot/library/distutils.pir
==============================================================================
--- trunk/runtime/parrot/library/distutils.pir	Thu Dec 24 01:08:59 2009	(r43231)
+++ trunk/runtime/parrot/library/distutils.pir	Thu Dec 24 11:08:39 2009	(r43232)
@@ -292,11 +292,13 @@
     register_step('manifest', _manifest)
     .const 'Sub' _sdist_rpm = '_sdist_rpm'
     register_step('sdist_rpm', _sdist_rpm)
+    .const 'Sub' _spec_rpm = '_spec_rpm'
+    register_step('spec_rpm', _spec_rpm)
+    .const 'Sub' _ebuild_gentoo = '_ebuild_gentoo'
+    register_step('ebuild', _ebuild_gentoo)
 
     .const 'Sub' _bdist = '_bdist'
     register_step('bdist', _bdist)
-    .const 'Sub' _spec_rpm = '_spec_rpm'
-    register_step('spec_rpm', _spec_rpm)
     .const 'Sub' _bdist_rpm = '_bdist_rpm'
     register_step('bdist_rpm', _bdist_rpm)
 
@@ -3145,6 +3147,114 @@
     system(cmd, 1 :named('verbose'))
 .end
 
+=head3 Step ebuild
+
+=over 4
+
+=item description
+
+=item project_uri
+
+=item license_type
+
+=item doc_files
+
+=back
+
+=cut
+
+.sub '_ebuild_gentoo' :anon
+    .param pmc kv :slurpy :named
+    $S0 = get_ebuild(kv :flat :named)
+    $S1 = mk_ebuild(kv :flat :named)
+    $I0 = file_exists($S0)
+    unless $I0 goto L1
+    print $S1
+    goto L2
+  L1:
+    $S2 = dirname($S0)
+    mkpath($S2, 1 :named('verbose'))
+    spew($S0, $S1, 1 :named('verbose'))
+  L2:
+.end
+
+.sub 'get_ebuild'
+    .param pmc kv :slurpy :named
+    $S0 = "ports/gentoo/"
+    $S1 = get_name(kv :flat :named)
+    $S0 .= $S1
+    $S0 .= "-"
+    $S1 = get_version(kv :flat :named)
+    $S0 .= $S1
+    $S0 .= '.ebuild'
+    .return ($S0)
+.end
+
+.sub 'mk_ebuild'
+    .param pmc kv :slurpy :named
+
+    .local string description
+    $S0 = get_value('description', kv :flat :named)
+    description = _json_escape($S0)
+
+    .local string project_uri
+    project_uri =get_value('project_uri', kv :flat :named)
+
+    .local string license_type
+    license_type = get_value('license_type', kv :flat :named)
+
+    .local string doc
+    doc = ''
+    $I0 = exists kv['doc_files']
+    unless $I0 goto L1
+    doc = "    dodoc "
+    $P0 = kv['doc_files']
+    $I0 = does $P0, 'array'
+    if $I0 goto L2
+    $S0 = $P0
+    goto L3
+  L2:
+    $S0 = join " ", $P0
+  L3:
+    doc .= $S0
+    doc .= " || die"
+  L1:
+
+    $P0 = new 'FixedStringArray'
+    set $P0, 4
+    $P0[0] = description
+    $P0[1] = project_uri
+    $P0[2] = license_type
+    $P0[3] = doc
+
+    $S0 = <<'TEMPLATE'
+
+DESCRIPTION="%s"
+HOMEPAGE="%s"
+SRC_URI="./${P}.tar.gz"
+
+LICENSE="%s"
+SLOT="0"
+KEYWORDS="~arch"
+IUSE=""
+
+#DEPEND=""
+#RDEPEND=""
+
+src_compile() {
+    parrot setup.pir build || die "build failed"
+}
+
+src_install() {
+    parrot setup.pir --root ${D} install || die "install failed"
+%s
+}
+TEMPLATE
+    .local string ebuild
+    ebuild = sprintf $S0, $P0
+    .return (ebuild)
+.end
+
 =head3 Step bdist_wininst
 
 Build an installer with Inno Setup.


More information about the parrot-commits mailing list