-->

Android/Cyanogenmod building: remove-project from

2019-07-17 18:56发布

问题:

I want to remove a device-related project from the roomservice.xml generated by brunching in CM and add a different repo myself. Theoretically (in my localmanifest, called mint.xml), I should just need to <remove-project name="Cyanogenmod/.... But repo sync tells me that

remove-project element specifies non-existant project

Is that because my local manifest is sourced before the roomservice.xml?

The question is a bit related to this one: trouble-with-cyanogenmod-local-manifest

Additional sources: CM Wiki about removing projects

Do you know how to source the own manifest after the roomservice.xml or somehow achieve the same?

Thanks for any answers.

回答1:

As seen in Repo's manifest_xml.py,

LOCAL_MANIFESTS_DIR_NAME = 'local_manifests'
...
class XmlManifest(object):
  ...
  def _Load(self):
      ...
      local_dir = os.path.abspath(os.path.join(self.repodir, LOCAL_MANIFESTS_DIR_NAME))
      try:
        for local_file in sorted(os.listdir(local_dir)):
          if local_file.endswith('.xml'):
            local = os.path.join(local_dir, local_file)
            nodes.append(self._ParseManifestXml(local, self.repodir))
      except OSError:
        pass

local manifest files are read in alphabetical order. Your file mint.xml is therefore loaded before roomservice.xml, so at the time you try to remove the project that's defined in roomservice.xml it doesn't actually exist. Rename your file to something that sorts after roomservice.xml.