# Maintainer: Levente Polyak <anthraxx[at]archlinux[dot]org>
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Giancarlo Razzolini <grazzolini@archlinux.org>
# Contributor:  Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: Aaron Griffin <aaron@archlinux.org>
# PGO Version: Laio Seman <laio [at] ieee.org>

pkgname=bash
_basever=5.3
_patchlevel=15
pkgver=${_basever}.${_patchlevel}
pkgrel=2
pkgdesc='The GNU Bourne Again shell'
arch=(x86_64)
license=('GPL-3.0-or-later')
url='https://www.gnu.org/software/bash/bash.html'
backup=(
  etc/bash.bash{rc,_logout} 
  etc/skel/.bash{rc,_profile,_logout}
)
depends=(
  readline
  libreadline.so
  glibc
  ncurses
)
optdepends=('bash-completion: for tab completion')
provides=('sh')
install=bash.install
source=(
  https://ftp.gnu.org/gnu/bash/bash-$_basever.tar.gz{,.sig}
  dot.bashrc
  dot.bash_profile
  dot.bash_logout
  system.bashrc
  system.bash_logout
)
validpgpkeys=('7C0135FB088AAF6C66C650B9BB5869F064EA74AB') # Chet Ramey

if [[ $((10#${_patchlevel})) -gt 0 ]]; then
  for (( _p=1; _p<=$((10#${_patchlevel})); _p++ )); do
    source=(${source[@]} https://ftp.gnu.org/gnu/bash/bash-$_basever-patches/bash${_basever//.}-$(printf "%03d" $_p){,.sig})
  done
fi
b2sums=('82d1b54322bbd1e8c2a93380f1b2888a42a1d7186e504f41cee705a0fdd41463d8f20baa1755051e1396192f8ebd089524767d933a9e0b5fb76f2588601539bb'
        'SKIP'
        '61cc3b7c9e85ae29b48518a2579896cb037153184a233cb5636d8dce4c2a2fded88624c9d5a986d86fdd4b0d521828b510c7a0d16b3c8b95cfca8d4c0a74da17'
        '2d53f99e485218ed47f2e40907023645594ac8ffcf00d0569050d54a8f4dabe0a2bdcab515a45b663283c2e6299d805b923ea7b7b789c6a4150c37a98a5b117c'
        'dbfe5c1aaea94419305c1f8c9b54b94eab515260910f2309360ff702a27032faa34514e70b31adbb1e41bd912d4e43a610939cb07565f43e05dd19813a81752e'
        'c47de7abb7292e1e8cc3bb31fc4212f1fab0d5019d02062ef687c60079e1de2fb4ad2d8a64658528d1151900566baa51c6513039e8545f7fddc0917007ff7003'
        'fc924345d5dab10f1ae328bca3cf1053ddff557e074a6e6dff771bd813b93838980ed5d0f20d3a0584cbd1994332fcacc8a6b0e98f7aa376139198ea6a4d6f5a'
        'ca275ade6a7132d316a4d1ffd401c9bfc6de691c58531385d85087c4d50723aeacb5b4bc7abef0165b4fb3cbed146a0fefd9dae4c99c1547f61618798a772d29'
        'SKIP'
        'fec52c475b8126774290eab7a514f8145ae51edab150d413c09f5540719c9578fe1cb99987b6190a9cd82bd947e059c32e740a03d26e9d472af51356cafd8a32'
        'SKIP'
        '6bb6f6679726d65f95c11b4ac1fb0729eaebfeef02de06e9fda4e3ac2bb3d328cc6f7fd6e29976a0907390ed6709cd5a0a6046682acbed73eb0470143bf144e1'
        'SKIP'
        '6f3dcb7ca264868b235e25296b778152383e0f728a87f462fafb30d3c3e0334f8ac8bd862ed82e117641b34f4bd5bbb89ff118462f8a4d716049b651e6c4b0a6'
        'SKIP'
        '792a8f489f36537da9ac1c986ceeed99465cca1740a865c15f8c4942afcc9ee413117f789e18f13daeacd94079425ce0089edbfd4f9f30af56bec0ed15a02dc4'
        'SKIP'
        '92e1cac8784c463f143a1bbad088cb6a4451ef5d864f04205831ffe8835b3d5723e4bfc3ca864a77074afcdb14f627c728f796cb85c050c21916c16d1f990f18'
        'SKIP'
        '5939ba2b3e0dbd83ecb51b47e71f35e32e7647fad1bedf0f00b73cc279b91de977b1cae7314b87483f62cbc0888a739b39528f0ca882a26bc81cc9b9898336e3'
        'SKIP'
        '7ebe5ac77d3697da01ad7beb88a8fdaeac3ac2fb671cc5151ce10428044b4f5fd7ea13e35c91eef1a7d6027f9053a57a27864d5f6a935d48d6cd2be6a9239233'
        'SKIP'
        '09ddf6b605d409142a4107bd52c8b48a91a225d65b867b5074c8b5359d0b1012d2f50e54d1d5636b3413431cf4840d6bd34f9c84f062f3ead96eeaf912127532'
        'SKIP'
        '0ca1df76a06c59dc773e603930747000cfa249219adb79cecb173e36986ccd2b2f49ced66702abbcec25ace05bafc109e23565cd19a202ce05840516d7c3aa70'
        'SKIP'
        '21fe0e08c06257ea415c4ff697a44251460eb636667300cbb3946c77bbbdb67c667fd20bd561bb7635ee3917b13d0860234c6c159d786542e8403e7cedeba986'
        'SKIP'
        'bb3e4ef57170185d3e0be91211632cb5c9a776a71848d2b44a13982bc91f68c2f07ed0aa52b377004f1b872a2b38e5292970d738bdda13fffcd0120c77c4042d'
        'SKIP'
        '133ee6faf3e62fa5f8b99aafef114fc2038dfa96bad769bf9ab2f7129d5d52f19d7d3ca1b3e7ac1d12c883ed276ac06b832c61f5aea134de184a6e3bb95cf4fa'
        'SKIP'
        'cb525fe154e792c467e06f0d930a09466f6f3cf5a688bf13abd7bbb64410f93f6c797e186609f9540c64355d5fd78d0be4473348d948907284bf631f2b60a381'
        'SKIP'
        '5d333c73b891910df4bf13c28fa0cc493dcadadb5c51a240501c5ab450b83673d75baece5c8112b937520cacfc726248ede1d30dba6b60075b88408b585b9f3f'
        'SKIP')

prepare() {
  cd "${pkgname}-${_basever}"
  for (( _p=1; _p<=$((10#${_patchlevel})); _p++ )); do
    local patch="bash${_basever//.}-$(printf "%03d" $_p)"
    patch -Np0 -i ../"${patch}"
  done
  # add patches from gentoo, fixing various upstream reported issues
  # https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash/files
}

build() {
  cd "${pkgname}-${_basever}"

  _bashconfig=(-DDEFAULT_PATH_VALUE=\'\"/usr/local/sbin:/usr/local/bin:/usr/bin\"\'
               -DSTANDARD_UTILS_PATH=\'\"/usr/bin\"\'
               -DSYS_BASHRC=\'\"/etc/bash.bashrc\"\'
               -DSYS_BASH_LOGOUT=\'\"/etc/bash.bash_logout\"\'
               -DNON_INTERACTIVE_LOGIN_SHELLS
               -std=gnu17)
  export CFLAGS="${CFLAGS} ${_bashconfig[@]}"
  export CFLAGS="${CFLAGS} -fprofile-generate -fprofile-update=atomic -fprofile-partial-training"

    ./configure \
        --prefix=/usr \
        --with-curses \
        --enable-readline \
        --without-bash-malloc \
        --with-installed-readline
    make
    make -C examples/loadables all others
    make -k check

    export CFLAGS="${CFLAGS//-fprofile-generate/}"
    export CFLAGS="${CFLAGS//-fprofile-update=atomic/}"

    export CFLAGS="${CFLAGS} -fprofile-use"

    make clean
    ./configure \
        --prefix=/usr \
        --with-curses \
        --enable-readline \
        --without-bash-malloc \
        --with-installed-readline
    make

}

check() {
  make -C "${pkgname}-${_basever}" check
}

package() {
  make -C "${pkgname}-${_basever}" DESTDIR="$pkgdir" install
  ln -s bash "${pkgdir}/usr/bin/sh"
  ln -s bash "${pkgdir}/usr/bin/rbash"

  # system-wide configuration files
  install -Dm644 system.bashrc "${pkgdir}/etc/bash.bashrc"
  install -Dm644 system.bash_logout "${pkgdir}/etc/bash.bash_logout"

  # user configuration file skeletons
  install -dm755 "${pkgdir}/etc/skel/"
  install -m644 dot.bashrc "${pkgdir}/etc/skel/.bashrc"
  install -m644 dot.bash_profile "${pkgdir}/etc/skel/.bash_profile"
  install -m644 dot.bash_logout "${pkgdir}/etc/skel/.bash_logout"
}

