114 lines
3.6 KiB
Nix
114 lines
3.6 KiB
Nix
#
|
|
# scopehal apps, including glscopeclient and optionally ngscopeclient
|
|
#
|
|
# vim: et:ts=2:sw=2:
|
|
#
|
|
{ deprekages, pkgs, lib, cmake, pkg-config, patchelf, ... }:
|
|
pkgs.stdenv.mkDerivation rec {
|
|
pname = "scopehal-apps";
|
|
version = "git";
|
|
|
|
# If this is set to true, we'll also install ngscopeclient.
|
|
includeUnstableNextGenClient = true;
|
|
|
|
src = pkgs.fetchgit {
|
|
url = "https://github.com/glscopeclient/scopehal-apps.git";
|
|
rev = "617b6ee1230d19be4b883f676413664c3d7c0d7e";
|
|
sha256 = "sha256-LJo1rcxDBYYngIU3+BiCV41HuQh/Ac/LG4wX9+IvVb8=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
patchelf
|
|
pkgs.git
|
|
];
|
|
|
|
buildInputs = with pkgs; [
|
|
deprekages.ffts
|
|
shaderc
|
|
deprekages.vulkan-sdk
|
|
|
|
# located via cmake module
|
|
glfw3
|
|
glew
|
|
libyamlcpp
|
|
libpng
|
|
|
|
# pkg-config
|
|
gtkmm3
|
|
pcre
|
|
pcre2
|
|
util-linux
|
|
libselinux
|
|
libsepol
|
|
libthai
|
|
libdatrie
|
|
];
|
|
|
|
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
|
|
|
|
patches = [
|
|
# Fix a format string vulnerability that's preventing us from building with -Werror=format-security.
|
|
# Currently necessary due to https://github.com/glscopeclient/scopehal-apps/issues/571.
|
|
(pkgs.writeText "fix-format-security.patch" ''
|
|
--- scopehal-apps-0.0.1.orig/src/ngscopeclient/Dialog.cpp
|
|
+++ scopehal-apps-0.0.1/src/ngscopeclient/Dialog.cpp
|
|
@@ -207,7 +207,7 @@ void Dialog::HelpMarker(const string& he
|
|
ImGui::PushTextWrapPos(ImGui::GetFontSize() * 50);
|
|
ImGui::TextUnformatted(header.c_str());
|
|
for(auto s : bullets)
|
|
- ImGui::BulletText(s.c_str());
|
|
+ ImGui::BulletText("%s", s.c_str());
|
|
ImGui::PopTextWrapPos();
|
|
ImGui::EndTooltip();
|
|
}
|
|
'')
|
|
]
|
|
|
|
# If we're configured to, include ngscopeclient; though it's unstable enough that we
|
|
# won't create a desktop entry for it, yet.
|
|
++ lib.lists.optional (includeUnstableNextGenClient) (pkgs.writeText "install-ng-client.patch" ''
|
|
diff --git a/src/ngscopeclient/CMakeLists.txt b/src/ngscopeclient/CMakeLists.txt
|
|
index 79171e0..b340af1 100644
|
|
--- a/src/ngscopeclient/CMakeLists.txt
|
|
+++ b/src/ngscopeclient/CMakeLists.txt
|
|
@@ -153,3 +153,11 @@ target_link_libraries(ngscopeclient
|
|
$${SIGCXX_LIBRARIES}
|
|
)
|
|
|
|
+
|
|
+install(TARGETS ngscopeclient RUNTIME)
|
|
+install(DIRECTORY fonts
|
|
+ DESTINATION share/ngscopeclient)
|
|
+install(DIRECTORY shaders
|
|
+ DESTINATION share/ngscopeclient)
|
|
+install(DIRECTORY icons
|
|
+ DESTINATION share/ngscopeclient)
|
|
'');
|
|
|
|
# scopehal's cmake files expect to find vulkan libraries using the VULKAN_SDK environment variable.
|
|
# (The top level's vulkan can be specified with -DVulkan_LIBRARY, but the environment variable is still
|
|
# used by the lower layers; which makes it better just to use this, here.
|
|
preConfigure = "export VULKAN_SDK=${deprekages.vulkan-sdk}";
|
|
|
|
# Link our e.g. stylesheets into places that Qt is willing to find them.
|
|
# TODO: figure out if there's a build define that changes this
|
|
postInstall = ''
|
|
cp -r $out/share/glscopeclient/* $out/bin/
|
|
cp -r $out/share/ngscopeclient/* $out/bin/
|
|
'';
|
|
|
|
meta = {
|
|
description = "test and measurement tool control applications";
|
|
|
|
longDescription =
|
|
'' Tools for remote controlling test and measurement tools.
|
|
Provides advanced visualization and decoding of output from oscilloscopes and control of various instruments.
|
|
'';
|
|
|
|
homepage = "https://www.antikernel.net/temp/glscopeclient-manual.pdf";
|
|
license = pkgs.lib.licenses.bsd3;
|
|
};
|
|
}
|