3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #135302 from mweinelt/octoprint

This commit is contained in:
Martin Weinelt 2021-08-24 01:32:13 +02:00 committed by GitHub
commit 53fdb18b41
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 262 additions and 59 deletions

View file

@ -2,7 +2,8 @@
, stdenv
, lib
, fetchFromGitHub
, python3
, python38
, substituteAll
, nix-update-script
# To include additional plugins, pass them here as an overlay.
, packageOverrides ? self: super: {}
@ -20,18 +21,51 @@ let
);
};
py = python3.override {
py = python38.override {
self = py;
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
(mkOverride "click" "7.1.2" "d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a")
(mkOverride "flask-babel" "1.0.0" "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn")
(mkOverride "rsa" "4.0" "1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487")
(mkOverride "itsdangerous" "1.1.0" "321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19")
(mkOverride "jinja2" "2.11.3" "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6")
(mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a")
(mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b")
(mkOverride "sarge" "0.1.5.post0" "1c1ll7pys9vra5cfi8jxlgrgaql6c27l6inpy15aprgqhc4ck36s")
(mkOverride "tornado" "5.1.1" "4e5158d97583502a7e2739951553cbd88a72076f152b4b11b64b9a10c4c49409")
(mkOverride "unidecode" "0.04.21" "280a6ab88e1f2eb5af79edff450021a0d3f0448952847cd79677e55e58bad051")
(mkOverride "sarge" "0.1.5.post0" "1c1ll7pys9vra5cfi8jxlgrgaql6c27l6inpy15aprgqhc4ck36s")
# 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;
});
}
)
# Requires websocket-client <1.0, >=0.57. Cannot do mkOverride b/c differing underscore/hyphen in pypi source name
(
@ -78,13 +112,13 @@ let
self: super: {
octoprint-filecheck = self.buildPythonPackage rec {
pname = "OctoPrint-FileCheck";
version = "2020.08.07";
version = "2021.2.23";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-FileCheck";
rev = version;
sha256 = "05ys05l5x7d2bkg3yqrga6m65v3g5fcnnzbfab7j9w2pzjdapx5b";
sha256 = "sha256-e/QGEBa9+pjOdrZq3Zc6ifbSMClIyeTOi0Tji0YdVmI=";
};
doCheck = false;
};
@ -96,30 +130,50 @@ let
self: super: {
octoprint-firmwarecheck = self.buildPythonPackage rec {
pname = "OctoPrint-FirmwareCheck";
version = "2020.09.23";
version = "2021.8.11";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-FirmwareCheck";
rev = version;
sha256 = "1l1ajhnsc39prgk59mp93h90dgl9gh660cci00z5b5gj2h6dv1d1";
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";
};
# requires octoprint itself during tests
doCheck = false;
};
}
)
(
self: super: {
octoprint = self.buildPythonPackage rec {
pname = "OctoPrint";
version = "1.5.3";
version = "1.6.1";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint";
rev = version;
sha256 = "sha256-ZL/P/YIHynPmP8ssZZUKZDJscBsSsCq3UtOHrTVLpec=";
sha256 = "sha256-3b3k9h8H9Spf/P3/pXpCANnSGOgbUw/EWISJbrSoPBM=";
};
propagatedBuildInputs = with super; [
@ -136,6 +190,7 @@ let
frozendict
future
itsdangerous
immutabledict
jinja2
markdown
markupsafe
@ -143,7 +198,9 @@ let
netifaces
octoprint-filecheck
octoprint-firmwarecheck
octoprint-pisupport
pkginfo
pip
psutil
pylru
pyserial
@ -154,6 +211,7 @@ let
sarge
semantic-version
sentry-sdk
setuptools
tornado
unidecode
watchdog
@ -161,13 +219,29 @@ let
werkzeug
wrapt
zeroconf
zipstream-new
] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
checkInputs = with super; [ pytestCheckHook mock ddt ];
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";
})
];
postPatch = let
ignoreVersionConstraints = [
"emoji"
"immutabledict"
"sentry-sdk"
"watchdog"
];

View file

