[oe-commits] [bitbake] 03/19: fetch2/npm: Add mirroring support for npm fetcher

git at git.openembedded.org git at git.openembedded.org
Fri Feb 26 17:59:05 UTC 2016


rpurdie pushed a commit to branch master
in repository bitbake.

commit bff46c614d3f9cc18a1c8908c47842712e0e3a8c
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Thu Feb 25 15:07:08 2016 +0000

    fetch2/npm: Add mirroring support for npm fetcher
    
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/fetch2/npm.py | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/lib/bb/fetch2/npm.py b/lib/bb/fetch2/npm.py
index 54cf76d..7d5e891 100644
--- a/lib/bb/fetch2/npm.py
+++ b/lib/bb/fetch2/npm.py
@@ -59,6 +59,7 @@ class Npm(FetchMethod):
          logger.debug(2, "Calling cleanup %s" % ud.pkgname)
          bb.utils.remove(ud.localpath, False)
          bb.utils.remove(ud.pkgdatadir, True)
+         bb.utils.remove(ud.fullmirror, False)
 
     def urldata_init(self, ud, d):
         """
@@ -82,12 +83,16 @@ class Npm(FetchMethod):
         prefixdir = "npm/%s" % ud.pkgname
         ud.pkgdatadir = d.expand("${DL_DIR}/%s" % prefixdir)
         if not os.path.exists(ud.pkgdatadir):
-            bb.utils.mkdirhiet(ud.pkgdatadir)
+            bb.utils.mkdirhier(ud.pkgdatadir)
         ud.localpath = d.expand("${DL_DIR}/npm/%s" % ud.bbnpmmanifest)
 
         self.basecmd = d.getVar("FETCHCMD_wget", True) or "/usr/bin/env wget -O -t 2 -T 30 -nv --passive-ftp --no-check-certificate "
         self.basecmd += " --directory-prefix=%s " % prefixdir
 
+        ud.write_tarballs = ((data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) or "0") != "0")
+        ud.mirrortarball = 'npm_%s-%s.tar.xz' % (ud.pkgname, ud.version)
+        ud.fullmirror = os.path.join(d.getVar("DL_DIR", True), ud.mirrortarball)
+
     def need_update(self, ud, d):
         if os.path.exists(ud.localpath):
             return False
@@ -202,6 +207,15 @@ class Npm(FetchMethod):
         shrinkobj = {}
         lockdown = {}
 
+        if not os.listdir(ud.pkgdatadir) and os.path.exists(ud.fullmirror):
+            dest = d.getVar("DL_DIR", True)
+            bb.utils.mkdirhier(dest)
+            save_cwd = os.getcwd()
+            os.chdir(dest)
+            runfetchcmd("tar -xJf %s" % (ud.fullmirror), d)
+            os.chdir(save_cwd)
+            return
+
         shwrf = d.getVar('NPM_SHRINKWRAP', True)
         logger.debug(2, "NPM shrinkwrap file is %s" % shwrf)
         try:
@@ -224,3 +238,18 @@ class Npm(FetchMethod):
 
         with open(ud.localpath, 'w') as outfile:
             json.dump(jsondepobj, outfile)
+
+    def build_mirror_data(self, ud, d):
+        # Generate a mirror tarball if needed
+        if ud.write_tarballs and not os.path.exists(ud.fullmirror):
+            # it's possible that this symlink points to read-only filesystem with PREMIRROR
+            if os.path.islink(ud.fullmirror):
+                os.unlink(ud.fullmirror)
+
+            save_cwd = os.getcwd()
+            os.chdir(d.getVar("DL_DIR", True))
+            logger.info("Creating tarball of npm data")
+            runfetchcmd("tar -cJf %s npm/%s npm/%s" % (ud.fullmirror, ud.bbnpmmanifest, ud.pkgname), d)
+            runfetchcmd("touch %s.done" % (ud.fullmirror), d)
+            os.chdir(save_cwd)
+

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list