Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

brainflow: init at 5.12.1 #324462

Merged
merged 2 commits into from
Jul 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions pkgs/by-name/br/brainflow/package.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
bluez,
cmake,
dbus,
libftdi1,
nix-update-script,
pkg-config,
useLibFTDI ? true,
useOpenMP ? true,
buildBluetooth ? true,
buildBluetoothLowEnergy ? true,
buildONNX ? true,
}:

stdenv.mkDerivation (finalAttrs: {
pname = "brainflow";
version = "5.12.1";

src = fetchFromGitHub {
owner = "brainflow-dev";
repo = "brainflow";
rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-haQO03nkvLoXtFVe+C+yi+MwM0CFh6rLcLvU8fQ4k/w=";
};

patches = [
# All of these are PRs that were merged into the upstream repository and will be included in the next release
# These should be removed once the next version is released
(fetchpatch {
# Fixes a major issue that prevented the build from working at all (why was this not backported???)
url = "https://github.com/brainflow-dev/brainflow/commit/883b0cd08acb99d7b6e241e92fba2e9a363d17b1.patch";
hash = "sha256-QQd+BI3I65gfaNS/SKLjCoqbCwPCiTh+nh0tJAZM6hQ=";
})
(fetchpatch {
# Bumps the version of a python dependency that had a backwards-incompatible change
url = "https://github.com/brainflow-dev/brainflow/commit/ea23a6f0483ce4d6fdd7a82bace865356ee78d7f.patch";
hash = "sha256-dvMpxxRrnJQ9ADGagB1JhuoB9SNwn755wbHzW/3ECeo=";
})
(fetchpatch {
# Fixes an incorrect use of an environment variable during the build
url = "https://github.com/brainflow-dev/brainflow/commit/053b8c1253b686cbec49ab4adb47c9ee02d3f99a.patch";
hash = "sha256-Pfhe1ZvMagfVAGZqeWn1uHXgwlTtkOm+gyWuvC5/Sro=";
})
];

cmakeFlags = with lib; [
(cmakeBool "USE_LIBFTDI" useLibFTDI)
(cmakeBool "USE_OPENMP" useOpenMP)
(cmakeBool "BUILD_OYMOTION_SDK" false) # Needs a "GFORCE_SDK"
(cmakeBool "BUILD_BLUETOOTH" buildBluetooth)
(cmakeBool "BUILD_BLE" buildBluetoothLowEnergy)
(cmakeBool "BUILD_ONNX" buildONNX)
];

buildInputs =
[ dbus ]
++ lib.optional (buildBluetooth || buildBluetoothLowEnergy) bluez
++ lib.optional useLibFTDI libftdi1;

nativeBuildInputs = [
cmake
pkg-config
];

postPatch = ''
find . -type f -name 'build.cmake' -exec \
sed -i 's/DESTINATION inc/DESTINATION include/g' {} \;
'';

passthru.updateScript = nix-update-script { };

meta = {
description = "A library to obtain, parse and analyze data (EEG, EMG, ECG) from biosensors";
homepage = "https://brainflow.org/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
pandapip1
ziguana
];
platforms = lib.platforms.all;
};
})
39 changes: 39 additions & 0 deletions pkgs/development/python-modules/brainflow/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
buildPythonPackage,
brainflow,
nptyping,
numpy,
python,
setuptools,
}:

buildPythonPackage {
inherit (brainflow)
pname
version
src
patches
meta
;

pyproject = true;
build-system = [ setuptools ];

dependencies = [
numpy
nptyping
];

buildInputs = [ brainflow ];

postPatch = ''
cd python_package
'';

postInstall = ''
mkdir -p "$out/${python.sitePackages}/brainflow/lib/"
cp -Tr "${brainflow}/lib" "$out/${python.sitePackages}/brainflow/lib/"
'';

pythonImportsCheck = [ "brainflow" ];
}
4 changes: 4 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1767,6 +1767,10 @@ self: super: with self; {

bracex = callPackage ../development/python-modules/bracex { };

brainflow = callPackage ../development/python-modules/brainflow {
inherit (pkgs) brainflow;
};

braintree = callPackage ../development/python-modules/braintree { };

branca = callPackage ../development/python-modules/branca { };
Expand Down