@ -0,0 +1,41 @@
diff --git a/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2 b/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2
index 79342dcd7..6165a4119 100644
--- a/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2
+++ b/src/octoprint/plugins/corewizard/templates/corewizard_webcam_wizard.jinja2
@@ -29,14 +29,3 @@
{% include "snippets/settings/webcam/webcamStreamUrl.jinja2" %}
{% include "snippets/settings/webcam/webcamSnapshotUrl.jinja2" %}
</form>
-
-<h4>{{ _('Timelapse Recordings') }}</h4>
-
-{% trans %}<p>
- To render the snapshots into timelapse recordings, OctoPrint also needs to
- know the correct <strong>path to FFMPEG</strong>.
-</p>{% endtrans %}
-
-<form class="form-horizontal" data-bind="with: settingsViewModel" onsubmit="return false;">
- {% include "snippets/settings/webcam/ffmpegPath.jinja2" %}
-</form>
diff --git a/src/octoprint/server/api/settings.py b/src/octoprint/server/api/settings.py
index c3e6cea10..ced2f8fa0 100644
--- a/src/octoprint/server/api/settings.py
+++ b/src/octoprint/server/api/settings.py
@@ -130,7 +130,7 @@ def getSettings():
"snapshotUrl": s.get(["webcam", "snapshot"]),
"snapshotTimeout": s.getInt(["webcam", "snapshotTimeout"]),
"snapshotSslValidation": s.getBoolean(["webcam", "snapshotSslValidation"]),
- "ffmpegPath": s.get(["webcam", "ffmpeg"]),
+ "ffmpegPath": "@ffmpeg@",
"ffmpegCommandline": s.get(["webcam", "ffmpegCommandline"]),
"bitrate": s.get(["webcam", "bitrate"]),
"ffmpegThreads": s.get(["webcam", "ffmpegThreads"]),
@@ -548,8 +548,6 @@ def _saveSettings(data):
["webcam", "snapshotSslValidation"],
data["webcam"]["snapshotSslValidation"],
)
- if "ffmpegPath" in data["webcam"]:
- s.set(["webcam", "ffmpeg"], data["webcam"]["ffmpegPath"])
if "ffmpegCommandline" in data["webcam"]:
commandline = data["webcam"]["ffmpegCommandline"]
if not all(

View file

@ -0,0 +1,12 @@
diff --git a/src/octoprint/util/pip.py b/src/octoprint/util/pip.py
index 53500e5d5..39f76c1e5 100644
--- a/src/octoprint/util/pip.py
+++ b/src/octoprint/util/pip.py
@@ -284,6 +284,7 @@ class PipCaller(CommandlineCaller):
@classmethod
def autodetect_pip(cls):
commands = [
+ ["@pip@"],
[sys.executable, "-m", "pip"],
[
os.path.join(

View file

@ -52,13 +52,13 @@ in {
bedlevelvisualizer = buildPlugin rec {
pname = "BedLevelVisualizer";
version = "0.1.15";
version = "1.1.0";
src = fetchFromGitHub {
owner = "jneilliii";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1bq39fnarnpk8phxfbpx6l4n9anf358z1cgid5r89nadmn2a0cny";
sha256 = "sha256-SKrhtTGyDuvbDmUCXSx83Y+C83ZzVHA78TwMYwE6tcc=";
};
propagatedBuildInputs = with super; [ numpy ];
@ -73,13 +73,13 @@ in {
costestimation = buildPlugin rec {
pname = "CostEstimation";
version = "3.2.0";
version = "3.3.0";
src = fetchFromGitHub {
owner = "OllisGit";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1j476jcw7gh8zqqdc5vddwv5wpjns7cd1hhpn7m9fxq3d5bi077w";
sha256 = "sha256-d7miGMCNJD0siaZb6EnoMZCkKot7vnZjxNZX2TunJcs=";
};
meta = with lib; {
@ -92,13 +92,13 @@ in {
curaenginelegacy = buildPlugin rec {
pname = "CuraEngineLegacy";
version = "1.1.1";
version = "1.1.2";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1a7pxlmj1a7blkv97sn1k390pbjcxx2860011pbjcdnli74zpvv5";
sha256 = "sha256-54siSmzgPlnCRpkpZhXU9theNQ3hqL3j+Ip4Ie2w2vA=";
};
meta = with lib; {
@ -130,13 +130,13 @@ in {
displaylayerprogress = buildPlugin rec {
pname = "OctoPrint-DisplayLayerProgress";
version = "1.24.0";
version = "1.26.0";
src = fetchFromGitHub {
owner = "OllisGit";
repo = pname;
rev = version;
sha256 = "1lbivg3rcjzv8zqvp8n8gcaczxdm7gvd5ihjb6jq0fgf958lv59n";
sha256 = "sha256-hhHc2SPixZCPJzCP8enMMWNYaYbNZAU0lNSx1B0d++4=";
};
meta = with lib; {
@ -149,13 +149,13 @@ in {
gcodeeditor = buildPlugin rec {
pname = "GcodeEditor";
version = "0.2.9";
version = "0.2.12";
src = fetchFromGitHub {
owner = "ieatacid";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1yjj9lmxbzmzrn7gahw9lj7554fphalbjjp8ns0rr9py3rshwxkm";
sha256 = "sha256-1Sk2ri3DKW8q8VJ/scFjpRsz65Pwt8OEURP1k70aydE=";
};
meta = with lib; {
@ -168,13 +168,13 @@ in {
marlingcodedocumentation = buildPlugin rec {
pname = "MarlinGcodeDocumentation";
version = "0.11.0";
version = "0.13.0";
src = fetchFromGitHub {
owner = "costas-basdekis";
repo = pname;
rev = "v${version}";
sha256 = "0vx06w9hqwy0k4r8g67y8gdckfdx7wl8ghfx6hmxc1s8fgkghfkc";
sha256 = "sha256-3ay6iCxZk8QkFM/2Y14VTpPoxr6NXq14BFSHofn3q7I=";
};
meta = with lib; {
@ -187,13 +187,13 @@ in {
mqtt = buildPlugin rec {
pname = "MQTT";
version = "0.8.7";
version = "0.8.10";
src = fetchFromGitHub {
owner = "OctoPrint";
repo = "OctoPrint-MQTT";
rev = version;
sha256 = "0k82h7wafbcqdvk5wjw4dp9lydwszfj1lf8vvymwbqdn7pf5h0dy";
sha256 = "sha256-nvEUvN/SdUE1tQkLbxMkZ8xxeUIZiNNirIfWLeH1Kfg=";
};
propagatedBuildInputs = with super; [ paho-mqtt ];
@ -208,25 +208,26 @@ in {
printtimegenius = buildPlugin rec {
pname = "PrintTimeGenius";
version = "2.2.6";
version = "2.2.8";
src = fetchFromGitHub {
owner = "eyal0";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "04zfgd3x3lbriyzwhpqnwdcfdm19fsqgsb7l2ix5d0ssmqxwg2r6";
sha256 = "sha256-Bbpm7y4flzEbUb6Sgkp6hIIHs455A0IsbmzvZwlkbh0=";
};
propagatedBuildInputs = with super; [
psutil
sarge
];
preConfigure = ''
# PrintTimeGenius ships with marlin-calc binaries for multiple architectures
rm */analyzers/marlin-calc*
sed 's@"{}.{}".format(binary_base_name, machine)@"${pkgs.marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
'';
patches = [
./printtimegenius-logging.patch
];
meta = with lib; {
description = "Better print time estimation for OctoPrint";
homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
@ -237,15 +238,19 @@ in {
psucontrol = buildPlugin rec {
pname = "PSUControl";
version = "0.1.9";
version = "1.0.6";
src = fetchFromGitHub {
owner = "kantlivelong";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1cn009bdgn6c9ba9an5wfj8z02wi0xcsmbhkqggiqlnqy1fq45ca";
sha256 = "sha256-S+lPm85+ZEO/3BXYsrxE4FU29EGWzWrSw3y1DLdByrM=";
};
propagatedBuildInputs = with super; [
python-periphery
];
preConfigure = ''
# optional; RPi.GPIO is broken on vanilla kernels
sed /RPi.GPIO/d -i requirements.txt
@ -261,13 +266,13 @@ in {
simpleemergencystop = buildPlugin rec {
pname = "SimpleEmergencyStop";
version = "1.0.3";
version = "1.0.5";
src = fetchFromGitHub {
owner = "Sebclem";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "0hhh5grmn32abkix1b9fr1d0pcpdi2r066iypcxdxcza9qzwjiyi";
sha256 = "sha256-MbP3cKa9FPElQ/M8ykYh9kVXl8hNvmGiCHDvjgWvm9k=";
};
meta = with lib; {
@ -299,13 +304,13 @@ in {
telegram = buildPlugin rec {
pname = "Telegram";
version = "1.6.4";
version = "1.6.5";
src = fetchFromGitHub {
owner = "fabianonline";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "14d9f9a5m1prcikd7y26qks6c2ls6qq4b97amn24q5a8k5hbgl94";
sha256 = "sha256-SckJCbPNCflgGYLHFiXy0juCtpvo8YS1BQsFpc1f5rg=";
};
propagatedBuildInputs = with super; [ pillow ];
@ -358,13 +363,13 @@ in {
touchui = buildPlugin rec {
pname = "TouchUI";
version = "0.3.16";
version = "0.3.18";
src = fetchFromGitHub {
owner = "BillyBlaze";
repo = "OctoPrint-${pname}";
rev = version;
sha256 = "1jlqjirc4ygl4k7jp93l2h6b18jap3mzz8sf2g61j9w0kgv9l365";
sha256 = "sha256-PNDCjY7FhfnwK7Nd86el9ZQ00G4uMANH2Sk080iMYXw=";
};
meta = with lib; {
@ -377,13 +382,13 @@ in {
octoklipper = buildPlugin rec {
pname = "OctoKlipper";
version = "0.3.2";
version = "0.3.8.3";
src = fetchFromGitHub {
owner = "AliceGrey";
repo = "OctoprintKlipperPlugin";
rev = version;
sha256 = "15yg2blbgqp2gdpsqqm8qiiznq5qaq8wss07jimkl0865vrvlz7l";
sha256 = "sha256-6r5jJDSR0DxlDQ/XWmQgYUgeL1otNNBnwurX7bbcThg=";
};
meta = with lib; {
@ -396,13 +401,13 @@ in {
octoprint-dashboard = buildPlugin rec {
pname = "OctoPrint-Dashboard";
version = "1.15.2";
version = "1.18.3";
src = fetchFromGitHub {
owner = "StefanCohen";
repo = pname;
rev = version;
sha256 = "0p94jwd7kagh3sixhcrqmsgbay4aaf9l1pgyi2b45jym8pvld5n4";
sha256 = "sha256-hLHT3Uze/6PlOCEICVZ2ieFTyXgcqCvgHOlIIEquujg=";
};
meta = with lib; {

View file

@ -1,17 +0,0 @@
diff --git a/setup.py b/setup.py
index 6a6610e..cc45902 100644
--- a/setup.py
+++ b/setup.py
@@ -35,9 +35,9 @@ plugin_license = "AGPLv3"
# Any additional requirements besides OctoPrint should be listed here
# For now, require the working release, which is only 1.3.9rc1.
plugin_requires = ["OctoPrint>=1.3.9rc1", "psutil", "sarge"]
-from sys import version_info
-if version_info[0] < 3:
- plugin_requires.append("logging")
+#from sys import version_info
+#if version_info[0] < 3:
+# plugin_requires.append("logging")
### --------------------------------------------------------------------------------------------------------------------
### More advanced options that you usually shouldn't have to touch follow after this point

View file

@ -0,0 +1,45 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, poetry-core
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "immutabledict";
version = "2.1.0";
format = "pyproject";
src = fetchFromGitHub {
owner = "corenting";
repo = "immutabledict";
rev = "v${version}";
sha256 = "1n71154nfb6vr41iv00xcwkxmwnn1vwzbr3s23bjvlhvmnjb48a8";
};
# https://github.com/corenting/immutabledict/issues/56
postPatch = ''
substituteInPlace pyproject.toml \
--replace "poetry.masonry.api" "poetry.core.masonry.api"
'';
nativeBuildInputs = [
poetry-core
];
pythonImportsCheck = [
"immutabledict"
];
checkInputs = [
pytestCheckHook
];
meta = with lib; {
description = "A fork of frozendict, an immutable wrapper around dictionaries";
homepage = "https://github.com/corenting/immutabledict";
license = licenses.mit;
maintainers = with maintainers; [ hexa ];
};
}

View file

@ -0,0 +1,39 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, nose
}:
buildPythonPackage rec {
pname = "zipstream-new";
version = "1.1.8";
format = "setuptools";
src = fetchFromGitHub {
owner = "arjan-s";
repo = "python-zipstream";
rev = "v${version}";
sha256 = "14vhgg8mcjqi8cpzrw8qzbij2fr2a63l2a8fhil21k2r8vzv92cv";
};
pythonImportsCheck = [
"zipstream"
];
checkInputs = [
nose
];
checkPhase = ''
runHook preCheck
nosetests
runHook postCheck
'';
meta = with lib; {
description = "Like Python's ZipFile module, except it works as a generator that provides the file in many small chunks";
homepage = "https://github.com/arjan-s/python-zipstream";
license = licenses.gpl3;
maintainers = with maintainers; [ hexa ];
};
}

View file

@ -3551,6 +3551,8 @@ in {
iminuit = callPackage ../development/python-modules/iminuit { };
immutabledict = callPackage ../development/python-modules/immutabledict { };
immutables = callPackage ../development/python-modules/immutables { };
impacket = callPackage ../development/python-modules/impacket { };
@ -9668,6 +9670,8 @@ in {
zipstream = callPackage ../development/python-modules/zipstream { };
zipstream-new = callPackage ../development/python-modules/zipstream-new { };
zm-py = callPackage ../development/python-modules/zm-py { };
zodb = callPackage ../development/python-modules/zodb { };