summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--scripts/lib/recipetool/create.py30
-rw-r--r--scripts/lib/scriptutils.py27
2 files changed, 28 insertions, 29 deletions
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index ec6e107e62..c4754dbcdd 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -58,34 +58,6 @@ class RecipeHandler():
58 58
59 59
60 60
61def fetch_source(uri, destdir, srcrev):
62 import bb.data
63 bb.utils.mkdirhier(destdir)
64 localdata = bb.data.createCopy(tinfoil.config_data)
65 bb.data.update_data(localdata)
66 localdata.setVar('BB_STRICT_CHECKSUM', '')
67 localdata.setVar('SRCREV', srcrev)
68 ret = (None, None)
69 olddir = os.getcwd()
70 try:
71 fetcher = bb.fetch2.Fetch([uri], localdata)
72 for u in fetcher.ud:
73 ud = fetcher.ud[u]
74 ud.ignore_checksums = True
75 fetcher.download()
76 fetcher.unpack(destdir)
77 for u in fetcher.ud:
78 ud = fetcher.ud[u]
79 if ud.method.recommends_checksum(ud):
80 md5value = bb.utils.md5_file(ud.localpath)
81 sha256value = bb.utils.sha256_file(ud.localpath)
82 ret = (md5value, sha256value)
83 except bb.fetch2.BBFetchException, e:
84 raise bb.build.FuncFailed(e)
85 finally:
86 os.chdir(olddir)
87 return ret
88
89def supports_srcrev(uri): 61def supports_srcrev(uri):
90 localdata = bb.data.createCopy(tinfoil.config_data) 62 localdata = bb.data.createCopy(tinfoil.config_data)
91 # This is a bit sad, but if you don't have this set there can be some 63 # This is a bit sad, but if you don't have this set there can be some
@@ -123,7 +95,7 @@ def create_recipe(args):
123 tempsrc = tempfile.mkdtemp(prefix='recipetool-') 95 tempsrc = tempfile.mkdtemp(prefix='recipetool-')
124 srctree = tempsrc 96 srctree = tempsrc
125 logger.info('Fetching %s...' % srcuri) 97 logger.info('Fetching %s...' % srcuri)
126 checksums = fetch_source(args.source, srctree, srcrev) 98 checksums = scriptutils.fetch_uri(tinfoil.config_data, args.source, srctree, srcrev)
127 dirlist = os.listdir(srctree) 99 dirlist = os.listdir(srctree)
128 if 'git.indirectionsymlink' in dirlist: 100 if 'git.indirectionsymlink' in dirlist:
129 dirlist.remove('git.indirectionsymlink') 101 dirlist.remove('git.indirectionsymlink')
diff --git a/scripts/lib/scriptutils.py b/scripts/lib/scriptutils.py
index fdf4b5d55d..5d103a58fe 100644
--- a/scripts/lib/scriptutils.py
+++ b/scripts/lib/scriptutils.py
@@ -69,3 +69,30 @@ def git_convert_standalone_clone(repodir):
69 # of the contents is shared 69 # of the contents is shared
70 bb.process.run('git repack -a', cwd=repodir) 70 bb.process.run('git repack -a', cwd=repodir)
71 os.remove(alternatesfile) 71 os.remove(alternatesfile)
72
73def fetch_uri(d, uri, destdir, srcrev=None):
74 """Fetch a URI to a local directory"""
75 import bb.data
76 bb.utils.mkdirhier(destdir)
77 localdata = bb.data.createCopy(d)
78 localdata.setVar('BB_STRICT_CHECKSUM', '')
79 localdata.setVar('SRCREV', srcrev)
80 ret = (None, None)
81 olddir = os.getcwd()
82 try:
83 fetcher = bb.fetch2.Fetch([uri], localdata)
84 for u in fetcher.ud:
85 ud = fetcher.ud[u]
86 ud.ignore_checksums = True
87 fetcher.download()
88 fetcher.unpack(destdir)
89 for u in fetcher.ud:
90 ud = fetcher.ud[u]
91 if ud.method.recommends_checksum(ud):
92 md5value = bb.utils.md5_file(ud.localpath)
93 sha256value = bb.utils.sha256_file(ud.localpath)
94 ret = (md5value, sha256value)
95 finally:
96 os.chdir(olddir)
97 return ret
98