def stage()

in src/buildstream_plugins/sources/cargo.py [0:0]


    def stage(self, directory):
        try:
            mirror_file = self._get_mirror_file()
            with tarfile.open(mirror_file) as tar:
                members = tar.getmembers()
                if hasattr(tarfile, "tar_filter"):
                    # Python 3.12+ (and older versions with backports)
                    tar.extractall(path=directory, filter="tar")
                else:
                    for member in members:
                        self._assert_tarinfo_safe(member, directory)
                    tar.extractall(path=directory, members=members)

            if members:
                dirname = members[0].name.split("/")[0]
                package_dir = os.path.join(directory, dirname)
                checksum_file = os.path.join(package_dir, ".cargo-checksum.json")
                with open(checksum_file, "w", encoding="utf-8") as f:
                    checksum_data = {"package": self.sha, "files": {}}
                    json.dump(checksum_data, f)

        except (tarfile.TarError, OSError) as e:
            raise SourceError("{}: Error staging source: {}".format(self, e)) from e