1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 autoreconfHook,
6 bison,
7 flex,
8 pkg-config,
9 libftdi1,
10 libuuid,
11 cppunit,
12 protobuf,
13 zlib,
14 avahi,
15 libmicrohttpd,
16 perl,
17 python3,
18 fetchpatch,
19}:
20
21stdenv.mkDerivation rec {
22 pname = "ola";
23 version = "0.10.9";
24
25 src = fetchFromGitHub {
26 owner = "OpenLightingProject";
27 repo = "ola";
28 tag = version;
29 hash = "sha256-8w8ZT3D/+8Pxl9z2KTXeydVxE5xiPjxZevgmMFgrblU=";
30 };
31 patches = [
32 # Fix build error with GCC 14 due to stricter C++20 compliance (template-id in constructors)
33 (fetchpatch {
34 url = "https://github.com/OpenLightingProject/ola/commit/d9b9c78645c578adb7c07b692842e841c48310be.patch";
35 hash = "sha256-BplSqQv8ztWMpiX/M3/3wvf6LsPTBglh48gHlUoM6rw=";
36 })
37 ];
38 nativeBuildInputs = [
39 autoreconfHook
40 bison
41 flex
42 pkg-config
43 perl
44 ];
45 buildInputs = [
46 # required for ola-ftdidmx plugin (support for 'dumb' FTDI devices)
47 libftdi1
48 libuuid
49 cppunit
50 protobuf
51 zlib
52 avahi
53 libmicrohttpd
54 python3
55 ];
56 propagatedBuildInputs = [
57 (python3.pkgs.protobuf4.override { protobuf = protobuf; })
58 python3.pkgs.numpy
59 ];
60
61 configureFlags = [ "--enable-python-libs" ];
62
63 enableParallelBuilding = true;
64
65 meta = with lib; {
66 broken = stdenv.hostPlatform.isDarwin;
67 description = "Framework for controlling entertainment lighting equipment";
68 homepage = "https://www.openlighting.org/ola/";
69 maintainers = [ ];
70 license = with licenses; [
71 lgpl21
72 gpl2Plus
73 ];
74 platforms = platforms.all;
75 };
76}