diff --git a/pkgs/development/beam-modules/build-erlang-mk.nix b/pkgs/development/beam-modules/build-erlang-mk.nix index a94524276b26..d1afa55387d3 100644 --- a/pkgs/development/beam-modules/build-erlang-mk.nix +++ b/pkgs/development/beam-modules/build-erlang-mk.nix @@ -1,19 +1,21 @@ { stdenv, writeText, erlang, perl, which, gitMinimal, wget, lib }: -{ name, version +{ name +, version , src , setupHook ? null -, buildInputs ? [] -, beamDeps ? [] +, buildInputs ? [ ] +, beamDeps ? [ ] , postPatch ? "" , compilePorts ? false , installPhase ? null , buildPhase ? null , configurePhase ? null -, meta ? {} +, meta ? { } , enableDebugInfo ? false -, buildFlags ? [] -, ... }@attrs: +, buildFlags ? [ ] +, ... +}@attrs: with lib; @@ -21,11 +23,11 @@ let debugInfoFlag = lib.optionalString (enableDebugInfo || erlang.debugInfo) "+debug_info"; shell = drv: stdenv.mkDerivation { - name = "interactive-shell-${drv.name}"; - buildInputs = [ drv ]; - }; + name = "interactive-shell-${drv.name}"; + buildInputs = [ drv ]; + }; - pkg = self: stdenv.mkDerivation ( attrs // { + pkg = self: stdenv.mkDerivation (attrs // { app_name = name; name = "${name}-${version}"; inherit version; @@ -34,11 +36,13 @@ let inherit src; - setupHook = if setupHook == null - then writeText "setupHook.sh" '' - addToSearchPath ERL_LIBS "$1/lib/erlang/lib" - '' - else setupHook; + setupHook = + if setupHook == null + then + writeText "setupHook.sh" '' + addToSearchPath ERL_LIBS "$1/lib/erlang/lib" + '' + else setupHook; buildInputs = buildInputs ++ [ erlang perl which gitMinimal wget ]; propagatedBuildInputs = beamDeps; @@ -47,30 +51,33 @@ let ++ lib.optional (enableDebugInfo || erlang.debugInfo) ''ERL_OPTS="$ERL_OPTS +debug_info"'' ++ buildFlags; - configurePhase = if configurePhase == null - then '' - runHook preConfigure + configurePhase = + if configurePhase == null + then '' + runHook preConfigure - # We shouldnt need to do this, but it seems at times there is a *.app in - # the repo/package. This ensures we start from a clean slate - make SKIP_DEPS=1 clean + # We shouldnt need to do this, but it seems at times there is a *.app in + # the repo/package. This ensures we start from a clean slate + make SKIP_DEPS=1 clean - runHook postConfigure - '' - else configurePhase; + runHook postConfigure + '' + else configurePhase; - buildPhase = if buildPhase == null - then '' + buildPhase = + if buildPhase == null + then '' runHook preBuild make $buildFlags "''${buildFlagsArray[@]}" runHook postBuild - '' - else buildPhase; + '' + else buildPhase; - installPhase = if installPhase == null - then '' + installPhase = + if installPhase == null + then '' runHook preInstall mkdir -p $out/lib/erlang/lib/${name} @@ -90,13 +97,14 @@ let fi runHook postInstall - '' - else installPhase; + '' + else installPhase; passthru = { packageName = name; env = shell self; inherit beamDeps; }; -}); -in fix pkg + }); +in +fix pkg diff --git a/pkgs/development/beam-modules/build-mix.nix b/pkgs/development/beam-modules/build-mix.nix index 7e19f19a093f..4da627a844ba 100644 --- a/pkgs/development/beam-modules/build-mix.nix +++ b/pkgs/development/beam-modules/build-mix.nix @@ -35,9 +35,7 @@ let # add to ERL_LIBS so other modules can find at runtime. # http://erlang.org/doc/man/code.html#code-path - # Mix also searches the code path when compiling with the --no-deps-check - # flag, which is why there is no complicated booterstrapper like the one - # used by buildRebar3. + # Mix also searches the code path when compiling with the --no-deps-check flag setupHook = attrs.setupHook or writeText "setupHook.sh" '' addToSearchPath ERL_LIBS "$1/lib/erlang/lib" diff --git a/pkgs/development/beam-modules/build-rebar3.nix b/pkgs/development/beam-modules/build-rebar3.nix index dc882a133188..b66dc535ce03 100644 --- a/pkgs/development/beam-modules/build-rebar3.nix +++ b/pkgs/development/beam-modules/build-rebar3.nix @@ -1,16 +1,20 @@ { stdenv, writeText, erlang, rebar3WithPlugins, openssl, libyaml, lib }: -{ name, version +{ name +, version , src , setupHook ? null -, buildInputs ? [], beamDeps ? [], buildPlugins ? [] +, buildInputs ? [ ] +, beamDeps ? [ ] +, buildPlugins ? [ ] , postPatch ? "" , installPhase ? null , buildPhase ? null , configurePhase ? null -, meta ? {} +, meta ? { } , enableDebugInfo ? false -, ... }@attrs: +, ... +}@attrs: with lib; @@ -22,9 +26,9 @@ let }; shell = drv: stdenv.mkDerivation { - name = "interactive-shell-${drv.name}"; - buildInputs = [ drv ]; - }; + name = "interactive-shell-${drv.name}"; + buildInputs = [ drv ]; + }; customPhases = filterAttrs (_: v: v != null) @@ -42,7 +46,7 @@ let inherit src; setupHook = writeText "setupHook.sh" '' - addToSearchPath ERL_LIBS "$1/lib/erlang/lib/" + addToSearchPath ERL_LIBS "$1/lib/erlang/lib/" ''; postPatch = '' @@ -77,4 +81,4 @@ let }; } // customPhases); in - fix pkg +fix pkg diff --git a/pkgs/development/interpreters/erlang/generic-builder.nix b/pkgs/development/interpreters/erlang/generic-builder.nix index aba4c318bea2..1f2f3a25a5e2 100644 --- a/pkgs/development/interpreters/erlang/generic-builder.nix +++ b/pkgs/development/interpreters/erlang/generic-builder.nix @@ -1,12 +1,32 @@ -{ pkgs, lib, stdenv, fetchFromGitHub, makeWrapper, gawk, gnum4, gnused -, libxml2, libxslt, ncurses, openssl, perl, autoconf +{ pkgs +, lib +, stdenv +, fetchFromGitHub +, makeWrapper +, gawk +, gnum4 +, gnused +, libxml2 +, libxslt +, ncurses +, openssl +, perl +, autoconf , openjdk11 ? null # javacSupport , unixODBC ? null # odbcSupport -, libGL ? null, libGLU ? null, wxGTK ? null, wxmac ? null, xorg ? null +, libGL ? null +, libGLU ? null +, wxGTK ? null +, wxmac ? null +, xorg ? null , parallelBuild ? false -, systemd, wxSupport ? true -# updateScript deps -, writeScript, common-updater-scripts, coreutils, git +, systemd +, wxSupport ? true + # updateScript deps +, writeScript +, common-updater-scripts +, coreutils +, git }: { baseName ? "erlang" , version @@ -18,25 +38,42 @@ , enableThreads ? true , enableSmpSupport ? true , enableKernelPoll ? true -, javacSupport ? false, javacPackages ? [ openjdk11 ] -, odbcSupport ? false, odbcPackages ? [ unixODBC ] +, javacSupport ? false +, javacPackages ? [ openjdk11 ] +, odbcSupport ? false +, odbcPackages ? [ unixODBC ] , withSystemd ? stdenv.isLinux # systemd support in epmd , opensslPackage ? openssl , wxPackages ? [ libGL libGLU wxGTK xorg.libX11 ] -, preUnpack ? "", postUnpack ? "" -, patches ? [], patchPhase ? "", prePatch ? "", postPatch ? "" -, configureFlags ? [], configurePhase ? "", preConfigure ? "", postConfigure ? "" -, buildPhase ? "", preBuild ? "", postBuild ? "" -, installPhase ? "", preInstall ? "", postInstall ? "" +, preUnpack ? "" +, postUnpack ? "" +, patches ? [ ] +, patchPhase ? "" +, prePatch ? "" +, postPatch ? "" +, configureFlags ? [ ] +, configurePhase ? "" +, preConfigure ? "" +, postConfigure ? "" +, buildPhase ? "" +, preBuild ? "" +, postBuild ? "" +, installPhase ? "" +, preInstall ? "" +, postInstall ? "" , installTargets ? [ "install" "install-docs" ] -, checkPhase ? "", preCheck ? "", postCheck ? "" -, fixupPhase ? "", preFixup ? "", postFixup ? "" -, meta ? {} +, checkPhase ? "" +, preCheck ? "" +, postCheck ? "" +, fixupPhase ? "" +, preFixup ? "" +, postFixup ? "" +, meta ? { } }: assert wxSupport -> (if stdenv.isDarwin - then wxmac != null - else libGL != null && libGLU != null && wxGTK != null && xorg != null); +then wxmac != null +else libGL != null && libGLU != null && wxGTK != null && xorg != null); assert odbcSupport -> unixODBC != null; assert javacSupport -> openjdk11 != null; @@ -45,7 +82,8 @@ let inherit (lib) optional optionals optionalAttrs optionalString; wxPackages2 = if stdenv.isDarwin then [ wxmac ] else wxPackages; -in stdenv.mkDerivation ({ +in +stdenv.mkDerivation ({ name = "${baseName}-${version}" + optionalString javacSupport "-javac" + optionalString odbcSupport "-odbc"; @@ -109,19 +147,20 @@ in stdenv.mkDerivation ({ passthru = { updateScript = let major = builtins.head (builtins.splitVersion version); - in writeScript "update.sh" '' - #!${stdenv.shell} - set -ox errexit - PATH=${lib.makeBinPath [ common-updater-scripts coreutils git gnused ]} - latest=$(list-git-tags https://github.com/erlang/otp.git | sed -n 's/^OTP-${major}/${major}/p' | sort -V | tail -1) - if [ "$latest" != "${version}" ]; then - nixpkgs="$(git rev-parse --show-toplevel)" - nix_file="$nixpkgs/pkgs/development/interpreters/erlang/R${major}.nix" - update-source-version ${baseName}R${major} "$latest" --version-key=version --print-changes --file="$nix_file" - else - echo "${baseName}R${major} is already up-to-date" - fi - ''; + in + writeScript "update.sh" '' + #!${stdenv.shell} + set -ox errexit + PATH=${lib.makeBinPath [ common-updater-scripts coreutils git gnused ]} + latest=$(list-git-tags https://github.com/erlang/otp.git | sed -n 's/^OTP-${major}/${major}/p' | sort -V | tail -1) + if [ "$latest" != "${version}" ]; then + nixpkgs="$(git rev-parse --show-toplevel)" + nix_file="$nixpkgs/pkgs/development/interpreters/erlang/R${major}.nix" + update-source-version ${baseName}R${major} "$latest" --version-key=version --print-changes --file="$nix_file" + else + echo "${baseName}R${major} is already up-to-date" + fi + ''; }; meta = with lib; ({ @@ -143,24 +182,24 @@ in stdenv.mkDerivation ({ license = licenses.asl20; } // meta); } -// optionalAttrs (preUnpack != "") { inherit preUnpack; } -// optionalAttrs (postUnpack != "") { inherit postUnpack; } -// optionalAttrs (patches != []) { inherit patches; } -// optionalAttrs (prePatch != "") { inherit prePatch; } -// optionalAttrs (patchPhase != "") { inherit patchPhase; } +// optionalAttrs (preUnpack != "") { inherit preUnpack; } +// optionalAttrs (postUnpack != "") { inherit postUnpack; } +// optionalAttrs (patches != [ ]) { inherit patches; } +// optionalAttrs (prePatch != "") { inherit prePatch; } +// optionalAttrs (patchPhase != "") { inherit patchPhase; } // optionalAttrs (configurePhase != "") { inherit configurePhase; } -// optionalAttrs (preConfigure != "") { inherit preConfigure; } -// optionalAttrs (postConfigure != "") { inherit postConfigure; } -// optionalAttrs (buildPhase != "") { inherit buildPhase; } -// optionalAttrs (preBuild != "") { inherit preBuild; } -// optionalAttrs (postBuild != "") { inherit postBuild; } -// optionalAttrs (checkPhase != "") { inherit checkPhase; } -// optionalAttrs (preCheck != "") { inherit preCheck; } -// optionalAttrs (postCheck != "") { inherit postCheck; } -// optionalAttrs (installPhase != "") { inherit installPhase; } -// optionalAttrs (installTargets != []) { inherit installTargets; } -// optionalAttrs (preInstall != "") { inherit preInstall; } -// optionalAttrs (fixupPhase != "") { inherit fixupPhase; } -// optionalAttrs (preFixup != "") { inherit preFixup; } -// optionalAttrs (postFixup != "") { inherit postFixup; } +// optionalAttrs (preConfigure != "") { inherit preConfigure; } +// optionalAttrs (postConfigure != "") { inherit postConfigure; } +// optionalAttrs (buildPhase != "") { inherit buildPhase; } +// optionalAttrs (preBuild != "") { inherit preBuild; } +// optionalAttrs (postBuild != "") { inherit postBuild; } +// optionalAttrs (checkPhase != "") { inherit checkPhase; } +// optionalAttrs (preCheck != "") { inherit preCheck; } +// optionalAttrs (postCheck != "") { inherit postCheck; } +// optionalAttrs (installPhase != "") { inherit installPhase; } +// optionalAttrs (installTargets != [ ]) { inherit installTargets; } +// optionalAttrs (preInstall != "") { inherit preInstall; } +// optionalAttrs (fixupPhase != "") { inherit fixupPhase; } +// optionalAttrs (preFixup != "") { inherit preFixup; } +// optionalAttrs (postFixup != "") { inherit postFixup; } )