mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
bitbake: fetch2/gomod: Fix mirroring problem
Build the 'downloadfilename' parameter by replacing path separators in the module path like the git fetcher builds the mirror tar ball name. Copy the downloaded file in the fetcher's unpack method like the crate fetcher instead of calling the base fetcher's unpack method. (Bitbake rev: 7762cea087597019460d66b04268757bd46befdf) Signed-off-by: Christian Lindeberg <christian.lindeberg@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
ecff1d6a2d
commit
c00ad319d4
|
@ -107,23 +107,23 @@ class GoMod(Wget):
|
|||
if ud.path != '/':
|
||||
module += ud.path
|
||||
ud.parm['module'] = module
|
||||
version = ud.parm['version']
|
||||
|
||||
# Set URL and filename for wget download
|
||||
path = escape(module + '/@v/' + ud.parm['version'])
|
||||
if ud.parm.get('mod', '0') == '1':
|
||||
path += '.mod'
|
||||
ext = '.mod'
|
||||
else:
|
||||
path += '.zip'
|
||||
ud.parm['unpack'] = '0'
|
||||
ext = '.zip'
|
||||
path = escape(f"{module}/@v/{version}{ext}")
|
||||
ud.url = bb.fetch2.encodeurl(
|
||||
('https', proxy, '/' + path, None, None, None))
|
||||
ud.parm['downloadfilename'] = path
|
||||
ud.parm['downloadfilename'] = f"{module.replace('/', '.')}@{version}{ext}"
|
||||
|
||||
ud.parm['name'] = f"{module}@{ud.parm['version']}"
|
||||
# Set name for checksum verification
|
||||
ud.parm['name'] = f"{module}@{version}"
|
||||
|
||||
# Set subdir for unpack
|
||||
ud.parm['subdir'] = os.path.join(moddir, 'cache/download',
|
||||
os.path.dirname(path))
|
||||
# Set path for unpack
|
||||
ud.parm['unpackpath'] = os.path.join(moddir, 'cache/download', path)
|
||||
|
||||
super().urldata_init(ud, d)
|
||||
|
||||
|
@ -131,13 +131,22 @@ class GoMod(Wget):
|
|||
"""Unpack the module in the module cache."""
|
||||
|
||||
# Unpack the module zip file or go.mod file
|
||||
super().unpack(ud, rootdir, d)
|
||||
unpackpath = os.path.join(rootdir, ud.parm['unpackpath'])
|
||||
unpackdir = os.path.dirname(unpackpath)
|
||||
bb.utils.mkdirhier(unpackdir)
|
||||
ud.unpack_tracer.unpack("file-copy", unpackdir)
|
||||
cmd = f"cp {ud.localpath} {unpackpath}"
|
||||
path = d.getVar('PATH')
|
||||
if path:
|
||||
cmd = f"PATH={path} {cmd}"
|
||||
name = os.path.basename(unpackpath)
|
||||
bb.note(f"Unpacking {name} to {unpackdir}/")
|
||||
subprocess.check_call(cmd, shell=True, preexec_fn=subprocess_setup)
|
||||
|
||||
if ud.localpath.endswith('.zip'):
|
||||
if name.endswith('.zip'):
|
||||
# Unpack the go.mod file from the zip file
|
||||
module = ud.parm['module']
|
||||
unpackdir = os.path.join(rootdir, ud.parm['subdir'])
|
||||
name = os.path.basename(ud.localpath).rsplit('.', 1)[0] + '.mod'
|
||||
name = name.rsplit('.', 1)[0] + '.mod'
|
||||
bb.note(f"Unpacking {name} to {unpackdir}/")
|
||||
with zipfile.ZipFile(ud.localpath) as zf:
|
||||
with open(os.path.join(unpackdir, name), mode='wb') as mf:
|
||||
|
|
|
@ -3378,6 +3378,8 @@ class GoModTest(FetcherTest):
|
|||
fetcher = bb.fetch2.Fetch(urls, self.d)
|
||||
ud = fetcher.ud[urls[0]]
|
||||
self.assertEqual(ud.url, 'https://proxy.golang.org/github.com/%21azure/azure-sdk-for-go/sdk/storage/azblob/%40v/v1.0.0.zip')
|
||||
self.assertEqual(ud.parm['downloadfilename'], 'github.com.Azure.azure-sdk-for-go.sdk.storage.azblob@v1.0.0.zip')
|
||||
self.assertEqual(ud.parm['name'], 'github.com/Azure/azure-sdk-for-go/sdk/storage/azblob@v1.0.0')
|
||||
|
||||
fetcher.download()
|
||||
fetcher.unpack(self.unpackdir)
|
||||
|
@ -3395,6 +3397,8 @@ class GoModTest(FetcherTest):
|
|||
fetcher = bb.fetch2.Fetch(urls, self.d)
|
||||
ud = fetcher.ud[urls[0]]
|
||||
self.assertEqual(ud.url, 'https://proxy.golang.org/github.com/%21azure/azure-sdk-for-go/sdk/storage/azblob/%40v/v1.0.0.mod')
|
||||
self.assertEqual(ud.parm['downloadfilename'], 'github.com.Azure.azure-sdk-for-go.sdk.storage.azblob@v1.0.0.mod')
|
||||
self.assertEqual(ud.parm['name'], 'github.com/Azure/azure-sdk-for-go/sdk/storage/azblob@v1.0.0')
|
||||
|
||||
fetcher.download()
|
||||
fetcher.unpack(self.unpackdir)
|
||||
|
@ -3409,6 +3413,7 @@ class GoModTest(FetcherTest):
|
|||
fetcher = bb.fetch2.Fetch(urls, self.d)
|
||||
ud = fetcher.ud[urls[0]]
|
||||
self.assertEqual(ud.url, 'https://proxy.golang.org/gopkg.in/ini.v1/%40v/v1.67.0.zip')
|
||||
self.assertEqual(ud.parm['downloadfilename'], 'gopkg.in.ini.v1@v1.67.0.zip')
|
||||
self.assertEqual(ud.parm['name'], 'gopkg.in/ini.v1@v1.67.0')
|
||||
|
||||
fetcher.download()
|
||||
|
@ -3427,6 +3432,8 @@ class GoModTest(FetcherTest):
|
|||
fetcher = bb.fetch2.Fetch(urls, self.d)
|
||||
ud = fetcher.ud[urls[0]]
|
||||
self.assertEqual(ud.url, 'https://proxy.golang.org/gopkg.in/ini.v1/%40v/v1.67.0.zip')
|
||||
self.assertEqual(ud.parm['downloadfilename'], 'gopkg.in.ini.v1@v1.67.0.zip')
|
||||
self.assertEqual(ud.parm['name'], 'gopkg.in/ini.v1@v1.67.0')
|
||||
|
||||
fetcher.download()
|
||||
fetcher.unpack(self.unpackdir)
|
||||
|
@ -3444,6 +3451,8 @@ class GoModTest(FetcherTest):
|
|||
fetcher = bb.fetch2.Fetch(urls, self.d)
|
||||
ud = fetcher.ud[urls[0]]
|
||||
self.assertEqual(ud.url, 'https://proxy.golang.org/go.opencensus.io/%40v/v0.24.0.zip')
|
||||
self.assertEqual(ud.parm['downloadfilename'], 'go.opencensus.io@v0.24.0.zip')
|
||||
self.assertEqual(ud.parm['name'], 'go.opencensus.io@v0.24.0')
|
||||
|
||||
fetcher.download()
|
||||
fetcher.unpack(self.unpackdir)
|
||||
|
|
Loading…
Reference in New Issue
Block a user