# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# shellcheck disable=SC2034
EAPI=7
inherit bash-completion-r1 xdg-utils-r1
DESCRIPTION="Phoronix's comprehensive, cross-platform testing and benchmark suite"
HOMEPAGE="http://www.phoronix-test-suite.com"
LICENSE="GPL-3"
SLOT="0"
if [[ ${PV} == "9999" ]] ; then
EGIT_REPO_URI="https://github.com/${PN}/${PN}.git"
EGIT3_STORE_DIR="${T}"
inherit git-r3
SRC_URI=""
KEYWORDS=""
else
major_version="$(ver_cut 1-3)"
minor_version="$(ver_cut 4-5)"
MY_PV="${major_version}"
MY_P="${PN}-${MY_PV}"
KEYWORDS="~amd64 ~x86"
if [ ! -z "${minor_version}" ]; then
MY_PV="${MY_PV}${minor_version/pre/m}"
MY_P="${MY_P}${minor_version/pre/m}"
fi
SRC_URI="https://github.com/phoronix-test-suite/${PN}/archive/v${MY_PV}.tar.gz -> ${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"
unset -v minor_version major_version
fi
IUSE="sdl"
DEPEND=""
RDEPEND="${DEPEND}
app-arch/p7zip
media-libs/libpng
>=dev-lang/php-5.3:=[cli,curl,gd,json,posix,pcntl,sockets,ssl,truetype,xml,zip,zlib]
dev-php/fpdf
www-servers/apache
x11-base/xorg-server
sdl? (
media-libs/libsdl
media-libs/sdl-net
media-libs/sdl-image
media-libs/libsdl2
media-libs/sdl2-net
media-libs/sdl2-image
media-libs/sdl2-mixer
)"
check_php_config()
{
local slot
for slot in $(eselect --brief php list cli); do
local php_dir="/etc/php/cli-${slot}"
if [[ -f "${EROOT%/}${php_dir}/php.ini" ]]; then
dodir "${php_dir}"
cp -f "${EROOT%/}${php_dir}/php.ini" "${ED%/}${php_dir}/php.ini" \
|| die "cp failed: copy php.ini file"
sed -i -e 's|^allow_url_fopen .*|allow_url_fopen = On|g' "${ED%/}${php_dir}/php.ini" \
|| die "sed failed: modify php.ini file"
elif [[ "$(eselect php show cli)" == "${slot}" ]]; then
ewarn "${slot} does not have a php.ini file."
ewarn "${PN} needs the 'allow_url_fopen' option set to \"On\""
ewarn "for downloading to work properly."
ewarn
else
elog "${slot} does not have a php.ini file."
elog "${PN} may need the 'allow_url_fopen' option set to \"On\""
elog "for downloading to work properly if you switch to ${slot}"
elog
fi
done
}
get_optional_dependencies()
{
(($# == 1)) || die "${FUNCNAME[0]}(): invalid number of arguments: ${#} (1)"
local -a array_package_names
local field_value ifield package_generic_name optional_packages_xmlline package_names installable_packages=""
local package_close_regexp="" \
package_generic_name_regexp="^.*|.*$" \
package_names_regexp="^.*|.*$"
line=0
while IFS=$'\n' read -r optional_packages_xmlline; do
if [[ "${optional_packages_xmlline}" =~ ${package_generic_name_regexp} ]]; then
package_generic_name="$(echo "${optional_packages_xmlline}" | sed -r "s@${package_generic_name_regexp}@@g")"
elif [[ "${optional_packages_xmlline}" =~ ${package_names_regexp} ]]; then
package_names="$(echo "${optional_packages_xmlline}" | sed -r -e "s@${package_names_regexp}@@g" -e 's@(^[[:blank:]]+|[[:blank:]]+$)$@@g' )"
ifield=0
# shellcheck disable=SC2206
array_package_names=( ${package_names} )
for (( ifield=0 ; ifield < ${#array_package_names[@]} ; ++ifield )); do
field_value="${array_package_names[ifield]}"
[[ ${field_value} =~ ^.+/.+$ ]] || continue # skip invalid package atoms
if ! has_version "${field_value}"; then
installable_packages="${installable_packages}${installable_packages:+ }${field_value}"
fi
done
elif [[ "${optional_packages_xmlline}" =~ ${package_close_regexp} && ! -z "${installable_packages}" ]]; then
ewarn " ${package_generic_name}: ${installable_packages}"
installable_packages=""
fi
done <<< "${1}"
}
src_prepare() {
# BASH completion helper function "have" test is depreciated
sed -i -e '/^have phoronix-test-suite &&$/d' "${S}/pts-core/static/bash_completion" \
|| die "sed failed: remove PTS bash completion have test"
# Remove all dependency resolving shell scripts - security vulnerability
rm -rf "${S}/pts-core/external-test-dependencies/scripts"
eapply_user
}
src_install() {
# Store the contents of this file - since it will be installed / deleted before we need it.
GENTOO_OPTIONAL_PKGS_XML="$(cat "${S}/pts-core/external-test-dependencies/xml/gentoo-packages.xml")"
newbashcomp pts-core/static/bash_completion "${PN}"
DESTDIR="${D}" "${S}/install-sh" "${EPREFIX%/}/usr"
# Fix the cli-php config for downloading to work.
check_php_config
}
pkg_postinst() {
xdg_icon_cache_update
xdg_mimeinfo_database_update
ewarn "${PN} has the following optional package dependencies:"
get_optional_dependencies "${GENTOO_OPTIONAL_PKGS_XML}"
unset -v GENTOO_OPTIONAL_PKGS_XML
}