Merge pull request #50257 from peterhoeg/p/sonota
sonota: init at 2018-10-07
This commit is contained in:
commit
974024c89e
54
pkgs/tools/misc/sonota/default.nix
Normal file
54
pkgs/tools/misc/sonota/default.nix
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{ fetchFromGitHub, fetchurl, lib, python3Packages
|
||||||
|
, coreVersion ? "1.13.3" # the version of the binary espurna image to flash
|
||||||
|
, coreSize ? "1MB" # size of the binary image to flash
|
||||||
|
, coreSha256 ? "0pkb2nmml0blrfiqpc46xpjc2dw927i89k1lfyqx827wanhc704x" }:
|
||||||
|
|
||||||
|
with python3Packages;
|
||||||
|
|
||||||
|
let
|
||||||
|
core = fetchurl {
|
||||||
|
url = "https://github.com/xoseperez/espurna/releases/download/${coreVersion}/espurna-${coreVersion}-espurna-core-${coreSize}.bin";
|
||||||
|
sha256 = coreSha256;
|
||||||
|
};
|
||||||
|
|
||||||
|
in buildPythonApplication rec {
|
||||||
|
name = "sonota-unstable-${version}";
|
||||||
|
version = "2018-10-07";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "mirko";
|
||||||
|
repo = "SonOTA";
|
||||||
|
rev = "d7f4b353858aae7ac403f95475a35560fb7ffeae";
|
||||||
|
sha256 = "0jd9xrhcyk8d2plbjnrlpn87536zr6n708797n0k5blf109q3c1z";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./set_resource_path.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace sonota.py --subst-var out
|
||||||
|
'';
|
||||||
|
|
||||||
|
format = "other";
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ httplib2 netifaces tornado ];
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -Dm755 sonota.py $out/bin/sonota
|
||||||
|
install -d $out/share/sonota
|
||||||
|
cp -r ssl static $out/share/sonota
|
||||||
|
cp ${core} $out/share/sonota/static/image_arduino.bin
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Flash Itead Sonoff devices with custom firmware via original OTA mechanism";
|
||||||
|
homepage = src.meta.homepage;
|
||||||
|
license = licenses.gpl2;
|
||||||
|
maintainers = with maintainers; [ peterhoeg ];
|
||||||
|
};
|
||||||
|
}
|
20
pkgs/tools/misc/sonota/set_resource_path.patch
Normal file
20
pkgs/tools/misc/sonota/set_resource_path.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
diff --git a/sonota.py b/sonota.py
|
||||||
|
index f67128b..9f2752e 100644
|
||||||
|
--- a/sonota.py
|
||||||
|
+++ b/sonota.py
|
||||||
|
@@ -475,14 +475,7 @@ def promptforval(msg):
|
||||||
|
return val
|
||||||
|
|
||||||
|
def resource_path(relative_path):
|
||||||
|
- """ Get absolute path to resource, works for dev and for PyInstaller """
|
||||||
|
- try:
|
||||||
|
- # PyInstaller creates a temp folder and stores path in _MEIPASS
|
||||||
|
- base_path = sys._MEIPASS
|
||||||
|
- except Exception:
|
||||||
|
- base_path = os.path.dirname(sys.argv[0])
|
||||||
|
-
|
||||||
|
- return os.path.join(base_path, relative_path)
|
||||||
|
+ return os.path.join("@out@/share/sonota", relative_path)
|
||||||
|
|
||||||
|
def checkargs():
|
||||||
|
# Make sure all of the binary files that are needed are there
|
@ -2394,6 +2394,8 @@ in
|
|||||||
|
|
||||||
s-tar = callPackage ../tools/archivers/s-tar {};
|
s-tar = callPackage ../tools/archivers/s-tar {};
|
||||||
|
|
||||||
|
sonota = callPackage ../tools/misc/sonota { };
|
||||||
|
|
||||||
tealdeer = callPackage ../tools/misc/tealdeer { };
|
tealdeer = callPackage ../tools/misc/tealdeer { };
|
||||||
|
|
||||||
teamocil = callPackage ../tools/misc/teamocil { };
|
teamocil = callPackage ../tools/misc/teamocil { };
|
||||||
|
Loading…
Reference in New Issue
Block a user