diff options
-rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 21 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/bzr.py | 11 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/clearcase.py | 6 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/cvs.py | 15 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 45 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/gitannex.py | 25 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/gitsm.py | 23 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/hg.py | 28 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/npm.py | 22 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/osc.py | 10 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/perforce.py | 6 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/repo.py | 13 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch2/svn.py | 13 |
13 files changed, 101 insertions, 137 deletions
diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index 9054b2ec18..7a3eb3c5ab 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py | |||
@@ -779,7 +779,7 @@ def localpath(url, d): | |||
779 | fetcher = bb.fetch2.Fetch([url], d) | 779 | fetcher = bb.fetch2.Fetch([url], d) |
780 | return fetcher.localpath(url) | 780 | return fetcher.localpath(url) |
781 | 781 | ||
782 | def runfetchcmd(cmd, d, quiet=False, cleanup=None, log=None): | 782 | def runfetchcmd(cmd, d, quiet=False, cleanup=None, log=None, workdir=None): |
783 | """ | 783 | """ |
784 | Run cmd returning the command output | 784 | Run cmd returning the command output |
785 | Raise an error if interrupted or cmd fails | 785 | Raise an error if interrupted or cmd fails |
@@ -821,7 +821,7 @@ def runfetchcmd(cmd, d, quiet=False, cleanup=None, log=None): | |||
821 | error_message = "" | 821 | error_message = "" |
822 | 822 | ||
823 | try: | 823 | try: |
824 | (output, errors) = bb.process.run(cmd, log=log, shell=True, stderr=subprocess.PIPE) | 824 | (output, errors) = bb.process.run(cmd, log=log, shell=True, stderr=subprocess.PIPE, cwd=workdir) |
825 | success = True | 825 | success = True |
826 | except bb.process.NotFoundError as e: | 826 | except bb.process.NotFoundError as e: |
827 | error_message = "Fetch command %s" % (e.command) | 827 | error_message = "Fetch command %s" % (e.command) |
@@ -1436,17 +1436,11 @@ class FetchMethod(object): | |||
1436 | if not cmd: | 1436 | if not cmd: |
1437 | return | 1437 | return |
1438 | 1438 | ||
1439 | # Change to unpackdir before executing command | ||
1440 | save_cwd = os.getcwd(); | ||
1441 | os.chdir(unpackdir) | ||
1442 | |||
1443 | path = data.getVar('PATH', True) | 1439 | path = data.getVar('PATH', True) |
1444 | if path: | 1440 | if path: |
1445 | cmd = "PATH=\"%s\" %s" % (path, cmd) | 1441 | cmd = "PATH=\"%s\" %s" % (path, cmd) |
1446 | bb.note("Unpacking %s to %s/" % (file, os.getcwd())) | 1442 | bb.note("Unpacking %s to %s/" % (file, unpackdir)) |
1447 | ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True) | 1443 | ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True, cwd=unpackdir) |
1448 | |||
1449 | os.chdir(save_cwd) | ||
1450 | 1444 | ||
1451 | if ret != 0: | 1445 | if ret != 0: |
1452 | raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), urldata.url) | 1446 | raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), urldata.url) |
@@ -1559,6 +1553,8 @@ class Fetch(object): | |||
1559 | network = self.d.getVar("BB_NO_NETWORK", True) | 1553 | network = self.d.getVar("BB_NO_NETWORK", True) |
1560 | premirroronly = (self.d.getVar("BB_FETCH_PREMIRRORONLY", True) == "1") | 1554 | premirroronly = (self.d.getVar("BB_FETCH_PREMIRRORONLY", True) == "1") |
1561 | 1555 | ||
1556 | save_cwd = os.getcwd() | ||
1557 | |||
1562 | for u in urls: | 1558 | for u in urls: |
1563 | ud = self.ud[u] | 1559 | ud = self.ud[u] |
1564 | ud.setup_localpath(self.d) | 1560 | ud.setup_localpath(self.d) |
@@ -1633,6 +1629,7 @@ class Fetch(object): | |||
1633 | raise | 1629 | raise |
1634 | 1630 | ||
1635 | finally: | 1631 | finally: |
1632 | os.chdir(save_cwd) | ||
1636 | if ud.lockfile: | 1633 | if ud.lockfile: |
1637 | bb.utils.unlockfile(lf) | 1634 | bb.utils.unlockfile(lf) |
1638 | 1635 | ||
@@ -1641,6 +1638,8 @@ class Fetch(object): | |||
1641 | Check all urls exist upstream | 1638 | Check all urls exist upstream |
1642 | """ | 1639 | """ |
1643 | 1640 | ||
1641 | save_cwd = os.getcwd() | ||
1642 | |||
1644 | if not urls: | 1643 | if not urls: |
1645 | urls = self.urls | 1644 | urls = self.urls |
1646 | 1645 | ||
@@ -1664,6 +1663,8 @@ class Fetch(object): | |||
1664 | if not ret: | 1663 | if not ret: |
1665 | raise FetchError("URL %s doesn't work" % u, u) | 1664 | raise FetchError("URL %s doesn't work" % u, u) |
1666 | 1665 | ||
1666 | os.chdir(save_cwd) | ||
1667 | |||
1667 | def unpack(self, root, urls=None): | 1668 | def unpack(self, root, urls=None): |
1668 | """ | 1669 | """ |
1669 | Check all urls exist upstream | 1670 | Check all urls exist upstream |
diff --git a/bitbake/lib/bb/fetch2/bzr.py b/bitbake/lib/bb/fetch2/bzr.py index ce11ee7c20..72264afb5a 100644 --- a/bitbake/lib/bb/fetch2/bzr.py +++ b/bitbake/lib/bb/fetch2/bzr.py | |||
@@ -88,19 +88,15 @@ class Bzr(FetchMethod): | |||
88 | bzrcmd = self._buildbzrcommand(ud, d, "update") | 88 | bzrcmd = self._buildbzrcommand(ud, d, "update") |
89 | logger.debug(1, "BZR Update %s", ud.url) | 89 | logger.debug(1, "BZR Update %s", ud.url) |
90 | bb.fetch2.check_network_access(d, bzrcmd, ud.url) | 90 | bb.fetch2.check_network_access(d, bzrcmd, ud.url) |
91 | os.chdir(os.path.join (ud.pkgdir, os.path.basename(ud.path))) | 91 | runfetchcmd(bzrcmd, d, workdir=os.path.join(ud.pkgdir, os.path.basename(ud.path))) |
92 | runfetchcmd(bzrcmd, d) | ||
93 | else: | 92 | else: |
94 | bb.utils.remove(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)), True) | 93 | bb.utils.remove(os.path.join(ud.pkgdir, os.path.basename(ud.pkgdir)), True) |
95 | bzrcmd = self._buildbzrcommand(ud, d, "fetch") | 94 | bzrcmd = self._buildbzrcommand(ud, d, "fetch") |
96 | bb.fetch2.check_network_access(d, bzrcmd, ud.url) | 95 | bb.fetch2.check_network_access(d, bzrcmd, ud.url) |
97 | logger.debug(1, "BZR Checkout %s", ud.url) | 96 | logger.debug(1, "BZR Checkout %s", ud.url) |
98 | bb.utils.mkdirhier(ud.pkgdir) | 97 | bb.utils.mkdirhier(ud.pkgdir) |
99 | os.chdir(ud.pkgdir) | ||
100 | logger.debug(1, "Running %s", bzrcmd) | 98 | logger.debug(1, "Running %s", bzrcmd) |
101 | runfetchcmd(bzrcmd, d) | 99 | runfetchcmd(bzrcmd, d, workdir=ud.pkgdir) |
102 | |||
103 | os.chdir(ud.pkgdir) | ||
104 | 100 | ||
105 | scmdata = ud.parm.get("scmdata", "") | 101 | scmdata = ud.parm.get("scmdata", "") |
106 | if scmdata == "keep": | 102 | if scmdata == "keep": |
@@ -109,7 +105,8 @@ class Bzr(FetchMethod): | |||
109 | tar_flags = "--exclude='.bzr' --exclude='.bzrtags'" | 105 | tar_flags = "--exclude='.bzr' --exclude='.bzrtags'" |
110 | 106 | ||
111 | # tar them up to a defined filename | 107 | # tar them up to a defined filename |
112 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)), d, cleanup = [ud.localpath]) | 108 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(ud.pkgdir)), |
109 | d, cleanup=[ud.localpath], workdir=ud.pkgdir) | ||
113 | 110 | ||
114 | def supports_srcrev(self): | 111 | def supports_srcrev(self): |
115 | return True | 112 | return True |
diff --git a/bitbake/lib/bb/fetch2/clearcase.py b/bitbake/lib/bb/fetch2/clearcase.py index ba83e7cb60..70e280a8dd 100644 --- a/bitbake/lib/bb/fetch2/clearcase.py +++ b/bitbake/lib/bb/fetch2/clearcase.py | |||
@@ -202,11 +202,10 @@ class ClearCase(FetchMethod): | |||
202 | 202 | ||
203 | def _remove_view(self, ud, d): | 203 | def _remove_view(self, ud, d): |
204 | if os.path.exists(ud.viewdir): | 204 | if os.path.exists(ud.viewdir): |
205 | os.chdir(ud.ccasedir) | ||
206 | cmd = self._build_ccase_command(ud, 'rmview'); | 205 | cmd = self._build_ccase_command(ud, 'rmview'); |
207 | logger.info("cleaning up [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname) | 206 | logger.info("cleaning up [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname) |
208 | bb.fetch2.check_network_access(d, cmd, ud.url) | 207 | bb.fetch2.check_network_access(d, cmd, ud.url) |
209 | output = runfetchcmd(cmd, d) | 208 | output = runfetchcmd(cmd, d, workdir=ud.ccasedir) |
210 | logger.info("rmview output: %s", output) | 209 | logger.info("rmview output: %s", output) |
211 | 210 | ||
212 | def need_update(self, ud, d): | 211 | def need_update(self, ud, d): |
@@ -241,11 +240,10 @@ class ClearCase(FetchMethod): | |||
241 | raise e | 240 | raise e |
242 | 241 | ||
243 | # Set configspec: Setting the configspec effectively fetches the files as defined in the configspec | 242 | # Set configspec: Setting the configspec effectively fetches the files as defined in the configspec |
244 | os.chdir(ud.viewdir) | ||
245 | cmd = self._build_ccase_command(ud, 'setcs'); | 243 | cmd = self._build_ccase_command(ud, 'setcs'); |
246 | logger.info("fetching data [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname) | 244 | logger.info("fetching data [VOB=%s label=%s view=%s]", ud.vob, ud.label, ud.viewname) |
247 | bb.fetch2.check_network_access(d, cmd, ud.url) | 245 | bb.fetch2.check_network_access(d, cmd, ud.url) |
248 | output = runfetchcmd(cmd, d) | 246 | output = runfetchcmd(cmd, d, workdir=ud.viewdir) |
249 | logger.info("%s", output) | 247 | logger.info("%s", output) |
250 | 248 | ||
251 | # Copy the configspec to the viewdir so we have it in our source tarball later | 249 | # Copy the configspec to the viewdir so we have it in our source tarball later |
diff --git a/bitbake/lib/bb/fetch2/cvs.py b/bitbake/lib/bb/fetch2/cvs.py index 43a234f590..5ff70ba921 100644 --- a/bitbake/lib/bb/fetch2/cvs.py +++ b/bitbake/lib/bb/fetch2/cvs.py | |||
@@ -123,22 +123,23 @@ class Cvs(FetchMethod): | |||
123 | pkg = d.getVar('PN', True) | 123 | pkg = d.getVar('PN', True) |
124 | pkgdir = os.path.join(d.getVar('CVSDIR', True), pkg) | 124 | pkgdir = os.path.join(d.getVar('CVSDIR', True), pkg) |
125 | moddir = os.path.join(pkgdir, localdir) | 125 | moddir = os.path.join(pkgdir, localdir) |
126 | workdir = None | ||
126 | if os.access(os.path.join(moddir, 'CVS'), os.R_OK): | 127 | if os.access(os.path.join(moddir, 'CVS'), os.R_OK): |
127 | logger.info("Update " + ud.url) | 128 | logger.info("Update " + ud.url) |
128 | bb.fetch2.check_network_access(d, cvsupdatecmd, ud.url) | 129 | bb.fetch2.check_network_access(d, cvsupdatecmd, ud.url) |
129 | # update sources there | 130 | # update sources there |
130 | os.chdir(moddir) | 131 | workdir = moddir |
131 | cmd = cvsupdatecmd | 132 | cmd = cvsupdatecmd |
132 | else: | 133 | else: |
133 | logger.info("Fetch " + ud.url) | 134 | logger.info("Fetch " + ud.url) |
134 | # check out sources there | 135 | # check out sources there |
135 | bb.utils.mkdirhier(pkgdir) | 136 | bb.utils.mkdirhier(pkgdir) |
136 | os.chdir(pkgdir) | 137 | workdir = pkgdir |
137 | logger.debug(1, "Running %s", cvscmd) | 138 | logger.debug(1, "Running %s", cvscmd) |
138 | bb.fetch2.check_network_access(d, cvscmd, ud.url) | 139 | bb.fetch2.check_network_access(d, cvscmd, ud.url) |
139 | cmd = cvscmd | 140 | cmd = cvscmd |
140 | 141 | ||
141 | runfetchcmd(cmd, d, cleanup = [moddir]) | 142 | runfetchcmd(cmd, d, cleanup=[moddir], workdir=workdir) |
142 | 143 | ||
143 | if not os.access(moddir, os.R_OK): | 144 | if not os.access(moddir, os.R_OK): |
144 | raise FetchError("Directory %s was not readable despite sucessful fetch?!" % moddir, ud.url) | 145 | raise FetchError("Directory %s was not readable despite sucessful fetch?!" % moddir, ud.url) |
@@ -150,15 +151,15 @@ class Cvs(FetchMethod): | |||
150 | tar_flags = "--exclude='CVS'" | 151 | tar_flags = "--exclude='CVS'" |
151 | 152 | ||
152 | # tar them up to a defined filename | 153 | # tar them up to a defined filename |
154 | workdir = None | ||
153 | if 'fullpath' in ud.parm: | 155 | if 'fullpath' in ud.parm: |
154 | os.chdir(pkgdir) | 156 | workdir = pkgdir |
155 | cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, localdir) | 157 | cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, localdir) |
156 | else: | 158 | else: |
157 | os.chdir(moddir) | 159 | workdir = os.path.dirname(os.path.realpath(moddir)) |
158 | os.chdir('..') | ||
159 | cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(moddir)) | 160 | cmd = "tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.basename(moddir)) |
160 | 161 | ||
161 | runfetchcmd(cmd, d, cleanup = [ud.localpath]) | 162 | runfetchcmd(cmd, d, cleanup=[ud.localpath], workdir=workdir) |
162 | 163 | ||
163 | def clean(self, ud, d): | 164 | def clean(self, ud, d): |
164 | """ Clean CVS Files and tarballs """ | 165 | """ Clean CVS Files and tarballs """ |
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index fd8f3fdf4d..1bec60ab71 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py | |||
@@ -219,9 +219,8 @@ class Git(FetchMethod): | |||
219 | def need_update(self, ud, d): | 219 | def need_update(self, ud, d): |
220 | if not os.path.exists(ud.clonedir): | 220 | if not os.path.exists(ud.clonedir): |
221 | return True | 221 | return True |
222 | os.chdir(ud.clonedir) | ||
223 | for name in ud.names: | 222 | for name in ud.names: |
224 | if not self._contains_ref(ud, d, name): | 223 | if not self._contains_ref(ud, d, name, ud.clonedir): |
225 | return True | 224 | return True |
226 | if ud.write_tarballs and not os.path.exists(ud.fullmirror): | 225 | if ud.write_tarballs and not os.path.exists(ud.fullmirror): |
227 | return True | 226 | return True |
@@ -242,8 +241,7 @@ class Git(FetchMethod): | |||
242 | # If the checkout doesn't exist and the mirror tarball does, extract it | 241 | # If the checkout doesn't exist and the mirror tarball does, extract it |
243 | if not os.path.exists(ud.clonedir) and os.path.exists(ud.fullmirror): | 242 | if not os.path.exists(ud.clonedir) and os.path.exists(ud.fullmirror): |
244 | bb.utils.mkdirhier(ud.clonedir) | 243 | bb.utils.mkdirhier(ud.clonedir) |
245 | os.chdir(ud.clonedir) | 244 | runfetchcmd("tar -xzf %s" % (ud.fullmirror), d, workdir=ud.clonedir) |
246 | runfetchcmd("tar -xzf %s" % (ud.fullmirror), d) | ||
247 | 245 | ||
248 | repourl = self._get_repo_url(ud) | 246 | repourl = self._get_repo_url(ud) |
249 | 247 | ||
@@ -258,34 +256,32 @@ class Git(FetchMethod): | |||
258 | progresshandler = GitProgressHandler(d) | 256 | progresshandler = GitProgressHandler(d) |
259 | runfetchcmd(clone_cmd, d, log=progresshandler) | 257 | runfetchcmd(clone_cmd, d, log=progresshandler) |
260 | 258 | ||
261 | os.chdir(ud.clonedir) | ||
262 | # Update the checkout if needed | 259 | # Update the checkout if needed |
263 | needupdate = False | 260 | needupdate = False |
264 | for name in ud.names: | 261 | for name in ud.names: |
265 | if not self._contains_ref(ud, d, name): | 262 | if not self._contains_ref(ud, d, name, ud.clonedir): |
266 | needupdate = True | 263 | needupdate = True |
267 | if needupdate: | 264 | if needupdate: |
268 | try: | 265 | try: |
269 | runfetchcmd("%s remote rm origin" % ud.basecmd, d) | 266 | runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir) |
270 | except bb.fetch2.FetchError: | 267 | except bb.fetch2.FetchError: |
271 | logger.debug(1, "No Origin") | 268 | logger.debug(1, "No Origin") |
272 | 269 | ||
273 | runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d) | 270 | runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d, workdir=ud.clonedir) |
274 | fetch_cmd = "LANG=C %s fetch -f --prune --progress %s refs/*:refs/*" % (ud.basecmd, repourl) | 271 | fetch_cmd = "LANG=C %s fetch -f --prune --progress %s refs/*:refs/*" % (ud.basecmd, repourl) |
275 | if ud.proto.lower() != 'file': | 272 | if ud.proto.lower() != 'file': |
276 | bb.fetch2.check_network_access(d, fetch_cmd, ud.url) | 273 | bb.fetch2.check_network_access(d, fetch_cmd, ud.url) |
277 | progresshandler = GitProgressHandler(d) | 274 | progresshandler = GitProgressHandler(d) |
278 | runfetchcmd(fetch_cmd, d, log=progresshandler) | 275 | runfetchcmd(fetch_cmd, d, log=progresshandler, workdir=ud.clonedir) |
279 | runfetchcmd("%s prune-packed" % ud.basecmd, d) | 276 | runfetchcmd("%s prune-packed" % ud.basecmd, d, workdir=ud.clonedir) |
280 | runfetchcmd("%s pack-redundant --all | xargs -r rm" % ud.basecmd, d) | 277 | runfetchcmd("%s pack-redundant --all | xargs -r rm" % ud.basecmd, d, workdir=ud.clonedir) |
281 | try: | 278 | try: |
282 | os.unlink(ud.fullmirror) | 279 | os.unlink(ud.fullmirror) |
283 | except OSError as exc: | 280 | except OSError as exc: |
284 | if exc.errno != errno.ENOENT: | 281 | if exc.errno != errno.ENOENT: |
285 | raise | 282 | raise |
286 | os.chdir(ud.clonedir) | ||
287 | for name in ud.names: | 283 | for name in ud.names: |
288 | if not self._contains_ref(ud, d, name): | 284 | if not self._contains_ref(ud, d, name, ud.clonedir): |
289 | raise bb.fetch2.FetchError("Unable to find revision %s in branch %s even from upstream" % (ud.revisions[name], ud.branches[name])) | 285 | raise bb.fetch2.FetchError("Unable to find revision %s in branch %s even from upstream" % (ud.revisions[name], ud.branches[name])) |
290 | 286 | ||
291 | def build_mirror_data(self, ud, d): | 287 | def build_mirror_data(self, ud, d): |
@@ -295,10 +291,9 @@ class Git(FetchMethod): | |||
295 | if os.path.islink(ud.fullmirror): | 291 | if os.path.islink(ud.fullmirror): |
296 | os.unlink(ud.fullmirror) | 292 | os.unlink(ud.fullmirror) |
297 | 293 | ||
298 | os.chdir(ud.clonedir) | ||
299 | logger.info("Creating tarball of git repository") | 294 | logger.info("Creating tarball of git repository") |
300 | runfetchcmd("tar -czf %s %s" % (ud.fullmirror, os.path.join(".") ), d) | 295 | runfetchcmd("tar -czf %s %s" % (ud.fullmirror, os.path.join(".") ), d, workdir=ud.clonedir) |
301 | runfetchcmd("touch %s.done" % (ud.fullmirror), d) | 296 | runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=ud.clonedir) |
302 | 297 | ||
303 | def unpack(self, ud, destdir, d): | 298 | def unpack(self, ud, destdir, d): |
304 | """ unpack the downloaded src to destdir""" | 299 | """ unpack the downloaded src to destdir""" |
@@ -321,21 +316,21 @@ class Git(FetchMethod): | |||
321 | cloneflags += " --mirror" | 316 | cloneflags += " --mirror" |
322 | 317 | ||
323 | runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, cloneflags, ud.clonedir, destdir), d) | 318 | runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, cloneflags, ud.clonedir, destdir), d) |
324 | os.chdir(destdir) | ||
325 | repourl = self._get_repo_url(ud) | 319 | repourl = self._get_repo_url(ud) |
326 | runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d) | 320 | runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir) |
327 | if not ud.nocheckout: | 321 | if not ud.nocheckout: |
328 | if subdir != "": | 322 | if subdir != "": |
329 | runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d) | 323 | runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d, |
330 | runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d) | 324 | workdir=destdir) |
325 | runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d, workdir=destdir) | ||
331 | elif not ud.nobranch: | 326 | elif not ud.nobranch: |
332 | branchname = ud.branches[ud.names[0]] | 327 | branchname = ud.branches[ud.names[0]] |
333 | runfetchcmd("%s checkout -B %s %s" % (ud.basecmd, branchname, \ | 328 | runfetchcmd("%s checkout -B %s %s" % (ud.basecmd, branchname, \ |
334 | ud.revisions[ud.names[0]]), d) | 329 | ud.revisions[ud.names[0]]), d, workdir=destdir) |
335 | runfetchcmd("%s branch --set-upstream %s origin/%s" % (ud.basecmd, branchname, \ | 330 | runfetchcmd("%s branch --set-upstream %s origin/%s" % (ud.basecmd, branchname, \ |
336 | branchname), d) | 331 | branchname), d, workdir=destdir) |
337 | else: | 332 | else: |
338 | runfetchcmd("%s checkout %s" % (ud.basecmd, ud.revisions[ud.names[0]]), d) | 333 | runfetchcmd("%s checkout %s" % (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=destdir) |
339 | 334 | ||
340 | return True | 335 | return True |
341 | 336 | ||
@@ -349,7 +344,7 @@ class Git(FetchMethod): | |||
349 | def supports_srcrev(self): | 344 | def supports_srcrev(self): |
350 | return True | 345 | return True |
351 | 346 | ||
352 | def _contains_ref(self, ud, d, name): | 347 | def _contains_ref(self, ud, d, name, wd): |
353 | cmd = "" | 348 | cmd = "" |
354 | if ud.nobranch: | 349 | if ud.nobranch: |
355 | cmd = "%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % ( | 350 | cmd = "%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % ( |
@@ -358,7 +353,7 @@ class Git(FetchMethod): | |||
358 | cmd = "%s branch --contains %s --list %s 2> /dev/null | wc -l" % ( | 353 | cmd = "%s branch --contains %s --list %s 2> /dev/null | wc -l" % ( |
359 | ud.basecmd, ud.revisions[name], ud.branches[name]) | 354 | ud.basecmd, ud.revisions[name], ud.branches[name]) |
360 | try: | 355 | try: |
361 | output = runfetchcmd(cmd, d, quiet=True) | 356 | output = runfetchcmd(cmd, d, quiet=True, workdir=wd) |
362 | except bb.fetch2.FetchError: | 357 | except bb.fetch2.FetchError: |
363 | return False | 358 | return False |
364 | if len(output.split()) > 1: | 359 | if len(output.split()) > 1: |
diff --git a/bitbake/lib/bb/fetch2/gitannex.py b/bitbake/lib/bb/fetch2/gitannex.py index e4527f1c75..4937a10891 100644 --- a/bitbake/lib/bb/fetch2/gitannex.py +++ b/bitbake/lib/bb/fetch2/gitannex.py | |||
@@ -34,43 +34,42 @@ class GitANNEX(Git): | |||
34 | """ | 34 | """ |
35 | return ud.type in ['gitannex'] | 35 | return ud.type in ['gitannex'] |
36 | 36 | ||
37 | def uses_annex(self, ud, d): | 37 | def uses_annex(self, ud, d, wd): |
38 | for name in ud.names: | 38 | for name in ud.names: |
39 | try: | 39 | try: |
40 | runfetchcmd("%s rev-list git-annex" % (ud.basecmd), d, quiet=True) | 40 | runfetchcmd("%s rev-list git-annex" % (ud.basecmd), d, quiet=True, workdir=wd) |
41 | return True | 41 | return True |
42 | except bb.fetch.FetchError: | 42 | except bb.fetch.FetchError: |
43 | pass | 43 | pass |
44 | 44 | ||
45 | return False | 45 | return False |
46 | 46 | ||
47 | def update_annex(self, ud, d): | 47 | def update_annex(self, ud, d, wd): |
48 | try: | 48 | try: |
49 | runfetchcmd("%s annex get --all" % (ud.basecmd), d, quiet=True) | 49 | runfetchcmd("%s annex get --all" % (ud.basecmd), d, quiet=True, workdir=wd) |
50 | except bb.fetch.FetchError: | 50 | except bb.fetch.FetchError: |
51 | return False | 51 | return False |
52 | runfetchcmd("chmod u+w -R %s/annex" % (ud.clonedir), d, quiet=True) | 52 | runfetchcmd("chmod u+w -R %s/annex" % (ud.clonedir), d, quiet=True, workdir=wd) |
53 | 53 | ||
54 | return True | 54 | return True |
55 | 55 | ||
56 | def download(self, ud, d): | 56 | def download(self, ud, d): |
57 | Git.download(self, ud, d) | 57 | Git.download(self, ud, d) |
58 | 58 | ||
59 | os.chdir(ud.clonedir) | 59 | annex = self.uses_annex(ud, d, ud.clonedir) |
60 | annex = self.uses_annex(ud, d) | ||
61 | if annex: | 60 | if annex: |
62 | self.update_annex(ud, d) | 61 | self.update_annex(ud, d, ud.clonedir) |
63 | 62 | ||
64 | def unpack(self, ud, destdir, d): | 63 | def unpack(self, ud, destdir, d): |
65 | Git.unpack(self, ud, destdir, d) | 64 | Git.unpack(self, ud, destdir, d) |
66 | 65 | ||
67 | os.chdir(ud.destdir) | ||
68 | try: | 66 | try: |
69 | runfetchcmd("%s annex init" % (ud.basecmd), d) | 67 | runfetchcmd("%s annex init" % (ud.basecmd), d, workdir=ud.destdir) |
70 | except bb.fetch.FetchError: | 68 | except bb.fetch.FetchError: |
71 | pass | 69 | pass |
72 | 70 | ||
73 | annex = self.uses_annex(ud, d) | 71 | annex = self.uses_annex(ud, d, ud.destdir) |
74 | if annex: | 72 | if annex: |
75 | runfetchcmd("%s annex get" % (ud.basecmd), d) | 73 | runfetchcmd("%s annex get" % (ud.basecmd), d, workdir=ud.destdir) |
76 | runfetchcmd("chmod u+w -R %s/.git/annex" % (ud.destdir), d, quiet=True) | 74 | runfetchcmd("chmod u+w -R %s/.git/annex" % (ud.destdir), d, quiet=True, workdir=ud.destdir) |
75 | |||
diff --git a/bitbake/lib/bb/fetch2/gitsm.py b/bitbake/lib/bb/fetch2/gitsm.py index 752f1d3c15..6613762048 100644 --- a/bitbake/lib/bb/fetch2/gitsm.py +++ b/bitbake/lib/bb/fetch2/gitsm.py | |||
@@ -43,10 +43,10 @@ class GitSM(Git): | |||
43 | """ | 43 | """ |
44 | return ud.type in ['gitsm'] | 44 | return ud.type in ['gitsm'] |
45 | 45 | ||
46 | def uses_submodules(self, ud, d): | 46 | def uses_submodules(self, ud, d, wd): |
47 | for name in ud.names: | 47 | for name in ud.names: |
48 | try: | 48 | try: |
49 | runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True) | 49 | runfetchcmd("%s show %s:.gitmodules" % (ud.basecmd, ud.revisions[name]), d, quiet=True, workdir=wd) |
50 | return True | 50 | return True |
51 | except bb.fetch.FetchError: | 51 | except bb.fetch.FetchError: |
52 | pass | 52 | pass |
@@ -107,28 +107,25 @@ class GitSM(Git): | |||
107 | os.mkdir(tmpclonedir) | 107 | os.mkdir(tmpclonedir) |
108 | os.rename(ud.clonedir, gitdir) | 108 | os.rename(ud.clonedir, gitdir) |
109 | runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*true/bare = false/'", d) | 109 | runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*true/bare = false/'", d) |
110 | os.chdir(tmpclonedir) | 110 | runfetchcmd(ud.basecmd + " reset --hard", d, workdir=tmpclonedir) |
111 | runfetchcmd(ud.basecmd + " reset --hard", d) | 111 | runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d, workdir=tmpclonedir) |
112 | runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d) | 112 | runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=tmpclonedir) |
113 | runfetchcmd(ud.basecmd + " submodule update --init --recursive", d) | ||
114 | self._set_relative_paths(tmpclonedir) | 113 | self._set_relative_paths(tmpclonedir) |
115 | runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d) | 114 | runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d, workdir=tmpclonedir) |
116 | os.rename(gitdir, ud.clonedir,) | 115 | os.rename(gitdir, ud.clonedir,) |
117 | bb.utils.remove(tmpclonedir, True) | 116 | bb.utils.remove(tmpclonedir, True) |
118 | 117 | ||
119 | def download(self, ud, d): | 118 | def download(self, ud, d): |
120 | Git.download(self, ud, d) | 119 | Git.download(self, ud, d) |
121 | 120 | ||
122 | os.chdir(ud.clonedir) | 121 | submodules = self.uses_submodules(ud, d, ud.clonedir) |
123 | submodules = self.uses_submodules(ud, d) | ||
124 | if submodules: | 122 | if submodules: |
125 | self.update_submodules(ud, d) | 123 | self.update_submodules(ud, d) |
126 | 124 | ||
127 | def unpack(self, ud, destdir, d): | 125 | def unpack(self, ud, destdir, d): |
128 | Git.unpack(self, ud, destdir, d) | 126 | Git.unpack(self, ud, destdir, d) |
129 | 127 | ||
130 | os.chdir(ud.destdir) | 128 | submodules = self.uses_submodules(ud, d, ud.destdir) |
131 | submodules = self.uses_submodules(ud, d) | ||
132 | if submodules: | 129 | if submodules: |
133 | runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d) | 130 | runfetchcmd(ud.basecmd + " checkout " + ud.revisions[ud.names[0]], d, workdir=ud.destdir) |
134 | runfetchcmd(ud.basecmd + " submodule update --init --recursive", d) | 131 | runfetchcmd(ud.basecmd + " submodule update --init --recursive", d, workdir=ud.destdir) |
diff --git a/bitbake/lib/bb/fetch2/hg.py b/bitbake/lib/bb/fetch2/hg.py index 3b743ff51d..20df8016da 100644 --- a/bitbake/lib/bb/fetch2/hg.py +++ b/bitbake/lib/bb/fetch2/hg.py | |||
@@ -169,25 +169,22 @@ class Hg(FetchMethod): | |||
169 | # If the checkout doesn't exist and the mirror tarball does, extract it | 169 | # If the checkout doesn't exist and the mirror tarball does, extract it |
170 | if not os.path.exists(ud.pkgdir) and os.path.exists(ud.fullmirror): | 170 | if not os.path.exists(ud.pkgdir) and os.path.exists(ud.fullmirror): |
171 | bb.utils.mkdirhier(ud.pkgdir) | 171 | bb.utils.mkdirhier(ud.pkgdir) |
172 | os.chdir(ud.pkgdir) | 172 | runfetchcmd("tar -xzf %s" % (ud.fullmirror), d, workdir=ud.pkgdir) |
173 | runfetchcmd("tar -xzf %s" % (ud.fullmirror), d) | ||
174 | 173 | ||
175 | if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK): | 174 | if os.access(os.path.join(ud.moddir, '.hg'), os.R_OK): |
176 | # Found the source, check whether need pull | 175 | # Found the source, check whether need pull |
177 | updatecmd = self._buildhgcommand(ud, d, "update") | 176 | updatecmd = self._buildhgcommand(ud, d, "update") |
178 | os.chdir(ud.moddir) | ||
179 | logger.debug(1, "Running %s", updatecmd) | 177 | logger.debug(1, "Running %s", updatecmd) |
180 | try: | 178 | try: |
181 | runfetchcmd(updatecmd, d) | 179 | runfetchcmd(updatecmd, d, workdir=ud.moddir) |
182 | except bb.fetch2.FetchError: | 180 | except bb.fetch2.FetchError: |
183 | # Runnning pull in the repo | 181 | # Runnning pull in the repo |
184 | pullcmd = self._buildhgcommand(ud, d, "pull") | 182 | pullcmd = self._buildhgcommand(ud, d, "pull") |
185 | logger.info("Pulling " + ud.url) | 183 | logger.info("Pulling " + ud.url) |
186 | # update sources there | 184 | # update sources there |
187 | os.chdir(ud.moddir) | ||
188 | logger.debug(1, "Running %s", pullcmd) | 185 | logger.debug(1, "Running %s", pullcmd) |
189 | bb.fetch2.check_network_access(d, pullcmd, ud.url) | 186 | bb.fetch2.check_network_access(d, pullcmd, ud.url) |
190 | runfetchcmd(pullcmd, d) | 187 | runfetchcmd(pullcmd, d, workdir=ud.moddir) |
191 | try: | 188 | try: |
192 | os.unlink(ud.fullmirror) | 189 | os.unlink(ud.fullmirror) |
193 | except OSError as exc: | 190 | except OSError as exc: |
@@ -200,17 +197,15 @@ class Hg(FetchMethod): | |||
200 | logger.info("Fetch " + ud.url) | 197 | logger.info("Fetch " + ud.url) |
201 | # check out sources there | 198 | # check out sources there |
202 | bb.utils.mkdirhier(ud.pkgdir) | 199 | bb.utils.mkdirhier(ud.pkgdir) |
203 | os.chdir(ud.pkgdir) | ||
204 | logger.debug(1, "Running %s", fetchcmd) | 200 | logger.debug(1, "Running %s", fetchcmd) |
205 | bb.fetch2.check_network_access(d, fetchcmd, ud.url) | 201 | bb.fetch2.check_network_access(d, fetchcmd, ud.url) |
206 | runfetchcmd(fetchcmd, d) | 202 | runfetchcmd(fetchcmd, d, workdir=ud.pkgdir) |
207 | 203 | ||
208 | # Even when we clone (fetch), we still need to update as hg's clone | 204 | # Even when we clone (fetch), we still need to update as hg's clone |
209 | # won't checkout the specified revision if its on a branch | 205 | # won't checkout the specified revision if its on a branch |
210 | updatecmd = self._buildhgcommand(ud, d, "update") | 206 | updatecmd = self._buildhgcommand(ud, d, "update") |
211 | os.chdir(ud.moddir) | ||
212 | logger.debug(1, "Running %s", updatecmd) | 207 | logger.debug(1, "Running %s", updatecmd) |
213 | runfetchcmd(updatecmd, d) | 208 | runfetchcmd(updatecmd, d, workdir=ud.moddir) |
214 | 209 | ||
215 | def clean(self, ud, d): | 210 | def clean(self, ud, d): |
216 | """ Clean the hg dir """ | 211 | """ Clean the hg dir """ |
@@ -246,10 +241,9 @@ class Hg(FetchMethod): | |||
246 | if os.path.islink(ud.fullmirror): | 241 | if os.path.islink(ud.fullmirror): |
247 | os.unlink(ud.fullmirror) | 242 | os.unlink(ud.fullmirror) |
248 | 243 | ||
249 | os.chdir(ud.pkgdir) | ||
250 | logger.info("Creating tarball of hg repository") | 244 | logger.info("Creating tarball of hg repository") |
251 | runfetchcmd("tar -czf %s %s" % (ud.fullmirror, ud.module), d) | 245 | runfetchcmd("tar -czf %s %s" % (ud.fullmirror, ud.module), d, workdir=ud.pkgdir) |
252 | runfetchcmd("touch %s.done" % (ud.fullmirror), d) | 246 | runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=ud.pkgdir) |
253 | 247 | ||
254 | def localpath(self, ud, d): | 248 | def localpath(self, ud, d): |
255 | return ud.pkgdir | 249 | return ud.pkgdir |
@@ -269,10 +263,8 @@ class Hg(FetchMethod): | |||
269 | logger.debug(2, "Unpack: creating new hg repository in '" + codir + "'") | 263 | logger.debug(2, "Unpack: creating new hg repository in '" + codir + "'") |
270 | runfetchcmd("%s init %s" % (ud.basecmd, codir), d) | 264 | runfetchcmd("%s init %s" % (ud.basecmd, codir), d) |
271 | logger.debug(2, "Unpack: updating source in '" + codir + "'") | 265 | logger.debug(2, "Unpack: updating source in '" + codir + "'") |
272 | os.chdir(codir) | 266 | runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d, workdir=codir) |
273 | runfetchcmd("%s pull %s" % (ud.basecmd, ud.moddir), d) | 267 | runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d, workdir=codir) |
274 | runfetchcmd("%s up -C %s" % (ud.basecmd, revflag), d) | ||
275 | else: | 268 | else: |
276 | logger.debug(2, "Unpack: extracting source to '" + codir + "'") | 269 | logger.debug(2, "Unpack: extracting source to '" + codir + "'") |
277 | os.chdir(ud.moddir) | 270 | runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d, workdir=ud.moddir) |
278 | runfetchcmd("%s archive -t files %s %s" % (ud.basecmd, revflag, codir), d) | ||
diff --git a/bitbake/lib/bb/fetch2/npm.py b/bitbake/lib/bb/fetch2/npm.py index 2fd43034ba..b26ac22eff 100644 --- a/bitbake/lib/bb/fetch2/npm.py +++ b/bitbake/lib/bb/fetch2/npm.py | |||
@@ -113,16 +113,13 @@ class Npm(FetchMethod): | |||
113 | bb.fatal("NPM package %s downloaded not a tarball!" % file) | 113 | bb.fatal("NPM package %s downloaded not a tarball!" % file) |
114 | 114 | ||
115 | # Change to subdir before executing command | 115 | # Change to subdir before executing command |
116 | save_cwd = os.getcwd() | ||
117 | if not os.path.exists(destdir): | 116 | if not os.path.exists(destdir): |
118 | os.makedirs(destdir) | 117 | os.makedirs(destdir) |
119 | os.chdir(destdir) | ||
120 | path = d.getVar('PATH', True) | 118 | path = d.getVar('PATH', True) |
121 | if path: | 119 | if path: |
122 | cmd = "PATH=\"%s\" %s" % (path, cmd) | 120 | cmd = "PATH=\"%s\" %s" % (path, cmd) |
123 | bb.note("Unpacking %s to %s/" % (file, os.getcwd())) | 121 | bb.note("Unpacking %s to %s/" % (file, destdir)) |
124 | ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True) | 122 | ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True, cwd=destdir) |
125 | os.chdir(save_cwd) | ||
126 | 123 | ||
127 | if ret != 0: | 124 | if ret != 0: |
128 | raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url) | 125 | raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url) |
@@ -239,10 +236,7 @@ class Npm(FetchMethod): | |||
239 | if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror): | 236 | if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror): |
240 | dest = d.getVar("DL_DIR", True) | 237 | dest = d.getVar("DL_DIR", True) |
241 | bb.utils.mkdirhier(dest) | 238 | bb.utils.mkdirhier(dest) |
242 | save_cwd = os.getcwd() | 239 | runfetchcmd("tar -xJf %s" % (ud.fullmirror), d, workdir=dest) |
243 | os.chdir(dest) | ||
244 | runfetchcmd("tar -xJf %s" % (ud.fullmirror), d) | ||
245 | os.chdir(save_cwd) | ||
246 | return | 240 | return |
247 | 241 | ||
248 | shwrf = d.getVar('NPM_SHRINKWRAP', True) | 242 | shwrf = d.getVar('NPM_SHRINKWRAP', True) |
@@ -275,10 +269,8 @@ class Npm(FetchMethod): | |||
275 | if os.path.islink(ud.fullmirror): | 269 | if os.path.islink(ud.fullmirror): |
276 | os.unlink(ud.fullmirror) | 270 | os.unlink(ud.fullmirror) |
277 | 271 | ||
278 | save_cwd = os.getcwd() | 272 | dldir = d.getVar("DL_DIR", True) |
279 | os.chdir(d.getVar("DL_DIR", True)) | ||
280 | logger.info("Creating tarball of npm data") | 273 | logger.info("Creating tarball of npm data") |
281 | runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d) | 274 | runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d, |
282 | runfetchcmd("touch %s.done" % (ud.fullmirror), d) | 275 | workdir=dldir) |
283 | os.chdir(save_cwd) | 276 | runfetchcmd("touch %s.done" % (ud.fullmirror), d, workdir=dldir) |
284 | |||
diff --git a/bitbake/lib/bb/fetch2/osc.py b/bitbake/lib/bb/fetch2/osc.py index d051dfdafa..295abf953b 100644 --- a/bitbake/lib/bb/fetch2/osc.py +++ b/bitbake/lib/bb/fetch2/osc.py | |||
@@ -88,23 +88,21 @@ class Osc(FetchMethod): | |||
88 | oscupdatecmd = self._buildosccommand(ud, d, "update") | 88 | oscupdatecmd = self._buildosccommand(ud, d, "update") |
89 | logger.info("Update "+ ud.url) | 89 | logger.info("Update "+ ud.url) |
90 | # update sources there | 90 | # update sources there |
91 | os.chdir(ud.moddir) | ||
92 | logger.debug(1, "Running %s", oscupdatecmd) | 91 | logger.debug(1, "Running %s", oscupdatecmd) |
93 | bb.fetch2.check_network_access(d, oscupdatecmd, ud.url) | 92 | bb.fetch2.check_network_access(d, oscupdatecmd, ud.url) |
94 | runfetchcmd(oscupdatecmd, d) | 93 | runfetchcmd(oscupdatecmd, d, workdir=ud.moddir) |
95 | else: | 94 | else: |
96 | oscfetchcmd = self._buildosccommand(ud, d, "fetch") | 95 | oscfetchcmd = self._buildosccommand(ud, d, "fetch") |
97 | logger.info("Fetch " + ud.url) | 96 | logger.info("Fetch " + ud.url) |
98 | # check out sources there | 97 | # check out sources there |
99 | bb.utils.mkdirhier(ud.pkgdir) | 98 | bb.utils.mkdirhier(ud.pkgdir) |
100 | os.chdir(ud.pkgdir) | ||
101 | logger.debug(1, "Running %s", oscfetchcmd) | 99 | logger.debug(1, "Running %s", oscfetchcmd) |
102 | bb.fetch2.check_network_access(d, oscfetchcmd, ud.url) | 100 | bb.fetch2.check_network_access(d, oscfetchcmd, ud.url) |
103 | runfetchcmd(oscfetchcmd, d) | 101 | runfetchcmd(oscfetchcmd, d, workdir=ud.pkgdir) |
104 | 102 | ||
105 | os.chdir(os.path.join(ud.pkgdir + ud.path)) | ||
106 | # tar them up to a defined filename | 103 | # tar them up to a defined filename |
107 | runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d, cleanup = [ud.localpath]) | 104 | runfetchcmd("tar -czf %s %s" % (ud.localpath, ud.module), d, |
105 | cleanup=[ud.localpath], workdir=os.path.join(ud.pkgdir + ud.path)) | ||
108 | 106 | ||
109 | def supports_srcrev(self): | 107 | def supports_srcrev(self): |
110 | return False | 108 | return False |
diff --git a/bitbake/lib/bb/fetch2/perforce.py b/bitbake/lib/bb/fetch2/perforce.py index b8169f2cc9..50cb479096 100644 --- a/bitbake/lib/bb/fetch2/perforce.py +++ b/bitbake/lib/bb/fetch2/perforce.py | |||
@@ -168,15 +168,13 @@ class Perforce(FetchMethod): | |||
168 | 168 | ||
169 | bb.utils.remove(ud.pkgdir, True) | 169 | bb.utils.remove(ud.pkgdir, True) |
170 | bb.utils.mkdirhier(ud.pkgdir) | 170 | bb.utils.mkdirhier(ud.pkgdir) |
171 | os.chdir(ud.pkgdir) | ||
172 | 171 | ||
173 | for afile in filelist: | 172 | for afile in filelist: |
174 | p4fetchcmd = self._buildp4command(ud, d, 'print', afile) | 173 | p4fetchcmd = self._buildp4command(ud, d, 'print', afile) |
175 | bb.fetch2.check_network_access(d, p4fetchcmd) | 174 | bb.fetch2.check_network_access(d, p4fetchcmd) |
176 | runfetchcmd(p4fetchcmd, d) | 175 | runfetchcmd(p4fetchcmd, d, workdir=ud.pkgdir) |
177 | 176 | ||
178 | os.chdir(ud.pkgdir) | 177 | runfetchcmd('tar -czf %s p4' % (ud.localpath), d, cleanup=[ud.localpath], workdir=ud.pkgdir) |
179 | runfetchcmd('tar -czf %s p4' % (ud.localpath), d, cleanup = [ud.localpath]) | ||
180 | 178 | ||
181 | def clean(self, ud, d): | 179 | def clean(self, ud, d): |
182 | """ Cleanup p4 specific files and dirs""" | 180 | """ Cleanup p4 specific files and dirs""" |
diff --git a/bitbake/lib/bb/fetch2/repo.py b/bitbake/lib/bb/fetch2/repo.py index fd64b7e626..ecc6e68e97 100644 --- a/bitbake/lib/bb/fetch2/repo.py +++ b/bitbake/lib/bb/fetch2/repo.py | |||
@@ -69,15 +69,14 @@ class Repo(FetchMethod): | |||
69 | else: | 69 | else: |
70 | username = "" | 70 | username = "" |
71 | 71 | ||
72 | bb.utils.mkdirhier(os.path.join(codir, "repo")) | 72 | repodir = os.path.join(codir, "repo") |
73 | os.chdir(os.path.join(codir, "repo")) | 73 | bb.utils.mkdirhier(repodir) |
74 | if not os.path.exists(os.path.join(codir, "repo", ".repo")): | 74 | if not os.path.exists(os.path.join(repodir, ".repo")): |
75 | bb.fetch2.check_network_access(d, "repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), ud.url) | 75 | bb.fetch2.check_network_access(d, "repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), ud.url) |
76 | runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d) | 76 | runfetchcmd("repo init -m %s -b %s -u %s://%s%s%s" % (ud.manifest, ud.branch, ud.proto, username, ud.host, ud.path), d, workdir=repodir) |
77 | 77 | ||
78 | bb.fetch2.check_network_access(d, "repo sync %s" % ud.url, ud.url) | 78 | bb.fetch2.check_network_access(d, "repo sync %s" % ud.url, ud.url) |
79 | runfetchcmd("repo sync", d) | 79 | runfetchcmd("repo sync", d, workdir=repodir) |
80 | os.chdir(codir) | ||
81 | 80 | ||
82 | scmdata = ud.parm.get("scmdata", "") | 81 | scmdata = ud.parm.get("scmdata", "") |
83 | if scmdata == "keep": | 82 | if scmdata == "keep": |
@@ -86,7 +85,7 @@ class Repo(FetchMethod): | |||
86 | tar_flags = "--exclude='.repo' --exclude='.git'" | 85 | tar_flags = "--exclude='.repo' --exclude='.git'" |
87 | 86 | ||
88 | # Create a cache | 87 | # Create a cache |
89 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d) | 88 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, os.path.join(".", "*") ), d, workdir=codir) |
90 | 89 | ||
91 | def supports_srcrev(self): | 90 | def supports_srcrev(self): |
92 | return False | 91 | return False |
diff --git a/bitbake/lib/bb/fetch2/svn.py b/bitbake/lib/bb/fetch2/svn.py index 968ca79b30..9ff94108ed 100644 --- a/bitbake/lib/bb/fetch2/svn.py +++ b/bitbake/lib/bb/fetch2/svn.py | |||
@@ -126,25 +126,22 @@ class Svn(FetchMethod): | |||
126 | if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK): | 126 | if os.access(os.path.join(ud.moddir, '.svn'), os.R_OK): |
127 | svnupdatecmd = self._buildsvncommand(ud, d, "update") | 127 | svnupdatecmd = self._buildsvncommand(ud, d, "update") |
128 | logger.info("Update " + ud.url) | 128 | logger.info("Update " + ud.url) |
129 | # update sources there | ||
130 | os.chdir(ud.moddir) | ||
131 | # We need to attempt to run svn upgrade first in case its an older working format | 129 | # We need to attempt to run svn upgrade first in case its an older working format |
132 | try: | 130 | try: |
133 | runfetchcmd(ud.basecmd + " upgrade", d) | 131 | runfetchcmd(ud.basecmd + " upgrade", d, workdir=ud.moddir) |
134 | except FetchError: | 132 | except FetchError: |
135 | pass | 133 | pass |
136 | logger.debug(1, "Running %s", svnupdatecmd) | 134 | logger.debug(1, "Running %s", svnupdatecmd) |
137 | bb.fetch2.check_network_access(d, svnupdatecmd, ud.url) | 135 | bb.fetch2.check_network_access(d, svnupdatecmd, ud.url) |
138 | runfetchcmd(svnupdatecmd, d) | 136 | runfetchcmd(svnupdatecmd, d, workdir=ud.moddir) |
139 | else: | 137 | else: |
140 | svnfetchcmd = self._buildsvncommand(ud, d, "fetch") | 138 | svnfetchcmd = self._buildsvncommand(ud, d, "fetch") |
141 | logger.info("Fetch " + ud.url) | 139 | logger.info("Fetch " + ud.url) |
142 | # check out sources there | 140 | # check out sources there |
143 | bb.utils.mkdirhier(ud.pkgdir) | 141 | bb.utils.mkdirhier(ud.pkgdir) |
144 | os.chdir(ud.pkgdir) | ||
145 | logger.debug(1, "Running %s", svnfetchcmd) | 142 | logger.debug(1, "Running %s", svnfetchcmd) |
146 | bb.fetch2.check_network_access(d, svnfetchcmd, ud.url) | 143 | bb.fetch2.check_network_access(d, svnfetchcmd, ud.url) |
147 | runfetchcmd(svnfetchcmd, d) | 144 | runfetchcmd(svnfetchcmd, d, ud.pkgdir) |
148 | 145 | ||
149 | scmdata = ud.parm.get("scmdata", "") | 146 | scmdata = ud.parm.get("scmdata", "") |
150 | if scmdata == "keep": | 147 | if scmdata == "keep": |
@@ -152,9 +149,9 @@ class Svn(FetchMethod): | |||
152 | else: | 149 | else: |
153 | tar_flags = "--exclude='.svn'" | 150 | tar_flags = "--exclude='.svn'" |
154 | 151 | ||
155 | os.chdir(ud.pkgdir) | ||
156 | # tar them up to a defined filename | 152 | # tar them up to a defined filename |
157 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.path_spec), d, cleanup = [ud.localpath]) | 153 | runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.path_spec), d, |
154 | cleanup=[ud.localpath], workdir=ud.pkgdir) | ||
158 | 155 | ||
159 | def clean(self, ud, d): | 156 | def clean(self, ud, d): |
160 | """ Clean SVN specific files and dirs """ | 157 | """ Clean SVN specific files and dirs """ |