nixpkgs/pkgs/applications/misc/octoprint/default.nix

103 lines
2.9 KiB
Nix
Raw Normal View History

{ stdenv, lib, fetchFromGitHub, python2 }:
2016-02-14 12:56:07 +01:00
let
mkOverride = attrname: version: sha256:
self: super: {
${attrname} = super.${attrname}.overridePythonAttrs (oldAttrs: {
inherit version;
2018-08-30 22:14:06 +02:00
src = oldAttrs.src.override {
inherit version sha256;
2018-08-30 22:14:06 +02:00
};
});
};
py = python2.override {
packageOverrides = lib.foldr lib.composeExtensions (self: super: { }) ([
(mkOverride "flask" "0.10.1" "0wrkavjdjndknhp8ya8j850jq7a1cli4g5a93mg8nh1xz2gq50sc")
(mkOverride "flask_login" "0.2.11" "1rg3rsjs1gwi2pw6vr9jmhaqm9b3vc9c4hfcsvp4y8agbh7g3mc3")
(mkOverride "sarge" "0.1.4" "08s8896973bz1gg0pkr592w6g4p6v47bkfvws5i91p9xf8b35yar")
(mkOverride "tornado" "4.5.3" "02jzd23l4r6fswmwxaica9ldlyc2p6q8dk6dyff7j58fmdzf853d")
# Octoprint holds back jinja2 to 2.8.1 due to breaking changes.
# This old version does not have updated test config for pytest 4,
# and pypi tarball doesn't contain tests dir anyways.
(pself: psuper: {
jinja2 = psuper.jinja2.overridePythonAttrs (oldAttrs: rec {
version = "2.8.1";
src = oldAttrs.src.override {
inherit version;
sha256 = "14aqmhkc9rw5w0v311jhixdm6ym8vsm29dhyxyrjfqxljwx1yd1m";
};
doCheck = false;
});
})
]);
};
ignoreVersionConstraints = [
"Click"
"Flask-Assets"
"Flask-Babel"
"Flask-Principal"
"emoji"
"flask"
"future"
"futures"
2019-02-20 21:02:45 +01:00
"monotonic"
2019-05-30 15:28:25 +02:00
"markdown"
"pkginfo"
"psutil"
"pyserial"
"requests"
"rsa"
2019-02-20 21:02:45 +01:00
"sarge"
"scandir"
"semantic_version"
2019-02-20 21:02:45 +01:00
"watchdog"
"websocket-client"
"wrapt"
2019-05-30 15:28:25 +02:00
"sentry-sdk"
];
in py.pkgs.buildPythonApplication rec {
2018-06-23 12:20:32 +02:00
pname = "OctoPrint";
2019-05-30 15:28:25 +02:00
version = "1.3.11";
2016-02-14 12:56:07 +01:00
src = fetchFromGitHub {
owner = "foosel";
repo = "OctoPrint";
rev = version;
2019-05-30 15:28:25 +02:00
sha256 = "1102ki1819wsmkfg4riz4i0hjlr3w6nsvk8wrzqq0lc0s5ycf4jx";
2016-02-14 12:56:07 +01:00
};
propagatedBuildInputs = with py.pkgs; [
awesome-slugify flask_assets rsa requests pkginfo watchdog
semantic-version flask_principal werkzeug flaskbabel tornado
2016-08-13 02:02:34 +02:00
psutil pyserial flask_login netaddr markdown sockjs-tornado
pylru pyyaml sarge feedparser netifaces click websocket_client
2019-05-30 15:28:25 +02:00
scandir chainmap future futures wrapt monotonic emoji
frozendict cachelib sentry-sdk typing
2019-05-13 03:41:38 +02:00
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
2016-02-14 12:56:07 +01:00
checkInputs = with py.pkgs; [ nose mock ddt ];
2016-02-14 12:56:07 +01:00
postPatch = ''
sed -r -i \
${lib.concatStringsSep "\n" (map (e:
''-e 's@${e}[<>=]+.*@${e}",@g' \''
) ignoreVersionConstraints)}
2016-02-14 12:56:07 +01:00
setup.py
'';
2019-02-20 21:09:17 +01:00
checkPhase = ''
2019-05-13 03:41:38 +02:00
HOME=$(mktemp -d) nosetests ${lib.optionalString stdenv.isDarwin "--exclude=test_set_external_modification"}
2019-02-20 21:09:17 +01:00
'';
2016-02-14 12:56:07 +01:00
meta = with stdenv.lib; {
homepage = https://octoprint.org/;
2016-02-14 12:56:07 +01:00
description = "The snappy web interface for your 3D printer";
license = licenses.agpl3;
maintainers = with maintainers; [ abbradar ];
};
}