# -*- 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

name                bash
conflicts           bash-devel
set bash_version    5.3
set bash_patchlevel 3
version             ${bash_version}.${bash_patchlevel}

subport bash-devel {
    conflicts           bash
    version             20241126
    set bash_patchlevel 0

    fetch.type          git
    git.url             git://git.savannah.gnu.org/bash.git
    git.branch          49c2670226b045746d66765b23af37c1c7ba5597
}

distname            ${name}-${bash_version}
categories          shells
platforms           darwin freebsd
license             GPL-3+
maintainers         {raimue @raimue}
description         Bash (bourne-again shell) is a UNIX command interpreter
long_description    \
    Bash is an sh-compatible shell that incorporates useful     \
    features from the Korn shell (ksh) and C shell (csh). It is     \
    intended to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell  \
    and Tools standard. It offers functional improvements over sh   \
    for both programming and interactive use. In addition, most     \
    sh scripts can be run by Bash without modification.
homepage            https://www.gnu.org/software/bash/bash.html

master_sites        gnu
patch_sites         gnu:${name}/${distname}-patches
dist_subdir         ${name}/${bash_version}_1

# Generate patchfiles
for {set i 1} {$i <= $bash_patchlevel} {incr i} {
    patchfiles-append \
        [format "%s%s-%03d" $name [strsed ${bash_version} {g/\.//}] $i]
}

if {${subport} eq ${name}} {
    checksums           ${distname}${extract.suffix} \
                        rmd160  77d2b7caa358165bce9ce4caf3e9d6ca57a1b5dd \
                        sha256  0d5cd86965f869a26cf64f4b71be7b96f90a3ba8b3d74e27e8e9d9d5550f31ba \
                        size    11355854

    checksums-append    bash53-001 \
                        rmd160  8f318d7b8d157a93d5c7b1adee6ea2d58684e68f \
                        sha256  1f608434364af86b9b45c8b0ea3fb3b165fb830d27697e6cdfc7ac17dee3287f \
                        size    1531 \
                        bash53-002 \
                        rmd160  037ec49a8635c3f6867ee6add3221b9336d88b2d \
                        sha256  e385548a00130765ec7938a56fbdca52447ab41fabc95a25f19ade527e282001 \
                        size    2635 \
                        bash53-003 \
                        rmd160  8b2d5309960c6ec876b19ee391087d82eb88766d \
                        sha256  f245d9c7dc3f5a20d84b53d249334747940936f09dc97e1dcb89fc3ab37d60ed \
                        size    2683
}

depends_build           port:bison \
                        port:gettext
# ar: internal ranlib command failed
depends_build-append    port:cctools

depends_lib             port:gettext-runtime \
                        port:ncurses

variant universal {}

compiler.blacklist-append *gcc-4.* {clang < 400}

configure.ldflags-append \
    "-Wl,-search_paths_first -lncurses"
configure.args          --mandir=${prefix}/share/man \
                        --infodir=${prefix}/share/info \
                        --without-installed-readline \
                        CFLAGS_FOR_BUILD="[get_canonical_archflags]"

# Always source .bashrc when connecting remotely with ssh, #40603
configure.cflags-append -DSSH_SOURCE_BASHRC

configure.checks.implicit_function_declaration.whitelist-append strchr

livecheck.type          regex
livecheck.url           https://ftp.gnu.org/gnu/${name}/${name}-${bash_version}-patches/?C=M&O=D
livecheck.version       [format %03d ${bash_patchlevel}]
livecheck.regex         ${name}[strsed ${bash_version} {g/\.//}]-(\\d\\d\\d)
