emacs: support and enable __structuredAttrs in elisp build helpers (#387193)

This commit is contained in:
Lin Jian
2025-03-08 17:09:46 +08:00
committed by GitHub
6 changed files with 20 additions and 18 deletions
@@ -204,6 +204,9 @@
- `pkgs.nextcloud28` has been removed since it's out of support upstream.
- Emacs lisp build helpers, such as `emacs.pkgs.melpaBuild`, now enables `__structuredAttrs` by default.
Environment variables have to be passed via the `env` attribute.
- `buildGoModule` now passes environment variables via the `env` attribute. `CGO_ENABLED` should now be specified with `env.CGO_ENABLED` when passing to buildGoModule. Direct specification of `CGO_ENABLED` is now redirected by a compatibility layer with a warning, but will become an error in future releases.
Go-related environment variables previously shadowed by `buildGoModule` now results in errors when specified directly. Such variables include `GOOS` and `GOARCH`.
@@ -43,7 +43,9 @@ lib.extendMkDerivation {
emacs --batch -Q -l "$elpa2nix" \
-f elpa2nix-install-package \
"$src" "$out/share/emacs/site-lisp/elpa"
"$src" "$out/share/emacs/site-lisp/elpa" \
${if finalAttrs.turnCompilationWarningToError then "t" else "nil"} \
${if finalAttrs.ignoreCompilationError then "t" else "nil"}
runHook postInstall
'';
@@ -5,8 +5,10 @@
(if (not noninteractive)
(error "`elpa2nix-install-package' is to be used only with -batch"))
(pcase command-line-args-left
(`(,archive ,elpa)
(progn (setq package-user-dir elpa)
(`(,archive ,elpa ,turn-compilation-warning-to-error ,ignore-compilation-error)
(progn (setq byte-compile-error-on-warn (string= turn-compilation-warning-to-error "t"))
(setq byte-compile-debug (string= ignore-compilation-error "nil"))
(setq package-user-dir elpa)
(elpa2nix-install-file archive)))))
(defun elpa2nix-install-from-buffer ()
@@ -31,13 +33,3 @@ The file can either be a tar file or an Emacs Lisp file."
;; Allow installing package tarfiles larger than 10MB
(setq large-file-warning-threshold nil)
(let ((flag (getenv "turnCompilationWarningToError")))
(when (and flag
;; we do not use `string-empty-p' because it requires subr-x in Emacs <= 26
(not (string= flag "")))
(setq byte-compile-error-on-warn t)))
(let ((flag (getenv "ignoreCompilationError")))
(when (string= flag "")
(setq byte-compile-debug t)))
@@ -61,6 +61,7 @@ lib.extendMkDerivation {
propagatedUserEnvPkgs = finalAttrs.packageRequires ++ propagatedUserEnvPkgs;
strictDeps = args.strictDeps or true;
__structuredAttrs = args.__structuredAttrs or true;
inherit turnCompilationWarningToError ignoreCompilationError;
@@ -185,7 +185,9 @@ lib.extendMkDerivation {
emacs --batch -Q \
-l "$elpa2nix" \
-f elpa2nix-install-package \
"$archive" "$out/share/emacs/site-lisp/elpa"
"$archive" "$out/share/emacs/site-lisp/elpa" \
${if finalAttrs.turnCompilationWarningToError then "t" else "nil"} \
${if finalAttrs.ignoreCompilationError then "t" else "nil"}
runHook postInstall
'';
@@ -153,8 +153,10 @@ let
# https://github.com/Golevka/emacs-clang-complete-async/issues/90
auto-complete-clang-async = (addPackageRequires super.auto-complete-clang-async [ self.auto-complete ]).overrideAttrs (old: {
buildInputs = old.buildInputs ++ [ pkgs.llvmPackages.llvm ];
CFLAGS = "-I${lib.getLib pkgs.llvmPackages.libclang}/include";
LDFLAGS = "-L${lib.getLib pkgs.llvmPackages.libclang}/lib";
env = old.env or { } // {
CFLAGS = "-I${lib.getLib pkgs.llvmPackages.libclang}/include";
LDFLAGS = "-L${lib.getLib pkgs.llvmPackages.libclang}/lib";
};
});
# part of a larger package
@@ -242,7 +244,7 @@ let
# - https://github.com/vedang/pdf-tools/issues/102
# - https://github.com/vedang/pdf-tools/issues/103
# - https://github.com/vedang/pdf-tools/issues/109
CXXFLAGS = "-std=c++17";
env = old.env or { } // { CXXFLAGS = "-std=c++17"; };
nativeBuildInputs = old.nativeBuildInputs ++ [
pkgs.autoconf
@@ -294,7 +296,7 @@ let
irony = super.irony.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags or [ ] ++ [ "-DCMAKE_INSTALL_BINDIR=bin" ];
env.NIX_CFLAGS_COMPILE = "-UCLANG_RESOURCE_DIR";
env = old.env or { } // { NIX_CFLAGS_COMPILE = "-UCLANG_RESOURCE_DIR"; };
preConfigure = ''
pushd server
'';