2020-08-25 22:29:31 +01:00
|
|
|
{ pkgs
|
|
|
|
, stdenv
|
|
|
|
, lib
|
|
|
|
, fetchFromGitHub
|
2021-08-09 16:13:12 +01:00
|
|
|
, python38
|
|
|
|
, substituteAll
|
2021-02-01 02:43:52 +00:00
|
|
|
, nix-update-script
|
2020-08-25 22:29:31 +01:00
|
|
|
# To include additional plugins, pass them here as an overlay.
|
2020-03-14 10:02:07 +00:00
|
|
|
, packageOverrides ? self: super: {}
|
|
|
|
}:
|
2016-10-06 09:05:54 +01:00
|
|
|
let
|
2018-12-06 04:43:36 +00:00
|
|
|
mkOverride = attrname: version: sha256:
|
2020-08-25 22:29:31 +01:00
|
|
|
self: super: {
|
|
|
|
${attrname} = super.${attrname}.overridePythonAttrs (
|
|
|
|
oldAttrs: {
|
2018-12-06 04:43:36 +00:00
|
|
|
inherit version;
|
2018-08-30 21:14:06 +01:00
|
|
|
src = oldAttrs.src.override {
|
2018-12-06 04:43:36 +00:00
|
|
|
inherit version sha256;
|
2018-08-30 21:14:06 +01:00
|
|
|
};
|
2020-08-25 22:29:31 +01:00
|
|
|
}
|
|
|
|
);
|
|
|
|
};
|
2018-12-06 04:43:36 +00:00
|
|
|
|
2021-08-09 16:13:12 +01:00
|
|
|
py = python38.override {
|
2020-03-14 10:02:07 +00:00
|
|
|
self = py;
|
2020-08-25 22:29:31 +01:00
|
|
|
packageOverrides = lib.foldr lib.composeExtensions (self: super: {}) (
|
|
|
|
[
|
|
|
|
# the following dependencies are non trivial to update since later versions introduce backwards incompatible
|
|
|
|
# changes that might affect plugins, or due to other observed problems
|
2021-08-09 16:13:12 +01:00
|
|
|
(mkOverride "click" "7.1.2" "d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a")
|
2020-12-07 13:14:38 +00:00
|
|
|
(mkOverride "flask-babel" "1.0.0" "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn")
|
2021-08-09 16:13:12 +01:00
|
|
|
(mkOverride "itsdangerous" "1.1.0" "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19")
|
|
|
|
(mkOverride "jinja2" "2.11.3" "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6")
|
2020-08-25 22:29:31 +01:00
|
|
|
(mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a")
|
2021-08-09 16:13:12 +01:00
|
|
|
(mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b")
|
|
|
|
(mkOverride "sarge" "0.1.5.post0" "1c1ll7pys9vra5cfi8jxlgrgaql6c27l6inpy15aprgqhc4ck36s")
|
2020-08-25 22:29:31 +01:00
|
|
|
(mkOverride "tornado" "5.1.1" "4e5158d97583502a7e2739951553cbd88a72076f152b4b11b64b9a10c4c49409")
|
|
|
|
(mkOverride "unidecode" "0.04.21" "280a6ab88e1f2eb5af79edff450021a0d3f0448952847cd79677e55e58bad051")
|
2021-08-09 16:13:12 +01:00
|
|
|
|
|
|
|
# Requires flask<2, cannot mkOverride because tests need to be disabled
|
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
flask = super.flask.overridePythonAttrs (oldAttrs: rec {
|
|
|
|
version = "1.1.2";
|
|
|
|
src = oldAttrs.src.override {
|
|
|
|
inherit version;
|
|
|
|
sha256 = "4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060";
|
|
|
|
};
|
|
|
|
doCheck = false;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
# Requires werkezug<2, cannot mkOverride because tests need to be disabled
|
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
werkzeug = super.werkzeug.overridePythonAttrs (oldAttrs: rec {
|
|
|
|
version = "1.0.1";
|
|
|
|
src = oldAttrs.src.override {
|
|
|
|
inherit version;
|
|
|
|
sha256 = "6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c";
|
|
|
|
};
|
|
|
|
doCheck= false;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2019-04-02 08:07:47 +01:00
|
|
|
|
2021-06-16 17:24:26 +01:00
|
|
|
# Requires websocket-client <1.0, >=0.57. Cannot do mkOverride b/c differing underscore/hyphen in pypi source name
|
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
websocket-client = super.websocket-client.overridePythonAttrs (
|
|
|
|
oldAttrs: rec {
|
|
|
|
version = "0.58.0";
|
|
|
|
src = oldAttrs.src.override {
|
|
|
|
pname = "websocket_client";
|
|
|
|
inherit version;
|
|
|
|
sha256 = "63509b41d158ae5b7f67eb4ad20fecbb4eee99434e73e140354dc3ff8e09716f";
|
|
|
|
};
|
2021-06-28 04:34:27 +01:00
|
|
|
propagatedBuildInputs = [ self.six ];
|
2021-06-16 17:24:26 +01:00
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2021-07-08 01:14:36 +01:00
|
|
|
# Octoprint needs zeroconf >=0.24 <0.25. This can't be done via mkOverride, because in zeroconf 0.32
|
|
|
|
# the super package was migrated to fetchFromGitHub.
|
2020-12-04 20:08:40 +00:00
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
zeroconf = super.zeroconf.overrideAttrs (oldAttrs: rec {
|
|
|
|
version = "0.24.5";
|
2021-07-08 01:14:36 +01:00
|
|
|
src = super.fetchPypi {
|
|
|
|
inherit (oldAttrs) pname;
|
2020-12-04 20:08:40 +00:00
|
|
|
inherit version;
|
|
|
|
sha256 = "0jpgd0rk91si93857mjrizan5gc42kj1q4fi4160qgk68la88fl9";
|
|
|
|
};
|
2021-07-08 01:14:36 +01:00
|
|
|
pythonImportsCheck = [
|
|
|
|
"zeroconf"
|
|
|
|
];
|
|
|
|
buildInputs = with self; [
|
|
|
|
pytestCheckHook
|
|
|
|
nose
|
|
|
|
];
|
|
|
|
pytestFlagsArray = [ "zeroconf/test.py" ];
|
2020-12-04 20:08:40 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
# Built-in dependency
|
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
octoprint-filecheck = self.buildPythonPackage rec {
|
|
|
|
pname = "OctoPrint-FileCheck";
|
2021-08-09 16:13:12 +01:00
|
|
|
version = "2021.2.23";
|
2020-03-10 12:42:31 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "OctoPrint";
|
|
|
|
repo = "OctoPrint-FileCheck";
|
|
|
|
rev = version;
|
2021-08-09 16:13:12 +01:00
|
|
|
sha256 = "sha256-e/QGEBa9+pjOdrZq3Zc6ifbSMClIyeTOi0Tji0YdVmI=";
|
2020-08-25 22:29:31 +01:00
|
|
|
};
|
|
|
|
doCheck = false;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
)
|
2020-03-10 12:42:31 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
# Built-in dependency
|
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
octoprint-firmwarecheck = self.buildPythonPackage rec {
|
|
|
|
pname = "OctoPrint-FirmwareCheck";
|
2021-08-09 16:13:12 +01:00
|
|
|
version = "2021.8.11";
|
2018-12-06 04:43:36 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "OctoPrint";
|
|
|
|
repo = "OctoPrint-FirmwareCheck";
|
|
|
|
rev = version;
|
2021-08-09 16:13:12 +01:00
|
|
|
sha256 = "sha256-WzVjHgjF12iJ642AFaFd86GSU90XyPzKhi1CSreynW4=";
|
|
|
|
};
|
|
|
|
doCheck = false;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
octoprint-pisupport = self.buildPythonPackage rec {
|
|
|
|
pname = "OctoPrint-PiSupport";
|
|
|
|
version = "2021.8.2";
|
|
|
|
format = "setuptools";
|
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "OctoPrint";
|
|
|
|
repo = "OctoPrint-PiSupport";
|
|
|
|
rev = version;
|
|
|
|
sha256 = "07akx61wadxhs0545pqa9gzjnaz9742bq710f8f4zs5x6sacjzbc";
|
2020-08-25 22:29:31 +01:00
|
|
|
};
|
2021-08-09 16:13:12 +01:00
|
|
|
|
|
|
|
# requires octoprint itself during tests
|
2020-08-25 22:29:31 +01:00
|
|
|
doCheck = false;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
)
|
2016-02-14 11:56:07 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
(
|
|
|
|
self: super: {
|
|
|
|
octoprint = self.buildPythonPackage rec {
|
|
|
|
pname = "OctoPrint";
|
2021-08-09 16:13:12 +01:00
|
|
|
version = "1.6.1";
|
2016-02-14 11:56:07 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "OctoPrint";
|
|
|
|
repo = "OctoPrint";
|
|
|
|
rev = version;
|
2021-08-09 16:13:12 +01:00
|
|
|
sha256 = "sha256-3b3k9h8H9Spf/P3/pXpCANnSGOgbUw/EWISJbrSoPBM=";
|
2020-08-25 22:29:31 +01:00
|
|
|
};
|
2017-03-21 14:31:08 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
propagatedBuildInputs = with super; [
|
2020-12-04 20:09:22 +00:00
|
|
|
blinker
|
|
|
|
cachelib
|
|
|
|
click
|
|
|
|
emoji
|
|
|
|
feedparser
|
|
|
|
filetype
|
2020-08-25 22:29:31 +01:00
|
|
|
flask
|
|
|
|
flask-babel
|
|
|
|
flask_assets
|
2020-12-04 20:09:22 +00:00
|
|
|
flask_login
|
|
|
|
frozendict
|
|
|
|
future
|
2020-08-25 22:29:31 +01:00
|
|
|
itsdangerous
|
2021-08-09 16:13:12 +01:00
|
|
|
immutabledict
|
2020-12-04 20:09:22 +00:00
|
|
|
jinja2
|
|
|
|
markdown
|
|
|
|
markupsafe
|
2020-08-25 22:29:31 +01:00
|
|
|
netaddr
|
|
|
|
netifaces
|
2020-12-04 20:09:22 +00:00
|
|
|
octoprint-filecheck
|
|
|
|
octoprint-firmwarecheck
|
2021-08-09 16:13:12 +01:00
|
|
|
octoprint-pisupport
|
2020-08-25 22:29:31 +01:00
|
|
|
pkginfo
|
2021-08-09 16:13:12 +01:00
|
|
|
pip
|
2020-12-04 20:09:22 +00:00
|
|
|
psutil
|
|
|
|
pylru
|
|
|
|
pyserial
|
|
|
|
pyyaml
|
|
|
|
regex
|
2020-08-25 22:29:31 +01:00
|
|
|
requests
|
2020-12-04 20:09:22 +00:00
|
|
|
rsa
|
|
|
|
sarge
|
2020-08-25 22:29:31 +01:00
|
|
|
semantic-version
|
|
|
|
sentry-sdk
|
2021-08-09 16:13:12 +01:00
|
|
|
setuptools
|
2020-12-04 20:09:22 +00:00
|
|
|
tornado
|
2020-08-25 22:29:31 +01:00
|
|
|
unidecode
|
2020-12-04 20:09:22 +00:00
|
|
|
watchdog
|
2021-06-15 12:12:45 +01:00
|
|
|
websocket-client
|
2020-12-04 20:09:22 +00:00
|
|
|
werkzeug
|
|
|
|
wrapt
|
2020-12-04 20:08:40 +00:00
|
|
|
zeroconf
|
2021-08-09 16:13:12 +01:00
|
|
|
zipstream-new
|
2020-08-25 22:29:31 +01:00
|
|
|
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
|
2016-02-14 11:56:07 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
checkInputs = with super; [ pytestCheckHook mock ddt ];
|
2020-03-10 12:42:31 +00:00
|
|
|
|
2021-08-09 16:13:12 +01:00
|
|
|
patches = [
|
|
|
|
# substitute pip and let it find out, that it can't write anywhere
|
|
|
|
(substituteAll {
|
|
|
|
src = ./pip-path.patch;
|
|
|
|
pip = "${super.pip}/bin/pip";
|
|
|
|
})
|
|
|
|
|
|
|
|
# hardcore path to ffmpeg and hide related settings
|
|
|
|
(substituteAll {
|
|
|
|
src = ./ffmpeg-path.patch;
|
|
|
|
ffmpeg = "${pkgs.ffmpeg}/bin/ffmpeg";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
postPatch = let
|
|
|
|
ignoreVersionConstraints = [
|
2021-02-02 15:44:27 +00:00
|
|
|
"emoji"
|
2021-08-09 16:13:12 +01:00
|
|
|
"immutabledict"
|
2020-08-25 22:29:31 +01:00
|
|
|
"sentry-sdk"
|
2021-02-02 15:44:27 +00:00
|
|
|
"watchdog"
|
2020-08-25 22:29:31 +01:00
|
|
|
];
|
|
|
|
in
|
|
|
|
''
|
|
|
|
sed -r -i \
|
|
|
|
${lib.concatStringsSep "\n" (
|
|
|
|
map (
|
|
|
|
e:
|
|
|
|
''-e 's@${e}[<>=]+.*@${e}",@g' \''
|
|
|
|
) ignoreVersionConstraints
|
|
|
|
)}
|
|
|
|
setup.py
|
|
|
|
'';
|
2017-03-21 14:31:08 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
dontUseSetuptoolsCheck = true;
|
2020-03-10 12:42:31 +00:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
preCheck = ''
|
|
|
|
export HOME=$(mktemp -d)
|
|
|
|
rm pytest.ini
|
|
|
|
'';
|
2020-05-03 10:59:18 +01:00
|
|
|
|
2020-08-25 22:29:31 +01:00
|
|
|
disabledTests = [
|
|
|
|
"test_check_setup" # Why should it be able to call pip?
|
|
|
|
] ++ lib.optionals stdenv.isDarwin [
|
|
|
|
"test_set_external_modification"
|
|
|
|
];
|
|
|
|
|
2021-02-01 02:43:52 +00:00
|
|
|
passthru = {
|
|
|
|
python = self.python;
|
|
|
|
updateScript = nix-update-script { attrPath = "octoprint"; };
|
|
|
|
};
|
2020-08-25 22:29:31 +01:00
|
|
|
|
2021-01-11 07:54:33 +00:00
|
|
|
meta = with lib; {
|
2020-08-25 22:29:31 +01:00
|
|
|
homepage = "https://octoprint.org/";
|
|
|
|
description = "The snappy web interface for your 3D printer";
|
|
|
|
license = licenses.agpl3;
|
|
|
|
maintainers = with maintainers; [ abbradar gebner WhittlesJr ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
)
|
|
|
|
(import ./plugins.nix { inherit pkgs; })
|
|
|
|
packageOverrides
|
|
|
|
]
|
|
|
|
);
|
2016-02-14 11:56:07 +00:00
|
|
|
};
|
2020-08-25 22:29:31 +01:00
|
|
|
in
|
|
|
|
with py.pkgs; toPythonApplication octoprint
|