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': { |
