Merge pull request #277327 from adisbladis/emacs-build-support

build-support/emacs: refactor

authored by adisbladis and committed by GitHub 21d3b628 94c4147d

+70 -73
+10 -14
pkgs/build-support/emacs/elpa.nix
··· 2 3 { lib, stdenv, emacs, texinfo, writeText, gcc }: 4 5 - with lib; 6 7 { pname 8 , version ··· 11 , ... 12 }@args: 13 14 - let 15 - 16 - defaultMeta = { 17 - homepage = args.src.meta.homepage or "https://elpa.gnu.org/packages/${pname}.html"; 18 - }; 19 - 20 - in 21 - 22 - import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; } ({ 23 24 dontUnpack = true; 25 ··· 33 runHook postInstall 34 ''; 35 36 - meta = defaultMeta // meta; 37 } 38 39 - // removeAttrs args [ "files" "fileSpecs" 40 - "meta" 41 - ])
··· 2 3 { lib, stdenv, emacs, texinfo, writeText, gcc }: 4 5 + let 6 + handledArgs = [ "files" "fileSpecs" "meta" ]; 7 + genericBuild = import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; }; 8 + 9 + in 10 11 { pname 12 , version ··· 15 , ... 16 }@args: 17 18 + genericBuild ({ 19 20 dontUnpack = true; 21 ··· 29 runHook postInstall 30 ''; 31 32 + meta = { 33 + homepage = args.src.meta.homepage or "https://elpa.gnu.org/packages/${pname}.html"; 34 + } // meta; 35 } 36 37 + // removeAttrs args handledArgs)
+30 -26
pkgs/build-support/emacs/generic.nix
··· 2 3 { lib, stdenv, emacs, texinfo, writeText, gcc, ... }: 4 5 { pname 6 , version 7 , buildInputs ? [] ··· 10 , ... 11 }@args: 12 13 - let 14 - defaultMeta = { 15 - broken = false; 16 - platforms = emacs.meta.platforms; 17 - } // lib.optionalAttrs ((args.src.meta.homepage or "") != "") { 18 - homepage = args.src.meta.homepage; 19 - }; 20 - in 21 - 22 stdenv.mkDerivation (finalAttrs: ({ 23 name = "emacs-${pname}-${finalAttrs.version}"; 24 ··· 42 propagatedBuildInputs = packageRequires; 43 propagatedUserEnvPkgs = packageRequires; 44 45 - setupHook = writeText "setup-hook.sh" '' 46 - source ${./emacs-funcs.sh} 47 - 48 - if [[ ! -v emacsHookDone ]]; then 49 - emacsHookDone=1 50 - 51 - # If this is for a wrapper derivation, emacs and the dependencies are all 52 - # run-time dependencies. If this is for precompiling packages into bytecode, 53 - # emacs is a compile-time dependency of the package. 54 - addEnvHooks "$hostOffset" addEmacsVars 55 - addEnvHooks "$targetOffset" addEmacsVars 56 - fi 57 - ''; 58 59 doCheck = false; 60 61 - meta = defaultMeta // meta; 62 } 63 64 - // lib.optionalAttrs (emacs.withNativeCompilation or false) { 65 66 - LIBRARY_PATH = "${lib.getLib stdenv.cc.libc}/lib"; 67 68 nativeBuildInputs = [ gcc ]; 69 ··· 83 ''; 84 } 85 86 - // removeAttrs args [ "buildInputs" "packageRequires" "meta" ]))
··· 2 3 { lib, stdenv, emacs, texinfo, writeText, gcc, ... }: 4 5 + let 6 + inherit (lib) optionalAttrs getLib; 7 + handledArgs = [ "buildInputs" "packageRequires" "meta" ]; 8 + 9 + setupHook = writeText "setup-hook.sh" '' 10 + source ${./emacs-funcs.sh} 11 + 12 + if [[ ! -v emacsHookDone ]]; then 13 + emacsHookDone=1 14 + 15 + # If this is for a wrapper derivation, emacs and the dependencies are all 16 + # run-time dependencies. If this is for precompiling packages into bytecode, 17 + # emacs is a compile-time dependency of the package. 18 + addEnvHooks "$hostOffset" addEmacsVars 19 + addEnvHooks "$targetOffset" addEmacsVars 20 + fi 21 + ''; 22 + 23 + in 24 + 25 { pname 26 , version 27 , buildInputs ? [] ··· 30 , ... 31 }@args: 32 33 stdenv.mkDerivation (finalAttrs: ({ 34 name = "emacs-${pname}-${finalAttrs.version}"; 35 ··· 53 propagatedBuildInputs = packageRequires; 54 propagatedUserEnvPkgs = packageRequires; 55 56 + inherit setupHook; 57 58 doCheck = false; 59 60 + meta = { 61 + broken = false; 62 + platforms = emacs.meta.platforms; 63 + } // optionalAttrs ((args.src.meta.homepage or "") != "") { 64 + homepage = args.src.meta.homepage; 65 + } // meta; 66 } 67 68 + // optionalAttrs (emacs.withNativeCompilation or false) { 69 70 + LIBRARY_PATH = "${getLib stdenv.cc.libc}/lib"; 71 72 nativeBuildInputs = [ gcc ]; 73 ··· 87 ''; 88 } 89 90 + // removeAttrs args handledArgs))
+30 -31
pkgs/build-support/emacs/melpa.nix
··· 3 4 { lib, stdenv, fetchFromGitHub, emacs, texinfo, writeText, gcc }: 5 6 - with lib; 7 8 { /* 9 pname: Nix package name without special symbols and without version or ··· 20 , ... 21 }@args: 22 23 - let 24 - 25 - defaultMeta = { 26 - homepage = args.src.meta.homepage or "https://melpa.org/#/${pname}"; 27 - }; 28 - 29 - in 30 - 31 - import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; } ({ 32 33 ename = 34 if ename == null 35 then pname 36 else ename; 37 38 - packageBuild = stdenv.mkDerivation { 39 - name = "package-build"; 40 - src = fetchFromGitHub { 41 - owner = "melpa"; 42 - repo = "package-build"; 43 - rev = "c3c535e93d9dc92acd21ebc4b15016b5c3b90e7d"; 44 - sha256 = "17z0wbqdd6fspbj43yq8biff6wfggk74xgnaf1xx6ynsp1i74is5"; 45 - }; 46 - 47 - patches = [ ./package-build-dont-use-mtime.patch ]; 48 - 49 - dontConfigure = true; 50 - dontBuild = true; 51 - 52 - installPhase = " 53 - mkdir -p $out 54 - cp -r * $out 55 - "; 56 - }; 57 - 58 elpa2nix = ./elpa2nix.el; 59 melpa2nix = ./melpa2nix.el; 60 61 preUnpack = '' 62 mkdir -p "$NIX_BUILD_TOP/recipes" ··· 104 runHook postInstall 105 ''; 106 107 - meta = defaultMeta // meta; 108 } 109 110 // removeAttrs args [ "meta" ])
··· 3 4 { lib, stdenv, fetchFromGitHub, emacs, texinfo, writeText, gcc }: 5 6 + let 7 + genericBuild = import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; }; 8 + 9 + packageBuild = stdenv.mkDerivation { 10 + name = "package-build"; 11 + src = fetchFromGitHub { 12 + owner = "melpa"; 13 + repo = "package-build"; 14 + rev = "c3c535e93d9dc92acd21ebc4b15016b5c3b90e7d"; 15 + sha256 = "17z0wbqdd6fspbj43yq8biff6wfggk74xgnaf1xx6ynsp1i74is5"; 16 + }; 17 + 18 + patches = [ ./package-build-dont-use-mtime.patch ]; 19 + 20 + dontConfigure = true; 21 + dontBuild = true; 22 + 23 + installPhase = " 24 + mkdir -p $out 25 + cp -r * $out 26 + "; 27 + }; 28 + 29 + in 30 31 { /* 32 pname: Nix package name without special symbols and without version or ··· 43 , ... 44 }@args: 45 46 + genericBuild ({ 47 48 ename = 49 if ename == null 50 then pname 51 else ename; 52 53 elpa2nix = ./elpa2nix.el; 54 melpa2nix = ./melpa2nix.el; 55 + 56 + inherit packageBuild; 57 58 preUnpack = '' 59 mkdir -p "$NIX_BUILD_TOP/recipes" ··· 101 runHook postInstall 102 ''; 103 104 + meta = { 105 + homepage = args.src.meta.homepage or "https://melpa.org/#/${pname}"; 106 + } // meta; 107 } 108 109 // removeAttrs args [ "meta" ])
-2
pkgs/build-support/emacs/trivial.nix
··· 2 3 { callPackage, lib, ... }@envargs: 4 5 - with lib; 6 - 7 args: 8 9 callPackage ./generic.nix envargs ({
··· 2 3 { callPackage, lib, ... }@envargs: 4 5 args: 6 7 callPackage ./generic.nix envargs ({