HI there! Some time ago I invented patches.eclass, which facilitates my work with patches, and I would like you to express your opinion about it and whether it is worth committing in gentoo repo.
Maybe it’s even worth it to become a helper, but not an eclass, or be bundled somewhere in existing eclasses/helpers. -- Best regards, mva
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: patches.eclass
# @MAINTAINER:
# mva
# @AUTHOR:
# mva
# @BLURB:
# @DESCRIPTION:
# Eclass that checks for patches directories existance and auto-add them into
PATCHES=()
EXPORT_FUNCTIONS src_prepare
patches_src_prepare() {
[[ -z ${PATCHES[@]} ]] && PATCHES=()
PATCHDIR_BASE="${FILESDIR}/patches"
PATCHDIRS=("${CUSTOM_PATCHDIR:-non-existant-dir}" "${SLOT//\/*}"
"${PV}" "${PV}-${PR}")
for PATCHDIR in ${PATCHDIRS[@]/#/${PATCHDIR_BASE}/}; do
if [[ -d "${PATCHDIR}" ]]; then
_patchdir_not_empty() {
local has_files
local LC_ALL=POSIX
local prev_shopt=$(shopt -p nullglob)
shopt -s nullglob
local f
local lvl=${2}
for f in "${1:-${PATCHDIR}}"/*; do
if [[ "${f}" == *.diff || "${f}" ==
*.patch ]] && [[ -f "${f}" || -L "${f}" ]]; then
has_files=1
elif [[ -d "${f}" ]] && [[ "${lvl:-0}"
-eq 0 ]]; then
# limit recursion to first
level only,
# since eapply cannot into
recursion,
# while 2-lvl "conditional"
patching implemented below
let lvl+=1
_patchdir_not_empty "${f}"
"${lvl}" && has_files=1
fi
done
${prev_shopt}
[[ -n "${has_files}" ]]; return $?
}
_patchdir_not_empty && PATCHES+=("${PATCHDIR}")
if [[ -d "${PATCHDIR}/conditional" ]]; then
pushd "${PATCHDIR}/conditional" &>/dev/null
for d in *; do
if [[ -d ${d} ]]; then
if [[ "${d##no-}" == ${d} ]];
then
(use "${d}" &&
_patchdir_not_empty "${d}") && PATCHES+=("${PATCHDIR}/conditional/${d}")
else
(use "${d##no-}" &&
_patchdir_not_empty "${d}") || PATCHES+=("${PATCHDIR}/conditional/${d}")
fi
fi
done
popd &>/dev/null
fi
fi
done
if declare -f cmake-utils_src_prepare &>/dev/null; then
# cmake-utils_src_prepare support (to decrease kludges in the
ebuilds)
cmake-utils_src_prepare
else
default_src_prepare
fi
}
signature.asc
Description: This is a digitally signed message part.
