docs: def add(self, variant, arch, nevra, path, sigkey, category, srpm_nevra=None):
          """
          Map RPM to to variant and arch.
  
          :param variant: compose variant UID
          :type  variant: str
          :param arch:    compose architecture
          :type  arch:    str
          :param nevra:   name-epoch:version-release.arch
          :type  nevra:   str
          :param sigkey:  sigkey hash
          :type  sigkey:  str or None
          :param category:    RPM category, one of binary, debug, source
          :type  category:    str
          :param srpm_nevra:  name-epoch:version-release.arch of RPM's SRPM
          :type  srpm_nevra:  str
          """
  
          if arch not in productmd.common.RPM_ARCHES:
              raise ValueError("Arch not found in RPM_ARCHES: %s" % arch)
  
          if arch in ["src", "nosrc"]:
              raise ValueError("Source arch is not allowed. Map source files under binary arches.")
  
          if category not in SUPPORTED_CATEGORIES:
              raise ValueError("Invalid category value: %s" % category)
  
          if path.startswith("/"):
              raise ValueError("Relative path expected: %s" % path)
  
          nevra, nevra_dict = self._check_nevra(nevra)
  
          if category == "source" and srpm_nevra is not None:
              raise ValueError("Expected blank srpm_nevra for source package: %s" % nevra)
  
          if category != "source" and srpm_nevra is None:
              raise ValueError("Missing srpm_nevra for package: %s" % nevra)
  
          if (category == "source") != (nevra_dict["arch"] in ("src", "nosrc")):
              raise ValueError("Invalid category/arch combination: %s/%s" % (category, nevra))
  
          if sigkey is not None:
              sigkey = sigkey.lower()
  
          if srpm_nevra:
              srpm_nevra, _ = self._check_nevra(srpm_nevra)
          else:
              srpm_nevra = nevra
  
          arches = self.rpms.setdefault(variant, {})
          srpms = arches.setdefault(arch, {})
          rpms = srpms.setdefault(srpm_nevra, {})
          rpms[nevra] = {"sigkey": sigkey, "path": path, "category": category}