summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/fetch2/npmsw.py26
-rw-r--r--bitbake/lib/bb/tests/fetch.py39
2 files changed, 58 insertions, 7 deletions
diff --git a/bitbake/lib/bb/fetch2/npmsw.py b/bitbake/lib/bb/fetch2/npmsw.py
index a8c4d3528f..36fcbfba15 100644
--- a/bitbake/lib/bb/fetch2/npmsw.py
+++ b/bitbake/lib/bb/fetch2/npmsw.py
@@ -129,10 +129,28 @@ class NpmShrinkWrap(FetchMethod):
129 129
130 localpath = os.path.join(d.getVar("DL_DIR"), localfile) 130 localpath = os.path.join(d.getVar("DL_DIR"), localfile)
131 131
132 # Handle local tarball and link sources
133 elif version.startswith("file"):
134 localpath = version[5:]
135 if not version.endswith(".tgz"):
136 unpack = False
137
132 # Handle git sources 138 # Handle git sources
133 elif version.startswith("git"): 139 elif version.startswith(("git", "bitbucket","gist")) or (
140 not version.endswith((".tgz", ".tar", ".tar.gz"))
141 and not version.startswith((".", "@", "/"))
142 and "/" in version
143 ):
134 if version.startswith("github:"): 144 if version.startswith("github:"):
135 version = "git+https://github.com/" + version[len("github:"):] 145 version = "git+https://github.com/" + version[len("github:"):]
146 elif version.startswith("gist:"):
147 version = "git+https://gist.github.com/" + version[len("gist:"):]
148 elif version.startswith("bitbucket:"):
149 version = "git+https://bitbucket.org/" + version[len("bitbucket:"):]
150 elif version.startswith("gitlab:"):
151 version = "git+https://gitlab.com/" + version[len("gitlab:"):]
152 elif not version.startswith(("git+","git:")):
153 version = "git+https://github.com/" + version
136 regex = re.compile(r""" 154 regex = re.compile(r"""
137 ^ 155 ^
138 git\+ 156 git\+
@@ -158,12 +176,6 @@ class NpmShrinkWrap(FetchMethod):
158 176
159 url = str(uri) 177 url = str(uri)
160 178
161 # Handle local tarball and link sources
162 elif version.startswith("file"):
163 localpath = version[5:]
164 if not version.endswith(".tgz"):
165 unpack = False
166
167 else: 179 else:
168 raise ParameterError("Unsupported dependency: %s" % name, ud.url) 180 raise ParameterError("Unsupported dependency: %s" % name, ud.url)
169 181
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 54148b3fdf..73eefc5938 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -2666,6 +2666,45 @@ class NPMTest(FetcherTest):
2666 2666
2667 @skipIfNoNpm() 2667 @skipIfNoNpm()
2668 @skipIfNoNetwork() 2668 @skipIfNoNetwork()
2669 def test_npmsw_git(self):
2670 swfile = self.create_shrinkwrap_file({
2671 'dependencies': {
2672 'cookie': {
2673 'version': 'github:jshttp/cookie.git#aec1177c7da67e3b3273df96cf476824dbc9ae09',
2674 'from': 'github:jshttp/cookie.git'
2675 }
2676 }
2677 })
2678 fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d)
2679 fetcher.download()
2680 self.assertTrue(os.path.exists(os.path.join(self.dldir, 'git2', 'github.com.jshttp.cookie.git')))
2681
2682 swfile = self.create_shrinkwrap_file({
2683 'dependencies': {
2684 'cookie': {
2685 'version': 'jshttp/cookie.git#aec1177c7da67e3b3273df96cf476824dbc9ae09',
2686 'from': 'jshttp/cookie.git'
2687 }
2688 }
2689 })
2690 fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d)
2691 fetcher.download()
2692 self.assertTrue(os.path.exists(os.path.join(self.dldir, 'git2', 'github.com.jshttp.cookie.git')))
2693
2694 swfile = self.create_shrinkwrap_file({
2695 'dependencies': {
2696 'nodejs': {
2697 'version': 'gitlab:gitlab-examples/nodejs.git#892a1f16725e56cc3a2cb0d677be42935c8fc262',
2698 'from': 'gitlab:gitlab-examples/nodejs'
2699 }
2700 }
2701 })
2702 fetcher = bb.fetch.Fetch(['npmsw://' + swfile], self.d)
2703 fetcher.download()
2704 self.assertTrue(os.path.exists(os.path.join(self.dldir, 'git2', 'gitlab.com.gitlab-examples.nodejs.git')))
2705
2706 @skipIfNoNpm()
2707 @skipIfNoNetwork()
2669 def test_npmsw_dev(self): 2708 def test_npmsw_dev(self):
2670 swfile = self.create_shrinkwrap_file({ 2709 swfile = self.create_shrinkwrap_file({
2671 'dependencies': { 2710 'dependencies': {