Ignore:
Timestamp:
Mar 10, 2013, 2:04:04 AM (6 years ago)
Author:
kimuraw@…
Message:

_resources/port1.0/group/ruby-1.0.tcl, lang/ruby, lang/ruby19: introduce port select ruby

file hierarchy:

${prefix}/bin

ruby1.8 - port:ruby
ruby1.9 - port:ruby19
nanoc3-1.8 - port:rb-nanoc3
nanoc3-1.9 - port:rb19-nanoc3

${prefix}/libexec/

ruby1.8/nanoc3 - port:rb-nanoc3
ruby1.9/nanoc3 - port:rb19-nanoc3

${prefix}/etc/select/ruby

base - port:ruby_select
none - port:ruby_select
ruby18 - port:ruby
ruby19 - port:ruby19

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dports/_resources/port1.0/group/ruby-1.0.tcl

    r96776 r103918  
    3131# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    3232
    33 # Define these variables assuming ruby1.8 to make them accessible in
    34 # the portfile after port group declaration. They can be modified by
    35 # ruby.setup, e.g. to use another ruby than 1.8.
    36 set ruby.bin            ${prefix}/bin/ruby
    37 set ruby.rdoc           ${prefix}/bin/rdoc
    38 set ruby.gem            ${prefix}/bin/gem
     33# Usage:
     34#
     35#   1. use ruby.setup
     36#
     37#     PortGroup        ruby 1.0
     38#     ruby.setup       module version type {} ruby19
     39#
     40#   2. use ruby.branch
     41#
     42#     PortGroup        ruby 1.0
     43#     ruby.branch      1.9
     44#     depends_lib      port:ruby${ruby.suffix}
     45#     build.cmd        ${ruby.bin}
     46
     47# options:
     48#   ruby.branch: select ruby version. 1.8 or 1.9.
     49#   ruby.link_binaries: whether generate suffixed symlink under ${prefix}/bin
     50#        or not.
     51# values:
     52#   ruby.bin, ruby.rdoc, ruby.gem: fullpath to commands for ${ruby.branch}.
     53#   ruby.suffix: suffix of portname. port:ruby${ruby.suffix} or
     54#        port:rb${ruby.suffix}-foo.
     55#   ruby.bindir: install location of commands without suffix from rb-foo.
     56#   ruby.gemdir: install location of rubygems.
     57#        such as "${prefix}/lib/ruby1.9/gems/1.9.1".
     58#   ruby.link_binaries_suffix: suffix of commands from rb-foo under
     59#        ${prefix}/bin. such as "-1.8" or "-1.9".
     60#   (obsoleted values)
     61#   ruby.prog_suffix: use ruby.branch.
     62#   ruby.version: use ruby.api_version.
     63# values from ruby.setup:
     64#   ruby.module: port name without prefix. rb-${ruby.module}.
     65#   ruby.project: project name at rubygems, rubyforge or sourceforge.
     66
     67options ruby.default_branch
     68default ruby.default_branch 1.8
     69options ruby.branch
     70options ruby.bin ruby.rdoc ruby.gem ruby.bindir ruby.gemdir ruby.suffix
     71option_proc ruby.branch ruby_set_branch
     72proc ruby_set_branch {option action args} {
     73    if {$action != "set"} {
     74        return
     75    }
     76    global prefix ruby.branch \
     77           ruby.bin ruby.rdoc ruby.gem ruby.bindir ruby.gemdir \
     78           ruby.suffix ruby.link_binaries_suffix ruby.api_version
     79    set ruby.bin            ${prefix}/bin/ruby${ruby.branch}
     80    set ruby.rdoc           ${prefix}/bin/rdoc${ruby.branch}
     81    set ruby.gem            ${prefix}/bin/gem${ruby.branch}
     82    set ruby.bindir         ${prefix}/libexec/ruby${ruby.branch}
     83    set ruby.gemdir         ${prefix}/lib/ruby${ruby.branch}/gems/${ruby.api_version}
     84    # gem command for 1.8 from port:rb-rubygems
     85    if {${ruby.branch} eq "1.8"} {
     86        set ruby.gem        ${ruby.bindir}/gem
     87        set ruby.gemdir     ${prefix}/lib/ruby/gems/${ruby.api_version}
     88    }
     89    set ruby.suffix         [join [split ${ruby.branch} .] {}]
     90    if {${ruby.branch} eq "1.8"} {
     91        set ruby.suffix     ""
     92    }
     93    set ruby.link_binaries_suffix -${ruby.branch}
     94    set ruby.prog_suffix    ${ruby.branch}
     95}
    3996
    4097proc ruby.extract_config {var {default ""}} {
     
    46103}
    47104
    48 options ruby.version ruby.arch ruby.lib ruby.archlib
    49 default ruby.version    {[ruby.extract_config ruby_version]}
    50 default ruby.arch       {[ruby.extract_config arch "${os.arch}-${os.platform}${os.major}"]}
     105options ruby.api_version ruby.lib ruby.archlib
     106default ruby.api_version    {[ruby.extract_config ruby_version]}
     107default ruby.arch           {[ruby.extract_config arch "${os.arch}-${os.platform}${os.major}"]}
    51108# define installation libraries as vendor location
    52 default ruby.lib        {[ruby.extract_config vendorlibdir ${prefix}/lib/ruby/vendor_ruby/${ruby.version}]}
    53 default ruby.archlib    {[ruby.extract_config vendorarchdir ${ruby.lib}/${ruby.arch}]}
    54 
    55 set ruby.module     ""
    56 set ruby.filename   ""
    57 set ruby.project    ""
    58 set ruby.docs       {}
    59 set ruby.srcdir     ""
     109default ruby.lib            {[ruby.extract_config vendorlibdir ${prefix}/lib/ruby/vendor_ruby/${ruby.api_version}]}
     110default ruby.archlib        {[ruby.extract_config vendorarchdir ${ruby.lib}/${ruby.arch}]}
     111# ruby.version is obsoleted. use ruby.api_version.
     112options ruby.version
     113default ruby.version        {[ruby.extract_config ruby_version]}
     114
     115set ruby.module         ""
     116set ruby.filename       ""
     117set ruby.project        ""
     118set ruby.docs           {}
     119set ruby.srcdir         ""
     120
     121options ruby.link_binaries
     122default ruby.link_binaries yes
     123
     124default ruby.branch         ${ruby.default_branch}
    60125
    61126# ruby group setup procedure; optional for ruby 1.8 if you want only
     
    64129    global destroot prefix worksrcpath os.platform
    65130    global ruby.bin ruby.rdoc ruby.gem
    66     global ruby.version ruby.lib
     131    global ruby.api_version ruby.lib ruby.suffix ruby.bindir ruby.gemdir
    67132    global ruby.module ruby.filename ruby.project ruby.docs ruby.srcdir
     133    global ruby.link_binaries_suffix
     134    # ruby.version is obsoleted. use ruby.gemdir.
    68135    global ruby.prog_suffix
    69136
    70137    if {${implementation} eq "ruby19"} {
    71         set ruby.port_prefix rb19
    72         set ruby.prog_suffix "1.9"
     138        ruby.branch 1.9
     139        set ruby.prog_suffix 1.9
    73140    } elseif {${implementation} eq "ruby"} {
    74         # ruby.bin, ruby.rdoc, and ruby.gem set to 1.8 by default
    75         set ruby.port_prefix rb
    76         # no program suffix by default, so leave as blank
     141        ruby.branch 1.8
    77142        set ruby.prog_suffix ""
    78143    } else {
     
    80145        return -code error "ruby.setup failed"
    81146    }
    82     set ruby.bin    ${prefix}/bin/ruby${ruby.prog_suffix}
    83     set ruby.rdoc   ${prefix}/bin/rdoc${ruby.prog_suffix}
    84     set ruby.gem    ${prefix}/bin/gem${ruby.prog_suffix}
    85147
    86148    # define ruby global names and lists
     
    100162    set ruby.docs   ${docs}
    101163
    102     name            ${ruby.port_prefix}-[string tolower ${ruby.module}]
     164    name            rb${ruby.suffix}-[string tolower ${ruby.module}]
    103165    version         ${vers}
    104166    categories      ruby
     
    200262            destroot.target
    201263            destroot.destdir
     264            post-destroot {
     265                foreach file [readdir ${destroot}${prefix}/bin] {
     266                    move [file join ${destroot}${prefix}/bin $file] ${destroot}${ruby.bindir}
     267                }
     268            }
    202269        }
    203270        copy_install:* {
     
    226293        install.rb {
    227294            configure.cmd       ${ruby.bin} -rvendor-specific install.rb
    228             configure.pre_args  config
     295            configure.pre_args  config --bin-dir=${destroot}${ruby.bindir}
    229296
    230297            build.cmd           ${ruby.bin} -rvendor-specific install.rb
     
    265332            destroot.target     install
    266333            destroot.destdir
     334            post-destroot {
     335                foreach file [readdir ${destroot}${prefix}/bin] {
     336                    move [file join ${destroot}${prefix}/bin $file] ${destroot}${ruby.bindir}
     337                }
     338            }
    267339        }
    268340        extconf.rb {
     
    274346
    275347            destroot.args       RUBY="${ruby.bin} -rvendor-specific"
     348            post-destroot {
     349                foreach file [readdir ${destroot}${prefix}/bin] {
     350                    move [file join ${destroot}${prefix}/bin $file] ${destroot}${ruby.bindir}
     351                }
     352            }
    276353        }
    277354        gnu {
     
    302379
    303380            pre-destroot {
    304                 xinstall -d -m 0755 ${destroot}${prefix}/lib/ruby${ruby.prog_suffix}/gems/${ruby.version}
     381                xinstall -d -m 0755 ${destroot}${ruby.gemdir}
    305382            }
    306383
    307384            destroot {
    308                 system "cd ${worksrcpath} && ${ruby.gem} install --local --force --install-dir ${destroot}${prefix}/lib/ruby${ruby.prog_suffix}/gems/${ruby.version} ${distpath}/${distname}"
    309 
    310                 set binDir ${destroot}${prefix}/lib/ruby${ruby.prog_suffix}/gems/${ruby.version}/bin
     385                system "cd ${worksrcpath} && ${ruby.gem} install --no-ri --no-rdoc --local --force --install-dir ${destroot}${ruby.gemdir} ${distpath}/${distname}"
     386
     387                set binDir ${destroot}${ruby.gemdir}/bin
    311388                if {[file isdirectory $binDir]} {
    312389                    foreach file [readdir $binDir] {
    313                         file copy [file join $binDir $file] ${destroot}${prefix}/bin
     390                        file copy [file join $binDir $file] ${destroot}${ruby.bindir}
    314391                    }
    315392                }
     
    330407    }
    331408
     409    pre-destroot {
     410        xinstall -d -m 0755 ${destroot}${ruby.bindir}
     411    }
     412
    332413    post-destroot {
     414        if {${ruby.link_binaries}} {
     415            foreach bin [glob -nocomplain -tails -directory "${destroot}${ruby.bindir}" *] {
     416                if {[catch {file type "${destroot}${prefix}/bin/${bin}${ruby.link_binaries_suffix}"}]} {
     417                    ln -s "${ruby.bindir}/${bin}" "${destroot}${prefix}/bin/${bin}${ruby.link_binaries_suffix}"
     418                }
     419            }
     420        }
    333421        # Install documentation files (if specified)
    334422        if {[llength ${ruby.docs}] > 0} {
Note: See TracChangeset for help on using the changeset viewer.