mirror of
https://github.com/DYefremov/DemonEditor.git
synced 2026-06-17 20:11:58 +02:00
added build scripts
This commit is contained in:
7
build/BUILDING.md
Normal file
7
build/BUILDING.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Building DemonEditor
|
||||
This directory contains build scripts and additional files for various platforms and distributions.
|
||||
|
||||
### Supported platforms
|
||||
* GNU/Linux
|
||||
* macOS
|
||||
* MS Windows
|
||||
@@ -0,0 +1,49 @@
|
||||
diff -Nru demon-editor-2.0-development-orig/DemonEditor.desktop demon-editor-2.0-development/DemonEditor.desktop
|
||||
--- demon-editor-2.0-development-orig/DemonEditor.desktop 2021-10-14 21:32:56.000000000 +0300
|
||||
+++ demon-editor-2.0-development/DemonEditor.desktop 2021-09-29 13:19:24.000000000 +0300
|
||||
@@ -6,8 +6,8 @@
|
||||
Comment[be]=Рэдактар спіса каналаў і спадарожнікаў для Enigma2
|
||||
Comment[de]=Programm- und Satellitenlisten-Editor für Enigma2
|
||||
Icon=demon-editor
|
||||
-Exec=bash -c 'cd $(dirname %k) && ./start.py'
|
||||
+Exec=demon-editor
|
||||
Terminal=false
|
||||
Type=Application
|
||||
-Categories=Utility;Application;
|
||||
+Categories=Utility;
|
||||
StartupNotify=false
|
||||
diff -Nru demon-editor-2.0-development-orig/start.py demon-editor-2.0-development/start.py
|
||||
--- demon-editor-2.0-development-orig/start.py 2021-10-14 21:32:56.000000000 +0300
|
||||
+++ demon-editor-2.0-development/start.py 2021-09-29 13:19:24.000000000 +0300
|
||||
@@ -1,29 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
-import os
|
||||
+from app.ui.main import start_app
|
||||
|
||||
-
|
||||
-def update_icon():
|
||||
- need_update = False
|
||||
- icon_name = "DemonEditor.desktop"
|
||||
-
|
||||
- with open(icon_name, "r") as f:
|
||||
- lines = f.readlines()
|
||||
- for i, line in enumerate(lines):
|
||||
- if line.startswith("Icon="):
|
||||
- icon_path = line.lstrip("Icon=")
|
||||
- current_path = "{}/app/ui/icons/hicolor/96x96/apps/demon-editor.png".format(os.getcwd())
|
||||
- if icon_path != current_path:
|
||||
- need_update = True
|
||||
- lines[i] = "Icon={}\n".format(current_path)
|
||||
- break
|
||||
-
|
||||
- if need_update:
|
||||
- with open(icon_name, "w") as f:
|
||||
- f.writelines(lines)
|
||||
-
|
||||
-
|
||||
-if __name__ == "__main__":
|
||||
- from app.ui.main import start_app
|
||||
-
|
||||
- update_icon()
|
||||
- start_app()
|
||||
+start_app()
|
||||
86
build/linux/ALTLinux spec/demon-editor.spec
Normal file
86
build/linux/ALTLinux spec/demon-editor.spec
Normal file
@@ -0,0 +1,86 @@
|
||||
Name: demon-editor
|
||||
Version: 2.0
|
||||
Release: slava0
|
||||
BuildArch: noarch
|
||||
Summary: Enigma2 channel and satellite list editor
|
||||
Url: https://github.com/DYefremov/DemonEditor
|
||||
License: MIT
|
||||
Group: Other
|
||||
Source: %name-%version-development.tar.gz
|
||||
Patch0: %name-%version-development-startfix.patch
|
||||
AutoReq: no
|
||||
Requires: python3 python3-module-requests python3-module-pygobject3 python3-module-chardet libmpv1
|
||||
BuildRequires: python3-dev python3-module-mpl_toolkits
|
||||
|
||||
%description
|
||||
Enigma2 channel and satellites list editor for GNU/Linux.
|
||||
|
||||
Experimental support of Neutrino-MP or others on the same basis (BPanther, etc).
|
||||
Focused on the convenience of working in lists from the keyboard. The mouse is also fully supported (Drag and Drop etc).
|
||||
|
||||
Main features of the program:
|
||||
Editing bouquets, channels, satellites.
|
||||
Import function.
|
||||
Backup function.
|
||||
Support of picons.
|
||||
Importing services, downloading picons and updating satellites from the Web.
|
||||
Extended support of IPTV.
|
||||
Import to bouquet(Neutrino WEBTV) from m3u.
|
||||
Export of bouquets with IPTV services in m3u.
|
||||
Assignment of EPGs from DVB or XML for IPTV services (only Enigma2, experimental).
|
||||
Playback of IPTV or other streams directly from the bouquet list.
|
||||
Control panel with the ability to view EPG and manage timers (via HTTP API, experimental).
|
||||
Simple FTP client (experimental).
|
||||
|
||||
%prep
|
||||
%setup -n %name-%version-development
|
||||
%patch0 -p1
|
||||
|
||||
%install
|
||||
%__install -d %buildroot%_datadir/demoneditor/app
|
||||
%__install -m644 app/*py %buildroot%_datadir/demoneditor/app
|
||||
%__install -d %buildroot%_datadir/demoneditor/app/eparser
|
||||
%__install -m644 app/eparser/*py %buildroot%_datadir/demoneditor/app/eparser
|
||||
%__install -d %buildroot%_datadir/demoneditor/app/eparser/enigma
|
||||
%__install -m644 app/eparser/enigma/*py %buildroot%_datadir/demoneditor/app/eparser/enigma
|
||||
%__install -d %buildroot%_datadir/demoneditor/app/eparser/neutrino
|
||||
%__install -m644 app/eparser/neutrino/*py %buildroot%_datadir/demoneditor/app/eparser/neutrino
|
||||
%__install -d %buildroot%_datadir/demoneditor/app/tools
|
||||
%__install -m644 app/tools/*py %buildroot%_datadir/demoneditor/app/tools
|
||||
%__install -d %buildroot%_datadir/demoneditor/app/ui
|
||||
%__install -m644 app/ui/*py %buildroot%_datadir/demoneditor/app/ui
|
||||
%__install -m644 app/ui/*glade %buildroot%_datadir/demoneditor/app/ui
|
||||
%__install -m644 app/ui/*css %buildroot%_datadir/demoneditor/app/ui
|
||||
%__install -m644 app/ui/*ui %buildroot%_datadir/demoneditor/app/ui
|
||||
%__install -m755 start.py %buildroot%_datadir/demoneditor
|
||||
|
||||
%__install -d %buildroot%_iconsdir/hicolor/96x96/apps
|
||||
%__install -d %buildroot%_iconsdir/hicolor/scalable/apps
|
||||
%__install -m644 app/ui/icons/hicolor/96x96/apps/%name.* %buildroot%_iconsdir/hicolor/96x96/apps
|
||||
%__install -m644 app/ui/icons/hicolor/scalable/apps%name.* -d %buildroot%_iconsdir/hicolor/scalable/apps
|
||||
|
||||
%__install -d %buildroot%_datadir/locale
|
||||
cp -r app/ui/lang/* %buildroot%_datadir/locale
|
||||
|
||||
%__install -d %buildroot%_bindir
|
||||
echo "#!/bin/bash
|
||||
python3 %_datadir/demoneditor/start.py $1" > %buildroot%_bindir/%name
|
||||
chmod 755 %buildroot%_bindir/%name
|
||||
|
||||
%__install -d %buildroot%_desktopdir
|
||||
%__install -m644 DemonEditor.desktop %buildroot%_desktopdir/DemonEditor.desktop
|
||||
|
||||
%find_lang %name
|
||||
|
||||
%files -f %name.lang
|
||||
%doc deb/DEBIAN/README.source
|
||||
%_bindir/%name
|
||||
%_datadir/demoneditor
|
||||
%_iconsdir/*/*/*/%name.*
|
||||
%_desktopdir/DemonEditor.desktop
|
||||
|
||||
%changelog
|
||||
* Wed Sep 29 2021 Viacheslav Dikonov <sdiconov@mail.ru> 1.0.10-slava0
|
||||
- ALTLinux package
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ DEB_PATH="$B_PATH/usr/share/demoneditor"
|
||||
|
||||
mkdir -p $B_PATH
|
||||
cp -TRv deb $B_PATH
|
||||
rsync --exclude=app/ui/lang --exclude=app/ui/icons -arv app $DEB_PATH
|
||||
rsync --exclude=app/ui/lang --exclude=app/ui/icons --exclude=__pycache__ -arv ../../app $DEB_PATH
|
||||
|
||||
cd dist
|
||||
fakeroot dpkg-deb --build DemonEditor
|
||||
@@ -7,7 +7,8 @@ Essential: no
|
||||
Depends: python3 (>= 3.6),
|
||||
python3-requests,
|
||||
python3-gi,
|
||||
python3-gi-cairo
|
||||
python3-gi-cairo,
|
||||
gir1.2-notify-0.7
|
||||
Recommends: libmpv1,
|
||||
python3-chardet
|
||||
Maintainer: Dmitriy Yefremov <dmitry.v.yefremov@gmail.com>
|
||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
75
build/mac/DemonEditor.spec
Normal file
75
build/mac/DemonEditor.spec
Normal file
@@ -0,0 +1,75 @@
|
||||
import os
|
||||
import datetime
|
||||
import distutils.util
|
||||
|
||||
EXE_NAME = 'start.py'
|
||||
DIR_PATH = os.getcwd()
|
||||
COMPILING_PLATFORM = distutils.util.get_platform()
|
||||
PATH_EXE = [os.path.join(DIR_PATH, EXE_NAME)]
|
||||
STRIP = True
|
||||
BUILD_DATE = datetime.datetime.now().strftime("%y%m%d")
|
||||
|
||||
block_cipher = None
|
||||
|
||||
excludes = ['app.tools.mpv',
|
||||
'gi.repository.Gst',
|
||||
'gi.repository.GstBase',
|
||||
'gi.repository.GstVideo',
|
||||
'youtube_dl',
|
||||
'tkinter']
|
||||
|
||||
ui_files = [('app/ui/*.glade', 'ui'),
|
||||
('app/ui/*.css', 'ui'),
|
||||
('app/ui/*.ui', 'ui'),
|
||||
('app/ui/lang*', 'share/locale'),
|
||||
('app/ui/icons*', 'share/icons')
|
||||
]
|
||||
|
||||
a = Analysis([EXE_NAME],
|
||||
pathex=PATH_EXE,
|
||||
binaries=None,
|
||||
datas=ui_files,
|
||||
hiddenimports=['fileinput', 'uuid'],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=excludes,
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher)
|
||||
|
||||
pyz = PYZ(a.pure,
|
||||
a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
exclude_binaries=True,
|
||||
name='DemonEditor',
|
||||
debug=False,
|
||||
strip=STRIP,
|
||||
upx=True,
|
||||
console=False)
|
||||
|
||||
coll = COLLECT(exe,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=STRIP,
|
||||
upx=True,
|
||||
name='DemonEditor')
|
||||
|
||||
app = BUNDLE(coll,
|
||||
name='DemonEditor.app',
|
||||
icon='icon.icns',
|
||||
bundle_identifier=None,
|
||||
info_plist={
|
||||
'NSPrincipalClass': 'NSApplication',
|
||||
'CFBundleName': 'DemonEditor',
|
||||
'CFBundleDisplayName': 'DemonEditor',
|
||||
'CFBundleGetInfoString': "Enigma2 channel and satellite editor",
|
||||
'LSApplicationCategoryType': 'public.app-category.utilities',
|
||||
'LSMinimumSystemVersion': '10.13',
|
||||
'CFBundleShortVersionString': f"2.0.0.{BUILD_DATE} Alpha",
|
||||
'NSHumanReadableCopyright': u"Copyright © 2021, Dmitriy Yefremov",
|
||||
'NSRequiresAquaSystemAppearance': 'false'
|
||||
})
|
||||
BIN
build/mac/icon.icns
Normal file
BIN
build/mac/icon.icns
Normal file
Binary file not shown.
8
build/mac/start.py
Normal file
8
build/mac/start.py
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
if __name__ == "__main__":
|
||||
from multiprocessing import set_start_method
|
||||
from app.ui.main import start_app
|
||||
|
||||
set_start_method("fork") # For compatibility [Python > 3.7]
|
||||
start_app()
|
||||
57
build/win/DemonEditor.spec
Normal file
57
build/win/DemonEditor.spec
Normal file
@@ -0,0 +1,57 @@
|
||||
# -*- mode: python ; coding: utf-8 -*-
|
||||
|
||||
EXE_NAME = 'start.py'
|
||||
DIR_PATH = os.getcwd()
|
||||
PATH_EXE = [os.path.join(DIR_PATH, EXE_NAME)]
|
||||
|
||||
block_cipher = None
|
||||
|
||||
|
||||
excludes = ['app.tools.mpv',
|
||||
'gi.repository.Gst',
|
||||
'gi.repository.GstBase',
|
||||
'gi.repository.GstVideo',
|
||||
'youtube_dl',
|
||||
'tkinter']
|
||||
|
||||
|
||||
ui_files = [('app\\ui\\*.glade', 'ui'),
|
||||
('app\\ui\\*.css', 'ui'),
|
||||
('app\\ui\\*.ui', 'ui'),
|
||||
('app\\ui\\lang*', 'share\\locale'),
|
||||
('app\\ui\\icons*', 'share\\icons')
|
||||
]
|
||||
|
||||
|
||||
a = Analysis([EXE_NAME],
|
||||
pathex=PATH_EXE,
|
||||
binaries=[],
|
||||
datas=ui_files,
|
||||
hiddenimports=['fileinput', 'uuid', 'ctypes.wintypes'],
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=excludes,
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False)
|
||||
pyz = PYZ(a.pure, a.zipped_data,
|
||||
cipher=block_cipher)
|
||||
exe = EXE(pyz,
|
||||
a.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name='DemonEditor',
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
console=False, icon='icon.ico')
|
||||
coll = COLLECT(exe,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=True,
|
||||
upx_exclude=[],
|
||||
name='DemonEditor')
|
||||
BIN
build/win/icon.ico
Normal file
BIN
build/win/icon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
8
build/win/start.py
Normal file
8
build/win/start.py
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
if __name__ == "__main__":
|
||||
from multiprocessing import freeze_support
|
||||
from app.ui.main import start_app
|
||||
|
||||
freeze_support()
|
||||
start_app()
|
||||
Reference in New Issue
Block a user