diff --git a/pkgs/applications/editors/emacs/build-support/generic.nix b/pkgs/applications/editors/emacs/build-support/generic.nix index bdf1cd4e50f3..b013dee9e017 100644 --- a/pkgs/applications/editors/emacs/build-support/generic.nix +++ b/pkgs/applications/editors/emacs/build-support/generic.nix @@ -27,6 +27,8 @@ in , buildInputs ? [] , packageRequires ? [] , meta ? {} +, turnCompilationWarningToError ? false +, ignoreCompilationError ? true , ... }@args: @@ -73,6 +75,8 @@ stdenv.mkDerivation (finalAttrs: ({ addEmacsNativeLoadPath = true; + inherit turnCompilationWarningToError ignoreCompilationError; + postInstall = '' # Besides adding the output directory to the native load path, make sure # the current package's elisp files are in the load path, otherwise @@ -82,8 +86,13 @@ stdenv.mkDerivation (finalAttrs: ({ addEmacsVars "$out" find $out/share/emacs -type f -name '*.el' -print0 \ - | xargs -0 -I {} -n 1 -P $NIX_BUILD_CORES sh -c \ - "emacs --batch --eval '(setq large-file-warning-threshold nil)' -f batch-native-compile {} || true" + | xargs --verbose -0 -I {} -n 1 -P $NIX_BUILD_CORES sh -c \ + "emacs \ + --batch \ + --eval '(setq large-file-warning-threshold nil)' \ + --eval '(setq byte-compile-error-on-warn ${if finalAttrs.turnCompilationWarningToError then "t" else "nil"})' \ + -f batch-native-compile {} \ + || exit ${if finalAttrs.ignoreCompilationError then "0" else "\\$?"}" ''; }