diff options
| -rw-r--r-- | bitbake/lib/bb/fetch2/npm.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/npm.py b/bitbake/lib/bb/fetch2/npm.py index 54cf76df09..7d5e8913fb 100644 --- a/bitbake/lib/bb/fetch2/npm.py +++ b/bitbake/lib/bb/fetch2/npm.py | |||
| @@ -59,6 +59,7 @@ class Npm(FetchMethod): | |||
| 59 | logger.debug(2, "Calling cleanup %s" % ud.pkgname) | 59 | logger.debug(2, "Calling cleanup %s" % ud.pkgname) |
| 60 | bb.utils.remove(ud.localpath, False) | 60 | bb.utils.remove(ud.localpath, False) |
| 61 | bb.utils.remove(ud.pkgdatadir, True) | 61 | bb.utils.remove(ud.pkgdatadir, True) |
| 62 | bb.utils.remove(ud.fullmirror, False) | ||
| 62 | 63 | ||
| 63 | def urldata_init(self, ud, d): | 64 | def urldata_init(self, ud, d): |
| 64 | """ | 65 | """ |
| @@ -82,12 +83,16 @@ class Npm(FetchMethod): | |||
| 82 | prefixdir = "npm/%s" % ud.pkgname | 83 | prefixdir = "npm/%s" % ud.pkgname |
| 83 | ud.pkgdatadir = d.expand("${DL_DIR}/%s" % prefixdir) | 84 | ud.pkgdatadir = d.expand("${DL_DIR}/%s" % prefixdir) |
| 84 | if not os.path.exists(ud.pkgdatadir): | 85 | if not os.path.exists(ud.pkgdatadir): |
| 85 | bb.utils.mkdirhiet(ud.pkgdatadir) | 86 | bb.utils.mkdirhier(ud.pkgdatadir) |
| 86 | ud.localpath = d.expand("${DL_DIR}/npm/%s" % ud.bbnpmmanifest) | 87 | ud.localpath = d.expand("${DL_DIR}/npm/%s" % ud.bbnpmmanifest) |
| 87 | 88 | ||
| 88 | self.basecmd = d.getVar("FETCHCMD_wget", True) or "/usr/bin/env wget -O -t 2 -T 30 -nv --passive-ftp --no-check-certificate " | 89 | self.basecmd = d.getVar("FETCHCMD_wget", True) or "/usr/bin/env wget -O -t 2 -T 30 -nv --passive-ftp --no-check-certificate " |
| 89 | self.basecmd += " --directory-prefix=%s " % prefixdir | 90 | self.basecmd += " --directory-prefix=%s " % prefixdir |
| 90 | 91 | ||
| 92 | ud.write_tarballs = ((data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) or "0") != "0") | ||
| 93 | ud.mirrortarball = 'npm_%s-%s.tar.xz' % (ud.pkgname, ud.version) | ||
| 94 | ud.fullmirror = os.path.join(d.getVar("DL_DIR", True), ud.mirrortarball) | ||
| 95 | |||
| 91 | def need_update(self, ud, d): | 96 | def need_update(self, ud, d): |
| 92 | if os.path.exists(ud.localpath): | 97 | if os.path.exists(ud.localpath): |
| 93 | return False | 98 | return False |
| @@ -202,6 +207,15 @@ class Npm(FetchMethod): | |||
| 202 | shrinkobj = {} | 207 | shrinkobj = {} |
| 203 | lockdown = {} | 208 | lockdown = {} |
| 204 | 209 | ||
| 210 | if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror): | ||
| 211 | dest = d.getVar("DL_DIR", True) | ||
| 212 | bb.utils.mkdirhier(dest) | ||
| 213 | save_cwd = os.getcwd() | ||
| 214 | os.chdir(dest) | ||
| 215 | runfetchcmd("tar -xJf %s" % (ud.fullmirror), d) | ||
| 216 | os.chdir(save_cwd) | ||
| 217 | return | ||
| 218 | |||
| 205 | shwrf = d.getVar('NPM_SHRINKWRAP', True) | 219 | shwrf = d.getVar('NPM_SHRINKWRAP', True) |
| 206 | logger.debug(2, "NPM shrinkwrap file is %s" % shwrf) | 220 | logger.debug(2, "NPM shrinkwrap file is %s" % shwrf) |
| 207 | try: | 221 | try: |
| @@ -224,3 +238,18 @@ class Npm(FetchMethod): | |||
| 224 | 238 | ||
| 225 | with open(ud.localpath, 'w') as outfile: | 239 | with open(ud.localpath, 'w') as outfile: |
| 226 | json.dump(jsondepobj, outfile) | 240 | json.dump(jsondepobj, outfile) |
| 241 | |||
| 242 | def build_mirror_data(self, ud, d): | ||
| 243 | # Generate a mirror tarball if needed | ||
| 244 | if ud.write_tarballs and not os.path.exists(ud.fullmirror): | ||
| 245 | # it's possible that this symlink points to read-only filesystem with PREMIRROR | ||
| 246 | if os.path.islink(ud.fullmirror): | ||
| 247 | os.unlink(ud.fullmirror) | ||
| 248 | |||
| 249 | save_cwd = os.getcwd() | ||
| 250 | os.chdir(d.getVar("DL_DIR", True)) | ||
| 251 | logger.info("Creating tarball of npm data") | ||
| 252 | runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d) | ||
| 253 | runfetchcmd("touch %s.done" % (ud.fullmirror), d) | ||
| 254 | os.chdir(save_cwd) | ||
| 255 | |||
