From 300e0a38c3f557bdc9541fac51565e6b7daa2489 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Sun, 17 Oct 2021 11:29:23 +0300 Subject: [PATCH] added build scripts --- build/BUILDING.md | 7 ++ ...emon-editor-2.0-development-startfix.patch | 49 ++++++++++ build/linux/ALTLinux spec/demon-editor.spec | 86 ++++++++++++++++++ build-deb.sh => build/linux/build-deb.sh | 2 +- {deb => build/linux/deb}/DEBIAN/README.source | 0 {deb => build/linux/deb}/DEBIAN/control | 3 +- {deb => build/linux/deb}/DEBIAN/copyright | 0 .../linux/deb}/DEBIAN/demon-editor-docs.docs | 0 {deb => build/linux/deb}/usr/bin/demon-editor | 0 .../share/applications/DemonEditor.desktop | 0 .../linux/deb}/usr/share/demoneditor/start.py | 0 .../icons/hicolor/96x96/apps/demon-editor.png | Bin .../hicolor/scalable/apps/demon-editor.svg | 0 .../locale/be/LC_MESSAGES/demon-editor.mo | Bin .../locale/de/LC_MESSAGES/demon-editor.mo | Bin .../locale/es/LC_MESSAGES/demon-editor.mo | Bin .../locale/it/LC_MESSAGES/demon-editor.mo | Bin .../locale/nl/LC_MESSAGES/demon-editor.mo | Bin .../locale/pl/LC_MESSAGES/demon-editor.mo | Bin .../locale/pt/LC_MESSAGES/demon-editor.mo | Bin .../locale/ru/LC_MESSAGES/demon-editor.mo | Bin .../locale/tr/LC_MESSAGES/demon-editor.mo | Bin .../locale/zh_CN/LC_MESSAGES/demon-editor.mo | Bin build/mac/DemonEditor.spec | 75 +++++++++++++++ build/mac/icon.icns | Bin 0 -> 30531 bytes build/mac/start.py | 8 ++ build/win/DemonEditor.spec | 57 ++++++++++++ build/win/icon.ico | Bin 0 -> 31166 bytes build/win/start.py | 8 ++ 29 files changed, 293 insertions(+), 2 deletions(-) create mode 100644 build/BUILDING.md create mode 100644 build/linux/ALTLinux spec/demon-editor-2.0-development-startfix.patch create mode 100644 build/linux/ALTLinux spec/demon-editor.spec rename build-deb.sh => build/linux/build-deb.sh (71%) rename {deb => build/linux/deb}/DEBIAN/README.source (100%) rename {deb => build/linux/deb}/DEBIAN/control (86%) rename {deb => build/linux/deb}/DEBIAN/copyright (100%) rename {deb => build/linux/deb}/DEBIAN/demon-editor-docs.docs (100%) rename {deb => build/linux/deb}/usr/bin/demon-editor (100%) rename {deb => build/linux/deb}/usr/share/applications/DemonEditor.desktop (100%) rename {deb => build/linux/deb}/usr/share/demoneditor/start.py (100%) rename {deb => build/linux/deb}/usr/share/icons/hicolor/96x96/apps/demon-editor.png (100%) rename {deb => build/linux/deb}/usr/share/icons/hicolor/scalable/apps/demon-editor.svg (100%) rename {deb => build/linux/deb}/usr/share/locale/be/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/de/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/es/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/it/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/pl/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/pt/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/tr/LC_MESSAGES/demon-editor.mo (100%) rename {deb => build/linux/deb}/usr/share/locale/zh_CN/LC_MESSAGES/demon-editor.mo (100%) create mode 100644 build/mac/DemonEditor.spec create mode 100644 build/mac/icon.icns create mode 100644 build/mac/start.py create mode 100644 build/win/DemonEditor.spec create mode 100644 build/win/icon.ico create mode 100644 build/win/start.py diff --git a/build/BUILDING.md b/build/BUILDING.md new file mode 100644 index 00000000..06197fd4 --- /dev/null +++ b/build/BUILDING.md @@ -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 \ No newline at end of file diff --git a/build/linux/ALTLinux spec/demon-editor-2.0-development-startfix.patch b/build/linux/ALTLinux spec/demon-editor-2.0-development-startfix.patch new file mode 100644 index 00000000..19695ea9 --- /dev/null +++ b/build/linux/ALTLinux spec/demon-editor-2.0-development-startfix.patch @@ -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() diff --git a/build/linux/ALTLinux spec/demon-editor.spec b/build/linux/ALTLinux spec/demon-editor.spec new file mode 100644 index 00000000..1259bc01 --- /dev/null +++ b/build/linux/ALTLinux spec/demon-editor.spec @@ -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 1.0.10-slava0 +- ALTLinux package + + diff --git a/build-deb.sh b/build/linux/build-deb.sh similarity index 71% rename from build-deb.sh rename to build/linux/build-deb.sh index 6defb9e0..2ea9be87 100755 --- a/build-deb.sh +++ b/build/linux/build-deb.sh @@ -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 diff --git a/deb/DEBIAN/README.source b/build/linux/deb/DEBIAN/README.source similarity index 100% rename from deb/DEBIAN/README.source rename to build/linux/deb/DEBIAN/README.source diff --git a/deb/DEBIAN/control b/build/linux/deb/DEBIAN/control similarity index 86% rename from deb/DEBIAN/control rename to build/linux/deb/DEBIAN/control index 7451d7b2..4a3ee8cc 100644 --- a/deb/DEBIAN/control +++ b/build/linux/deb/DEBIAN/control @@ -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 diff --git a/deb/DEBIAN/copyright b/build/linux/deb/DEBIAN/copyright similarity index 100% rename from deb/DEBIAN/copyright rename to build/linux/deb/DEBIAN/copyright diff --git a/deb/DEBIAN/demon-editor-docs.docs b/build/linux/deb/DEBIAN/demon-editor-docs.docs similarity index 100% rename from deb/DEBIAN/demon-editor-docs.docs rename to build/linux/deb/DEBIAN/demon-editor-docs.docs diff --git a/deb/usr/bin/demon-editor b/build/linux/deb/usr/bin/demon-editor similarity index 100% rename from deb/usr/bin/demon-editor rename to build/linux/deb/usr/bin/demon-editor diff --git a/deb/usr/share/applications/DemonEditor.desktop b/build/linux/deb/usr/share/applications/DemonEditor.desktop similarity index 100% rename from deb/usr/share/applications/DemonEditor.desktop rename to build/linux/deb/usr/share/applications/DemonEditor.desktop diff --git a/deb/usr/share/demoneditor/start.py b/build/linux/deb/usr/share/demoneditor/start.py similarity index 100% rename from deb/usr/share/demoneditor/start.py rename to build/linux/deb/usr/share/demoneditor/start.py diff --git a/deb/usr/share/icons/hicolor/96x96/apps/demon-editor.png b/build/linux/deb/usr/share/icons/hicolor/96x96/apps/demon-editor.png similarity index 100% rename from deb/usr/share/icons/hicolor/96x96/apps/demon-editor.png rename to build/linux/deb/usr/share/icons/hicolor/96x96/apps/demon-editor.png diff --git a/deb/usr/share/icons/hicolor/scalable/apps/demon-editor.svg b/build/linux/deb/usr/share/icons/hicolor/scalable/apps/demon-editor.svg similarity index 100% rename from deb/usr/share/icons/hicolor/scalable/apps/demon-editor.svg rename to build/linux/deb/usr/share/icons/hicolor/scalable/apps/demon-editor.svg diff --git a/deb/usr/share/locale/be/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/be/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/be/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/be/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/de/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/de/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/de/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/de/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/es/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/it/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/it/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/it/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/it/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/nl/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/pl/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/pl/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/pl/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/pl/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/pt/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/pt/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/pt/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/pt/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/ru/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/tr/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/tr/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/tr/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/tr/LC_MESSAGES/demon-editor.mo diff --git a/deb/usr/share/locale/zh_CN/LC_MESSAGES/demon-editor.mo b/build/linux/deb/usr/share/locale/zh_CN/LC_MESSAGES/demon-editor.mo similarity index 100% rename from deb/usr/share/locale/zh_CN/LC_MESSAGES/demon-editor.mo rename to build/linux/deb/usr/share/locale/zh_CN/LC_MESSAGES/demon-editor.mo diff --git a/build/mac/DemonEditor.spec b/build/mac/DemonEditor.spec new file mode 100644 index 00000000..af4d3803 --- /dev/null +++ b/build/mac/DemonEditor.spec @@ -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' + }) diff --git a/build/mac/icon.icns b/build/mac/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..b9d9967c113449a719b37c744ee007b1e43d93f4 GIT binary patch literal 30531 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 XS4M9uo)tGx21}YsY3U54ey{x>`h%^( literal 0 HcmV?d00001 diff --git a/build/mac/start.py b/build/mac/start.py new file mode 100644 index 00000000..9b37127f --- /dev/null +++ b/build/mac/start.py @@ -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() diff --git a/build/win/DemonEditor.spec b/build/win/DemonEditor.spec new file mode 100644 index 00000000..b1de083e --- /dev/null +++ b/build/win/DemonEditor.spec @@ -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') diff --git a/build/win/icon.ico b/build/win/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c778225744d15c493df4d024f3d3047aa50c53f9 GIT binary patch literal 31166 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 literal 0 HcmV?d00001 diff --git a/build/win/start.py b/build/win/start.py new file mode 100644 index 00000000..02c525f4 --- /dev/null +++ b/build/win/start.py @@ -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()