| 1 | # Copyright 1999-2009 Gentoo Foundation |
1 | # Copyright 1999-2011 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/bzr.eclass,v 1.9 2010/07/01 09:23:37 fauli Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/bzr.eclass,v 1.14 2011/04/20 17:16:34 ulm Exp $ |
| 4 | # |
4 | # |
| 5 | # @ECLASS: bzr.eclass |
5 | # @ECLASS: bzr.eclass |
| 6 | # @MAINTAINER: |
6 | # @MAINTAINER: |
| 7 | # Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>, |
7 | # Jorge Manuel B. S. Vicetto <jmbsvicetto@gentoo.org>, |
| 8 | # Ulrich Mueller <ulm@gentoo.org>, |
8 | # Ulrich MΓΌller <ulm@gentoo.org>, |
| 9 | # Christian Faulhammer <fauli@gentoo.org>, |
9 | # Christian Faulhammer <fauli@gentoo.org>, |
| 10 | # Mark Lee <bzr-gentoo-overlay@lazymalevolence.com>, |
10 | # Mark Lee <bzr-gentoo-overlay@lazymalevolence.com>, |
| 11 | # and anyone who wants to help |
11 | # and anyone who wants to help |
| 12 | # @BLURB: This eclass provides support to use the Bazaar VCS |
12 | # @BLURB: generic fetching functions for the Bazaar VCS |
| 13 | # @DESCRIPTION: |
13 | # @DESCRIPTION: |
| 14 | # The bzr.eclass provides support for apps using the Bazaar VCS |
14 | # The bzr.eclass provides functions to fetch, unpack, patch, and |
| 15 | # (distributed version control system). |
15 | # bootstrap sources from repositories of the Bazaar distributed version |
| 16 | # The eclass was originally derived from the git eclass. |
16 | # control system. The eclass was originally derived from git.eclass. |
| 17 | # |
17 | # |
| 18 | # Note: Just set EBZR_REPO_URI to the URI of the branch and the src_unpack() |
18 | # Note: Just set EBZR_REPO_URI to the URI of the branch and src_unpack() |
| 19 | # of this eclass will put an export of the branch in ${WORKDIR}/${PN}. |
19 | # of this eclass will export the branch to ${WORKDIR}/${P}. |
| 20 | |
20 | |
| 21 | inherit eutils |
21 | inherit eutils |
| 22 | |
22 | |
| 23 | EBZR="bzr.eclass" |
23 | EBZR="bzr.eclass" |
| 24 | |
24 | |
| … | |
… | |
| 28 | esac |
28 | esac |
| 29 | |
29 | |
| 30 | HOMEPAGE="http://bazaar-vcs.org/" |
30 | HOMEPAGE="http://bazaar-vcs.org/" |
| 31 | DESCRIPTION="Based on the ${EBZR} eclass" |
31 | DESCRIPTION="Based on the ${EBZR} eclass" |
| 32 | |
32 | |
| 33 | DEPEND=">=dev-vcs/bzr-1.5" |
33 | DEPEND=">=dev-vcs/bzr-2.0.1" |
|
|
34 | case "${EAPI:-0}" in |
|
|
35 | 0|1) ;; |
|
|
36 | *) [[ ${EBZR_REPO_URI%%:*} = sftp ]] \ |
|
|
37 | && DEPEND=">=dev-vcs/bzr-2.0.1[sftp]" ;; |
|
|
38 | esac |
| 34 | |
39 | |
| 35 | # @ECLASS-VARIABLE: EBZR_STORE_DIR |
40 | # @ECLASS-VARIABLE: EBZR_STORE_DIR |
| 36 | # @DESCRIPTION: |
41 | # @DESCRIPTION: |
| 37 | # The directory to store all fetched Bazaar live sources. |
42 | # The directory to store all fetched Bazaar live sources. |
| 38 | : ${EBZR_STORE_DIR:=${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bzr-src} |
43 | : ${EBZR_STORE_DIR:=${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/bzr-src} |
|
|
44 | |
|
|
45 | # @ECLASS-VARIABLE: EBZR_INIT_REPO_CMD |
|
|
46 | # @DESCRIPTION: |
|
|
47 | # The Bazaar command to initialise a shared repository. |
|
|
48 | : ${EBZR_INIT_REPO_CMD:="bzr init-repository --no-trees"} |
| 39 | |
49 | |
| 40 | # @ECLASS-VARIABLE: EBZR_FETCH_CMD |
50 | # @ECLASS-VARIABLE: EBZR_FETCH_CMD |
| 41 | # @DESCRIPTION: |
51 | # @DESCRIPTION: |
| 42 | # The Bazaar command to fetch the sources. |
52 | # The Bazaar command to fetch the sources. |
| 43 | EBZR_FETCH_CMD="bzr checkout --lightweight" |
53 | : ${EBZR_FETCH_CMD:="bzr branch --no-tree"} |
| 44 | |
54 | |
| 45 | # @ECLASS-VARIABLE: EBZR_UPDATE_CMD |
55 | # @ECLASS-VARIABLE: EBZR_UPDATE_CMD |
| 46 | # @DESCRIPTION: |
56 | # @DESCRIPTION: |
| 47 | # The Bazaar command to update the sources. |
57 | # The Bazaar command to update the sources. |
| 48 | EBZR_UPDATE_CMD="bzr update" |
58 | : ${EBZR_UPDATE_CMD:="bzr pull"} |
| 49 | |
|
|
| 50 | # @ECLASS-VARIABLE: EBZR_DIFF_CMD |
|
|
| 51 | # @DESCRIPTION: |
|
|
| 52 | # The Bazaar command to get the diff output. |
|
|
| 53 | EBZR_DIFF_CMD="bzr diff" |
|
|
| 54 | |
59 | |
| 55 | # @ECLASS-VARIABLE: EBZR_EXPORT_CMD |
60 | # @ECLASS-VARIABLE: EBZR_EXPORT_CMD |
| 56 | # @DESCRIPTION: |
61 | # @DESCRIPTION: |
| 57 | # The Bazaar command to export a branch. |
62 | # The Bazaar command to export a branch. |
| 58 | EBZR_EXPORT_CMD="bzr export" |
63 | : ${EBZR_EXPORT_CMD:="bzr export"} |
| 59 | |
64 | |
| 60 | # @ECLASS-VARIABLE: EBZR_REVNO_CMD |
65 | # @ECLASS-VARIABLE: EBZR_REVNO_CMD |
| 61 | # @DESCRIPTION: |
66 | # @DESCRIPTION: |
| 62 | # The Bazaar command to list a revision number of the branch. |
67 | # The Bazaar command to list a revision number of the branch. |
| 63 | EBZR_REVNO_CMD="bzr revno" |
68 | : ${EBZR_REVNO_CMD:="bzr revno"} |
| 64 | |
69 | |
| 65 | # @ECLASS-VARIABLE: EBZR_OPTIONS |
70 | # @ECLASS-VARIABLE: EBZR_OPTIONS |
|
|
71 | # @DEFAULT_UNSET |
| 66 | # @DESCRIPTION: |
72 | # @DESCRIPTION: |
| 67 | # The options passed to the fetch and update commands. |
73 | # The options passed to the fetch and update commands. |
| 68 | EBZR_OPTIONS="${EBZR_OPTIONS:-}" |
|
|
| 69 | |
74 | |
| 70 | # @ECLASS-VARIABLE: EBZR_REPO_URI |
75 | # @ECLASS-VARIABLE: EBZR_REPO_URI |
|
|
76 | # @DEFAULT_UNSET |
|
|
77 | # @REQUIRED |
| 71 | # @DESCRIPTION: |
78 | # @DESCRIPTION: |
| 72 | # The repository URI for the source package. |
79 | # The repository URI for the source package. |
| 73 | # |
80 | # |
| 74 | # @CODE |
81 | # Note: If the ebuild uses an sftp:// URI, then in EAPI 0 or 1 it must |
| 75 | # Supported protocols: |
82 | # make sure that dev-vcs/bzr was built with USE="sftp". In EAPI 2 or |
| 76 | # - http:// |
83 | # later, the eclass will depend on dev-vcs/bzr[sftp]. |
| 77 | # - https:// |
84 | |
| 78 | # - sftp:// |
85 | # @ECLASS-VARIABLE: EBZR_INITIAL_URI |
| 79 | # - rsync:// |
86 | # @DEFAULT_UNSET |
| 80 | # - lp: |
87 | # @DESCRIPTION: |
| 81 | # @CODE |
88 | # The URI used for initial branching of the source repository. If this |
|
|
89 | # variable is set, the initial branch will be cloned from the location |
|
|
90 | # specified, followed by a pull from ${EBZR_REPO_URI}. This is intended |
|
|
91 | # for special cases, e.g. when download from the original repository is |
|
|
92 | # slow, but a fast mirror exists but may be out of date. |
| 82 | # |
93 | # |
| 83 | # Note: lp: seems to be an alias for https://launchpad.net |
94 | # Normally, this variable needs not be set. |
| 84 | EBZR_REPO_URI="${EBZR_REPO_URI:-}" |
|
|
| 85 | |
95 | |
| 86 | # @ECLASS-VARIABLE: EBZR_BOOTSTRAP |
96 | # @ECLASS-VARIABLE: EBZR_BOOTSTRAP |
|
|
97 | # @DEFAULT_UNSET |
| 87 | # @DESCRIPTION: |
98 | # @DESCRIPTION: |
| 88 | # Bootstrap script or command like autogen.sh or etc. |
99 | # Bootstrap script or command like autogen.sh or etc. |
| 89 | EBZR_BOOTSTRAP="${EBZR_BOOTSTRAP:-}" |
|
|
| 90 | |
100 | |
| 91 | # @ECLASS-VARIABLE: EBZR_PATCHES |
101 | # @ECLASS-VARIABLE: EBZR_PATCHES |
|
|
102 | # @DEFAULT_UNSET |
| 92 | # @DESCRIPTION: |
103 | # @DESCRIPTION: |
| 93 | # bzr eclass can apply patches in bzr_bootstrap(). |
104 | # bzr.eclass can apply patches in bzr_bootstrap(). You can use regular |
| 94 | # You can use regular expressions in this variable like *.diff or |
105 | # expressions in this variable like *.diff or *.patch and the like. |
| 95 | # *.patch and the like. |
|
|
| 96 | # NOTE: These patches will bei applied before EBZR_BOOTSTRAP is processed. |
106 | # Note: These patches will be applied before EBZR_BOOTSTRAP is processed. |
| 97 | # |
107 | # |
| 98 | # Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either |
108 | # Patches are searched both in ${PWD} and ${FILESDIR}. If not found in |
| 99 | # location, the installation dies. |
109 | # either location, the installation dies. |
| 100 | EBZR_PATCHES="${EBZR_PATCHES:-}" |
110 | |
|
|
111 | # @ECLASS-VARIABLE: EBZR_PROJECT |
|
|
112 | # @DESCRIPTION: |
|
|
113 | # The project name of your ebuild. Normally, the branch will be stored |
|
|
114 | # in the ${EBZR_STORE_DIR}/${EBZR_PROJECT} directory. |
|
|
115 | # |
|
|
116 | # If EBZR_BRANCH is set (see below), then a shared repository will be |
|
|
117 | # created in that directory, and the branch will be located in |
|
|
118 | # ${EBZR_STORE_DIR}/${EBZR_PROJECT}/${EBZR_BRANCH}. |
|
|
119 | : ${EBZR_PROJECT:=${PN}} |
|
|
120 | |
|
|
121 | # @ECLASS-VARIABLE: EBZR_BRANCH |
|
|
122 | # @DEFAULT_UNSET |
|
|
123 | # @DESCRIPTION: |
|
|
124 | # The directory where to store the branch within a shared repository, |
|
|
125 | # relative to ${EBZR_STORE_DIR}/${EBZR_PROJECT}. |
|
|
126 | # |
|
|
127 | # This variable should be set if there are several live ebuilds for |
|
|
128 | # different branches of the same upstream project. The branches can |
|
|
129 | # then share the same repository in EBZR_PROJECT, which will save both |
|
|
130 | # data traffic volume and disk space. |
|
|
131 | # |
|
|
132 | # If there is only a live ebuild for one single branch, EBZR_BRANCH |
|
|
133 | # needs not be set. In this case, the branch will be stored in a |
|
|
134 | # stand-alone repository directly in EBZR_PROJECT. |
| 101 | |
135 | |
| 102 | # @ECLASS-VARIABLE: EBZR_REVISION |
136 | # @ECLASS-VARIABLE: EBZR_REVISION |
|
|
137 | # @DEFAULT_UNSET |
| 103 | # @DESCRIPTION: |
138 | # @DESCRIPTION: |
| 104 | # Revision to fetch, defaults to the latest |
139 | # Revision to fetch, defaults to the latest |
| 105 | # (see http://bazaar-vcs.org/BzrRevisionSpec or bzr help revisionspec). |
140 | # (see http://bazaar-vcs.org/BzrRevisionSpec or bzr help revisionspec). |
| 106 | # If you set this to a non-empty value, then it is recommended not to |
|
|
| 107 | # use a lightweight checkout (see also EBZR_FETCH_CMD). |
|
|
| 108 | EBZR_REVISION="${EBZR_REVISION:-}" |
|
|
| 109 | |
|
|
| 110 | # @ECLASS-VARIABLE: EBZR_CACHE_DIR |
|
|
| 111 | # @DESCRIPTION: |
|
|
| 112 | # The directory to store the source for the package, relative to |
|
|
| 113 | # EBZR_STORE_DIR. |
|
|
| 114 | # |
|
|
| 115 | # default: ${PN} |
|
|
| 116 | EBZR_CACHE_DIR="${EBZR_CACHE_DIR:-${PN}}" |
|
|
| 117 | |
141 | |
| 118 | # @ECLASS-VARIABLE: EBZR_OFFLINE |
142 | # @ECLASS-VARIABLE: EBZR_OFFLINE |
| 119 | # @DESCRIPTION: |
143 | # @DESCRIPTION: |
| 120 | # Set this variable to a non-empty value to disable the automatic updating of |
144 | # Set this variable to a non-empty value to disable automatic updating |
| 121 | # a bzr source tree. This is intended to be set outside the ebuild by users. |
145 | # of a bzr source tree. This is intended to be set outside the ebuild |
| 122 | EBZR_OFFLINE="${EBZR_OFFLINE:-${ESCM_OFFLINE}}" |
146 | # by users. |
|
|
147 | : ${EBZR_OFFLINE=${EVCS_OFFLINE}} |
| 123 | |
148 | |
| 124 | # @FUNCTION: bzr_initial_fetch |
149 | # @FUNCTION: bzr_initial_fetch |
|
|
150 | # @USAGE: <repository URI> <branch directory> |
| 125 | # @DESCRIPTION: |
151 | # @DESCRIPTION: |
| 126 | # Retrieves the source code from a repository for the first time, via |
152 | # Internal function, retrieves the source code from a repository for the |
| 127 | # ${EBZR_FETCH_CMD}. |
153 | # first time, using ${EBZR_FETCH_CMD}. |
| 128 | bzr_initial_fetch() { |
154 | bzr_initial_fetch() { |
| 129 | local repository="${1}"; |
155 | local repo_uri=$1 branch_dir=$2 |
| 130 | local branch_dir="${2}"; |
156 | |
|
|
157 | if [[ -n "${EBZR_OFFLINE}" ]]; then |
|
|
158 | ewarn "EBZR_OFFLINE cannot be used when there is no local branch yet." |
|
|
159 | fi |
| 131 | |
160 | |
| 132 | # fetch branch |
161 | # fetch branch |
| 133 | einfo "bzr fetch start -->" |
162 | einfo "bzr branch start -->" |
| 134 | einfo " repository: ${repository} => ${branch_dir}" |
163 | einfo " repository: ${repo_uri} => ${branch_dir}" |
| 135 | |
164 | |
| 136 | ${EBZR_FETCH_CMD} ${EBZR_OPTIONS} "${repository}" "${branch_dir}" \ |
165 | ${EBZR_FETCH_CMD} ${EBZR_OPTIONS} "${repo_uri}" "${branch_dir}" \ |
| 137 | || die "${EBZR}: can't branch from ${repository}." |
166 | || die "${EBZR}: can't branch from ${repo_uri}" |
| 138 | } |
167 | } |
| 139 | |
168 | |
| 140 | # @FUNCTION: bzr_update |
169 | # @FUNCTION: bzr_update |
|
|
170 | # @USAGE: <repository URI> <branch directory> |
| 141 | # @DESCRIPTION: |
171 | # @DESCRIPTION: |
| 142 | # Updates the source code from a repository, via ${EBZR_UPDATE_CMD}. |
172 | # Internal function, updates the source code from a repository, using |
|
|
173 | # ${EBZR_UPDATE_CMD}. |
| 143 | bzr_update() { |
174 | bzr_update() { |
| 144 | local repository="${1}"; |
175 | local repo_uri=$1 branch_dir=$2 |
| 145 | |
176 | |
| 146 | if [[ -n "${EBZR_OFFLINE}" ]]; then |
177 | if [[ -n "${EBZR_OFFLINE}" ]]; then |
| 147 | einfo "skipping bzr update -->" |
178 | einfo "skipping bzr pull -->" |
| 148 | einfo " repository: ${repository}" |
179 | einfo " repository: ${repo_uri}" |
| 149 | else |
180 | else |
| 150 | # update branch |
181 | # update branch |
| 151 | einfo "bzr update start -->" |
182 | einfo "bzr pull start -->" |
| 152 | einfo " repository: ${repository}" |
183 | einfo " repository: ${repo_uri}" |
| 153 | |
184 | |
| 154 | pushd "${EBZR_BRANCH_DIR}" > /dev/null |
185 | pushd "${branch_dir}" > /dev/null \ |
|
|
186 | || die "${EBZR}: can't chdir to ${branch_dir}" |
| 155 | ${EBZR_UPDATE_CMD} ${EBZR_OPTIONS} \ |
187 | ${EBZR_UPDATE_CMD} ${EBZR_OPTIONS} "${repo_uri}" \ |
| 156 | || die "${EBZR}: can't update from ${repository}." |
188 | || die "${EBZR}: can't pull from ${repo_uri}" |
| 157 | popd > /dev/null |
189 | popd > /dev/null |
| 158 | fi |
190 | fi |
| 159 | } |
191 | } |
| 160 | |
192 | |
| 161 | # @FUNCTION: bzr_fetch |
193 | # @FUNCTION: bzr_fetch |
| 162 | # @DESCRIPTION: |
194 | # @DESCRIPTION: |
| 163 | # Wrapper function to fetch sources from a Bazaar repository via bzr |
195 | # Wrapper function to fetch sources from a Bazaar repository with |
| 164 | # fetch or bzr update, depending on whether there is an existing |
196 | # bzr branch or bzr pull, depending on whether there is an existing |
| 165 | # working copy in ${EBZR_BRANCH_DIR}. |
197 | # working copy. |
| 166 | bzr_fetch() { |
198 | bzr_fetch() { |
| 167 | local EBZR_BRANCH_DIR |
199 | local repo_dir branch_dir |
| 168 | |
200 | |
| 169 | # EBZR_REPO_URI is empty. |
|
|
| 170 | [[ ${EBZR_REPO_URI} ]] || die "${EBZR}: EBZR_REPO_URI is empty." |
201 | [[ -n ${EBZR_REPO_URI} ]] || die "${EBZR}: EBZR_REPO_URI is empty" |
| 171 | |
|
|
| 172 | # check for the protocol or pull from a local repo. |
|
|
| 173 | if [[ -z ${EBZR_REPO_URI%%:*} ]] ; then |
|
|
| 174 | case ${EBZR_REPO_URI%%:*} in |
|
|
| 175 | # lp: seems to be an alias to https://launchpad.net |
|
|
| 176 | http|https|rsync|lp) |
|
|
| 177 | ;; |
|
|
| 178 | sftp) |
|
|
| 179 | if ! built_with_use --missing true dev-vcs/bzr sftp; then |
|
|
| 180 | eerror "To fetch sources from ${EBZR_REPO_URI} you need SFTP" |
|
|
| 181 | eerror "support in dev-vcs/bzr." |
|
|
| 182 | die "Please, rebuild dev-vcs/bzr with the sftp USE flag enabled." |
|
|
| 183 | fi |
|
|
| 184 | ;; |
|
|
| 185 | *) |
|
|
| 186 | die "${EBZR}: fetch from ${EBZR_REPO_URI%:*} is not yet implemented." |
|
|
| 187 | ;; |
|
|
| 188 | esac |
|
|
| 189 | fi |
|
|
| 190 | |
202 | |
| 191 | if [[ ! -d ${EBZR_STORE_DIR} ]] ; then |
203 | if [[ ! -d ${EBZR_STORE_DIR} ]] ; then |
| 192 | debug-print "${FUNCNAME}: initial branch. Creating bzr directory" |
|
|
| 193 | local save_sandbox_write=${SANDBOX_WRITE} |
204 | local save_sandbox_write=${SANDBOX_WRITE} |
| 194 | addwrite / |
205 | addwrite / |
| 195 | mkdir -p "${EBZR_STORE_DIR}" \ |
206 | mkdir -p "${EBZR_STORE_DIR}" \ |
| 196 | || die "${EBZR}: can't mkdir ${EBZR_STORE_DIR}." |
207 | || die "${EBZR}: can't mkdir ${EBZR_STORE_DIR}" |
| 197 | SANDBOX_WRITE=${save_sandbox_write} |
208 | SANDBOX_WRITE=${save_sandbox_write} |
| 198 | fi |
209 | fi |
| 199 | |
210 | |
| 200 | pushd "${EBZR_STORE_DIR}" > /dev/null \ |
211 | pushd "${EBZR_STORE_DIR}" > /dev/null \ |
| 201 | || die "${EBZR}: can't chdir to ${EBZR_STORE_DIR}" |
212 | || die "${EBZR}: can't chdir to ${EBZR_STORE_DIR}" |
| 202 | |
213 | |
| 203 | EBZR_BRANCH_DIR="${EBZR_STORE_DIR}/${EBZR_CACHE_DIR}" |
214 | repo_dir=${EBZR_STORE_DIR}/${EBZR_PROJECT} |
|
|
215 | branch_dir=${repo_dir}${EBZR_BRANCH:+/${EBZR_BRANCH}} |
| 204 | |
216 | |
| 205 | addwrite "${EBZR_STORE_DIR}" |
217 | addwrite "${EBZR_STORE_DIR}" |
| 206 | addwrite "${EBZR_BRANCH_DIR}" |
|
|
| 207 | |
218 | |
| 208 | debug-print "${FUNCNAME}: EBZR_OPTIONS = ${EBZR_OPTIONS}" |
219 | # Clean up if the existing local copy is a checkout (as was the case |
| 209 | |
|
|
| 210 | # Run bzr_initial_fetch() only if the branch has not been pulled |
|
|
| 211 | # before or if the existing local copy is a full checkout (as did |
|
|
| 212 | # an older version of bzr.eclass) |
220 | # with an older version of bzr.eclass). |
| 213 | if [[ ! -d ${EBZR_BRANCH_DIR} ]] ; then |
221 | # This test can be removed after 1 Mar 2012. |
|
|
222 | if [[ ${EBZR_FETCH_CMD} != *checkout* && -d ${repo_dir}/.bzr/checkout ]] |
|
|
223 | then |
|
|
224 | local tmpname=$(mktemp -u "${repo_dir}._old_.XXXXXX") |
|
|
225 | ewarn "checkout from old version of ${EBZR} found, moving it to:" |
|
|
226 | ewarn "${tmpname}" |
|
|
227 | ewarn "you may manually remove it" |
|
|
228 | mv "${repo_dir}" "${tmpname}" \ |
|
|
229 | || die "${EBZR}: can't move old checkout out of the way" |
|
|
230 | fi |
|
|
231 | |
|
|
232 | if [[ ! -d ${branch_dir}/.bzr ]]; then |
|
|
233 | if [[ ${repo_dir} != "${branch_dir}" && ! -d ${repo_dir}/.bzr ]]; then |
|
|
234 | einfo "creating shared bzr repository" |
|
|
235 | ${EBZR_INIT_REPO_CMD} "${repo_dir}" \ |
|
|
236 | || die "${EBZR}: can't create shared repository" |
|
|
237 | fi |
|
|
238 | |
|
|
239 | if [[ -z ${EBZR_INITIAL_URI} ]]; then |
| 214 | bzr_initial_fetch "${EBZR_REPO_URI}" "${EBZR_BRANCH_DIR}" |
240 | bzr_initial_fetch "${EBZR_REPO_URI}" "${branch_dir}" |
|
|
241 | else |
|
|
242 | # Workaround for faster initial download. This clones the |
|
|
243 | # branch from a fast server (which may be out of date), and |
|
|
244 | # subsequently pulls from the slow original repository. |
|
|
245 | bzr_initial_fetch "${EBZR_INITIAL_URI}" "${branch_dir}" |
|
|
246 | if [[ ${EBZR_REPO_URI} != "${EBZR_INITIAL_URI}" ]]; then |
|
|
247 | EBZR_UPDATE_CMD="${EBZR_UPDATE_CMD} --remember --overwrite" \ |
|
|
248 | EBZR_OFFLINE="" \ |
|
|
249 | bzr_update "${EBZR_REPO_URI}" "${branch_dir}" |
|
|
250 | fi |
|
|
251 | fi |
| 215 | else |
252 | else |
| 216 | bzr_update "${EBZR_REPO_URI}" "${EBZR_BRANCH_DIR}" |
253 | bzr_update "${EBZR_REPO_URI}" "${branch_dir}" |
| 217 | fi |
254 | fi |
| 218 | |
255 | |
| 219 | cd "${EBZR_BRANCH_DIR}" |
256 | cd "${branch_dir}" || die "${EBZR}: can't chdir to ${branch_dir}" |
|
|
257 | |
|
|
258 | # Save some variables in environment. #311101 |
|
|
259 | export EBZR_REVNO=$(${EBZR_REVNO_CMD}) |
|
|
260 | export EBZR_WC_PATH=${branch_dir} |
| 220 | |
261 | |
| 221 | einfo "exporting ..." |
262 | einfo "exporting ..." |
| 222 | |
263 | ${EBZR_EXPORT_CMD} ${EBZR_REVISION:+-r ${EBZR_REVISION}} \ |
| 223 | if [[ -z ${EBZR_REVISION} ]]; then |
|
|
| 224 | rsync -rlpgo --exclude=".bzr/" . "${WORKDIR}/${P}" \ |
|
|
| 225 | || die "${EBZR}: export failed" |
264 | "${WORKDIR}/${P}" . || die "${EBZR}: export failed" |
| 226 | else |
265 | einfo "revision ${EBZR_REVISION:-${EBZR_REVNO}} is now in ${WORKDIR}/${P}" |
| 227 | # revisions of a lightweight checkout are only available when online |
|
|
| 228 | [[ -z ${EBZR_OFFLINE} || -d ${EBZR_BRANCH_DIR}/.bzr/repository ]] \ |
|
|
| 229 | || die "${EBZR}: No support for revisions when off-line" |
|
|
| 230 | ${EBZR_EXPORT_CMD} -r "${EBZR_REVISION}" "${WORKDIR}/${P}" \ |
|
|
| 231 | || die "${EBZR}: export failed" |
|
|
| 232 | fi |
|
|
| 233 | |
266 | |
| 234 | popd > /dev/null |
267 | popd > /dev/null |
| 235 | } |
268 | } |
| 236 | |
269 | |
| 237 | # @FUNCTION: bzr_bootstrap |
270 | # @FUNCTION: bzr_bootstrap |
| 238 | # @DESCRIPTION: |
271 | # @DESCRIPTION: |
| 239 | # Apply patches in ${EBZR_PATCHES} and run ${EBZR_BOOTSTRAP} if specified. |
272 | # Apply patches in ${EBZR_PATCHES} and run ${EBZR_BOOTSTRAP} if specified. |
| 240 | bzr_bootstrap() { |
273 | bzr_bootstrap() { |
| 241 | local patch lpatch |
274 | local patch lpatch |
| 242 | |
275 | |
| 243 | pushd "${S}" > /dev/null |
276 | pushd "${S}" > /dev/null || die "${EBZR}: can't chdir to ${S}" |
| 244 | |
277 | |
| 245 | if [[ -n ${EBZR_PATCHES} ]] ; then |
278 | if [[ -n ${EBZR_PATCHES} ]] ; then |
| 246 | einfo "apply patches -->" |
279 | einfo "apply patches -->" |
| 247 | |
280 | |
| 248 | for patch in ${EBZR_PATCHES} ; do |
281 | for patch in ${EBZR_PATCHES} ; do |
| … | |
… | |
| 266 | einfo "begin bootstrap -->" |
299 | einfo "begin bootstrap -->" |
| 267 | |
300 | |
| 268 | if [[ -f ${EBZR_BOOTSTRAP} ]] && [[ -x ${EBZR_BOOTSTRAP} ]] ; then |
301 | if [[ -f ${EBZR_BOOTSTRAP} ]] && [[ -x ${EBZR_BOOTSTRAP} ]] ; then |
| 269 | einfo " bootstrap with a file: ${EBZR_BOOTSTRAP}" |
302 | einfo " bootstrap with a file: ${EBZR_BOOTSTRAP}" |
| 270 | "./${EBZR_BOOTSTRAP}" \ |
303 | "./${EBZR_BOOTSTRAP}" \ |
| 271 | || die "${EBZR}: can't execute EBZR_BOOTSTRAP." |
304 | || die "${EBZR}: can't execute EBZR_BOOTSTRAP" |
| 272 | else |
305 | else |
| 273 | einfo " bootstrap with commands: ${EBZR_BOOTSTRAP}" |
306 | einfo " bootstrap with commands: ${EBZR_BOOTSTRAP}" |
| 274 | "${EBZR_BOOTSTRAP}" \ |
307 | "${EBZR_BOOTSTRAP}" \ |
| 275 | || die "${EBZR}: can't eval EBZR_BOOTSTRAP." |
308 | || die "${EBZR}: can't eval EBZR_BOOTSTRAP" |
| 276 | fi |
309 | fi |
| 277 | fi |
310 | fi |
| 278 | |
311 | |
| 279 | popd > /dev/null |
312 | popd > /dev/null |
| 280 | } |
313 | } |
| 281 | |
314 | |
| 282 | # @FUNCTION: bzr_src_unpack |
315 | # @FUNCTION: bzr_src_unpack |
| 283 | # @DESCRIPTION: |
316 | # @DESCRIPTION: |
| 284 | # Default src_unpack(). Includes bzr_fetch() and bootstrap(). |
317 | # Default src_unpack(), calls bzr_fetch. For EAPIs 0 and 1, also calls |
|
|
318 | # bzr_src_prepare. |
| 285 | bzr_src_unpack() { |
319 | bzr_src_unpack() { |
| 286 | if ! [ -z ${EBZR_BRANCH} ]; then |
320 | bzr_fetch |
| 287 | # This test will go away on 01 Jul 2010 |
|
|
| 288 | eerror "This ebuild uses EBZR_BRANCH which is not supported anymore" |
|
|
| 289 | eerror "by the bzr.eclass. Please report this to the ebuild's maintainer." |
|
|
| 290 | die "EBZR_BRANCH still defined" |
|
|
| 291 | fi |
|
|
| 292 | bzr_fetch || die "${EBZR}: unknown problem in bzr_fetch()." |
|
|
| 293 | case "${EAPI:-0}" in |
321 | case "${EAPI:-0}" in |
| 294 | 0|1) bzr_src_prepare ;; |
322 | 0|1) bzr_src_prepare ;; |
| 295 | esac |
323 | esac |
| 296 | } |
324 | } |
| 297 | |
325 | |
| 298 | # @FUNCTION: bzr_src_prepare |
326 | # @FUNCTION: bzr_src_prepare |
| 299 | # @DESCRIPTION: |
327 | # @DESCRIPTION: |
| 300 | # Default src_prepare(). Executes bzr_bootstrap() for patch |
328 | # Default src_prepare(), calls bzr_bootstrap. |
| 301 | # application and Make file generation (if needed). |
|
|
| 302 | bzr_src_prepare() { |
329 | bzr_src_prepare() { |
| 303 | bzr_bootstrap || die "${EBZR}: unknown problem in bzr_bootstrap()." |
330 | bzr_bootstrap |
| 304 | } |
331 | } |