Hello,
I'm sending this patch for discussion, what it changes? The change is to where
the final clone of repository will be placed, it used to be ${WORKDIR}/${module}
(where module usually is the last component of source URI) to ${WORKDIR}/${P}
(essentially ${S}). This has few effects:
- ebuilds using mercurial.eclass don't need to set S any longer
- mercurial.eclass behaves more like git.eclass
- it breaks all existing ebuilds using this eclassThe last effect is really, really nasty :( At the same time I think it's worth fixing this now, not when we have even more ebuilds using mercurial.eclass. Thankfully the fix to this is trivial: just remove the line where S is being set (or adjust it to match as is in case of one ebuild in the tree). Following ebuilds in tree use mercurial.eclass: dev-python/django-piston/django-piston-9999.ebuild dev-vcs/mercurial/mercurial-9999.ebuild media-radio/radiotray/radiotray-9999.ebuild media-tv/v4l-dvb-hg/v4l-dvb-hg-0.1-r3.ebuild media-tv/v4l-dvb-hg/v4l-dvb-hg-0.1-r2.ebuild www-client/dillo/dillo-9999.ebuild x11-misc/sselp/sselp-9999.ebuild x11-wm/parti/parti-9999.ebuild If there are no objections my plan is as follows: - in a week commit the change to eclass - fix all above ebuilds - send a small announcement to gentoo-dev-announcement Bug: https://bugs.gentoo.org/343993 -- Krzysztof Pawlik <nelchael at gentoo.org> key id: 0xF6A80E46 desktop-misc, java, vim, kernel, python, apache...
Index: mercurial.eclass
===================================================================
RCS file: /var/cvsroot/gentoo-x86/eclass/mercurial.eclass,v
retrieving revision 1.14
diff -u -r1.14 mercurial.eclass
--- mercurial.eclass 26 Oct 2010 19:04:44 -0000 1.14
+++ mercurial.eclass 6 Nov 2010 09:05:37 -0000
@@ -68,12 +68,14 @@
EHG_OFFLINE="${EHG_OFFLINE:-${ESCM_OFFLINE}}"
# @FUNCTION: mercurial_fetch
-# @USAGE: [repository_uri] [module]
+# @USAGE: [repository_uri] [module] [workdir]
# @DESCRIPTION:
# Clone or update repository.
#
-# If not repository URI is passed it defaults to EHG_REPO_URI, if module is
-# empty it defaults to basename of EHG_REPO_URI.
+# If repository URI is not passed it defaults to EHG_REPO_URI, if module is
+# empty it defaults to basename of EHG_REPO_URI, workdir defaults to P. workdir
+# argument is a directory name under WORKDIR where sources will be available.
If
+# you change workdir note that you will need to adjust S to match.
function mercurial_fetch {
debug-print-function ${FUNCNAME} ${*}
@@ -81,6 +83,7 @@
[[ -z "${EHG_REPO_URI}" ]] && die "EHG_REPO_URI is empty"
local module="${2-$(basename "${EHG_REPO_URI}")}"
+ local workdir="${3-${P}}"
# Should be set but blank to prevent using $HOME/.hgrc
export HGRCPATH=
@@ -116,19 +119,19 @@
fi
# Checkout working copy:
- einfo "Creating working directory in ${WORKDIR}/${module} (target
revision: ${EHG_REVISION})"
+ einfo "Creating working directory in ${WORKDIR}/${workdir} (target
revision: ${EHG_REVISION})"
hg clone \
${EHG_QUIET_CMD_OPT} \
--rev="${EHG_REVISION}" \
"${EHG_STORE_DIR}/${EHG_PROJECT}/${module}" \
- "${WORKDIR}/${module}" || die "hg clone failed"
+ "${WORKDIR}/${workdir}" || die "hg clone failed"
# An exact revision helps a lot for testing purposes, so have some
output...
# id num branch
# fd6e32d61721 6276 default
- local HG_REVDATA=($(hg identify -b -i "${WORKDIR}/${module}"))
+ local HG_REVDATA=($(hg identify -b -i "${WORKDIR}/${workdir}"))
export HG_REV_ID=${HG_REVDATA[0]}
local HG_REV_BRANCH=${HG_REVDATA[1]}
- einfo "Work directory: ${WORKDIR}/${module} global id: ${HG_REV_ID}
branch: ${HG_REV_BRANCH}"
+ einfo "Work directory: ${WORKDIR}/${workdir} global id: ${HG_REV_ID}
branch: ${HG_REV_BRANCH}"
}
# @FUNCTION: mercurial_src_unpack
signature.asc
Description: OpenPGP digital signature
