summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/fetch2/ssh.py32
-rw-r--r--bitbake/lib/bb/ui/knotty.py3
2 files changed, 20 insertions, 15 deletions
diff --git a/bitbake/lib/bb/fetch2/ssh.py b/bitbake/lib/bb/fetch2/ssh.py
index 8d6434a7eb..8b5acbf6db 100644
--- a/bitbake/lib/bb/fetch2/ssh.py
+++ b/bitbake/lib/bb/fetch2/ssh.py
@@ -10,6 +10,12 @@ IETF secsh internet draft:
10 Currently does not support the sftp parameters, as this uses scp 10 Currently does not support the sftp parameters, as this uses scp
11 Also does not support the 'fingerprint' connection parameter. 11 Also does not support the 'fingerprint' connection parameter.
12 12
13 Please note that '/' is used as host, path separator not ':' as you may
14 be used to, also '~' can be used to specify user HOME, but again after '/'
15
16 Example SRC_URI:
17 SRC_URI = "ssh://user@host.example.com/dir/path/file.txt"
18 SRC_URI = "ssh://user@host.example.com/~/file.txt"
13''' 19'''
14 20
15# Copyright (C) 2006 OpenedHand Ltd. 21# Copyright (C) 2006 OpenedHand Ltd.
@@ -72,15 +78,19 @@ class SSH(FetchMethod):
72 def supports_checksum(self, urldata): 78 def supports_checksum(self, urldata):
73 return False 79 return False
74 80
75 def localpath(self, url, urldata, d): 81 def urldata_init(self, urldata, d):
82 if 'protocol' in urldata.parm and urldata.parm['protocol'] == 'git':
83 raise bb.fetch2.ParameterError(
84 "Invalid protocol - if you wish to fetch from a git " +
85 "repository using ssh, you need to use " +
86 "git:// prefix with protocol=ssh", urldata.url)
76 m = __pattern__.match(urldata.url) 87 m = __pattern__.match(urldata.url)
77 path = m.group('path') 88 path = m.group('path')
78 host = m.group('host') 89 host = m.group('host')
79 lpath = os.path.join(data.getVar('DL_DIR', d, True), host, os.path.basename(path)) 90 urldata.localpath = os.path.join(d.getVar('DL_DIR', True), os.path.basename(path))
80 return lpath
81 91
82 def download(self, url, urldata, d): 92 def download(self, url, urldata, d):
83 dldir = data.getVar('DL_DIR', d, True) 93 dldir = d.getVar('DL_DIR', True)
84 94
85 m = __pattern__.match(url) 95 m = __pattern__.match(url)
86 path = m.group('path') 96 path = m.group('path')
@@ -89,16 +99,10 @@ class SSH(FetchMethod):
89 user = m.group('user') 99 user = m.group('user')
90 password = m.group('pass') 100 password = m.group('pass')
91 101
92 ldir = os.path.join(dldir, host)
93 lpath = os.path.join(ldir, os.path.basename(path))
94
95 if not os.path.exists(ldir):
96 os.makedirs(ldir)
97
98 if port: 102 if port:
99 port = '-P %s' % port 103 portarg = '-P %s' % port
100 else: 104 else:
101 port = '' 105 portarg = ''
102 106
103 if user: 107 if user:
104 fr = user 108 fr = user
@@ -112,9 +116,9 @@ class SSH(FetchMethod):
112 116
113 import commands 117 import commands
114 cmd = 'scp -B -r %s %s %s/' % ( 118 cmd = 'scp -B -r %s %s %s/' % (
115 port, 119 portarg,
116 commands.mkarg(fr), 120 commands.mkarg(fr),
117 commands.mkarg(ldir) 121 commands.mkarg(dldir)
118 ) 122 )
119 123
120 bb.fetch2.check_network_access(d, cmd, urldata.url) 124 bb.fetch2.check_network_access(d, cmd, urldata.url)
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 8c63d74d9c..82111a1104 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -449,7 +449,8 @@ def main(server, eventHandler, tf = TerminalFilter):
449 bb.runqueue.runQueueExitWait, 449 bb.runqueue.runQueueExitWait,
450 bb.event.OperationStarted, 450 bb.event.OperationStarted,
451 bb.event.OperationCompleted, 451 bb.event.OperationCompleted,
452 bb.event.OperationProgress)): 452 bb.event.OperationProgress,
453 bb.event.DiskFull)):
453 continue 454 continue
454 455
455 logger.error("Unknown event: %s", event) 456 logger.error("Unknown event: %s", event)