forked from facontidavide/PlotJuggler
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathflake.nix
More file actions
154 lines (129 loc) · 4.63 KB
/
flake.nix
File metadata and controls
154 lines (129 loc) · 4.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
{
description = "A flake for building and running PlotJuggler";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
config.qt5.enable = true;
};
data-tamer-src = pkgs.fetchzip {
url = "https://github.com/PickNikRobotics/data_tamer/archive/refs/tags/1.0.3.zip";
sha256 = "sha256-hGfoU6oK7vh39TRCBTYnlqEsvGLWCsLVRBXh3RDrmnY=";
};
plotjuggler-pkg = pkgs.qt5.mkDerivation {
pname = "plotjuggler";
version = "3.10.11";
src = ./.;
patches = [ ./nix/arrow.patch ];
postPatch = ''
substituteInPlace cmake/find_or_download_data_tamer.cmake \
--replace "URL" "SOURCE_DIR" \
--replace "https://github.com/PickNikRobotics/data_tamer/archive/refs/tags/1.0.3.zip" "${data-tamer-src}"
rm cmake/find_or_download_fmt.cmake
rm cmake/find_or_download_fastcdr.cmake
rm cmake/find_or_download_zstd.cmake
substituteInPlace CMakeLists.txt \
--replace "include(cmake/find_or_download_fmt.cmake)" "find_package(fmt REQUIRED)" \
--replace "find_or_download_fmt()" ""
substituteInPlace CMakeLists.txt \
--replace "include(cmake/find_or_download_fastcdr.cmake)" "find_package(fastcdr REQUIRED)" \
--replace "find_or_download_fastcdr()" ""
find . -name "CMakeLists.txt" -exec sed -i 's/fastcdr::fastcdr/fastcdr/g' {} +
cat > plotjuggler_plugins/DataLoadMCAP/CMakeLists.txt << 'EOF'
cmake_minimum_required(VERSION 3.5)
if(mcap_vendor_FOUND)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)
project(DataLoadMCAP)
add_library(mcap INTERFACE)
find_package(zstd REQUIRED)
find_package(lz4 REQUIRED)
add_library(dataload_mcap MODULE dataload_mcap.cpp)
target_link_libraries(
dataload_mcap PUBLIC Qt5::Widgets Qt5::Xml Qt5::Concurrent plotjuggler_base mcap
zstd lz4)
if(WIN32 AND MSVC)
target_link_options(dataload_mcap PRIVATE /ignore:4217)
endif()
install(TARGETS dataload_mcap DESTINATION ''${PJ_PLUGIN_INSTALL_DIRECTORY})
endif()
EOF
'';
cmakeFlags = [
"-DPLJ_USE_SYSTEM_LUA=ON"
"-DPLJ_USE_SYSTEM_NLOHMANN_JSON=ON"
];
nativeBuildInputs = [ pkgs.cmake pkgs.qt5.wrapQtAppsHook ];
buildInputs = [
pkgs.qt5.full
pkgs.qt5.qtsvg
pkgs.qt5.qtimageformats
pkgs.qt5.qtdeclarative
pkgs.zeromq
pkgs.sqlite
pkgs.lua
pkgs.nlohmann_json
pkgs.fmt
pkgs.fastcdr
pkgs.lz4
pkgs.zstd
pkgs.mosquitto
pkgs.protobuf
pkgs.xorg.libX11
pkgs.xorg.libxcb
pkgs.xorg.xcbutil
pkgs.xorg.xcbutilkeysyms
pkgs.arrow-cpp
];
dontWrapQtApps = true;
meta = with pkgs.lib; {
description = "A tool to plot streaming data, fast and easy";
homepage = "https://github.com/facontidavide/PlotJuggler";
license = licenses.mpl20;
platforms = platforms.linux ++ platforms.darwin;
};
};
in
{
packages.default = plotjuggler-pkg;
packages.plotjuggler = plotjuggler-pkg;
apps.default = {
type = "app";
program = "${plotjuggler-pkg}/bin/plotjuggler";
};
apps.plotjuggler = self.apps.${system}.default;
devShells.default = pkgs.mkShell {
packages = [
pkgs.cmake
pkgs.qt5.full
pkgs.qt5.qtsvg
pkgs.qt5.qtimageformats
pkgs.qt5.qtdeclarative
pkgs.arrow-cpp
pkgs.zeromq
pkgs.sqlite
pkgs.lua
pkgs.nlohmann_json
pkgs.fmt
pkgs.fastcdr
pkgs.lz4
pkgs.zstd
pkgs.mosquitto
pkgs.protobuf
pkgs.codespell
pkgs.xorg.libX11
pkgs.xorg.libxcb
pkgs.xorg.xcbutil
pkgs.xorg.xcbutilkeysyms
];
};
}
);
}