drop the old fetch behavior for pre Cargo 0.13.0
This behavior is flakey and doesn't work from Cargo 0.13.0 and newer which aren't part of this repo anymore.
This commit is contained in:
@@ -83,10 +83,6 @@ oe_cargo_fix_env () {
|
||||
EXTRA_OECARGO_PATHS ??= ""
|
||||
|
||||
cargo_do_compile () {
|
||||
# prevent cargo from trying to fetch down new data
|
||||
mkdir -p "${WORKDIR}/cargo_home/registry/index/github.com-1ecc6299db9ec823"
|
||||
touch "${WORKDIR}/cargo_home/registry/index/github.com-1ecc6299db9ec823/.cargo-index-lock"
|
||||
|
||||
oe_cargo_fix_env
|
||||
oe_cargo_build
|
||||
}
|
||||
|
||||
110
lib/crate.py
110
lib/crate.py
@@ -35,21 +35,6 @@ class Crate(Wget):
|
||||
|
||||
"""Class to fetch crates via wget"""
|
||||
|
||||
def _cargo_path(self, rootdir, component):
|
||||
# TODO: make this less brittle
|
||||
# This can go away entirely once we can build a cargo that supports source-replacement
|
||||
repo = "github.com-1ecc6299db9ec823"
|
||||
return os.path.join(rootdir, "cargo_home", "registry", component, repo)
|
||||
|
||||
def _cargo_src_path(self, rootdir):
|
||||
return self._cargo_path(rootdir, "src")
|
||||
|
||||
def _cargo_index_path(self, rootdir):
|
||||
return self._cargo_path(rootdir, "index")
|
||||
|
||||
def _cargo_cache_path(self, rootdir):
|
||||
return self._cargo_path(rootdir, "cache")
|
||||
|
||||
def _cargo_bitbake_path(self, rootdir):
|
||||
return os.path.join(rootdir, "cargo_home", "bitbake")
|
||||
|
||||
@@ -57,7 +42,7 @@ class Crate(Wget):
|
||||
"""
|
||||
Check to see if a given url is for this fetcher
|
||||
"""
|
||||
return ud.type in ['crate', 'crate-index']
|
||||
return ud.type in ['crate']
|
||||
|
||||
def recommends_checksum(self, urldata):
|
||||
return False
|
||||
@@ -69,8 +54,6 @@ class Crate(Wget):
|
||||
|
||||
if ud.type == 'crate':
|
||||
self._crate_urldata_init(ud, d)
|
||||
elif ud.type == 'crate-index':
|
||||
self._index_urldata_init(ud, d)
|
||||
|
||||
super(Crate, self).urldata_init(ud, d)
|
||||
|
||||
@@ -102,71 +85,15 @@ class Crate(Wget):
|
||||
|
||||
logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
|
||||
|
||||
def _index_urldata_init(self, ud, d):
|
||||
"""
|
||||
Sets up the download for the cargo index
|
||||
"""
|
||||
|
||||
# URL syntax is: crate-index://REV
|
||||
# break the URL apart by /
|
||||
parts = ud.url.split('/')
|
||||
if len(parts) != 4:
|
||||
raise bb.fetch2.ParameterError("Invalid URL: Must be crate-index://HOST/REV", ud.url)
|
||||
|
||||
# last field is the rev
|
||||
rev = parts[3]
|
||||
host = parts[2]
|
||||
|
||||
if host == 'crates.io':
|
||||
host = 'github.com/rust-lang/crates.io-index'
|
||||
|
||||
ud.url = "https://%s/archive/%s.tar.gz" % (host, rev)
|
||||
ud.parm['downloadfilename'] = 'cargo-index-%s.tar.gz' % rev
|
||||
ud.parm['name'] = "index"
|
||||
|
||||
logger.debug(2, "Fetching crate index %s" % ud.url)
|
||||
|
||||
def unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Uses the crate to build the necessary paths for cargo to utilize it
|
||||
"""
|
||||
if ud.type == 'crate-index':
|
||||
return self._index_unpack(ud, rootdir, d)
|
||||
elif ud.type == 'crate':
|
||||
if ud.type == 'crate':
|
||||
return self._crate_unpack(ud, rootdir, d)
|
||||
else:
|
||||
super(Crate, self).unpack(ud, rootdir, d)
|
||||
|
||||
def _index_unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks the index
|
||||
"""
|
||||
thefile = ud.localpath
|
||||
|
||||
cargo_index = self._cargo_index_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner --strip-components 1 -f %s -C %s" % (thefile, cargo_index)
|
||||
|
||||
# change to the rootdir to unpack but save the old working dir
|
||||
save_cwd = os.getcwd()
|
||||
os.chdir(rootdir)
|
||||
|
||||
# ensure we've got these paths made
|
||||
bb.utils.mkdirhier(cargo_index)
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH')
|
||||
if path:
|
||||
cmd = "PATH=\"%s\" %s" % (path, cmd)
|
||||
bb.note("Unpacking %s to %s/" % (thefile, cargo_index))
|
||||
|
||||
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
|
||||
|
||||
os.chdir(save_cwd)
|
||||
|
||||
if ret != 0:
|
||||
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
|
||||
|
||||
def _crate_unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks a crate
|
||||
@@ -184,8 +111,6 @@ class Crate(Wget):
|
||||
if pn == ud.parm.get('name'):
|
||||
cmd = "tar -xz --no-same-owner -f %s" % thefile
|
||||
else:
|
||||
self._crate_unpack_old_layout(ud, rootdir, d)
|
||||
|
||||
cargo_bitbake = self._cargo_bitbake_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
|
||||
@@ -222,34 +147,3 @@ class Crate(Wget):
|
||||
mdpath = os.path.join(bbpath, cratepath, mdfile)
|
||||
with open(mdpath, "w") as f:
|
||||
json.dump(metadata, f)
|
||||
|
||||
|
||||
def _crate_unpack_old_layout(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks a crate in the old location that tried to emulate
|
||||
the Cargo registry layout.
|
||||
"""
|
||||
thefile = ud.localpath
|
||||
|
||||
cargo_src = self._cargo_src_path(rootdir)
|
||||
cargo_cache = self._cargo_cache_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_src)
|
||||
|
||||
# ensure we've got these paths made
|
||||
bb.utils.mkdirhier(cargo_cache)
|
||||
bb.utils.mkdirhier(cargo_src)
|
||||
|
||||
bb.note("Copying %s to %s/" % (thefile, cargo_cache))
|
||||
shutil.copy(thefile, cargo_cache)
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH')
|
||||
if path:
|
||||
cmd = "PATH=\"%s\" %s" % (path, cmd)
|
||||
bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
|
||||
|
||||
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
|
||||
|
||||
if ret != 0:
|
||||
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
|
||||
|
||||
Reference in New Issue
Block a user