9c6ee729d6
GitOrigin-RevId: 6cee3b5893090b0f5f0a06b4cf42ca4e60e5d222
89 lines
2.4 KiB
Nix
89 lines
2.4 KiB
Nix
{ lib
|
|
, stdenv
|
|
, python3
|
|
, fetchPypi
|
|
, fetchFromBitbucket
|
|
, fetchpatch
|
|
, substituteAll
|
|
, geos
|
|
}:
|
|
|
|
let
|
|
python = python3.override {
|
|
packageOverrides = self: super: {
|
|
shapely = super.shapely.overridePythonAttrs (old: rec {
|
|
version = "1.8.4";
|
|
src = fetchPypi {
|
|
pname = "Shapely";
|
|
inherit version;
|
|
hash = "sha256-oZXlHKr6IYKR8suqP+9p/TNTyT7EtlsqRyLEz0DDGYw=";
|
|
};
|
|
# Environment variable used in shapely/_buildcfg.py
|
|
GEOS_LIBRARY_PATH = "${geos}/lib/libgeos_c${stdenv.hostPlatform.extensions.sharedLibrary}";
|
|
patches = [
|
|
# Patch to search form GOES .so/.dylib files in a Nix-aware way
|
|
(substituteAll {
|
|
src = ./shapely-library-paths.patch;
|
|
libgeos_c = GEOS_LIBRARY_PATH;
|
|
libc = lib.optionalString (!stdenv.isDarwin) "${stdenv.cc.libc}/lib/libc${stdenv.hostPlatform.extensions.sharedLibrary}.6";
|
|
})
|
|
];
|
|
});
|
|
};
|
|
};
|
|
in
|
|
python.pkgs.buildPythonApplication rec {
|
|
pname = "flatcam";
|
|
version = "8.5";
|
|
|
|
src = fetchFromBitbucket {
|
|
owner = "jpcgt";
|
|
repo = pname;
|
|
rev = "533afd6a1772857cb633c011b5e0a15b60b1e92e"; # 8.5 with Red Hat packaging.
|
|
sha256 = "199kiiml18k34z1zhk2hbhibphmnv0kb11kxiajq52alps0mjb3m";
|
|
};
|
|
|
|
propagatedBuildInputs = with python.pkgs; [
|
|
matplotlib
|
|
numpy
|
|
packaging
|
|
pyqt4
|
|
rtree
|
|
scipy
|
|
setuptools
|
|
shapely
|
|
simplejson
|
|
six
|
|
svg-path
|
|
];
|
|
|
|
packaging_fix_pull_request_patch = fetchpatch {
|
|
name = "packaging_fix_pull_request.patch";
|
|
url = "https://bitbucket.org/trepetti/flatcam/commits/5591ed889d1f48a5190fe237b562cb932cb5876c/raw";
|
|
sha256 = "19rhjdrf1n1q29cgpcry6pl2kl90zq0d613hhkwdir9bhq5bkknp";
|
|
};
|
|
|
|
patches = [
|
|
packaging_fix_pull_request_patch
|
|
./release.patch
|
|
];
|
|
|
|
postPatch = ''
|
|
substituteInPlace setup.py --replace "'shapely>=1.3'" "'shapely>=1.3',"
|
|
'';
|
|
|
|
# Only non-GUI tests can be run deterministically in the Nix build environment.
|
|
checkPhase = ''
|
|
python -m unittest tests.test_excellon
|
|
python -m unittest tests.test_gerber_buffer
|
|
python -m unittest tests.test_paint
|
|
python -m unittest tests.test_pathconnect
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "2-D post processing for PCB fabrication on CNC routers";
|
|
homepage = "https://bitbucket.org/jpcgt/flatcam";
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ trepetti ];
|
|
};
|
|
}
|