slint-ui/slint · error

No license info for " " available

Error message

No license info for "{}" available

What it means

While parsing `reuse spdx` output, the `insert` helper rejects a file entry that has an empty license list — i.e. the REUSE tool reported the file with no license information at all. The bail names the file so the gap can be fixed.

Solutions

  1. Add SPDX-License-Identifier and copyright headers to the named file, or a `.reuse/<name>.license` companion file
  2. Add an entry for the file to `.reuse/dep5`
  3. Re-run `reuse spdx` to confirm the file now reports a license before running the xtask check

Example fix

// before: image.png with no licensing info
// after: add image.png.license containing:
// Copyright © 2026 Author
// SPDX-License-Identifier: MIT
Defensive patterns

Strategy: validation

Validate before calling

reuse spdx | grep -i "$FILE"   # confirm the file reports license(s)

Prevention

When it happens

Trigger: A file in the repository is tracked by reuse but carries no license tags at all (no SPDX identifier, no dep5 coverage), so its license vector is empty when building the BTreeMap.

Common situations: Binary/generated files added without a `.license` companion file or dep5 entry; files matched by reuse's parser but not annotated; ignoring rules in .reuse that skip annotation checks.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of slint-ui/slint@bb937076de (2026-09-16). Data as JSON: /api/errors/9ddc04027e5b3715. Report an issue: GitHub.

Appendix: source

Thrown at xtask/src/reuse_compliance_check.rs:48

    if !output.status.success() {
        let stdout = String::from_utf8(output.stdout)?;
        println!("{stdout}");
        anyhow::bail!("Project is not reuse compliant!");
    }
    Ok(())
}

fn parse_spdx_data(sh: &Shell, reuse: &Path) -> Result<BTreeMap<PathBuf, Vec<String>>> {
    let output = cmd(sh, reuse, &["spdx"])?.read()?;

    let mut current_filename = String::new();
    let mut licenses = Vec::new();
    let mut result = BTreeMap::new();

    fn insert(v: &mut BTreeMap<PathBuf, Vec<String>>, f: &str, l: Vec<String>) -> Result<()> {
        if l.is_empty() {
            anyhow::bail!("No license info for \"{}\" available", f);
        }
        v.insert(PathBuf::from(f), l);
        Ok(())
    }

    for line in output.lines() {
        if line.starts_with("FileName: ") {
            if !current_filename.is_empty() {
                insert(&mut result, &current_filename, licenses)?;
                licenses = Vec::new();
            }

            if let Some(stripped) = line.strip_prefix("FileName: ") {
                current_filename = stripped.into();
            }
        } else if line.starts_with("LicenseInfoInFile: ")
            && let Some(stripped) = line.strip_prefix("LicenseInfoInFile: ")
        {

View on GitHub (pinned to bb937076de)