# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0
PortGroup           perl5 1.0
PortGroup           active_variants 1.1

perl5.branches      5.28 5.30 5.32 5.34
license             {Artistic-1 GPL}
maintainers         nomaintainer
description         DBD::mysql - MySQL driver for the Perl5 Database Interface (DBI)
long_description    {*}${description}

###############################################################################
# Create an array of DBD:MYSQL versions
###############################################################################
# "DBD:MYSQL Major Version" {
#     version    DBD:MYSQL version
#     rmd160     value
#     sha256     value
#     size.      value
# }
###############################################################################
array set version_current {
    version     5.011
    rmd160      5b430510cfd21a8e9e0d13578da836ee9a5b0b77
    sha256      a3a70873ed965b172bff298f285f5d9bbffdcceba73d229b772b4d8b1b3992a1
    size        157076
}
array set version_4 {
    version     4.053
    rmd160      f0233e3247012644bf1bfec1c860c7af3a1a51b8
    sha256      3dfc9812972e128857e58f845d6a0030bd3e1631b39ce13370b08fab12a8249c
    size        162019
}

###############################################################################
# Create an array of mysql variants.  This is an attempt to make adding new
# variant easier as they emerge.
###############################################################################
# Variant list
# {
#   sql variant name     port name (if different)
# }
###############################################################################
array set db_variants {
    mysql8          ""
    mariadb10_11    mariadb-10.11
    mariadb10_10    mariadb-10.10
    mariadb10_6     mariadb-10.6
    mariadb10_5     mariadb-10.5
    mariadb10_4     mariadb-10.4
    percona         ""
}

# check to see if a variant was set by the user
set any_sql no
foreach variant_name [array names db_variants] {
    if {[variant_isset ${variant_name}]} {
        set any_sql yes
        switch -glob -- $variant_name {
            "*mysql*" {
                set install_version "version_current"
            }
            default {
                set install_version "version_4"
            }
        }
        break
    }
}
# set the default variant if no variant is set by the user
# NOTE: if the user passes in a bad variant, these defaults will
# be installed instead of throwing an error
if { !${any_sql}} {
    if {${os.major} > 12} {
        default_variants +mysql8
        set install_version "version_current"
    } else {
        default_variants +mariadb10_6
        set install_version "version_4"
    }
}
# setup perl and checksums based the requested variant version
perl5.setup                 DBD-mysql [lindex [array get $install_version version] 1] ../../authors/id/D/DV/DVEEDEN
checksums                   rmd160  [lindex [array get $install_version rmd160] 1] \
                                    sha256  [lindex [array get $install_version sha256] 1] \
                                    size    [lindex [array get $install_version size] 1]
# version gets set to the "current version" values to prevent constant upgrading by port upgrade
version                     [perl5_convert_version [lindex [array get version_current version] 1]]
revision                    1

if {${perl5.major} != ""} {
    depends_build-append \
                    port:p${perl5.major}-devel-checklib \
                    port:p${perl5.major}-test-deep \
                    port:p${perl5.major}-time-hires

    depends_lib-append \
                    port:p${perl5.major}-dbi

    # loop over the array creating the specified variants
    # the {*} is necessary to break out the conflict_list into multiple variants vs.
    # one single incorrectly formatted conflict
    foreach variant_name [array names db_variants] {
        set idx [lsearch [array names db_variants] $variant_name]
        set conflict_list [lreplace [array names db_variants] $idx $idx]
        variant $variant_name conflicts {*}$conflict_list description "build with $variant_name" {}
    }

    # add the build dependencies, this must be done outside the variant call to work
    foreach variant_name [array names db_variants] {
        set reqPort            [lindex [array get db_variants $variant_name] 1]

        if {$reqPort eq ""} {set reqPort $variant_name}

        if { ([variant_exists $variant_name] && [variant_isset $variant_name])} {
            depends_lib-append      port:$reqPort
            configure.args-append   --mysql_config=${prefix}/lib/$reqPort/bin/mysql_config
        }
    }
}

# livecheck workaround due to MetaCPAN indexing failure
livecheck.type      regex
livecheck.url       https://cpan.metacpan.org/authors/id/D/DV/DVEEDEN
livecheck.regex     "${perl5.module}-(\\d+(?:\\.\\d+)*)"