sonota: init at 2018-10-07

This commit is contained in:
Peter Hoeg 2018-10-31 13:46:10 +08:00
parent f2a1a4e93b
commit 2167b4e1bf
3 changed files with 76 additions and 0 deletions

View 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 ];
};
}

View 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

View file

@ -2378,6 +2378,8 @@ in
s-tar = callPackage ../tools/archivers/s-tar {};
sonota = callPackage ../tools/misc/sonota { };
tealdeer = callPackage ../tools/misc/tealdeer { };
teamocil = callPackage ../tools/misc/teamocil { };