# Maintainer: bill-auger <bill-auger@programmer.net>
# Contributor: Felix Yan <felixonmars@archlinux.org>
# Contributor: Eli Schwartz <eschwartz@archlinux.org>

# parabola changes and rationale:
# - no libre changes
# - in libre because it is a dependency of 'parabola-laf'


pkgname=(qt5-styleplugins)
pkgver=5.0.0.20170311
_commit=335dbece103e2cbf6c7cf819ab6672c2956b17b3 # unreleased master branch tip
pkgdesc='Additional style plugins for Qt5'
pkgrel=32
arch=(armv7h i686 x86_64)
url="https://github.com/qt/qtstyleplugins"
license=('LGPL')
depends=('qt5-base' 'gtk2')
source=(
    "${pkgname}-${_commit}.tar.gz::${url}/archive/${_commit}.tar.gz"
    "0001-fix-build-against-Qt-5.15.patch"
    "0002-fix-gtk2-background.patch"
)
sha512sums=(
    'e8c2d0e9c6b0a47cab04ffd2e9384606638905b63a7c1580f9b629bbcc84ebff19743363ffee3dbd31c3de1dcda684211ad3052932b5aa0081e529afd9cbb14d'
    'f5cedadceb7c4243ba69b5041c6c524223ce742ec9c2c483e706f31e32e9e03e4efb6ed54fa2aada867a7c0145a8f3ec1193377d177c6c77066b5f3ec191e9ce'
    'c39b468c93eaada7d49df9547627fbf91d50292523566ef93287ce0e958b29e6c3635f6e77ad42c4f449a062cc63b68e9f2a24c89524165649f776d205fb5382'
)


_version_constraint() # (dep_pkgname [precision])
{
  local dep_pkgname=$1
  local req_precision=$2
  local full_version=$(pacman -S --print-format='%v' ${dep_pkgname} | tail -n 1)
  local n_dots=$(tmp=${full_version%-*} ; tmp=${tmp//[^\.]} ; echo "${#tmp}" ;)
  local def_precision=$(( n_dots + 1 ))
  local is_reqprecision_valid=$( [[ "${req_precision}" =~ ^[1-${def_precision}]$ ]] && echo 1 || echo 0 )
  local precision=$( (( is_reqprecision_valid )) && echo ${req_precision} || echo ${def_precision} )
  local pkgver_rx='[^-\.\ ]+'
  local subver_rx='\.'${pkgver_rx}
  local pkgrel_rx='[^-\ ]+'
  local capture_rx=${pkgver_rx}
  for (( n_dots=1 ; n_dots < precision ; ++n_dots )) ; do capture_rx+=${subver_rx} ; done ;

  if   [[ "${full_version}" =~ ^(${capture_rx})(${subver_rx})*-(${pkgrel_rx})$ ]]
  then local version=${BASH_REMATCH[1]}
       local pkgrel=${BASH_REMATCH[3]%%.*}
       local subver_inc=$(( ${version##*.} + 1 ))
       local pkgrel_inc=$(( pkgrel + 1 ))
       local version_min=$(   (( ! is_reqprecision_valid )) && echo ${full_version%-*}-${pkgrel} || \
                                                               echo ${version}                      )
       local version_max=$( ( (( ! is_reqprecision_valid )) && echo ${full_version%-*}-${pkgrel_inc} ) || \
                            ( [[ "${version}" =~ \.      ]] && echo ${version%.*}.${subver_inc}      ) || \
                                                               echo ${subver_inc}                         )
       local constraint_string="${dep_pkgname}>=${version_min} ${dep_pkgname}<${version_max}"

       echo "applied version constraint: '${constraint_string}'" >&2
       echo -n "${constraint_string}"
  else echo "ERROR: _version_constraint() error parsing: dep_pkgname='${dep_pkgname}' full_version='${full_version}'" >&2
       exit 1
  fi
}

prepare() {
    cd qtstyleplugins-${_commit}

    for p in "$srcdir"/*.patch; do
        patch -p1 < "$p"
    done
}

build() {
    cd qtstyleplugins-${_commit}

    qmake PREFIX='/usr' \
          CONFIG+='nostrip' \
          QMAKE_CFLAGS_RELEASE="$CFLAGS" \
          QMAKE_CXXFLAGS_RELEASE="$CXXFLAGS"
    make
}

package() {
    cd qtstyleplugins-${_commit}

    make INSTALL_ROOT="${pkgdir}" install

    # pin to current 'qt5-base' libs
    local qt5_ver=$(pacman -S --print-format='%v' )
    depends=( ${depends[@]/qt5-base/} )
    depends+=($(_version_constraint 'qt5-base' 3))
}
