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

fperrad at svn.parrot.org fperrad at svn.parrot.org
Thu Dec 24 16:51:33 UTC 2009


Author: fperrad
Date: Thu Dec 24 16:51:31 2009
New Revision: 43234
URL: https://trac.parrot.org/parrot/changeset/43234

Log:
[distutils] add a target control (debian)

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

Modified: trunk/runtime/parrot/library/distutils.pir
==============================================================================
--- trunk/runtime/parrot/library/distutils.pir	Thu Dec 24 15:34:29 2009	(r43233)
+++ trunk/runtime/parrot/library/distutils.pir	Thu Dec 24 16:51:31 2009	(r43234)
@@ -294,6 +294,8 @@
     register_step('sdist_rpm', _sdist_rpm)
     .const 'Sub' _spec_rpm = '_spec_rpm'
     register_step('spec_rpm', _spec_rpm)
+    .const 'Sub' _control_deb = '_control_deb'
+    register_step('control', _control_deb)
     .const 'Sub' _ebuild_gentoo = '_ebuild_gentoo'
     register_step('ebuild', _ebuild_gentoo)
 
@@ -2318,7 +2320,7 @@
   L2:
 .end
 
-.sub 'get_plumage'
+.sub 'get_plumage' :anon
     .param pmc kv :slurpy :named
     $S0 = get_name(kv :flat :named)
     $S0 .= '.json'
@@ -2776,7 +2778,7 @@
     unlink('MANIFEST', 1 :named('verbose'))
 .end
 
-.sub 'copy_sdist'
+.sub 'copy_sdist' :anon
     .param string dirname
     .param pmc files
     mkdir(dirname)
@@ -2956,7 +2958,7 @@
   L2:
 .end
 
-.sub 'get_spec'
+.sub 'get_spec' :anon
     .param pmc kv :slurpy :named
     $S0 = get_value('spec_dir', 'ports/rpm' :named('default'), kv :flat :named)
     $S0 .= "/parrot-"
@@ -2966,7 +2968,7 @@
     .return ($S0)
 .end
 
-.sub 'mk_spec'
+.sub 'mk_spec' :anon
     .param pmc kv :slurpy :named
 
     .local pmc config
@@ -3056,52 +3058,18 @@
     .local string spec
     spec = sprintf $S0, $P0
 
-    $I0 = exists kv['doc_files']
-    unless $I0 goto L1
-    $P1 = kv['doc_files']
-    $I0 = does $P1, 'array'
-    if $I0 goto L2
-    $S0 = $P1
+    $S0 = mk_deb_docs(kv :flat :named)
+    if $S0 == '' goto L1
     spec .= "%doc "
+    $P1 = split "\n", $S0
+    $S0 = join "\n%doc ", $P1
     spec .= $S0
     spec .= "\n"
-    goto L1
-  L2:
-    $P2 = iter $P1
-  L3:
-    unless $P2 goto L1
-    $S0 = shift $P2
-    spec .= "%doc "
-    spec .= $S0
-    spec .= "\n"
-    goto L3
   L1:
 
-    $P0 = new 'ResizablePMCArray'
-    # currently, ResizableStringArray hasn't the method sort.
-    # see TT #1356
-    $P1 = get_install_files(kv :flat :named)
-    $P2 = iter $P1
-  L11:
-    unless $P2 goto L12
-    $S0 = shift $P2
-    $P3 = split parrot_version, $S0
-    $S0 = join "%{parrot_version}", $P3
-    push $P0, $S0
-    goto L11
-  L12:
-    $P1 = get_install_xfiles(kv :flat :named)
-    $P2 = iter $P1
-  L13:
-    unless $P2 goto L14
-    $S0 = shift $P2
-    $P3 = split parrot_version, $S0
-    $S0 = join "%{parrot_version}", $P3
-    push $P0, $S0
-    goto L13
-  L14:
-    $P0.'sort'()
-    $S0 = join "\n", $P0
+    $S0 = mk_deb_install(kv :flat :named)
+    $P1 = split parrot_version, $S0
+    $S0 = join "%{parrot_version}", $P1
     spec .= $S0
 
     spec .= "\n\n%changelog\n* "
@@ -3147,6 +3115,237 @@
     system(cmd, 1 :named('verbose'))
 .end
 
