diff --git a/sdk_container/src/third_party/portage-stable/eclass/subversion.eclass b/sdk_container/src/third_party/portage-stable/eclass/subversion.eclass index 8b12382a64..7a787a438a 100644 --- a/sdk_container/src/third_party/portage-stable/eclass/subversion.eclass +++ b/sdk_container/src/third_party/portage-stable/eclass/subversion.eclass @@ -1,4 +1,4 @@ -# Copyright 1999-2022 Gentoo Authors +# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: subversion.eclass @@ -6,58 +6,54 @@ # Akinori Hattori # @AUTHOR: # Original Author: Akinori Hattori -# @SUPPORTED_EAPIS: 6 7 8 +# @SUPPORTED_EAPIS: 7 8 # @BLURB: Fetch software sources from subversion repositories # @DESCRIPTION: # The subversion eclass provides functions to fetch software sources # from subversion repositories. -ESVN="${ECLASS}" - case ${EAPI} in - 6|7|8) inherit estack ;; - *) die "${ESVN}: EAPI ${EAPI:-0} is not supported" ;; + 7|8) inherit estack ;; + *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;; esac +if [[ -z ${_SUBVERSION_ECLASS} ]]; then +_SUBVERSION_ECLASS=1 + PROPERTIES+=" live" -DEPEND=" +BDEPEND=" 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: # 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" -# @ECLASS-VARIABLE: ESVN_FETCH_CMD +# @ECLASS_VARIABLE: ESVN_FETCH_CMD # @DESCRIPTION: # subversion checkout command ESVN_FETCH_CMD="svn checkout" -# @ECLASS-VARIABLE: ESVN_UPDATE_CMD +# @ECLASS_VARIABLE: ESVN_UPDATE_CMD # @DESCRIPTION: # subversion update command ESVN_UPDATE_CMD="svn update" -# @ECLASS-VARIABLE: ESVN_SWITCH_CMD +# @ECLASS_VARIABLE: ESVN_SWITCH_CMD # @DESCRIPTION: # subversion switch command ESVN_SWITCH_CMD="svn switch" -# @ECLASS-VARIABLE: ESVN_OPTIONS +# @ECLASS_VARIABLE: ESVN_OPTIONS # @DESCRIPTION: # the options passed to checkout or update. If you want a specific revision see # ESVN_REPO_URI instead of using -rREV. ESVN_OPTIONS="${ESVN_OPTIONS:-}" -# @ECLASS-VARIABLE: ESVN_REPO_URI +# @ECLASS_VARIABLE: ESVN_REPO_URI # @DESCRIPTION: # repository uri # @@ -73,7 +69,7 @@ ESVN_OPTIONS="${ESVN_OPTIONS:-}" # to peg to a specific revision, append @REV to the repo's uri ESVN_REPO_URI="${ESVN_REPO_URI:-}" -# @ECLASS-VARIABLE: ESVN_REVISION +# @ECLASS_VARIABLE: ESVN_REVISION # @DESCRIPTION: # User configurable revision checkout or update to from the repository # @@ -83,17 +79,17 @@ ESVN_REPO_URI="${ESVN_REPO_URI:-}" # Note: This should never be set in an ebuild! ESVN_REVISION="${ESVN_REVISION:-}" -# @ECLASS-VARIABLE: ESVN_USER +# @ECLASS_VARIABLE: ESVN_USER # @DESCRIPTION: # User name ESVN_USER="${ESVN_USER:-}" -# @ECLASS-VARIABLE: ESVN_PASSWORD +# @ECLASS_VARIABLE: ESVN_PASSWORD # @DESCRIPTION: # Password ESVN_PASSWORD="${ESVN_PASSWORD:-}" -# @ECLASS-VARIABLE: ESVN_PROJECT +# @ECLASS_VARIABLE: ESVN_PROJECT # @DESCRIPTION: # project name of your ebuild (= name space) # @@ -116,7 +112,7 @@ ESVN_PASSWORD="${ESVN_PASSWORD:-}" # default: ${PN/-svn}. ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}" -# @ECLASS-VARIABLE: ESVN_RESTRICT +# @ECLASS_VARIABLE: ESVN_RESTRICT # @DESCRIPTION: # this should be a space delimited list of subversion eclass features to # restrict. @@ -124,7 +120,7 @@ ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}" # don't export the working copy to S. ESVN_RESTRICT="${ESVN_RESTRICT:-}" -# @ECLASS-VARIABLE: ESVN_OFFLINE +# @ECLASS_VARIABLE: ESVN_OFFLINE # @USER_VARIABLE # @DEFAULT_UNSET # @DESCRIPTION: @@ -133,7 +129,7 @@ ESVN_RESTRICT="${ESVN_RESTRICT:-}" # tree by users. ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}" -# @ECLASS-VARIABLE: ESVN_UMASK +# @ECLASS_VARIABLE: ESVN_UMASK # @USER_VARIABLE # @DESCRIPTION: # Set this variable to a custom umask. This is intended to be set by users. @@ -144,15 +140,15 @@ ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}" # already can screw the system over in more creative ways. ESVN_UMASK="${ESVN_UMASK:-${EVCS_UMASK}}" -# @ECLASS-VARIABLE: ESVN_UP_FREQ +# @ECLASS_VARIABLE: ESVN_UP_FREQ # @USER_VARIABLE # @DESCRIPTION: # 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 -# revision. It should also be kept user overrideable. +# revision. It should also be kept user overridable. ESVN_UP_FREQ="${ESVN_UP_FREQ:=}" -# @ECLASS-VARIABLE: ESCM_LOGDIR +# @ECLASS_VARIABLE: ESCM_LOGDIR # @USER_VARIABLE # @DESCRIPTION: # User configuration variable. If set to a path such as e.g. /var/log/scm any @@ -176,10 +172,10 @@ subversion_fetch() { local S_dest="${2}" if [[ -z ${repo_uri} ]]; then - die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty." + die "${ECLASS}: ESVN_REPO_URI (or specified URI) is empty." fi - [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}" + [[ -n ${ESVN_REVISION} ]] && revision="${ESVN_REVISION}" # check for the scheme local scheme="${repo_uri%%:*}" @@ -191,30 +187,30 @@ subversion_fetch() { file) ;; *) - die "${ESVN}: fetch from '${scheme}' is not yet implemented." + die "${ECLASS}: fetch from '${scheme}' is not yet implemented." ;; esac addread "/etc/subversion" addwrite "${ESVN_STORE_DIR}" - if [[ -n "${ESVN_UMASK}" ]]; then + if [[ -n ${ESVN_UMASK} ]]; then eumask_push "${ESVN_UMASK}" fi if [[ ! -d ${ESVN_STORE_DIR} ]]; then debug-print "${FUNCNAME}: initial checkout. creating subversion directory" - mkdir -m 775 -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}." + mkdir -m 775 -p "${ESVN_STORE_DIR}" || die "${ECLASS}: can't mkdir ${ESVN_STORE_DIR}." fi - pushd "${ESVN_STORE_DIR}" >/dev/null || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}" + pushd "${ESVN_STORE_DIR}" >/dev/null || die "${ECLASS}: can't chdir to ${ESVN_STORE_DIR}" local wc_path="$(subversion__get_wc_path "${repo_uri}")" local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion" - [[ -n "${revision}" ]] && options="${options} -r ${revision}" + [[ -n ${revision} ]] && options="${options} -r ${revision}" - if [[ "${ESVN_OPTIONS}" = *-r* ]]; then + if [[ ${ESVN_OPTIONS} == *-r* ]]; then ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please" ewarn "see \${ESVN_REPO_URI}" fi @@ -237,32 +233,32 @@ subversion_fetch() { debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}" - mkdir -m 775 -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}." - cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}" - if [[ -n "${ESVN_USER}" ]]; then - ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}." + mkdir -m 775 -p "${ESVN_PROJECT}" || die "${ECLASS}: can't mkdir ${ESVN_PROJECT}." + cd "${ESVN_PROJECT}" || die "${ECLASS}: can't chdir to ${ESVN_PROJECT}" + if [[ -n ${ESVN_USER} ]]; then + ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ECLASS}: can't fetch to ${wc_path} from ${repo_uri}." else - ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}." + ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ECLASS}: can't fetch to ${wc_path} from ${repo_uri}." fi elif [[ -n ${ESVN_OFFLINE} ]]; then svn upgrade "${wc_path}" &>/dev/null svn cleanup "${wc_path}" &>/dev/null - subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." + subversion_wc_info "${repo_uri}" || die "${ECLASS}: unknown problem occurred while accessing working copy." if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then - die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally." + die "${ECLASS}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally." fi einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}." else svn upgrade "${wc_path}" &>/dev/null svn cleanup "${wc_path}" &>/dev/null - subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." + subversion_wc_info "${repo_uri}" || die "${ECLASS}: unknown problem occurred while accessing working copy." local esvn_up_freq= if [[ -n ${ESVN_UP_FREQ} ]]; then if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then - die "${ESVN}: ESVN_UP_FREQ must be an integer value corresponding to the minimum number of hours between svn up." + die "${ECLASS}: ESVN_UP_FREQ must be an integer value corresponding to the minimum number of hours between svn up." elif [[ -z $(find "${wc_path}/.svn/entries" -mmin "+$((ESVN_UP_FREQ*60))") ]]; then einfo "Fetching disabled since ${ESVN_UP_FREQ} hours has not passed since last update." einfo "Using existing repository copy at revision ${ESVN_WC_REVISION}." @@ -278,16 +274,16 @@ subversion_fetch() { einfo " new UUID: $(subversion__svn_info "${repo_uri}" "Repository UUID")" einfo " repository: ${repo_uri}${revision:+@}${revision}" - rm -fr "${ESVN_PROJECT}" || die + rm -rf "${ESVN_PROJECT}" || die debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}" - mkdir -m 775 -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}." - cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}" - if [[ -n "${ESVN_USER}" ]]; then - ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}." + mkdir -m 775 -p "${ESVN_PROJECT}" || die "${ECLASS}: can't mkdir ${ESVN_PROJECT}." + cd "${ESVN_PROJECT}" || die "${ECLASS}: can't chdir to ${ESVN_PROJECT}" + if [[ -n ${ESVN_USER} ]]; then + ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ECLASS}: can't fetch to ${wc_path} from ${repo_uri}." else - ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}." + ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ECLASS}: can't fetch to ${wc_path} from ${repo_uri}." fi elif [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then einfo "subversion switch start -->" @@ -296,11 +292,11 @@ subversion_fetch() { debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}" - cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}" - if [[ -n "${ESVN_USER}" ]]; then - ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}." + cd "${wc_path}" || die "${ECLASS}: can't chdir to ${wc_path}" + if [[ -n ${ESVN_USER} ]]; then + ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ECLASS}: can't update ${wc_path} from ${repo_uri}." else - ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}." + ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ECLASS}: can't update ${wc_path} from ${repo_uri}." fi else # update working copy @@ -309,35 +305,35 @@ subversion_fetch() { debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}" - cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}" - if [[ -n "${ESVN_USER}" ]]; then - ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ESVN}: can't update ${wc_path} from ${repo_uri}." + cd "${wc_path}" || die "${ECLASS}: can't chdir to ${wc_path}" + if [[ -n ${ESVN_USER} ]]; then + ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ECLASS}: can't update ${wc_path} from ${repo_uri}." else - ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}." + ${ESVN_UPDATE_CMD} ${options} || die "${ECLASS}: can't update ${wc_path} from ${repo_uri}." fi fi # export updated information for the working copy - subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." + subversion_wc_info "${repo_uri}" || die "${ECLASS}: unknown problem occurred while accessing working copy." fi fi - if [[ -n "${ESVN_UMASK}" ]]; then + if [[ -n ${ESVN_UMASK} ]]; then eumask_pop fi einfo " working copy: ${wc_path}" if ! has "export" ${ESVN_RESTRICT}; then - cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}" + cd "${wc_path}" || die "${ECLASS}: can't chdir to ${wc_path}" local S="${S}/${S_dest}" mkdir -p "${S}" # export to the ${WORKDIR} #* "svn export" has a bug. see https://bugs.gentoo.org/119236 - #* svn export . "${S}" || die "${ESVN}: can't export to ${S}." - rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}." + #* svn export . "${S}" || die "${ECLASS}: can't export to ${S}." + rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ECLASS}: can't export to ${S}." fi popd >/dev/null @@ -374,7 +370,7 @@ subversion_wc_info() { # @DESCRIPTION: # Default src_unpack. Fetch. subversion_src_unpack() { - subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch." + subversion_fetch || die "${ECLASS}: unknown problem occurred in subversion_fetch." } # @FUNCTION: subversion_pkg_preinst @@ -386,7 +382,7 @@ subversion_src_unpack() { subversion_pkg_preinst() { local pkgdate=$(date "+%Y%m%d %H:%M:%S") if [[ -n ${ESCM_LOGDIR} ]]; then - local dir="${EROOT%/}${ESCM_LOGDIR}/${CATEGORY}" + local dir="${EROOT}${ESCM_LOGDIR}/${CATEGORY}" if [[ ! -d ${dir} ]]; then mkdir -p "${dir}" || eerror "Failed to create '${dir}' for logging svn revision" fi @@ -401,11 +397,9 @@ subversion_pkg_preinst() { ## -- Private Functions -## -- subversion__svn_info() ------------------------------------------------- # -# -# param $1 - a target. -# param $2 - a key name. -# +# @FUNCTION: subversion__svn_info +# @USAGE: +# @INTERNAL subversion__svn_info() { local target="${1}" local key="${2}" @@ -415,15 +409,15 @@ subversion__svn_info() { | cut -d" " -f2- } -## -- subversion__get_repository_uri() --------------------------------------- # -# -# param $1 - a repository URI. +# @FUNCTION: subversion__get_repository_uri +# @USAGE: +# @INTERNAL subversion__get_repository_uri() { local repo_uri="${1}" debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" if [[ -z ${repo_uri} ]]; then - die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty." + die "${ECLASS}: ESVN_REPO_URI (or specified URI) is empty." fi # delete trailing slash if [[ -z ${repo_uri##*/} ]]; then @@ -434,9 +428,9 @@ subversion__get_repository_uri() { echo "${repo_uri}" } -## -- subversion__get_wc_path() ---------------------------------------------- # -# -# param $1 - a repository URI. +# @FUNCTION: subversion__get_wc_path +# @USAGE: +# @INTERNAL subversion__get_wc_path() { local repo_uri="$(subversion__get_repository_uri "${1}")" @@ -445,16 +439,16 @@ subversion__get_wc_path() { echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}" } -## -- subversion__get_peg_revision() ----------------------------------------- # -# -# param $1 - a repository URI. +# @FUNCTION: subversion__get_peg_revision +# @USAGE: +# @INTERNAL subversion__get_peg_revision() { local repo_uri="${1}" local peg_rev= debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" # repo_uri has peg revision? - if [[ ${repo_uri} = *@* ]]; then + if [[ ${repo_uri} == *@* ]]; then peg_rev="${repo_uri##*@}" debug-print "${FUNCNAME}: peg_rev = ${peg_rev}" else @@ -464,4 +458,6 @@ subversion__get_peg_revision() { echo "${peg_rev}" } +fi + EXPORT_FUNCTIONS src_unpack pkg_preinst