{"record":{"id":"55aa40aff9cae582","repo":"zellij-org/zellij","slug":"cargo-make-has-been-deprecated-by-zellij","errorCode":null,"errorMessage":" !!! cargo make has been deprecated by zellij !!!\n\nOur build system is now `cargo xtask`. Don't worry, you won't have to install\nanything!\n\n- To get an overview of the new build tasks, run `cargo xtask --help`\n- Quick compatibility table:\n\n| cargo make task                 | cargo xtask equivalent        |\n| ------------------------------- | ----------------------------- |\n| make                            | xtask                         |\n| make format                     | xtask format                  |\n| make build                      | xtask build                   |\n| make test                       | xtask test                    |\n| make run                        | xtask run                     |\n| make run -l strider             | xtask run -- -l strider       |\n| make install /path/to/binary    | xtask install /path/to/binary |\n| make publish                    | xtask publish                 |\n\n\nIn order to disable xtask during the transitioning period: Delete/comment the\n`[alias]` section in `.cargo/config.toml` and use `cargo make` as before.\nIf you're unhappy with `xtask` and decide to disable it, please tell us why so\nwe can discuss this before making it final for the next release. Thank you!\n","messagePattern":" !!! cargo make has been deprecated by zellij !!!\n\nOur build system is now `cargo xtask`\\. Don't worry, you won't have to install\nanything!\n\n- To get an overview of the new build tasks, run `cargo xtask --help`\n- Quick compatibility table:\n\n\\| cargo make task                 \\| cargo xtask equivalent        \\|\n\\| ------------------------------- \\| ----------------------------- \\|\n\\| make                            \\| xtask                         \\|\n\\| make format                     \\| xtask format                  \\|\n\\| make build                      \\| xtask build                   \\|\n\\| make test                       \\| xtask test                    \\|\n\\| make run                        \\| xtask run                     \\|\n\\| make run -l strider             \\| xtask run -- -l strider       \\|\n\\| make install /path/to/binary    \\| xtask install /path/to/binary \\|\n\\| make publish                    \\| xtask publish                 \\|\n\n\nIn order to disable xtask during the transitioning period: Delete/comment the\n`\\[alias\\]` section in `\\.cargo/config\\.toml` and use `cargo make` as before\\.\nIf you're unhappy with `xtask` and decide to disable it, please tell us why so\nwe can discuss this before making it final for the next release\\. Thank you!\n","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"xtask/src/main.rs","lineNumber":179,"sourceCode":"    match env::var_os(\"CARGO_TARGET_DIR\") {\n        Some(dir) => PathBuf::from(dir),\n        None => crate::project_root().join(\"target\"),\n    }\n}\n\npub fn cargo() -> anyhow::Result<PathBuf> {\n    std::env::var_os(\"CARGO\")\n        .map_or_else(|| which::which(\"cargo\"), |exe| Ok(PathBuf::from(exe)))\n        .context(\"Couldn't find 'cargo' executable\")\n}\n\n// Set terminal title to 'msg'\npub fn status(msg: &str) {\n    eprint!(\"\\u{1b}]0;{}\\u{07}\", msg);\n}\n\nfn deprecation_notice() -> anyhow::Result<()> {\n    Err(anyhow::anyhow!(\n        \" !!! cargo make has been deprecated by zellij !!!\n\nOur build system is now `cargo xtask`. Don't worry, you won't have to install\nanything!\n\n- To get an overview of the new build tasks, run `cargo xtask --help`\n- Quick compatibility table:\n\n| cargo make task                 | cargo xtask equivalent        |\n| ------------------------------- | ----------------------------- |\n| make                            | xtask                         |\n| make format                     | xtask format                  |\n| make build                      | xtask build                   |\n| make test                       | xtask test                    |\n| make run                        | xtask run                     |\n| make run -l strider             | xtask run -- -l strider       |\n| make install /path/to/binary    | xtask install /path/to/binary |\n| make publish                    | xtask publish                 |","sourceCodeStart":161,"sourceCodeEnd":197,"githubUrl":"https://github.com/zellij-org/zellij/blob/98a0837077492d53dd252ab30bc3e43e41e504f4/xtask/src/main.rs#L161-L197","documentation":"Not a failure but a migration notice: zellij replaced cargo-make with cargo xtask, and the deprecated entry point (XtaskCmd::Deprecated, reached via the old `cargo make` alias routing) deliberately returns an error containing a task-mapping table so old scripts stop working and get translated.","triggerScenarios":"Invoking a deprecated command, e.g. `cargo make build` routed through xtask's compatibility alias, or `cargo xtask <deprecated-subcommand>`.","commonSituations":"CI pipelines, Makefile-adjacent scripts, or muscle memory still calling cargo make after updating to a newer zellij checkout.","solutions":["Translate the command using the printed table (make build -> `cargo xtask build`, make run -l strider -> `cargo xtask run -- -l strider`, etc.)","Run `cargo xtask --help` to see all available tasks","Update CI pipelines, docs and aliases to the xtask equivalents","To keep cargo make during a transition, comment out the [alias] section in .cargo/config.toml as the notice instructs"],"exampleFix":"# before\ncargo make build\n# -> error: cargo make has been deprecated\n\n# after\ncargo xtask build","handlingStrategy":"fallback","validationCode":"# translate legacy cargo make calls before they hit xtask\ntranslate() {\n  case \"$1 $2\" in\n    'make build') echo 'xtask build';;\n    'make test')  echo 'xtask test';;\n    'make run')   echo 'xtask run';;\n    *) echo \"xtask${2:+ $2}\";;\n  esac\n}","typeGuard":"fn translate_make(args: &[String]) -> Option<Vec<String>> {\n    let task = args.first()?;\n    let mapped = match task.as_str() {\n        \"build\" => \"build\", \"test\" => \"test\", \"format\" => \"format\",\n        \"run\" => \"run\", \"publish\" => \"publish\", _ => return None,\n    };\n    Some(std::iter::once(mapped.to_string()).chain(args[1..].iter().cloned()).collect())\n}","tryCatchPattern":"let out = Command::new(\"cargo\").arg(\"make\").output()?;\nif !out.status.success() && String::from_utf8_lossy(&out.stderr).contains(\"cargo make has been deprecated\") {\n    // fall back to the xtask equivalent parsed from the printed table\n    run!(\"cargo xtask {task}\")?;\n}","preventionTips":["Migrate scripts and CI off cargo make when updating zellij; the mapping table is in the error text","Keep a small translate wrapper for muscle-memory commands during the transition","Delete the [alias] section only if you must stay on cargo make; otherwise update everything to xtask"],"tags":["deprecation","build-system","cli","migration"],"backgroundTag":null,"analyzedSha":"98a0837077492d53dd252ab30bc3e43e41e504f4","analyzedAt":"2026-08-16T13:02:01.396Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}