Ignore:
Timestamp:
Aug 15, 2011, 4:46:16 PM (8 years ago)
Author:
jmr@…
Message:

perl5 portgroup: convert versions to a form we can compare correctly (#11873), declare a subport per major perl version (#30638), adapt p5 ports

File:
1 edited

Legend:

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

    r76553 r82547  
    3535#
    3636
    37 # Set some variables.
    38 set perl5.bin ${prefix}/bin/perl
     37# portfile configuration options
     38# perl5.branches: the major perl version supported by this module. A
     39#   subport will be created for each. e.g. p5.12-foo, p5.10-foo, ...
     40# perl5.default_branch: the branch used when you request p5-foo
     41options perl5.default_branch perl5.branches
     42default perl5.default_branch 5.12
     43default perl5.branches {"5.8 5.10 5.12 5.14"}
    3944
    4045proc perl5.extract_config {var {default ""}} {
     
    4853}
    4954
    50 options perl5.version perl5.arch perl5.lib perl5.archlib
     55# Set some variables.
     56options perl5.version perl5.major perl5.arch perl5.lib perl5.archlib perl5.bin
    5157default perl5.version {[perl5.extract_config version]}
    5258default perl5.arch {[perl5.extract_config archname ${os.platform}]}
     59default perl5.bin {${prefix}/bin/perl${perl5.major}}
    5360
    5461# define installation libraries as vendor location
     
    6067# define these empty initially, they are set by perl5.setup arguments
    6168set perl5.module ""
     69set perl5.moduleversion ""
    6270set perl5.cpandir ""
    6371
    6472# perl5 group setup procedure
    6573proc perl5.setup {module vers {cpandir ""}} {
    66     global perl5.bin perl5.lib perl5.module perl5.cpandir
    67     global prefix
     74    global perl5.branches perl5.bin perl5.lib perl5.module perl5.moduleversion perl5.cpandir
     75    global prefix subport name
    6876
    6977    # define perl5.module
    7078    set perl5.module ${module}
     79    set perl5.moduleversion $vers
    7180
    7281    # define perl5.cpandir
     
    8291
    8392    name                p5-[string tolower ${perl5.module}]
    84     version             ${vers}
     93    version             [perl5_convert_version ${perl5.moduleversion}]
    8594    categories          perl
    8695    homepage            http://search.cpan.org/dist/${perl5.module}/
    8796
    8897    master_sites        perl_cpan:${perl5.cpandir}
    89     distname            ${perl5.module}-${vers}
     98    distname            ${perl5.module}-${perl5.moduleversion}
    9099    dist_subdir         perl5
    91100
    92     depends_lib     port:perl5
     101    foreach v ${perl5.branches} {
     102        subport p${v}-[string tolower ${perl5.module}] { depends_lib port:perl${v} }
     103    }
    93104
    94     configure.cmd       ${perl5.bin}
    95     configure.env       PERL_AUTOINSTALL=--skipdeps
    96     configure.pre_args  Makefile.PL
    97     configure.args      INSTALLDIRS=vendor
    98 
    99     test.run            yes
    100 
    101     destroot.target     pure_install
    102 
    103     post-destroot {
    104         fs-traverse file ${destroot}${perl5.lib} {
    105             if {[file tail ${file}] eq ".packlist"} {
    106                 ui_info "Fixing packlist ${file}"
    107                 reinplace "s|${destroot}||" ${file}
     105    if {$subport == $name} {
     106        perl5.major
     107        distfiles
     108        supported_archs noarch
     109        replaced_by p[option perl5.default_branch]-[string tolower ${perl5.module}]
     110        depends_lib port:p[option perl5.default_branch]-[string tolower ${perl5.module}]
     111        use_configure no
     112        build {}
     113        destroot {
     114            system "echo $name is a stub port > ${destroot}${prefix}/share/doc/${name}/README"
     115        }
     116    } else {
     117        perl5.major [string range $subport 1 [expr [string first - $subport]-1]]
     118        configure.cmd       ${perl5.bin}
     119        configure.env       PERL_AUTOINSTALL=--skipdeps
     120        configure.pre_args  Makefile.PL
     121        configure.args      INSTALLDIRS=vendor
     122   
     123        test.run            yes
     124   
     125        destroot.target     pure_install
     126   
     127        post-destroot {
     128            fs-traverse file ${destroot}${perl5.lib} {
     129                if {[file tail ${file}] eq ".packlist"} {
     130                    ui_info "Fixing packlist ${file}"
     131                    reinplace "s|${destroot}||" ${file}
     132                }
    108133            }
    109134        }
     
    117142# Switch from default MakeMaker-style routine to Module::Build-style
    118143proc perl5.use_module_build {} {
    119     global perl5.bin destroot
     144    global perl5.bin destroot perl5.major
    120145
    121     depends_lib-append  port:p5-module-build
     146    if {${perl5.major} == ""} {
     147        return
     148    }
     149
     150    depends_lib-append  port:p${perl5.major}-module-build
    122151
    123152    configure.pre_args  Build.PL
     
    137166}
    138167
     168# convert a floating point version to an dotted-integer one
     169proc perl5_convert_version {vers} {
     170    set index [string first . $vers]
     171    set other_dot [string first . [string range $vers [expr $index + 1] end]]
     172    if {$index == -1 || $other_dot != -1} {
     173        return $vers
     174    }
     175    set ret [string range $vers 0 [expr $index - 1]]
     176    incr index
     177    set fractional [string range $vers $index end]
     178    set index 0
     179    while {$index < [string length $fractional] || $index < 6} {
     180        set sub [string range $fractional $index [expr $index + 2]]
     181        if {[string length $sub] < 3} {
     182            append sub [string repeat "0" [expr 3 - [string length $sub]]]
     183        }
     184        append ret ".[scan $sub %u]"
     185        incr index 3
     186    }
     187    return $ret
     188}
Note: See TracChangeset for help on using the changeset viewer.