summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Wagie2022-02-26 17:33:30 -0700
committerMark Wagie2022-02-26 17:33:30 -0700
commit331889d01c049cc8318e5044672be7f0cb35440c (patch)
tree2d24cfcc04f3af0965d46fdd185b6d52009a812f
parent4ab3a194e767c589675abe4ace9580f93654c4f4 (diff)
downloadaur-331889d01c049cc8318e5044672be7f0cb35440c.tar.gz
compile Python bytecode, install pacman hook
-rw-r--r--.SRCINFO35
-rw-r--r--.gitignore14
-rw-r--r--90-hardcode-tray.hook12
-rw-r--r--PKGBUILD66
-rw-r--r--hook.py135
5 files changed, 213 insertions, 49 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 1ac7ff5bb55c..46086dce0e4b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,28 +1,27 @@
pkgbase = hardcode-tray-git
- pkgdesc = Fixes Hardcoded Tray Icons
- pkgver = 4.3.r15.g46df7ea
+ pkgdesc = Fixes hardcoded tray icons
+ pkgver = 4.3.r214.ga6ecf12
pkgrel = 1
url = https://github.com/bil-elmoussaoui/Hardcode-Tray
- arch = i686
arch = x86_64
- license = GPL-3.0
- makedepends = ninja
- makedepends = meson
+ license = GPL3
makedepends = git
- depends = python
- depends = python-gobject
- depends = python-cairosvg
- depends = librsvg
+ makedepends = gobject-introspection
+ makedepends = meson
depends = gtk3
- depends = gobject-introspection
- optdepends = sni-qt-patched-git: patched qt4 sni plugin to enable icon modification
- optdepends = inkscape: to convert svg to png with inkscape
- provides = hardcode-tray-git
- conflicts = hardcode-tray-fixer-git
+ depends = librsvg
+ depends = python-cairosvg
+ depends = python-gobject
+ optdepends = nodejs-svgexport: option to convert svg to png
+ optdepends = imagemagick: option to convert svg to png
+ optdepends = inkscape: option to convert svg to png
+ provides = hardcode-tray
conflicts = hardcode-tray
- source = git://github.com/bil-elmoussaoui/Hardcode-Tray
+ source = hardcode-tray::git+https://github.com/bil-elmoussaoui/Hardcode-Tray.git
+ source = 90-hardcode-tray.hook
+ source = hook.py
sha256sums = SKIP
- optdepends_x86_64 = lib32-sni-qt-patched-git: 32-bit patched qt4 sni plugin to enable icon modification
+ sha256sums = c16ba6a82d4fe523cb91bf472b44296db82ff301866e3bce18bb4149d0aae5ea
+ sha256sums = 64a9907f74c5c04fb9f32b2b0684a3ce040d3bc2baacabb3ca1e914d70f24c81
pkgname = hardcode-tray-git
-
diff --git a/.gitignore b/.gitignore
index ca22e9e21e76..67a2461b383c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,9 @@
-pkg/
-src/
-*.tar.gz
-*.tar.xz
-Hardcode-Tray/
+# Ignore everything
+*
+
+# But not these files...
+!.gitignore
+!PKGBUILD
+!.SRCINFO
+!90-hardcode-tray.hook
+!hook.py
diff --git a/90-hardcode-tray.hook b/90-hardcode-tray.hook
new file mode 100644
index 000000000000..cff5145d5988
--- /dev/null
+++ b/90-hardcode-tray.hook
@@ -0,0 +1,12 @@
+[Trigger]
+Operation = Install
+Operation = Upgrade
+Type = Package
+Target = *
+
+[Action]
+Description = Updating tray icons...
+Depends = hardcode-tray-git
+When = PostTransaction
+Exec = /usr/bin/python /usr/share/hardcode-tray/hook.py
+NeedsTargets
diff --git a/PKGBUILD b/PKGBUILD
index 18cbfc535087..6fc66daba1a0 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,38 +1,52 @@
-# Maintainer: Yuanji <self@gimo.me>
+# Maintainer: Mark Wagie <mark dot wagie at tutanota dot com>
+# Contributor: Yuanji <self@gimo.me>
# Contributor: Bilal Elmoussaoui <bil.elmoussaoui@gmail.com>
-
-_pkgbase=hardcode-tray-git
-_gitname=Hardcode-Tray
-pkgname=$_pkgbase
-pkgver=4.3.r15.g46df7ea
+pkgname=hardcode-tray-git
+pkgver=4.3.r214.ga6ecf12
pkgrel=1
-pkgdesc="Fixes Hardcoded Tray Icons"
-arch=('i686' 'x86_64')
+pkgdesc="Fixes hardcoded tray icons"
+arch=('x86_64')
url="https://github.com/bil-elmoussaoui/Hardcode-Tray"
-license=('GPL-3.0')
-provides=("$_pkgbase")
-conflicts=("hardcode-tray-fixer-git" "hardcode-tray")
-makedepends=('ninja' 'meson' 'git')
-depends=('python' 'python-gobject' 'python-cairosvg' 'librsvg' 'gtk3' 'gobject-introspection')
-optdepends=('sni-qt-patched-git: patched qt4 sni plugin to enable icon modification' 'inkscape: to convert svg to png with inkscape')
-optdepends_x86_64=('lib32-sni-qt-patched-git: 32-bit patched qt4 sni plugin to enable icon modification')
-source=("git://github.com/bil-elmoussaoui/Hardcode-Tray")
-sha256sums=('SKIP')
+license=('GPL3')
+depends=('gtk3' 'librsvg' 'python-cairosvg' 'python-gobject')
+makedepends=('git' 'gobject-introspection' 'meson')
+optdepends=('nodejs-svgexport: option to convert svg to png'
+ 'imagemagick: option to convert svg to png'
+ 'inkscape: option to convert svg to png')
+provides=("${pkgname%-git}")
+conflicts=("${pkgname%-git}")
+source=("${pkgname%-git}::git+https://github.com/bil-elmoussaoui/Hardcode-Tray.git"
+ "90-${pkgname%-git}.hook"
+ "hook.py")
+sha256sums=('SKIP'
+ 'c16ba6a82d4fe523cb91bf472b44296db82ff301866e3bce18bb4149d0aae5ea'
+ '64a9907f74c5c04fb9f32b2b0684a3ce040d3bc2baacabb3ca1e914d70f24c81')
pkgver() {
- cd "$srcdir/$_gitname"
- ( set -o pipefail
- git describe --long --tags 2>/dev/null | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' ||
- printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
- )
+ cd "$srcdir/${pkgname%-git}"
+ git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
+}
+
+prepare() {
+ cd "$srcdir/${pkgname%-git}"
+ sed -i 's|resources/||g' data/database/bitwarden.electron.json
}
build() {
- cd "$srcdir/${_gitname}"
- meson builddir --prefix=/usr
+ arch-meson "${pkgname%-git}" build
+ meson compile -C build
}
package() {
- cd "$srcdir/${_gitname}"
- DESTDIR="${pkgdir}" ninja -C builddir install
+ meson install -C build --destdir "$pkgdir"
+
+ # Compile Python bytecode:
+ local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")
+ python -m compileall -d "$site_packages" "$pkgdir$site_packages"
+ python -O -m compileall -d "$site_packages" "$pkgdir$site_packages"
+
+ # Add pacman hook
+ # https://github.com/bilelmoussaoui/Hardcode-Tray/issues/454
+ install -Dm644 "$srcdir/90-${pkgname%-git}.hook" -t "$pkgdir/etc/pacman.d/hooks"
+ install -Dm644 "$srcdir/hook.py" -t "$pkgdir/usr/share/${pkgname%-git}"
}
diff --git a/hook.py b/hook.py
new file mode 100644
index 000000000000..0037a3da929b
--- /dev/null
+++ b/hook.py
@@ -0,0 +1,135 @@
+#!/usr/bin/env python3
+
+import json
+import re
+import sys
+
+from subprocess import run, PIPE
+from glob import glob
+from os import path
+
+from HardcodeTray.const import DB_FOLDER, USERHOME
+
+HARDCORE_TRAY_PACKAGES = ['hardcode-tray-git', 'hardcode-tray']
+BLACKLIST = ['mullvad'] # Added cause got /usr/bin in it paths
+
+CONVERSION_TOOL = 'RSVGConvert' # None if not needed
+THEME = 'Papirus-Dark' # None if not needed
+
+
+class Hook:
+ userhome_re = r"{userhome}"
+
+ def __init__(self, packages):
+ self.__packages = packages
+ self.__db = self.read_db_files()
+
+
+ def read_db_files(self):
+ """ Reading all package paths """
+
+ files = glob("{0}*.json".format(path.join(DB_FOLDER, "")))
+ db = {}
+
+ for db_file in files:
+ script_name = path.splitext(path.basename(db_file))[0]
+
+ if script_name in BLACKLIST:
+ continue
+
+ with open(db_file, 'r') as db_file:
+ app_path = json.load(db_file)['app_path']
+ db[script_name] = [re.sub(Hook.userhome_re, USERHOME, sctipt_path) for sctipt_path in app_path]
+
+ return db
+
+ def get_package_paths(self, package):
+ """ Reading all package paths from pacman """
+
+ regex = r"^%s\s+" % re.escape(package)
+ proc = run(
+ [
+ "pacman", "-Ql",
+ package
+ ],
+ stdout=PIPE,
+ stderr=PIPE,
+ )
+
+ if proc.returncode == 0:
+ output = str(proc.stdout, "utf-8").split('\n')
+ return [re.sub(regex, '',line) for line in output if re.match(regex, line)]
+ else:
+ return []
+
+ def get_supported_scripts(self):
+ """ Finding supported scripts """
+
+ supported_scripts = [];
+
+ for package in self.__packages:
+ package_paths = self.get_package_paths(package)
+ for path in package_paths:
+ for script_name, script_paths in self.__db.items():
+ if path in script_paths:
+ supported_scripts.append(script_name)
+
+ return set(supported_scripts)
+
+ def run_hadcode_tray(self, packages = None):
+ """ Hardcode tray bit execution """
+
+ args = ["hardcode-tray"]
+
+ if CONVERSION_TOOL != None:
+ args += ["--conversion-tool", CONVERSION_TOOL]
+
+ if THEME != None:
+ args += ["--theme", THEME]
+
+ if packages != None:
+ args += ["--only", ','.join(packages)]
+
+ args.append("--apply")
+
+ proc = run(
+ args,
+ stdout=PIPE,
+ stderr=PIPE,
+ )
+
+ return (proc.returncode == 0)
+
+ def execute(self):
+ """ Execution method running hardcode-tray for supported apps"""
+
+ for package in self.__packages:
+ if package in HARDCORE_TRAY_PACKAGES:
+ if self.run_hadcode_tray():
+ print("All packages are updated.")
+ return True
+ else:
+ print("Packages update failed.")
+ return False
+
+ packages_for_update = self.get_supported_scripts()
+
+ if len(packages_for_update) == 0:
+ print("No packages for update has been found.")
+ return True
+ else:
+ if self.run_hadcode_tray(packages_for_update):
+ print("Packages: %s - updated." % ', '.join(packages_for_update))
+ return True
+ else:
+ print("Packages: %s - failed." % ', '.join(packages_for_update))
+ return False
+
+ return True
+
+input_str = sys.stdin.read()
+packages = [x for x in input_str.split('\n') if x]
+hook = Hook(packages)
+
+if not hook.execute():
+ sys.exit('Hook failed')