eclass/subversion: Sync with gentoo

It's from gentoo commit e287fa31d05df719242ccdc9a4efe3a73adf22cb.
This commit is contained in:
Krzesimir Nowak 2022-03-09 18:03:15 +01:00
parent 810eb3ef34
commit e7ecc8d32f

View File

@ -1,4 +1,4 @@
# Copyright 1999-2017 Gentoo Foundation # Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
# @ECLASS: subversion.eclass # @ECLASS: subversion.eclass
@ -6,37 +6,32 @@
# Akinori Hattori <hattya@gentoo.org> # Akinori Hattori <hattya@gentoo.org>
# @AUTHOR: # @AUTHOR:
# Original Author: Akinori Hattori <hattya@gentoo.org> # Original Author: Akinori Hattori <hattya@gentoo.org>
# @SUPPORTED_EAPIS: 0 1 2 3 4 5 6 # @SUPPORTED_EAPIS: 6 7 8
# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories # @BLURB: Fetch software sources from subversion repositories
# @DESCRIPTION: # @DESCRIPTION:
# The subversion eclass provides functions to fetch, patch and bootstrap # The subversion eclass provides functions to fetch software sources
# software sources from subversion repositories. # from subversion repositories.
inherit eutils
ESVN="${ECLASS}" ESVN="${ECLASS}"
case "${EAPI:-0}" in case ${EAPI} in
0|1) 6|7|8) inherit estack ;;
EXPORT_FUNCTIONS src_unpack pkg_preinst *) die "${ESVN}: EAPI ${EAPI:-0} is not supported" ;;
DEPEND="dev-vcs/subversion"
;;
2|3|4|5)
EXPORT_FUNCTIONS src_unpack src_prepare pkg_preinst
DEPEND="|| ( dev-vcs/subversion[http] dev-vcs/subversion[webdav-neon] dev-vcs/subversion[webdav-serf] )"
;;
6)
EXPORT_FUNCTIONS src_unpack pkg_preinst
DEPEND="|| ( dev-vcs/subversion[http] dev-vcs/subversion[webdav-neon] dev-vcs/subversion[webdav-serf] )"
;;
*)
die "EAPI ${EAPI} is not supported in subversion.eclass"
;;
esac esac
DEPEND+=" net-misc/rsync" PROPERTIES+=" live"
DEPEND="
dev-vcs/subversion[http(+)]
net-misc/rsync"
case ${EAPI} in
6) ;;
*) BDEPEND="${DEPEND}"; DEPEND="" ;;
esac
# @ECLASS-VARIABLE: ESVN_STORE_DIR # @ECLASS-VARIABLE: ESVN_STORE_DIR
# @USER_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# subversion sources store directory. Users may override this in /etc/portage/make.conf # subversion sources store directory. Users may override this in /etc/portage/make.conf
[[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src" [[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src"
@ -66,7 +61,7 @@ ESVN_OPTIONS="${ESVN_OPTIONS:-}"
# @DESCRIPTION: # @DESCRIPTION:
# repository uri # repository uri
# #
# e.g. http://foo/trunk, svn://bar/trunk, svn://bar/branch/foo@1234 # e.g. http://example.org/trunk, svn://example.org/branch/foo@1234
# #
# supported URI schemes: # supported URI schemes:
# http:// # http://
@ -121,24 +116,6 @@ ESVN_PASSWORD="${ESVN_PASSWORD:-}"
# default: ${PN/-svn}. # default: ${PN/-svn}.
ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}" ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}"
# @ECLASS-VARIABLE: ESVN_BOOTSTRAP
# @DESCRIPTION:
# Bootstrap script or command like autogen.sh or etc..
# Removed in EAPI 6 and later.
ESVN_BOOTSTRAP="${ESVN_BOOTSTRAP:-}"
# @ECLASS-VARIABLE: ESVN_PATCHES
# @DESCRIPTION:
# subversion eclass can apply patches in subversion_bootstrap().
# you can use regexp in this variable like *.diff or *.patch or etc.
# NOTE: patches will be applied before ESVN_BOOTSTRAP is processed.
#
# Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either
# location, the installation dies.
#
# Removed in EAPI 6 and later, use PATCHES instead.
ESVN_PATCHES="${ESVN_PATCHES:-}"
# @ECLASS-VARIABLE: ESVN_RESTRICT # @ECLASS-VARIABLE: ESVN_RESTRICT
# @DESCRIPTION: # @DESCRIPTION:
# this should be a space delimited list of subversion eclass features to # this should be a space delimited list of subversion eclass features to
@ -148,6 +125,8 @@ ESVN_PATCHES="${ESVN_PATCHES:-}"
ESVN_RESTRICT="${ESVN_RESTRICT:-}" ESVN_RESTRICT="${ESVN_RESTRICT:-}"
# @ECLASS-VARIABLE: ESVN_OFFLINE # @ECLASS-VARIABLE: ESVN_OFFLINE
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION: # @DESCRIPTION:
# Set this variable to a non-empty value to disable the automatic updating of # Set this variable to a non-empty value to disable the automatic updating of
# an svn source tree. This is intended to be set outside the subversion source # an svn source tree. This is intended to be set outside the subversion source
@ -155,6 +134,7 @@ ESVN_RESTRICT="${ESVN_RESTRICT:-}"
ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}" ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}"
# @ECLASS-VARIABLE: ESVN_UMASK # @ECLASS-VARIABLE: ESVN_UMASK
# @USER_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# Set this variable to a custom umask. This is intended to be set by users. # Set this variable to a custom umask. This is intended to be set by users.
# By setting this to something like 002, it can make life easier for people # By setting this to something like 002, it can make life easier for people
@ -165,6 +145,7 @@ ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}"
ESVN_UMASK="${ESVN_UMASK:-${EVCS_UMASK}}" ESVN_UMASK="${ESVN_UMASK:-${EVCS_UMASK}}"
# @ECLASS-VARIABLE: ESVN_UP_FREQ # @ECLASS-VARIABLE: ESVN_UP_FREQ
# @USER_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# Set the minimum number of hours between svn up'ing in any given svn module. This is particularly # Set the minimum number of hours between svn up'ing in any given svn module. This is particularly
# useful for split KDE ebuilds where we want to ensure that all submodules are compiled for the same # useful for split KDE ebuilds where we want to ensure that all submodules are compiled for the same
@ -172,6 +153,7 @@ ESVN_UMASK="${ESVN_UMASK:-${EVCS_UMASK}}"
ESVN_UP_FREQ="${ESVN_UP_FREQ:=}" ESVN_UP_FREQ="${ESVN_UP_FREQ:=}"
# @ECLASS-VARIABLE: ESCM_LOGDIR # @ECLASS-VARIABLE: ESCM_LOGDIR
# @USER_VARIABLE
# @DESCRIPTION: # @DESCRIPTION:
# User configuration variable. If set to a path such as e.g. /var/log/scm any # User configuration variable. If set to a path such as e.g. /var/log/scm any
# package inheriting from subversion.eclass will record svn revision to # package inheriting from subversion.eclass will record svn revision to
@ -362,50 +344,6 @@ subversion_fetch() {
echo echo
} }
# @FUNCTION: subversion_bootstrap
# @DESCRIPTION:
# Apply patches in ${ESVN_PATCHES} and run ${ESVN_BOOTSTRAP} if specified.
# Removed in EAPI 6 and later.
subversion_bootstrap() {
[[ ${EAPI} == [012345] ]] || die "${FUNCNAME} is removed from subversion.eclass in EAPI 6 and later"
if has "export" ${ESVN_RESTRICT}; then
return
fi
cd "${S}"
if [[ -n ${ESVN_PATCHES} ]]; then
local patch fpatch
einfo "apply patches -->"
for patch in ${ESVN_PATCHES}; do
if [[ -f ${patch} ]]; then
epatch "${patch}"
else
for fpatch in ${FILESDIR}/${patch}; do
if [[ -f ${fpatch} ]]; then
epatch "${fpatch}"
else
die "${ESVN}: ${patch} not found"
fi
done
fi
done
echo
fi
if [[ -n ${ESVN_BOOTSTRAP} ]]; then
einfo "begin bootstrap -->"
if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
else
einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
fi
fi
}
# @FUNCTION: subversion_wc_info # @FUNCTION: subversion_wc_info
# @USAGE: [repo_uri] # @USAGE: [repo_uri]
# @RETURN: ESVN_WC_URL, ESVN_WC_ROOT, ESVN_WC_UUID, ESVN_WC_REVISION and ESVN_WC_PATH # @RETURN: ESVN_WC_URL, ESVN_WC_ROOT, ESVN_WC_UUID, ESVN_WC_REVISION and ESVN_WC_PATH
@ -434,21 +372,9 @@ subversion_wc_info() {
# @FUNCTION: subversion_src_unpack # @FUNCTION: subversion_src_unpack
# @DESCRIPTION: # @DESCRIPTION:
# Default src_unpack. Fetch and, in older EAPIs, bootstrap. # Default src_unpack. Fetch.
subversion_src_unpack() { subversion_src_unpack() {
subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch." subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
if has "${EAPI:-0}" 0 1; then
subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
fi
}
# @FUNCTION: subversion_src_prepare
# @DESCRIPTION:
# Default src_prepare. Bootstrap.
# Removed in EAPI 6 and later.
subversion_src_prepare() {
[[ ${EAPI} == [012345] ]] || die "${FUNCNAME} is removed from subversion.eclass in EAPI 6 and later"
subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
} }
# @FUNCTION: subversion_pkg_preinst # @FUNCTION: subversion_pkg_preinst
@ -458,10 +384,9 @@ subversion_src_prepare() {
# want the logs to stick around if packages are uninstalled without messing with # want the logs to stick around if packages are uninstalled without messing with
# config protection. # config protection.
subversion_pkg_preinst() { subversion_pkg_preinst() {
has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}"
local pkgdate=$(date "+%Y%m%d %H:%M:%S") local pkgdate=$(date "+%Y%m%d %H:%M:%S")
if [[ -n ${ESCM_LOGDIR} ]]; then if [[ -n ${ESCM_LOGDIR} ]]; then
local dir="${EROOT}/${ESCM_LOGDIR}/${CATEGORY}" local dir="${EROOT%/}${ESCM_LOGDIR}/${CATEGORY}"
if [[ ! -d ${dir} ]]; then if [[ ! -d ${dir} ]]; then
mkdir -p "${dir}" || eerror "Failed to create '${dir}' for logging svn revision" mkdir -p "${dir}" || eerror "Failed to create '${dir}' for logging svn revision"
fi fi
@ -538,3 +463,5 @@ subversion__get_peg_revision() {
echo "${peg_rev}" echo "${peg_rev}"
} }
EXPORT_FUNCTIONS src_unpack pkg_preinst