nix-doc: allow building without plugin
In certain situations, such as running development builds of Nix that might break API, it can be undesirable to have a Nix dependency for nix-doc, and there is still substantial useful functionality (ctags, search) exposed in its binaries. Thus let's make it possible to turn off the plugin build.
This commit is contained in:
parent
ce8e7baf9b
commit
ea4eb0d574
1 changed files with 20 additions and 5 deletions
|
@ -1,5 +1,17 @@
|
||||||
{ lib, stdenv, rustPlatform, fetchFromGitHub, boost, nix, pkg-config }:
|
{ lib
|
||||||
|
, stdenv
|
||||||
|
, rustPlatform
|
||||||
|
, fetchFromGitHub
|
||||||
|
, boost
|
||||||
|
, nix
|
||||||
|
, pkg-config
|
||||||
|
# Whether to build the nix-doc plugin for Nix
|
||||||
|
, withPlugin ? true
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
packageFlags = [ "-p" "nix-doc" ] ++ lib.optionals withPlugin [ "-p" "nix-doc-plugin" ];
|
||||||
|
in
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "nix-doc";
|
pname = "nix-doc";
|
||||||
version = "0.6.5";
|
version = "0.6.5";
|
||||||
|
@ -12,17 +24,20 @@ rustPlatform.buildRustPackage rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
buildInputs = [ boost nix ];
|
buildInputs = lib.optionals withPlugin [ boost nix ];
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config nix ];
|
nativeBuildInputs = lib.optionals withPlugin [ pkg-config nix ];
|
||||||
|
|
||||||
|
cargoBuildFlags = packageFlags;
|
||||||
|
cargoTestFlags = packageFlags;
|
||||||
|
|
||||||
# Packaging support for making the nix-doc plugin load cleanly as a no-op on
|
# Packaging support for making the nix-doc plugin load cleanly as a no-op on
|
||||||
# the wrong Nix version (disabling bindnow permits loading libraries
|
# the wrong Nix version (disabling bindnow permits loading libraries
|
||||||
# requiring unavailable symbols if they are unreached)
|
# requiring unavailable symbols if they are unreached)
|
||||||
hardeningDisable = [ "bindnow" ];
|
hardeningDisable = lib.optionals withPlugin [ "bindnow" ];
|
||||||
# Due to a Rust bug, setting -Z relro-level to anything including "off" on
|
# Due to a Rust bug, setting -Z relro-level to anything including "off" on
|
||||||
# macOS will cause link errors
|
# macOS will cause link errors
|
||||||
env = lib.optionalAttrs stdenv.isLinux {
|
env = lib.optionalAttrs (withPlugin && stdenv.isLinux) {
|
||||||
# nix-doc does not use nightly features, however, there is no other way to
|
# nix-doc does not use nightly features, however, there is no other way to
|
||||||
# set relro-level
|
# set relro-level
|
||||||
RUSTC_BOOTSTRAP = 1;
|
RUSTC_BOOTSTRAP = 1;
|
||||||
|
|
Loading…
Reference in a new issue