[111463] trunk/dports/_resources/port1.0/group/ruby-1.0.tcl

kimuraw at macports.org kimuraw at macports.org
Mon Sep 23 07:16:54 PDT 2013


Revision: 111463
          https://trac.macports.org/changeset/111463
Author:   kimuraw at macports.org
Date:     2013-09-23 07:16:53 -0700 (Mon, 23 Sep 2013)
Log Message:
-----------
port1.0/group/ruby-1.0.tcl: support ruby-1.8 universal extentions with setup.rb (#39096)

write "Portgroup muniversal 1.0" to Portfile, then rb-* ports with
setup.rb contains C-extention become to support universal.

examples:

    [port:rb-xslt]
    - add "Portgroup muniversal 1.0"

    Index: ruby/rb-xslt/Portfile
    ===================================================================
    --- ruby/rb-xslt/Portfile	(revision 111446)
    +++ ruby/rb-xslt/Portfile	(working copy)
    @@ -2,6 +2,7 @@
     
     PortSystem		1.0
     PortGroup		ruby 1.0
    +PortGroup		muniversal 1.0
     
     ruby.setup		ruby-xslt 0.9.6 setup.rb {AUTHORS COPYING ChangeLog README} rubyforge:35058
     extract.suffix		.tgz

    [port:rb-sqlite3]
    - add "Portgroup muniversal 1.0"
    - add ruby.config_rubyprog_name

    Index: ruby/rb-sqlite3/Portfile
    ===================================================================
    --- ruby/rb-sqlite3/Portfile	(revision 111446)
    +++ ruby/rb-sqlite3/Portfile	(working copy)
    @@ -2,7 +2,9 @@
     
     PortSystem		1.0
     PortGroup		ruby 1.0
    +PortGroup		muniversal 1.0
     
    +ruby.config_rubyprog_name   --ruby-prog
     ruby.setup		{sqlite3 sqlite3-ruby} 1.2.4 setup.rb \
				    {README.rdoc LICENSE CHANGELOG.rdoc api doc} \
				    rubyforge:42055

Revision Links:
--------------
    https://trac.macports.org/changeset/111446
    https://trac.macports.org/changeset/111446

Modified Paths:
--------------
    trunk/dports/_resources/port1.0/group/ruby-1.0.tcl

Modified: trunk/dports/_resources/port1.0/group/ruby-1.0.tcl
===================================================================
--- trunk/dports/_resources/port1.0/group/ruby-1.0.tcl	2013-09-23 13:27:09 UTC (rev 111462)
+++ trunk/dports/_resources/port1.0/group/ruby-1.0.tcl	2013-09-23 14:16:53 UTC (rev 111463)
@@ -126,6 +126,12 @@
 options ruby.link_binaries
 default ruby.link_binaries yes
 
+# detect setup.rb config option name of --rubyprog.
+# some setup.rb accepts this option by other name, such as --ruby-prog.
+# NOTE: set the value *before ruby.setup* to use ohter name.
+options ruby.config_rubyprog_name
+default ruby.config_rubyprog_name --rubyprog
+
 default ruby.branch         ${ruby.default_branch}
 
 # ruby group setup procedure; optional for ruby 1.8 if you want only
@@ -139,7 +145,10 @@
     # ruby.version is obsoleted. use ruby.gemdir.
     global ruby.prog_suffix
     # from muniversal
-    global universal_archs_supported merger_configure_env
+    global universal_archs_supported
+    global merger_configure_env merger_build_env merger_destroot_env
+    # for setup.rb +universal
+    global ruby.config_rubyprog_name
 
     if {${implementation} eq "ruby19"} {
         ruby.branch 1.9
@@ -328,18 +337,49 @@
             build.target        setup
 
             pre-destroot {
-                if {[file isfile ${worksrcpath}/config.save]} {
-                    reinplace "s|${prefix}|${destroot}${prefix}|g" \
-                        ${worksrcpath}/config.save
+                foreach conf {config.save .config} {
+                    if {[file isfile ${worksrcpath}/${conf}]} {
+                        reinplace "s|${prefix}|${destroot}${prefix}|g" \
+                            ${worksrcpath}/${conf}
+                    }
+                    if {[variant_isset universal]  && [info exists universal_archs_supported]} {
+                        foreach arch ${universal_archs_supported} {
+                            if {[file isfile ${worksrcpath}-${arch}/${conf}]} {
+                                reinplace "s|${prefix}|${destroot}-${arch}${prefix}|g" \
+                                    ${worksrcpath}-${arch}/${conf}
+                            }
+                        }
+                    }
                 }
-                if {[file isfile ${worksrcpath}/.config]} {
-                    reinplace "s|${prefix}|${destroot}${prefix}|g" \
-                        ${worksrcpath}/.config
-                }
             }
             destroot.cmd        ${ruby.bin} -rvendor-specific setup.rb
             destroot.target     install
             destroot.destdir
+            # extconf.rb|mkmf.rb of ruby-1.8 does not support universal binary.
+            # to build universal extentions, write "Portgrourp muniversal 1.0" in the Portfile.
+            if {[variant_isset universal] && (${ruby.branch} eq "1.8") && [info exists universal_archs_supported]} {
+                # generate wrapper for --rubyprog option
+                pre-configure {
+                    set fo [open ${worksrcpath}/_mp_arch_ruby w]
+                    puts $fo "#!/bin/sh"
+                    puts $fo "/usr/bin/arch ${ruby.bin} \$@"
+                    close $fo
+                    system "chmod +x ${worksrcpath}/_mp_arch_ruby"
+                }
+                configure.args-append \
+                    ${ruby.config_rubyprog_name}=${worksrcpath}/_mp_arch_ruby
+                foreach arch ${universal_archs_supported} {
+                    lappend merger_configure_env(${arch}) \
+                        ARCHPREFERENCE=ruby${ruby.branch}:${arch}
+                    lappend merger_build_env(${arch}) \
+                        ARCHPREFERENCE=ruby${ruby.branch}:${arch}
+                    lappend merger_destroot_env(${arch}) \
+                        ARCHPREFERENCE=ruby${ruby.branch}:${arch}
+                }
+                configure.cmd   /usr/bin/arch ${ruby.bin} -rvendor-specific setup.rb
+                build.cmd       /usr/bin/arch ${ruby.bin} -rvendor-specific setup.rb
+                destroot.cmd    /usr/bin/arch ${ruby.bin} -rvendor-specific setup.rb
+            }
             post-destroot {
                 foreach file [readdir ${destroot}${prefix}/bin] {
                     move [file join ${destroot}${prefix}/bin $file] ${destroot}${ruby.bindir}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130923/1b86d3c8/attachment.html>


More information about the macports-changes mailing list