+=head3 Step control_deb
+
+=over 4
+
+=item deb_dir
+
+the default value is ports/debian
+
+=item doc_files
+
+=back
+
+=cut
+
+.sub '_control_deb' :anon
+    .param pmc kv :slurpy :named
+
+    $S0 = get_deb('control', kv :flat :named)
+    $S1 = dirname($S0)
+    mkpath($S1, 1 :named('verbose'))
+    $S1 = mk_deb_control(kv :flat :named)
+    $I0 = file_exists($S0)
+    unless $I0 goto L1
+    print $S1
+    goto L2
+  L1:
+    spew($S0, $S1, 1 :named('verbose'))
+  L2:
+
+    $S0 = get_deb('rules', kv :flat :named)
+    $S1 = mk_deb_rules(kv :flat :named)
+    spew($S0, $S1, 1 :named('verbose'))
+
+    $S0 = get_deb_ext('.docs', kv :flat :named)
+    $S1 = mk_deb_docs(kv :flat :named)
+    spew($S0, $S1, 1 :named('verbose'))
+
+    $S0 = get_deb_ext('.install', kv :flat :named)
+    $S1 = mk_deb_install(kv :flat :named)
+    spew($S0, $S1, 1 :named('verbose'))
+.end
+
+.sub 'get_deb' :anon
+    .param string filename
+    .param pmc kv :slurpy :named
+    $S0 = get_value('deb_dir', 'ports/debian' :named('default'), kv :flat :named)
+    $S0 .= "/"
+    $S0 .= filename
+    .return ($S0)
+.end
+
+.sub 'get_deb_ext' :anon
+    .param string ext
+    .param pmc kv :slurpy :named
+    $S0 = get_value('deb_dir', 'ports/debian' :named('default'), kv :flat :named)
+    $S0 .= "/parrot-"
+    $S1 = get_name(kv :flat :named)
+    $S0 .= $S1
+    $S0 .= ext
+    .return ($S0)
+.end
+
+.sub 'mk_deb_control' :anon
+    .param pmc kv :slurpy :named
+
+    .local pmc config
+    config = get_config()
+
+    .local string parrot_version
+    $S1 = config['VERSION']
+    $S2 = config['DEVEL']
+    parrot_version = $S1 . $S2
+
+    .local string name
+    name = get_name(kv :flat :named)
+
+    .local string packager
+    packager = get_value('packager', "you <you at you.org>" :named('default'), kv :flat :named)
+
+    .local string description
+    description = get_value('description', kv :flat :named)
+
+    $P0 = new 'FixedStringArray'
+    set $P0, 6
+    $P0[0] = name
+    $P0[1] = packager
+    $P0[2] = parrot_version
+    $P0[3] = name
+    $P0[4] = parrot_version
+    $P0[5] = description
+
+    $S0 = <<'TEMPLATE'
+Source: parrot-%s
+Section: universe/interpreters
+Priority: optional
+Maintainer: %s
+Build-Depends: debhelper (>= 5.0.0), parrot-devel (= %s)
+Standards-Version: 3.8.0
+
+Package: parrot-%s
+Architecture: any
+Depends: parrot-minimal (= %s)
+Description: %s
+TEMPLATE
+    $S0 = sprintf $S0, $P0
+    .return ($S0)
+.end
+
+.sub 'mk_deb_rules' :anon
+    .param pmc kv :slurpy :named
+
+    .local string no_changelog
+    no_changelog = ''
+    $I0 = file_exists('ChangeLog')
+    if $I0 goto L1
+    no_changelog = "#"
+  L1:
+
+    $P0 = new 'FixedStringArray'
+    set $P0, 2
+    $P0[0] = no_changelog
+    $P0[1] = no_changelog
+
+    $S0 = <<'TEMPLATE'
+#!/usr/bin/make -f
+
+configure: configure-stamp
+
+configure-stamp:
+	dh_testdir
+	touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp
+	dh_testdir
+	parrot setup.pir build
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+	parrot setup.pir clean
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	parrot setup.pir --root $(CURDIR)/tmp install
+	dh_installdirs
+	find $(CURDIR)/debian/tmp -type f
+	dh_install --sourcedir=$(CURDIR)/tmp --list-missing
+
+# Build architecture-independent files here.
+binary-indep: build install
+	dh_testdir -i
+	dh_testroot -i
+%s	dh_installchangelogs -i ChangeLog
+	dh_installdocs -i
+	dh_fixperms -i
+	dh_installdeb -i
+	dh_gencontrol -i
+	dh_md5sums -i
+	dh_builddeb -i
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir -a
+	dh_testroot -a
+%s	dh_installchangelogs -a ChangeLog
+	dh_installdocs -a
+	dh_strip -a
+	dh_compress -a
+	dh_fixperms -a
+	dh_installdeb -a
+	dh_gencontrol -a
+	dh_md5sums -a
+	dh_builddeb -a
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
+
+TEMPLATE
+    $S0 = sprintf $S0, $P0
+    .return ($S0)
+.end
+
+.sub 'mk_deb_docs' :anon
+    .param pmc kv :slurpy :named
+    $S0 = ''
+    $I0 = exists kv['doc_files']
+    unless $I0 goto L1
+    $P0 = kv['doc_files']
+    $I0 = does $P0, 'array'
+    if $I0 goto L2
+    $S0 = $P0
+    goto L1
+  L2:
+    $S0 = join "\n", $P0
+  L1:
+    .return ($S0)
+.end
+
+.sub 'mk_deb_install' :anon
+    .param pmc kv :slurpy :named
+    $P0 = new 'ResizablePMCArray'
+    # currently, ResizableStringArray hasn't the method sort.
+    # see TT #1356
+    $P1 = get_install_files(kv :flat :named)
+    $P2 = iter $P1
+  L1:
+    unless $P2 goto L2
+    $S0 = shift $P2
+    push $P0, $S0
+    goto L1
+  L2:
+    $P1 = get_install_xfiles(kv :flat :named)
+    $P2 = iter $P1
+  L3:
+    unless $P2 goto L4
+    $S0 = shift $P2
+    push $P0, $S0
+    goto L3
+  L4:
+    $P0.'sort'()
+    $S0 = join "\n", $P0
+    .return ($S0)
+.end
+
 =head3 Step ebuild
 
 =over 4
@@ -3178,7 +3377,7 @@
   L2:
 .end
 
-.sub 'get_ebuild'
+.sub 'get_ebuild' :anon
     .param pmc kv :slurpy :named
     $S0 = "ports/gentoo/parrot-"
     $S1 = get_name(kv :flat :named)
@@ -3190,7 +3389,7 @@
     .return ($S0)
 .end
 
-.sub 'mk_ebuild'
+.sub 'mk_ebuild' :anon
     .param pmc kv :slurpy :named
 
     .local string description
@@ -3250,9 +3449,8 @@
 %s
 }
 TEMPLATE
-    .local string ebuild
-    ebuild = sprintf $S0, $P0
-    .return (ebuild)
+    $S0 = sprintf $S0, $P0
+    .return ($S0)
 .end
 
 =head3 Step bdist_wininst


More information about the parrot-commits mailing list