public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] bzr.eclass changes, please review
@ 2012-09-14  9:01 Ulrich Mueller
  2012-09-14 13:15 ` Rick "Zero_Chaos" Farina
  0 siblings, 1 reply; 5+ messages in thread
From: Ulrich Mueller @ 2012-09-14  9:01 UTC (permalink / raw
  To: gentoo-dev

In bug 434746 it has been suggested that ${WORKDIR} should look like a
bzr branch or checkout. Proposed changes for bzr.eclass are included
below, comprising the following:

- bzr_fetch can optionally call bzr checkout --lightweight instead of
  bzr export. The default behaviour won't change, the new behaviour
  can be enabled with:
- New variable EBZR_WORKDIR_CHECKOUT, (Or can anyone come up with a
  better/shorter name?)
- New variable EBZR_CHECKOUT_CMD.
- The sandbox environment is now always restored; before it was only
  restored if ${EBZR_STORE_DIR} didn't exist. This is to prevent the
  package's build system from writing to ${EBZR_STORE_DIR} when it's
  calling bzr (which wasn't an issue for an export, but could be for
  a checkout).
- Unrelated to the above, some old cleanup code (around line 220) is
  removed.

The updated bzr.eclass is available in the emacs overlay, along with
an app-editors/emacs-vcs ebuild that I've used for testing.

Ulrich


--- bzr.eclass	18 Jul 2012 15:12:54 -0000	1.18
+++ bzr.eclass	14 Sep 2012 08:02:08 -0000
@@ -61,6 +61,11 @@
 # The Bazaar command to export a branch.
 : ${EBZR_EXPORT_CMD:="bzr export"}
 
+# @ECLASS-VARIABLE: EBZR_CHECKOUT_CMD
+# @DESCRIPTION:
+# The Bazaar command to checkout a branch.
+: ${EBZR_CHECKOUT_CMD:="bzr checkout --lightweight -q"}
+
 # @ECLASS-VARIABLE: EBZR_REVNO_CMD
 # @DESCRIPTION:
 # The Bazaar command to list a revision number of the branch.
@@ -145,6 +150,12 @@
 # by users.
 : ${EBZR_OFFLINE=${EVCS_OFFLINE}}
 
+# @ECLASS-VARIABLE: EBZR_WORKDIR_CHECKOUT
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# If this variable is set to a non-empty value, EBZR_CHECKOUT_CMD will
+# be used instead of EBZR_EXPORT_CMD to copy the sources to WORKDIR.
+
 # @FUNCTION: bzr_initial_fetch
 # @USAGE: <repository URI> <branch directory>
 # @DESCRIPTION:
@@ -196,11 +207,11 @@
 # working copy.
 bzr_fetch() {
 	local repo_dir branch_dir
+	local save_sandbox_write=${SANDBOX_WRITE}
 
 	[[ -n ${EBZR_REPO_URI} ]] || die "${EBZR}: EBZR_REPO_URI is empty"
 
 	if [[ ! -d ${EBZR_STORE_DIR} ]] ; then
-		local save_sandbox_write=${SANDBOX_WRITE}
 		addwrite /
 		mkdir -p "${EBZR_STORE_DIR}" \
 			|| die "${EBZR}: can't mkdir ${EBZR_STORE_DIR}"
@@ -215,19 +226,6 @@
 
 	addwrite "${EBZR_STORE_DIR}"
 
-	# Clean up if the existing local copy is a checkout (as was the case
-	# with an older version of bzr.eclass).
-	# This test can be removed after 1 Mar 2012.
-	if [[ ${EBZR_FETCH_CMD} != *checkout* && -d ${repo_dir}/.bzr/checkout ]]
-	then
-		local tmpname=$(mktemp -u "${repo_dir}._old_.XXXXXX")
-		ewarn "checkout from old version of ${EBZR} found, moving it to:"
-		ewarn "${tmpname}"
-		ewarn "you may manually remove it"
-		mv "${repo_dir}" "${tmpname}" \
-			|| die "${EBZR}: can't move old checkout out of the way"
-	fi
-
 	if [[ ! -d ${branch_dir}/.bzr ]]; then
 		if [[ ${repo_dir} != "${branch_dir}" && ! -d ${repo_dir}/.bzr ]]; then
 			einfo "creating shared bzr repository: ${repo_dir}"
@@ -252,14 +250,23 @@
 		bzr_update "${EBZR_REPO_URI}" "${branch_dir}"
 	fi
 
+	# Restore sandbox environment
+	SANDBOX_WRITE=${save_sandbox_write}
+
 	cd "${branch_dir}" || die "${EBZR}: can't chdir to ${branch_dir}"
 
 	# Save revision number in environment. #311101
 	export EBZR_REVNO=$(${EBZR_REVNO_CMD})
 
-	einfo "exporting ..."
-	${EBZR_EXPORT_CMD} ${EBZR_REVISION:+-r ${EBZR_REVISION}} \
-		"${WORKDIR}/${P}" . || die "${EBZR}: export failed"
+	if [[ -n ${EBZR_WORKDIR_CHECKOUT} ]]; then
+		einfo "checking out ..."
+		${EBZR_CHECKOUT_CMD} ${EBZR_REVISION:+-r ${EBZR_REVISION}} \
+			. "${WORKDIR}/${P}" || die "${EBZR}: checkout failed"
+	else
+		einfo "exporting ..."
+		${EBZR_EXPORT_CMD} ${EBZR_REVISION:+-r ${EBZR_REVISION}} \
+			"${WORKDIR}/${P}" . || die "${EBZR}: export failed"
+	fi
 	einfo "revision ${EBZR_REVISION:-${EBZR_REVNO}} is now in ${WORKDIR}/${P}"
 
 	popd > /dev/null


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-09-14 22:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-14  9:01 [gentoo-dev] bzr.eclass changes, please review Ulrich Mueller
2012-09-14 13:15 ` Rick "Zero_Chaos" Farina
2012-09-14 15:51   ` Ulrich Mueller
2012-09-14 16:12     ` Rick "Zero_Chaos" Farina
2012-09-14 22:26       ` Mike Gilbert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox