diff options
-rw-r--r-- | bitbake/lib/bb/fetch2/npmsw.py | 26 | ||||
-rw-r--r-- | bitbake/lib/bb/tests/fetch.py | 39 |
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': { |