From 5be4ecc1c44eb566cd6a2dd537325cd891e9d2a9 Mon Sep 17 00:00:00 2001 From: Lin Jian Date: Fri, 16 Aug 2024 04:39:35 +0800 Subject: [PATCH] emacs: make melpaBuild accept recipe content as a string This is the first part of https://github.com/NixOS/nixpkgs/issues/334888. --- .../editors/emacs/build-support/melpa.nix | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/editors/emacs/build-support/melpa.nix b/pkgs/applications/editors/emacs/build-support/melpa.nix index aeaf1d3882ab9..bda412a0957ff 100644 --- a/pkgs/applications/editors/emacs/build-support/melpa.nix +++ b/pkgs/applications/editors/emacs/build-support/melpa.nix @@ -63,11 +63,10 @@ libBuildHelper.extendMkDerivation' genericBuild (finalAttrs: /* recipe: Optional MELPA recipe. Default: a minimally functional recipe + This can be a path of a recipe file, a string of the recipe content or an empty string. + The default value is used if it is an empty string. */ -, recipe ? (writeText "${finalAttrs.pname}-recipe" '' - (${finalAttrs.ename} :fetcher git :url "" - ${lib.optionalString (finalAttrs.files != null) ":files ${finalAttrs.files}"}) - '') +, recipe ? "" , preUnpack ? "" , postUnpack ? "" , meta ? {} @@ -98,9 +97,21 @@ libBuildHelper.extendMkDerivation' genericBuild (finalAttrs: preUnpack = '' mkdir -p "$NIX_BUILD_TOP/recipes" - if [ -n "$recipe" ]; then - cp "$recipe" "$NIX_BUILD_TOP/recipes/$ename" + recipeFile="$NIX_BUILD_TOP/recipes/$ename" + if [ -r "$recipe" ]; then + ln -s "$recipe" "$recipeFile" + nixInfoLog "link recipe" + elif [ -n "$recipe" ]; then + printf "%s" "$recipe" > "$recipeFile" + nixInfoLog "write recipe" + else + cat > "$recipeFile" <<'EOF' +(${finalAttrs.ename} :fetcher git :url "" ${lib.optionalString (finalAttrs.files != null) ":files ${finalAttrs.files}"}) +EOF + nixInfoLog "use default recipe" fi + nixInfoLog "recipe content:" "$(< $recipeFile)" + unset -v recipeFile ln -s "$packageBuild" "$NIX_BUILD_TOP/package-build"