slint-ui/slint · error

Project is not reuse compliant!

Error message

Project is not reuse compliant!

What it means

The REUSE compliance check runs the `reuse lint` tool and, if it exits non-zero, prints its stdout and bails with this error. It means one or more files in the repository lack proper copyright/licensing information per the REUSE specification.

Solutions

  1. Run `reuse lint` locally and fix every file it flags (add SPDX headers or .reuse/dep5 entries)
  2. Re-run the `reuse` tooling (`reuse annotate`) to add missing copyright/license headers to new files
  3. Regenerate symlinks/coverage via the xtask helpers (scan_symlinks / validate_license_directory) before linting

Example fix

// before (new file without header)
fn main() {}
// after
// Copyright © 2026 Author
// SPDX-License-Identifier: GPL-3.0-only OR MIT
fn main() {}
Defensive patterns

Strategy: validation

Validate before calling

reuse lint || echo "fix files listed above before pushing"

Prevention

When it happens

Trigger: Running the xtask REUSE check (CI or `cargo xtask ...`) after adding new source files without SPDX `SPDX-License-Identifier` and copyright headers, or with files listed inconsistently in `.reuse/dep5`.

Common situations: A contributor commits generated files, assets, or new code without license headers; renamed/moved files losing their headers; missing LICENSES/ directory entries for a declared license.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at xtask/src/reuse_compliance_check.rs:34

    let home_dir = std::env::var("HOME").context("HOME is not set in the environment")?;
    Ok(sh.cmd(command).args(args).env("PATH", format!("/bin:/usr/bin:{home_dir}/.local/bin")))
}

pub fn find_reuse() -> Result<PathBuf> {
    which::which("reuse").context("Failed to find reuse")
}

pub fn reuse_download(sh: &Shell, reuse: &Path) -> Result<String> {
    cmd(sh, reuse, &["download", "--all"])?.read().context("Failed to download missing licenses.")
}

pub fn reuse_lint(sh: &Shell, reuse: &Path) -> Result<()> {
    let output = cmd(sh, reuse, &["lint"])?.ignore_status().output()?;

    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(())
    }

View on GitHub (pinned to bb937076de)