Unverified Commit 14a2f96a authored by Alyssa Ross's avatar Alyssa Ross
Browse files

treewide: more accurate pandoc/shellcheck availability checks

The actual problem here is that there is no GHC bootstrap tarball for
RISC-V or LoongArch, so the right thing to check here is whether the
platform being used to build GHC has a bootstrap tarball available for
it.  This way, we'll do the right thing in all cases where such a
tarball isn't available, not just riscv64 and loongarch64, without
having to resort to tryEval, which could be hiding all sorts of
problems.

Since we need to refer to (unspliced) buildPackages.pandoc and
buildPackages.shellcheck in the conditionals, I've opted to remove the
pandoc and shellcheck inputs that would be spliced in
nativeBuildInputs and use buildPackages explicitly there as well, to
avoid confusingly having two different instances of the same package
around.
parent a120e609
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -367,17 +367,14 @@ rec {
        '';

      checkPhase =
        # GHC (=> shellcheck) isn't supported on some platforms (such as risc-v)
        # but we still want to use writeShellApplication on those platforms
        let
          shellcheckSupported =
            lib.meta.availableOn stdenv.buildPlatform shellcheck-minimal.compiler
            && (builtins.tryEval shellcheck-minimal.compiler.outPath).success;
          excludeFlags = lib.optionals (excludeShellChecks != [ ]) [
            "--exclude"
            (lib.concatStringsSep "," excludeShellChecks)
          ];
          shellcheckCommand = lib.optionalString shellcheckSupported ''
          # GHC (=> shellcheck) isn't supported on some platforms (such as risc-v)
          # but we still want to use writeShellApplication on those platforms
          shellcheckCommand = lib.optionalString shellcheck-minimal.compiler.bootstrapAvailable ''
            # use shellcheck which does not include docs
            # pandoc takes long to build and documentation isn't needed for just running the cli
            ${lib.getExe shellcheck-minimal} ${
+3 −3
Original line number Diff line number Diff line
@@ -6,11 +6,11 @@
  lib,
  libogg,
  nix-update-script,
  pandoc,
  buildPackages,
  pkg-config,
  stdenv,
  versionCheckHook,
  enableManpages ? !stdenv.buildPlatform.isRiscV64 && !stdenv.buildPlatform.isLoongArch64,
  enableManpages ? buildPackages.pandoc.compiler.bootstrapAvailable,
}:
stdenv.mkDerivation (finalAttrs: {
  pname = "flac";
@@ -30,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: {
    doxygen
    graphviz
    pkg-config
  ] ++ lib.optional enableManpages pandoc;
  ] ++ lib.optional enableManpages buildPackages.pandoc;

  buildInputs = [ libogg ];

+3 −6
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
  lib,
  bash,
  installShellFiles,
  shellcheck-minimal,
  buildPackages,
}:

stdenvNoCC.mkDerivation {
@@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation {
  strictDeps = true;
  buildInputs = [ bash ];
  nativeBuildInputs = [ installShellFiles ];
  nativeCheckInputs = [ shellcheck-minimal ];
  nativeCheckInputs = [ buildPackages.shellcheck-minimal ];

  postPatch = ''
    patchShebangs --host nixos-firewall-tool
@@ -26,10 +26,7 @@ stdenvNoCC.mkDerivation {
    installShellCompletion nixos-firewall-tool.{bash,fish}
  '';

  # Skip shellcheck if GHC is not available, see writeShellApplication.
  doCheck =
    lib.meta.availableOn stdenvNoCC.buildPlatform shellcheck-minimal.compiler
    && (builtins.tryEval shellcheck-minimal.compiler.outPath).success;
  doCheck = buildPackages.shellcheck-minimal.compiler.bootstrapAvailable;
  checkPhase = ''
    shellcheck nixos-firewall-tool
  '';
+3 −3
Original line number Diff line number Diff line
@@ -7,8 +7,8 @@
  pkg-config,
  gobject-introspection,
  vala,
  enableManpages ? !stdenv.buildPlatform.isLoongArch64 && !stdenv.buildPlatform.isRiscV64,
  pandoc,
  buildPackages,
  enableManpages ? buildPackages.pandoc.compiler.bootstrapAvailable,
  gi-docgen,
  python3,
  libsoup_3,
@@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
    vala
    gi-docgen
    python3
  ] ++ lib.optionals enableManpages [ pandoc ];
  ] ++ lib.optionals enableManpages [ buildPackages.pandoc ];

  buildInputs = [
    libsoup_3
+3 −3
Original line number Diff line number Diff line
@@ -3,11 +3,11 @@
  stdenv,
  fetchFromGitHub,
  cmake,
  pandoc,
  buildPackages,
  pkg-config,
  icu,
  catch2_3,
  enableManpages ? !stdenv.buildPlatform.isRiscV64 && !stdenv.buildPlatform.isLoongArch64,
  enableManpages ? buildPackages.pandoc.compiler.bootstrapAvailable,
}:

stdenv.mkDerivation rec {
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
      pkg-config
    ]
    ++ lib.optionals enableManpages [
      pandoc
      buildPackages.pandoc
    ];

  buildInputs = [ catch2_3 ];