From 5063c1d35f35d8b0c3762b8bb3d43c24ba7e2930 Mon Sep 17 00:00:00 2001
From: Vitaly Lipatov <lav@etersoft.ru>
Date: Mon, 1 Apr 2024 03:43:38 +0300
Subject: [PATCH] epm repack: huge cleanup

---
 pack.d/1c-connect.sh                          |  9 +++
 pack.d/64Gram.sh                              |  9 +++
 pack.d/Telegram.sh                            |  9 +++
 pack.d/common.sh                              | 11 +++
 pack.d/cuda-z.sh                              |  9 +++
 pack.d/generic-appimage.sh                    |  2 +-
 pack.d/jetbrains-toolbox.sh                   |  9 +++
 pack.d/k3s.sh                                 |  9 +++
 pack.d/kubo.sh                                |  9 +++
 pack.d/meridius.sh                            | 27 +++++++
 pack.d/postman.sh                             |  4 +-
 pack.d/sane-panakvs.sh                        |  9 +++
 pack.d/snap4arduino.sh                        | 15 +++-
 pack.d/sublime-text.sh                        | 10 ++-
 pack.d/teamspeak3.sh                          |  9 +++
 pack.d/teamspeak5.sh                          |  9 +++
 pack.d/ungoogled-chromium.sh                  | 27 +++++++
 pack.d/unigine-heaven.sh                      |  9 +++
 pack.d/unigine-superposition.sh               |  9 +++
 pack.d/unigine-valley.sh                      |  9 +++
 pack.d/virtualhere.sh                         |  9 +++
 pack.d/vkteams.sh                             | 15 +++-
 pack.d/webdavmailrucloud.sh                   | 16 +++-
 play.d/meridius.sh                            |  2 +-
 play.d/ungoogled-chromium.sh                  |  2 +-
 repack.d/1c-connect.sh                        | 12 +--
 repack.d/64Gram.sh                            | 22 +-----
 repack.d/Autodesk_EAGLE.sh                    | 21 ++----
 repack.d/CLion.sh                             |  6 +-
 repack.d/ClipGrab.sh                          |  4 +-
 repack.d/DJV2.sh                              | 17 +----
 repack.d/ICAClient.sh                         | 15 ----
 repack.d/PacketTracer.sh                      |  8 --
 repack.d/Pencil.sh                            |  3 +-
 repack.d/PhpStorm.sh                          |  6 +-
 repack.d/Telegram.sh                          | 49 ++----------
 repack.d/WebStorm.sh                          | 11 +--
 repack.d/aimp.sh                              |  1 -
 repack.d/aksusbd.sh                           |  4 +-
 repack.d/anydesk.sh                           | 47 +-----------
 repack.d/atom-beta.sh                         |  6 +-
 repack.d/audiorelay.sh                        | 16 +---
 repack.d/bitrix24.sh                          |  4 +-
 repack.d/brave-browser-beta.sh                |  2 +-
 repack.d/brave-browser-dev.sh                 |  2 +-
 repack.d/brave-browser-nightly.sh             |  2 +-
 repack.d/brave-browser.sh                     |  2 +-
 repack.d/brscanads2200ads2700w.sh             |  5 +-
 repack.d/cascadeur.sh                         |  8 +-
 repack.d/chat-gpt.sh                          |  8 +-
 repack.d/chromium-gost-stable.sh              |  2 +-
 repack.d/cnrdrvcups-ufr2-uk.sh                |  6 +-
 repack.d/commfort-client.sh                   |  4 +-
 repack.d/common.sh                            | 66 +++++++---------
 repack.d/cuda-z.sh                            | 20 ++---
 repack.d/epson-printer-utility.sh             |  7 +-
 repack.d/epsonscan2.sh                        |  5 +-
 repack.d/far2l-portable.sh                    |  3 +-
 repack.d/figma-linux.sh                       |  1 +
 repack.d/firefox-nightly.sh                   | 21 +-----
 repack.d/flashprint5.sh                       |  4 +-
 repack.d/generic.sh                           |  2 +-
 repack.d/gitkraken.sh                         |  6 +-
 repack.d/gitlab-runner.sh                     |  2 +
 repack.d/google-chrome-stable.sh              |  8 +-
 repack.d/hansoft.sh                           |  6 +-
 repack.d/hplip-plugin.sh                      |  2 +
 repack.d/icq.sh                               | 30 +-------
 repack.d/ideaIC.sh                            |  2 +-
 repack.d/ideaIU.sh                            | 13 +---
 repack.d/jetbrains-toolbox.sh                 |  7 --
 repack.d/k3s.sh                               | 20 +----
 repack.d/kubo.sh                              | 14 +---
 repack.d/kyocera-sane.sh                      |  8 --
 repack.d/kyodialog.sh                         |  6 +-
 repack.d/liteide.sh                           |  8 +-
 repack.d/lithium_ecad.sh                      | 32 +++-----
 repack.d/lycheeslicer.sh                      |  5 +-
 repack.d/master-pdf-editor.sh                 |  5 +-
 repack.d/meridius.sh                          | 22 +-----
 repack.d/microsoft-edge-stable.sh             |  2 +-
 repack.d/mobirise.sh                          |  4 +-
 repack.d/net.downloadhelper.coapp.noffmpeg.sh | 13 ++--
 repack.d/nwjs-ffmpeg-prebuilt.sh              |  4 +-
 repack.d/onlyoffice-desktopeditors.sh         |  1 +
 repack.d/opera-stable.sh                      |  2 +-
 repack.d/pfusp.sh                             |  9 ---
 repack.d/pgadmin4-desktop.sh                  |  5 +-
 repack.d/pgadmin4-server.sh                   |  5 +-
 repack.d/plex-desktop.sh                      | 17 -----
 repack.d/portmaster.sh                        |  6 +-
 repack.d/postman.sh                           |  3 +-
 repack.d/pycharm-community.sh                 | 18 +----
 repack.d/pycharm-professional.sh              | 20 +----
 repack.d/realvnc-vnc-server.sh                |  5 +-
 repack.d/realvnc-vnc-viewer.sh                |  3 +-
 repack.d/sbb.sh                               | 15 ----
 repack.d/snap4arduino.sh                      |  9 +--
 repack.d/softmaker-freeoffice-2021.sh         |  6 +-
 repack.d/sublime-text.sh                      |  7 --
 repack.d/synology-drive.sh                    | 24 ------
 repack.d/teamspeak3.sh                        |  5 --
 repack.d/teamspeak5.sh                        | 10 +--
 repack.d/ungoogled-chromium.sh                | 15 +---
 repack.d/unigine-heaven.sh                    | 11 +--
 repack.d/unigine-superposition.sh             | 11 +--
 repack.d/unigine-valley.sh                    | 23 +-----
 repack.d/virtualhere.sh                       | 10 +--
 repack.d/vivaldi-snapshot.sh                  |  2 +-
 repack.d/vivaldi-stable.sh                    |  2 +-
 repack.d/vk-calls.sh                          | 10 ---
 repack.d/vk.sh                                |  2 +-
 repack.d/vkteams.sh                           | 40 +---------
 repack.d/weasis.sh                            | 13 ----
 repack.d/webdavmailrucloud.sh                 |  8 +-
 repack.d/wing-personal10.sh                   |  3 +-
 repack.d/yandex-browser-beta.sh               |  6 +-
 repack.d/yandex-browser-corporate.sh          |  5 +-
 repack.d/yandex-browser-stable.sh             |  5 +-
 repack.d/yaradio-yamusic.sh                   |  3 +-
 repack.d/zoom.sh                              | 75 -------------------
 121 files changed, 441 insertions(+), 871 deletions(-)
 create mode 100755 pack.d/meridius.sh
 create mode 100755 pack.d/ungoogled-chromium.sh

diff --git a/pack.d/1c-connect.sh b/pack.d/1c-connect.sh
index 5fc260a1..18e9a97f 100755
--- a/pack.d/1c-connect.sh
+++ b/pack.d/1c-connect.sh
@@ -20,4 +20,13 @@ PKGNAME=$PRODUCT-$VERSION
 
 erc a $PKGNAME.tar opt
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Office
+license: Proprietary
+url: https://1c-connect.com/
+summary: 1C Connect
+description: 1C Connect.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/64Gram.sh b/pack.d/64Gram.sh
index bf86a9b3..c6cdf0d5 100755
--- a/pack.d/64Gram.sh
+++ b/pack.d/64Gram.sh
@@ -18,4 +18,13 @@ f=$FPRODUCT
 install -D -m755 $f opt/$PRODUCT/$PRODUCT || fatal
 erc pack $PKGNAME.tar opt/$PRODUCT
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Networking/Instant messaging
+license: GPLv2
+url: https://github.com/TDesktop-x64/tdesktop
+summary: 64Gram (unofficial Telegram Desktop)
+description: 64Gram (unofficial Telegram Desktop).
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/Telegram.sh b/pack.d/Telegram.sh
index 55fda080..fdb44d02 100755
--- a/pack.d/Telegram.sh
+++ b/pack.d/Telegram.sh
@@ -20,4 +20,13 @@ f=$FPRODUCT
 install -D -m755 $f opt/$TPRODUCT/$TPRODUCT || fatal
 erc pack $PKGNAME.tar opt/$TPRODUCT
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Networking/Instant messaging
+license: GPLv2
+url: https://desktop.telegram.org/
+summary: Telegram Desktop messaging app
+description: Telegram Desktop messaging app.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/common.sh b/pack.d/common.sh
index 6a606892..3a5ddce8 100755
--- a/pack.d/common.sh
+++ b/pack.d/common.sh
@@ -42,6 +42,12 @@ erc()
     epm tool erc "$@"
 }
 
+is_abs_path()
+{
+    echo "$1" | grep -q "^/"
+}
+
+
 is_dir_empty()
 {
     [ -z "$(ls -A "$1")" ]
@@ -102,8 +108,13 @@ install_file()
     local src="$1"
     local dest="$2"
 
+    if is_abs_path "$dest" ; then
+        dest=".$dest"
+    fi
+
     mkdir -p "$(dirname "$dest")" || return
     cp "$src" "$dest" || return
+    chmod 0644 "$dest"
 }
 
 # Create target file from file
diff --git a/pack.d/cuda-z.sh b/pack.d/cuda-z.sh
index 58de1e73..1a3bf447 100755
--- a/pack.d/cuda-z.sh
+++ b/pack.d/cuda-z.sh
@@ -10,4 +10,13 @@ PKGNAME="$(basename $TAR .run | tr "[A-Z_]" "[a-z-]")"
 install -D $TAR opt/$PRODUCT/$PRODUCT || fatal
 erc pack $PKGNAME.tar opt/$PRODUCT
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Graphics
+license: GPLv2
+url: https://cuda-z.sourceforge.net/
+summary: CUDA-Z
+description: CUDA-Z.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/generic-appimage.sh b/pack.d/generic-appimage.sh
index 993292bf..972ade1e 100755
--- a/pack.d/generic-appimage.sh
+++ b/pack.d/generic-appimage.sh
@@ -28,10 +28,10 @@ $TAR --appimage-extract >/dev/null || fatal
 
 # try separate VERSION from PRODUCT
 if [ -z "$VERSION" ] ; then
+    PRODUCT="${PRODUCT/-x86_64/}"
     VERSION="$(echo "$PRODUCT" | grep -o -P "[-_.]([0-9v])([0-9])*([.]*[0-9])*" | head -n1 | sed -e 's|^[-_.a-zA-Z]||' -e 's|--|-|g' )"  #"
     [ -n "$VERSION" ] && PRODUCT="$(echo "$PRODUCT" | sed -e "s|[-_.]$VERSION.*||")"
     [ -n "$VERSION" ] && VERSION="$(echo "$VERSION" | sed -e 's|^v||')"
-    PRODUCT="${PRODUCT/-x86_64/}"
 fi
 
 # try get version from X-AppImage-Version
diff --git a/pack.d/jetbrains-toolbox.sh b/pack.d/jetbrains-toolbox.sh
index 33e49835..94844cf6 100755
--- a/pack.d/jetbrains-toolbox.sh
+++ b/pack.d/jetbrains-toolbox.sh
@@ -13,4 +13,13 @@ erc $TAR || fatal
 cd $PKGNAME* || fatal
 cp $PRODUCT $PKGNAME.AppImage || fatal
 
+cat <<EOF >$PKGNAME.AppImage.eepm.yaml
+name: $PRODUCT
+group: Development/C
+license: Proprietary
+url: https://www.jetbrains.com/ru-ru/toolbox-app/
+summary: JetBrains Toolbox App
+description: JetBrains Toolbox App.
+EOF
+
 return_tar $PKGNAME.AppImage
diff --git a/pack.d/k3s.sh b/pack.d/k3s.sh
index 716519b4..367fa3e3 100755
--- a/pack.d/k3s.sh
+++ b/pack.d/k3s.sh
@@ -14,4 +14,13 @@ for i in kubectl crictl ctr k3s ; do
 done
 erc pack $PKGNAME.tar usr/bin
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: File tools
+license: Apache-2.0
+url: https://k3s.io
+summary: K3s - Lightweight Kubernetes
+description: K3s - Lightweight Kubernetes.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/kubo.sh b/pack.d/kubo.sh
index e2bf46d2..1ff0cc83 100755
--- a/pack.d/kubo.sh
+++ b/pack.d/kubo.sh
@@ -16,4 +16,13 @@ PKGNAME=$PRODUCT-$VERSION
 
 erc pack $PKGNAME.tar usr || fatal
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: File tools
+license: MIT/Apache-2.0
+url: https://github.com/ipfs/kubo
+summary: An IPFS implementation in Go
+description: An IPFS implementation in Go.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/meridius.sh b/pack.d/meridius.sh
new file mode 100755
index 00000000..2b126ee5
--- /dev/null
+++ b/pack.d/meridius.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+TAR="$1"
+RETURNTARNAME="$2"
+#VERSION="$3"
+
+. $(dirname $0)/common.sh
+
+# meridius-3.1.0.tar.gz
+PKGNAME="$(basename "$TAR" .tar.gz)"
+
+mkdir opt/
+erc $TAR
+mv -v $PRODUCT* opt/$PRODUCT
+
+erc a $PKGNAME.tar opt
+
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Networking/WWW
+license: Shareware
+url: https://github.com/PurpleHorrorRus/Meridius
+summary: Music Player for vk.com based on Electron, NuxtJS, Vue
+description: Music Player for vk.com based on Electron, NuxtJS, Vue.
+EOF
+
+return_tar $PKGNAME.tar
diff --git a/pack.d/postman.sh b/pack.d/postman.sh
index 1e90d691..2aca86ae 100755
--- a/pack.d/postman.sh
+++ b/pack.d/postman.sh
@@ -18,10 +18,10 @@ mv Postman/app opt/postman
 VERSION=$(cat "opt/postman/resources/app/package.json" | epm --inscript tool json -b | grep version | awk 'gsub(/"/, "", $2) {print $2}') #'
 [ -n "$VERSION" ] || fatal "Can't get package version"
 
-install_file opt/postman/resources/app/assets/icon.png usr/share/pixmaps/postman.png
+install_file opt/postman/resources/app/assets/icon.png /usr/share/pixmaps/postman.png
 
 # create desktop file
-cat <<EOF | create_file usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
diff --git a/pack.d/sane-panakvs.sh b/pack.d/sane-panakvs.sh
index 6bfed816..c5f55bb6 100755
--- a/pack.d/sane-panakvs.sh
+++ b/pack.d/sane-panakvs.sh
@@ -35,4 +35,13 @@ PKGNAME="$(basename $TAR | sed -e "s|libsane-panakvs|$PRODUCT|")"
 
 erc pack $PKGNAME.tar etc usr
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Graphics
+license: Proprietary
+url: https://github.com/zerotier/ZeroTierOne
+summary: Panasonic Scanner Driver for Linux
+description: Panasonic Scanner Driver for Linux.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/snap4arduino.sh b/pack.d/snap4arduino.sh
index 026900ae..c36323a5 100755
--- a/pack.d/snap4arduino.sh
+++ b/pack.d/snap4arduino.sh
@@ -8,12 +8,21 @@ RETURNTARNAME="$2"
 
 PRODUCT="snap4arduino"
 # Snap4Arduino_desktop-gnu-64_9.1.1
-PKGNAME="$(basename "$TAR" | sed -e "s|Snap4Arduino_desktop-gnu-[36][24]\_|$PRODUCT-|")"
+PKG="$(basename "$TAR" | sed -e "s|Snap4Arduino_desktop-gnu-[36][24]\_|$PRODUCT-|")"
 
 mkdir opt/
 erc $TAR
 mv -v Snap4Arduino* opt/$PRODUCT
 
-erc a $PKGNAME opt
+erc a $PKG opt
 
-return_tar $PKGNAME
+cat <<EOF >$PKG.eepm.yaml
+name: $PRODUCT
+group: Development/Other
+license: AGPL-3.0
+url: https://snap4arduino.rocks/
+summary: A modification of the Snap! visual programming language that lets you seamlessly interact with almost all versions of the Arduino board
+description: A modification of the Snap! visual programming language that lets you seamlessly interact with almost all versions of the Arduino board.
+EOF
+
+return_tar $PKG
diff --git a/pack.d/sublime-text.sh b/pack.d/sublime-text.sh
index 4c02d416..2b9e5861 100755
--- a/pack.d/sublime-text.sh
+++ b/pack.d/sublime-text.sh
@@ -6,7 +6,6 @@ RETURNTARNAME="$2"
 
 . $(dirname $0)/common.sh
 
-PRODUCT=sublime-text
 PKGNAME="$(basename "$TAR" | sed -e "s|sublime_text_build_|$PRODUCT-|" -e 's|_.*||' )"
 
 mkdir opt/
@@ -15,4 +14,13 @@ mv -v sublime* opt/$PRODUCT
 
 erc a $PKGNAME.tar opt
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Text tools
+license: Proprietary
+url: https://www.sublimetext.com
+summary: Sophisticated text editor for code, html and prose
+description: Sophisticated text editor for code, html and prose.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/teamspeak3.sh b/pack.d/teamspeak3.sh
index 7b495f71..c6870c0b 100755
--- a/pack.d/teamspeak3.sh
+++ b/pack.d/teamspeak3.sh
@@ -29,4 +29,13 @@ PKGNAME=$PRODUCT-$VERSION
 
 erc a $PKGNAME.tar opt/$PRODUCT
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Video
+license: Proprietary
+url: http://www.teamspeak.com
+summary: TeamSpeak is software for quality voice communication via the Internet
+description: eamSpeak is software for quality voice communication via the Internet
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/teamspeak5.sh b/pack.d/teamspeak5.sh
index 4a34362c..88d72ea0 100755
--- a/pack.d/teamspeak5.sh
+++ b/pack.d/teamspeak5.sh
@@ -16,4 +16,13 @@ PKGNAME=$PRODUCT-$VERSION
 
 erc a $PKGNAME.tar opt/TeamSpeak
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Video
+license: Proprietary
+url: http://www.teamspeak.com
+summary: TeamSpeak is software for quality voice communication via the Internet
+description: eamSpeak is software for quality voice communication via the Internet
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/ungoogled-chromium.sh b/pack.d/ungoogled-chromium.sh
new file mode 100755
index 00000000..2fe34151
--- /dev/null
+++ b/pack.d/ungoogled-chromium.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+TAR="$1"
+RETURNTARNAME="$2"
+#VERSION="$3"
+
+. $(dirname $0)/common.sh
+
+# ungoogled-chromium_113.0.5672.127-1.1_linux.tar.xz
+PKGNAME="$(basename "$TAR" | sed -e 's|-[0-9].*||' -e 's|_|-|' )"
+
+mkdir opt/
+erc $TAR
+mv -v $PRODUCT* opt/$PRODUCT
+
+erc a $PKGNAME.tar opt
+
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Networking/WWW
+license: BSD-3-Clause license
+url: https://www.sublimetext.com
+summary: Google Chromium, sans integration with Google
+description: Google Chromium, sans integration with Google.
+EOF
+
+return_tar $PKGNAME.tar
diff --git a/pack.d/unigine-heaven.sh b/pack.d/unigine-heaven.sh
index bd02123a..e135401e 100755
--- a/pack.d/unigine-heaven.sh
+++ b/pack.d/unigine-heaven.sh
@@ -19,4 +19,13 @@ BASENAME="$(basename $TAR .run | tr "[A-Z_]" "[a-z-]")"
 
 convert_makeself_to_tar $TAR $BASENAME.tar
 
+cat <<EOF >$BASENAME.tar.eepm.yaml
+name: $PRODUCT
+group: Graphics
+license: Proprietary
+url: https://benchmark.unigine.com/heaven
+summary: Unigine Heaven (Unigine Benchmark)
+description: Unigine Heaven (Unigine Benchmark).
+EOF
+
 return_tar $BASENAME.tar
diff --git a/pack.d/unigine-superposition.sh b/pack.d/unigine-superposition.sh
index 2c49b0c9..d1953e7e 100755
--- a/pack.d/unigine-superposition.sh
+++ b/pack.d/unigine-superposition.sh
@@ -18,5 +18,14 @@ BASENAME="$(basename $TAR .run | tr "[A-Z_]" "[a-z-]")"
 
 convert_makeself_to_tar $TAR $BASENAME.tar
 
+cat <<EOF >$BASENAME.tar.eepm.yaml
+name: $PRODUCT
+group: Graphics
+license: Proprietary
+url: https://benchmark.unigine.com/superposition
+summary: Unigine Heaven (Unigine Benchmark)
+description: Unigine Superposition (Unigine Benchmark).
+EOF
+
 return_tar $BASENAME.tar
 
diff --git a/pack.d/unigine-valley.sh b/pack.d/unigine-valley.sh
index 07b27db5..f49ca833 100755
--- a/pack.d/unigine-valley.sh
+++ b/pack.d/unigine-valley.sh
@@ -18,5 +18,14 @@ BASENAME="$(basename $TAR .run | tr "[A-Z_]" "[a-z-]")"
 
 convert_makeself_to_tar $TAR $BASENAME.tar
 
+cat <<EOF >$BASENAME.tar.eepm.yaml
+name: $PRODUCT
+group: Graphics
+license: Proprietary
+url: https://benchmark.unigine.com/valley
+summary: Unigine Valley (Unigine Benchmark)
+description: Unigine Valley (Unigine Benchmark).
+EOF
+
 return_tar $BASENAME.tar
 
diff --git a/pack.d/virtualhere.sh b/pack.d/virtualhere.sh
index a2ce8f7a..8d64d5cb 100755
--- a/pack.d/virtualhere.sh
+++ b/pack.d/virtualhere.sh
@@ -15,4 +15,13 @@ install -m0755 -D "$TAR" opt/$PRODUCT/$BINNAME || fatal
 
 erc a $PKGNAME.tar opt
 
+cat <<EOF >$PKGNAME.tar.eepm.yaml
+name: $PRODUCT
+group: Networking/Remote access
+license: GPLv2
+url: https://virtualhere.com/usb_server_software
+summary: Generic VirtualHere USB Server
+description: Generic VirtualHere USB Server.
+EOF
+
 return_tar $PKGNAME.tar
diff --git a/pack.d/vkteams.sh b/pack.d/vkteams.sh
index b49eea06..852496ad 100755
--- a/pack.d/vkteams.sh
+++ b/pack.d/vkteams.sh
@@ -15,7 +15,16 @@ fi
 mkdir opt
 mv vkteams* opt/$PRODUCT || fatal
 
-PKGNAME=$PRODUCT-$VERSION.tar
-erc pack $PKGNAME opt/$PRODUCT
+PKG=$PRODUCT-$VERSION.tar
+erc pack $PKG opt/$PRODUCT
 
-return_tar $PKGNAME
+cat <<EOF >$PKG.eepm.yaml
+name: $PRODUCT
+group: Networking/Instant messaging
+license: Proprietary
+url: https://teams.vk.com/
+summary: VK Teams
+description: VK Teams desktop client.
+EOF
+
+return_tar $PKG
diff --git a/pack.d/webdavmailrucloud.sh b/pack.d/webdavmailrucloud.sh
index 815a2921..0cd942d9 100755
--- a/pack.d/webdavmailrucloud.sh
+++ b/pack.d/webdavmailrucloud.sh
@@ -16,7 +16,17 @@ VERSION="$(echo "$TAR" | sed -e 's|.*WebDAVCloudMailRu-||' -e 's|-.*||')"
 mkdir opt
 mv WebDAVCloudMailRu* opt/WebDAVCloudMailRu || fatal
 
-PKGNAME=webdavmailrucloud-$VERSION.tar
-erc pack $PKGNAME opt/WebDAVCloudMailRu
+PKG=webdavmailrucloud-$VERSION.tar
+erc pack $PKG opt/WebDAVCloudMailRu
 
-return_tar $PKGNAME
+cat <<EOF >$PKG.eepm.yaml
+name: $PRODUCT
+group: Networking/File transfer
+license: MIT
+url: https://github.com/yar229/WebDavMailRuCloud
+summary: WebDAV emulator for Cloud.mail.ru / Yandex.Disk
+description: WebDAV emulator for Cloud.mail.ru / Yandex.Disk
+EOF
+
+
+return_tar $PKG
diff --git a/play.d/meridius.sh b/play.d/meridius.sh
index 70a3ec3e..b7772968 100755
--- a/play.d/meridius.sh
+++ b/play.d/meridius.sh
@@ -14,4 +14,4 @@ else
     PKGURL=$(eget --list --latest https://github.com/PurpleHorrorRus/Meridius/releases "$PKGNAME-*.tar.gz")
 fi
 
-install_pkgurl
+install_pack_pkgurl
diff --git a/play.d/ungoogled-chromium.sh b/play.d/ungoogled-chromium.sh
index bdc1ba38..11ad6a63 100755
--- a/play.d/ungoogled-chromium.sh
+++ b/play.d/ungoogled-chromium.sh
@@ -17,4 +17,4 @@ fi
 
 PKGURL=$(eget --list --latest https://github.com/clickot/ungoogled-chromium-binaries/releases "ungoogled-chromium_${VERSION}_linux.tar.xz")
 
-install_pkgurl
+install_pack_pkgurl
diff --git a/repack.d/1c-connect.sh b/repack.d/1c-connect.sh
index 962c8f44..ce65fc4f 100755
--- a/repack.d/1c-connect.sh
+++ b/repack.d/1c-connect.sh
@@ -6,19 +6,11 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-# installing from tar, so we need fill some fields here
-subst "s|^Group:.*|Group: Office|" $SPEC
-subst "s|^License: unknown$|License: Proprietary|" $SPEC
-subst "s|^URL:.*|URL: https://1c-connect.com/|" $SPEC
-subst "s|^Summary:.*|Summary: 1C Connect|" $SPEC
-
 add_bin_cdexec_command $PRODUCT $PRODUCTDIR/app/bin/connect
 
 install_file $PRODUCTDIR/app/bin/ico-app.png /usr/share/pixmaps/$PRODUCT.png
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF |create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Name=1C Connect
@@ -29,5 +21,3 @@ Type=Application
 Categories=Network;
 X-GNOME-UsesNotifications=true
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
-
diff --git a/repack.d/64Gram.sh b/repack.d/64Gram.sh
index 5baebe2a..4b3c8a8b 100755
--- a/repack.d/64Gram.sh
+++ b/repack.d/64Gram.sh
@@ -11,12 +11,6 @@ PRODUCTDIR=/opt/$PRODUCT
 
 . $(dirname $0)/common.sh
 
-# installing from tar, so we need fill some fields here
-subst "s|^Group:.*|Group: Networking/Instant messaging|" $SPEC
-subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: https://github.com/TDesktop-x64/tdesktop|" $SPEC
-subst "s|^Summary:.*|Summary: 64Gram (unofficial Telegram Desktop)|" $SPEC
-
 add_bin_link_command
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
@@ -24,22 +18,15 @@ add_bin_link_command $PRODUCTCUR $PRODUCT
 iconname=$PRODUCT
 url=https://github.com/TDesktop-x64/tdesktop
 for i in 16 32 48 64 128 256 512 ; do
-    mkdir -p $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/
-    epm tool eget -O $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png $url/raw/master/Telegram/Resources/art/icon$i.png || continue
-    pack_file /usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
+    install_file $url/raw/master/Telegram/Resources/art/icon$i.png /usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
 done
 
-
-mkdir -p "$BUILDROOT/usr/share/64Gram/externalupdater.d"
-echo "$PRODUCTDIR/$PRODUCT" >"$BUILDROOT/usr/share/64Gram/externalupdater.d/telegram-desktop.conf"
-pack_file /usr/share/64Gram/externalupdater.d/telegram-desktop.conf
+echo "$PRODUCTDIR/$PRODUCT" | create_file /usr/share/64Gram/externalupdater.d/telegram-desktop.conf
 
 # TODO: tg.protocol
 # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=telegram-desktop-bin
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Name=64Gram
@@ -53,6 +40,5 @@ MimeType=x-scheme-handler/tg;
 Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
 X-GNOME-UsesNotifications=true
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
 
-add_by_ldd_deps
+add_libs_requires
\ No newline at end of file
diff --git a/repack.d/Autodesk_EAGLE.sh b/repack.d/Autodesk_EAGLE.sh
index b7ea19f0..2243af02 100755
--- a/repack.d/Autodesk_EAGLE.sh
+++ b/repack.d/Autodesk_EAGLE.sh
@@ -7,24 +7,20 @@ SPEC="$2"
 PRODUCT=eagle
 PRODUCTDIR=/opt/$PRODUCT
 
-INSTALL_PACKAGES="coreutils fontconfig glib2 libalsa libcom_err libcups libdrm libexpat libfreetype libGL libkeyutils libkrb5 libnspr libnss libX11 libxcb libXrandr zlib"
-
 . $(dirname $0)/common.sh
 
-# move package to /opt
-ROOTDIR=$(basename $(find $BUILDROOT -mindepth 1 -maxdepth 1 -type d))
 subst "s|^License: unknown$|License: Freeware|" $SPEC
 subst "s|^Summary:.*|Summary: EAGLE is electronic design automation (EDA) software that lets printed circuit board (PCB)|" $SPEC
 
+# move package to /opt
+ROOTDIR=$(basename $(find $BUILDROOT -mindepth 1 -maxdepth 1 -type d))
 mkdir $BUILDROOT/opt
 mv $BUILDROOT/$ROOTDIR $BUILDROOT/opt/$PRODUCT
 subst "s|\"/$ROOTDIR/|\"/opt/$PRODUCT/|" $SPEC
 
 add_bin_link_command
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -44,18 +40,11 @@ MimeType=application/x-eagle-schematic;application/x-eagle-board;application/x-e
 # used to group all windows under the same launcher icon
 StartupWMClass=eagle
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
+
 install_file /opt/eagle/bin/eagle-logo.png /usr/share/pixmaps/$PRODUCT.png
 
 # https://bugzilla.altlinux.org/44898
 remove_file /opt/eagle/lib/libxcb-dri2.so.0
 remove_file /opt/eagle/lib/libxcb-dri3.so.0
 
-
-if epm assure patchelf ; then
-    for i in $BUILDROOT/$PRODUCTDIR/lib/{libssl.so,libssl.so.1.*} ; do
-        a= patchelf --set-rpath '$ORIGIN/' $i
-    done
-fi
-
-set_autoreq 'yes'
+add_libs_requires
diff --git a/repack.d/CLion.sh b/repack.d/CLion.sh
index 41d1a082..a03200c4 100755
--- a/repack.d/CLion.sh
+++ b/repack.d/CLion.sh
@@ -18,9 +18,7 @@ move_to_opt "/$PRODUCT-*"
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT.sh
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -34,8 +32,6 @@ StartupWMClass=jetbrains-clion
 Categories=Development;IDE
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 mkdir -p $BUILDROOT/usr/share/pixmaps
 install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/
 install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/
diff --git a/repack.d/ClipGrab.sh b/repack.d/ClipGrab.sh
index d81b3fb8..08b6a95b 100755
--- a/repack.d/ClipGrab.sh
+++ b/repack.d/ClipGrab.sh
@@ -3,6 +3,6 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-UNIREQUIRES="yt-dlp"
-
 . $(dirname $0)/common.sh
+
+add_unirequires yt-dlp
diff --git a/repack.d/DJV2.sh b/repack.d/DJV2.sh
index 93a2c364..745b64ab 100755
--- a/repack.d/DJV2.sh
+++ b/repack.d/DJV2.sh
@@ -8,15 +8,10 @@ PRODUCT=djv
 PRODUCTCUR=DVJ2
 PRODUCTDIR=/opt/DVJ2
 
-# install all requires packages before packing (the list have got with rpmreqs package | xargs echo)
-PREINSTALL_PACKAGES="libalsa libGLX libOpenGL libX11 libxcb libXext zlib"
-
 . $(dirname $0)/common.sh
 
 move_to_opt /usr/local/DJV2
 
-set_autoreq 'yes'
-
 rm -v $BUILDROOT/usr/bin/djv
 
 add_bin_exec_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT
@@ -28,14 +23,6 @@ remove_file $PRODUCTDIR/etc/Color/nuke-default/make.py
 remove_file $PRODUCTDIR/etc/Color/spi-anim/makeconfig_anim.py
 remove_file $PRODUCTDIR/etc/Color/spi-vfx/make_vfx_ocio.py
 
-if epm assure patchelf ; then
-for i in $BUILDROOT$PRODUCTDIR/bin/{djv,djv_*} ; do
-    a= patchelf --set-rpath '$ORIGIN/../lib' $i
-done
-
-for i in $BUILDROOT$PRODUCTDIR/lib/lib*.so* ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-fi
-
 filter_from_requires libav libswresample libswscale
+
+add_libs_requires
diff --git a/repack.d/ICAClient.sh b/repack.d/ICAClient.sh
index 9c8d092f..ead6988a 100755
--- a/repack.d/ICAClient.sh
+++ b/repack.d/ICAClient.sh
@@ -15,19 +15,4 @@ ignore_lib_requires libgstreamer-0.10.so.0 libgstapp-0.10.so.0 libgstbase-0.10.s
 ignore_lib_requires libgstpbutils-1.0.so.0 libgstreamer-1.0.so.0 libgstvideo-1.0.so.0 libgssapi_krb5.so.2 libgstapp-1.0.so.0 libgstbase-1.0.so.0
 ignore_lib_requires libc++.so.1 libc++abi.so.1
 
-# glibc >= 2.7 gtk2 >= 2.12 gtk3 libICE >= 1.0.6 libSM >= 1.2.1 libX11 >= 1.6.0 libXext >= 1.3.2 libXinerama libXmu >= 1.1.1 libXpm >= 3.5.10 libXrender libXt >= 1.1.4 libpng speexdsp sqlite-libs webkit2gtk3 >= 2.26
-# libc6 (>= 2.13-38), libice6 (>= 1:1.0.0), libgtk2.0-0 (>= 2.12.0), libsm6, libx11-6, libxext6, libxmu6, libxpm4, libasound2, libstdc++6, libidn11 | libidn12, zlib1g, curl (>= 7.68), libsqlite3-0, libspeexdsp1
-# 
 add_libs_requires
-
-exit 0
-
-# Remove unmets
-subst '1i%filter_from_requires /\\(SUNWut\\|LIBJPEG_6.2\\|kdelibs\\|killproc\\|start_daemon\\)/d' $SPEC
-subst '1i%filter_from_requires /^libc.so.6(GLIBC_PRIVATE).*/d' $SPEC
-
-
-# Add requires of lsb-init for init script
-subst '/Group/Requires: lsb-init' $SPEC
-
-set_autoreq 'yes'
diff --git a/repack.d/PacketTracer.sh b/repack.d/PacketTracer.sh
index f4cec95a..a4f9d6af 100755
--- a/repack.d/PacketTracer.sh
+++ b/repack.d/PacketTracer.sh
@@ -15,14 +15,6 @@ subst 's| > /dev/null 2>&1||' opt/pt/packettracer
 
 add_libs_requires
 
-create_file()
-{
-    local t="$1"
-    local l="$(basename $t)"
-    cat >$l
-    install_file $l $t
-}
-
 if -d usr/share/applications ; then
     fix_desktop_file
 else
diff --git a/repack.d/Pencil.sh b/repack.d/Pencil.sh
index aecb68c4..6c528a5d 100755
--- a/repack.d/Pencil.sh
+++ b/repack.d/Pencil.sh
@@ -9,6 +9,8 @@ PRODUCTCUR=Pencil
 
 . $(dirname $0)/common-chromium-browser.sh
 
+add_conflicts pencil
+
 add_bin_link_command
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
@@ -18,4 +20,3 @@ fix_chrome_sandbox
 
 fix_desktop_file
 
-subst '1iConflicts: pencil' $SPEC
diff --git a/repack.d/PhpStorm.sh b/repack.d/PhpStorm.sh
index 3c01f505..5300f3a9 100755
--- a/repack.d/PhpStorm.sh
+++ b/repack.d/PhpStorm.sh
@@ -18,9 +18,7 @@ move_to_opt "/$PRODUCTCUR-*"
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT.sh
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF |create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -34,8 +32,6 @@ StartupWMClass=jetbrains-phpstorm
 Categories=Development;IDE
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 mkdir -p $BUILDROOT/usr/share/pixmaps
 install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/
 install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/
diff --git a/repack.d/Telegram.sh b/repack.d/Telegram.sh
index 7c61c2f4..0ca4f4b8 100755
--- a/repack.d/Telegram.sh
+++ b/repack.d/Telegram.sh
@@ -12,20 +12,14 @@ PRODUCTDIR=/opt/Telegram
 . $(dirname $0)/common.sh
 
 # /usr/bin/Telegram
-subst '1iConflicts:telegram-desktop' $SPEC
-subst '1iConflicts:telegram-desktop-binary' $SPEC
+add_conflicts telegram-desktop
+add_conflicts telegram-desktop-binary
 
 for i in Telegram Telegram-beta ; do
     [ "$i"  = "$PKGNAME" ] && continue
-    subst "1iConflicts:$i" $SPEC
+    add_conflicts $i
 done
 
-# installing from tar, so we need fill some fields here
-subst "s|^Group:.*|Group: Networking/Instant messaging|" $SPEC
-subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: https://desktop.telegram.org/|" $SPEC
-subst "s|^Summary:.*|Summary: Telegram Desktop messaging app|" $SPEC
-
 add_bin_link_command
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
@@ -33,44 +27,16 @@ add_bin_link_command $PRODUCTCUR $PRODUCT
 iconname=$PRODUCT
 url=https://github.com/telegramdesktop/tdesktop
 for i in 16 32 48 64 128 256 512 ; do
-    mkdir -p $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/
-    epm tool eget -O $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png $url/raw/master/Telegram/Resources/art/icon$i.png || continue
-    pack_file /usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
+    install_file $url/raw/master/Telegram/Resources/art/icon$i.png /usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
 done
 
 
-# Disable the official Telegram Desktop updater, creating menu entry (desktop file) and settings entries
-# See https://github.com/telegramdesktop/tdesktop/issues/25718
-
-# New way:
-# commit 2be4641496f6f5efc7c18c2842ad00ddf51be43c
-#Author: Ilya Fedin <fedin-ilja2010@ya.ru>
-#Date:   Fri Jan 13 17:58:36 2023 +0400
-#
-#    Install launcher on every launch on Linux
-# set DESKTOPINTEGRATION or disable update via set path to binary to /etc/tdesktop/externalupdater
-
-#mkdir -p "$BUILDROOT/etc/tdesktop"
-# telegram checks with real path to the binary
-#echo "$PRODUCTDIR/$PRODUCT" >"$BUILDROOT/etc/tdesktop/externalupdater"
-#pack_dir /etc/tdesktop
-#pack_file /etc/tdesktop/externalupdater
-mkdir -p "$BUILDROOT/usr/share/TelegramDesktop/externalupdater.d"
-echo "$PRODUCTDIR/$PRODUCT" >"$BUILDROOT/usr/share/TelegramDesktop/externalupdater.d/telegram-desktop.conf"
-pack_file /usr/share/TelegramDesktop/externalupdater.d/telegram-desktop.conf
-
-# fixed above
-# Hack against https://bugzilla.altlinux.org/42402
-# We can't forbit creating a desktop file, so just hide it
-#subst "s|Terminal=false|NoDisplay=true|" $BUILDROOT$PRODUCTDIR/Telegram
+echo "$PRODUCTDIR/$PRODUCT" | create_file /usr/share/TelegramDesktop/externalupdater.d/telegram-desktop.conf
 
 # TODO: tg.protocol
 # https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=telegram-desktop-bin
 
-# create desktop file
-DESKTOPFILE=/usr/share/applications/org.telegram.desktop.desktop
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT$DESKTOPFILE
+cat <<EOF | create_file /usr/share/applications/org.telegram.desktop.desktop
 [Desktop Entry]
 Version=1.0
 Name=Telegram Desktop
@@ -84,6 +50,5 @@ MimeType=x-scheme-handler/tg;
 Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
 X-GNOME-UsesNotifications=true
 EOF
-pack_file $DESKTOPFILE
 
-add_by_ldd_deps
+add_libs_requires
diff --git a/repack.d/WebStorm.sh b/repack.d/WebStorm.sh
index 53b40486..39ca3cc3 100755
--- a/repack.d/WebStorm.sh
+++ b/repack.d/WebStorm.sh
@@ -18,9 +18,7 @@ move_to_opt "/$PRODUCTCUR-*"
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT.sh
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -34,11 +32,8 @@ StartupWMClass=jetbrains-webstorm
 Categories=Development;IDE
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
-mkdir -p $BUILDROOT/usr/share/pixmaps
-install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/
-install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/
+install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/$PRODUCT.png
+install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/$PRODUCT.svg
 
 # kind of hack
 subst 's|%dir "'$PRODUCTDIR'/"||' $SPEC
diff --git a/repack.d/aimp.sh b/repack.d/aimp.sh
index 9d49db0c..dab6d561 100755
--- a/repack.d/aimp.sh
+++ b/repack.d/aimp.sh
@@ -12,7 +12,6 @@ PRODUCTDIR=/opt/$PRODUCT
 add_requires '/usr/bin/wine'
 add_requires '/bin/sh'
 
-
 add_bin_link_command $PRODUCT $PRODUCTDIR/aimp.bash
 subst "s|/usr/bin/sh|/bin/sh|" $BUILDROOT$PRODUCTDIR/aimp.bash
 
diff --git a/repack.d/aksusbd.sh b/repack.d/aksusbd.sh
index ea503c9a..bd165b2e 100755
--- a/repack.d/aksusbd.sh
+++ b/repack.d/aksusbd.sh
@@ -5,7 +5,7 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-set_autoreq 'yes'
+add_unirequires udev
 
 install_file /var/hasplm/init/hasplmd.service /etc/systemd/system/hasplmd.service
 install_file /var/hasplm/init/aksusbd.service /etc/systemd/system/aksusbd.service
@@ -24,3 +24,5 @@ touch $BUILDROOT/etc/hasplm/nethasp.ini
 pack_file /etc/hasplm/nethasp.ini
 
 remove_dir /var/hasplm/init
+
+add_libs_requires
diff --git a/repack.d/anydesk.sh b/repack.d/anydesk.sh
index e279d280..3d027a7b 100755
--- a/repack.d/anydesk.sh
+++ b/repack.d/anydesk.sh
@@ -6,57 +6,14 @@ SPEC="$2"
 
 PRODUCT=anydesk
 
-UNIREQUIRES="libGL.so.1 libGLU.so.1 libX11-xcb.so.1 libX11.so.6 libXdamage.so.1 libXext.so.6 libXfixes.so.3 libXi.so.6 libXrandr.so.2 libXrender.so.1 libXtst.so.6 libatk-1.0.so.0
-libcairo.so.2 libfontconfig.so.1 libfreetype.so.6
-libgdk-x11-2.0.so.0 libgdk_pixbuf-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpolkit-gobject-1.so.0
-libstdc++.so.6
-libxcb-shm.so.0 libxcb.so.1 libxkbfile.so.1
-libpangox-1.0.so.0 libgdkglext-x11-1.0.so.0 libgtkglext-x11-1.0.so.0
-polkit"
-
 . $(dirname $0)/common.sh
 
-#mkdir -p $BUILDROOT/etc/systemd/system/
-#mv -fv $BUILDROOT/usr/share/anydesk/files/systemd/anydesk.service $BUILDROOT/etc/systemd/system/anydesk.service
-#subst "s|/usr/share/anydesk/files/systemd/anydesk.service|/etc/systemd/system/anydesk.service|g" $SPEC
-
-#mkdir -p $BUILDROOT/etc/rc.d/init.d/
-#mv -fv $BUILDROOT/usr/share/anydesk/files/init/anydesk $BUILDROOT/etc/rc.d/init.d/anydesk
-#subst "s|.*/etc/default/NetworkManager.*||" $BUILDROOT/etc/rc.d/init.d/anydesk
-#subst "s|/usr/share/anydesk/files/init/anydesk|/etc/rc.d/init.d/anydesk|" $SPEC
-
 remove_file /usr/share/anydesk/files/init/anydesk
 
 # put service file to the normal place
-mkdir -p $BUILDROOT/etc/systemd/system/
-cp $BUILDROOT/usr/share/anydesk/files/systemd/anydesk.service $BUILDROOT/etc/systemd/system/anydesk.service
+install_file $BUILDROOT/usr/share/anydesk/files/systemd/anydesk.service /etc/systemd/system/anydesk.service
 remove_file /usr/share/anydesk/files/systemd/anydesk.service
-pack_file /etc/systemd/system/anydesk.service
 
 fix_desktop_file /usr/bin/$PRODUCT
 
-# autoreq is disabled, skip elf patching due requires
-exit
-
-LIBDIR=/usr/lib64
-[ -d $BUILDROOT$LIBDIR ] || LIBDIR=/usr/lib
-
-# don't check lib if missed
-[ ! -d $BUILDROOT$LIBDIR ] && exit
-
-if epm assure patchelf ; then
-for i in $BUILDROOT$LIBDIR/anydesk/{libgdkglext-x11-1.0.*,libgtkglext-x11-1.0.*} ; do
-    a= patchelf --set-rpath '$ORIGIN/' $i
-done
-
-# /usr/libexec/anydesk: library libpangox-1.0.so.0 not found
-for i in $BUILDROOT/usr/libexec/anydesk ; do
-    a= patchelf --set-rpath "$LIBDIR/anydesk" $i
-done
-fi
-
-# preloaded from /usr/lib64/anydesk/, drop external requires
-filter_from_requires libpangox-1.0.so.0 libgdkglext-x11-1.0.so.0 libgtkglext-x11-1.0.so.0
-
-#add_requires $PREINSTALL_PACKAGES
-#set_autoreq 'yes'
+add_libs_requires
diff --git a/repack.d/atom-beta.sh b/repack.d/atom-beta.sh
index 246f775b..d8637779 100755
--- a/repack.d/atom-beta.sh
+++ b/repack.d/atom-beta.sh
@@ -11,15 +11,15 @@ APMNAME=$(echo $PRODUCTCUR | sed -e 's|^atom|apm|')
 
 for i in atom atom-beta ; do
     [ "$i"  = "$PRODUCTCUR" ] && continue
-    subst "1iConflicts:$i" $SPEC
+    add_conflicts $i
 done
 
-UNIREQUIRES="coreutils findutils grep sed /usr/bin/git /usr/bin/node /usr/bin/npm /usr/bin/npx util-linux which xprop python3"
-
 . $(dirname $0)/common-chromium-browser.sh
 
 add_electron_deps
 
+add_unirequires coreutils findutils grep sed /usr/bin/git /usr/bin/node /usr/bin/npm /usr/bin/npx util-linux which xprop python3
+
 move_to_opt
 subst "s|\$USR_DIRECTORY/share/atom|/opt/atom|" $BUILDROOT/usr/bin/$PRODUCTCUR
 add_bin_exec_command $PRODUCT /usr/bin/$PRODUCTCUR
diff --git a/repack.d/audiorelay.sh b/repack.d/audiorelay.sh
index 5479b97a..11a30317 100755
--- a/repack.d/audiorelay.sh
+++ b/repack.d/audiorelay.sh
@@ -4,10 +4,6 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-PREINSTALL_PACKAGES="libalsa libfreetype libpulseaudio libX11 libXext libXi libXrender libXtst zlib"
-# needs /usr/lib64/alsa-lib/libasound_module_ctl_pulse.so
-PREINSTALL_PACKAGES="$PREINSTALL_PACKAGES alsa-plugins-pulse"
-
 . $(dirname $0)/common.sh
 
 add_bin_exec_command $PRODUCT $PRODUCTDIR/bin/AudioRelay
@@ -17,15 +13,7 @@ install_file $PRODUCTDIR/lib/audiorelay-AudioRelay.desktop /usr/share/applicatio
 fix_desktop_file /opt/audiorelay/bin/AudioRelay $PRODUCT
 fix_desktop_file /opt/audiorelay/lib/AudioRelay.png $PRODUCT
 
-for i in .$PRODUCTDIR/lib/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-
-for i in .$PRODUCTDIR/lib/runtime/lib/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN:$ORIGIN/server' $i
-done
-
-add_requires $PREINSTALL_PACKAGES
-
 # TODO:
 # https://aur.archlinux.org/packages/audiorelay
+
+add_libs_requires
diff --git a/repack.d/bitrix24.sh b/repack.d/bitrix24.sh
index 2d12124f..3ad445f8 100755
--- a/repack.d/bitrix24.sh
+++ b/repack.d/bitrix24.sh
@@ -8,8 +8,6 @@ PRODUCT=bitrix24
 PRODUCTCUR=Bitrix24
 PRODUCTDIR=/opt/$PRODUCTCUR
 
-UNIREQUIRES='libnotify.so.4'
-
 . $(dirname $0)/common.sh
 
 remove_dir /etc/apt/sources.list.d
@@ -20,3 +18,5 @@ add_bin_exec_command $PRODUCTCUR $PRODUCTDIR/$PRODUCTCUR
 add_bin_exec_command $PRODUCTCUR-web $PRODUCTDIR/$PRODUCTCUR-web
 add_bin_link_command $PRODUCT $PRODUCTCUR
 add_bin_link_command $PRODUCT-web $PRODUCTCUR-web
+
+add_libs_requires
diff --git a/repack.d/brave-browser-beta.sh b/repack.d/brave-browser-beta.sh
index 17dc8027..fc169d57 100755
--- a/repack.d/brave-browser-beta.sh
+++ b/repack.d/brave-browser-beta.sh
@@ -9,7 +9,7 @@ PRODUCTDIR=/opt/brave.com/brave-beta
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts:brave-browser brave-browser-dev brave-browser-nightly' $SPEC
+add_conflicts brave-browser brave-browser-dev brave-browser-nightly
 
 set_alt_alternatives 80
 
diff --git a/repack.d/brave-browser-dev.sh b/repack.d/brave-browser-dev.sh
index 50cd1f6d..a38ae670 100755
--- a/repack.d/brave-browser-dev.sh
+++ b/repack.d/brave-browser-dev.sh
@@ -9,7 +9,7 @@ PRODUCTDIR=/opt/brave.com/brave-dev
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts:brave-browser brave-browser-beta brave-browser-nightly' $SPEC
+add_conflicts brave-browser brave-browser-beta brave-browser-nightly
 
 set_alt_alternatives 80
 
diff --git a/repack.d/brave-browser-nightly.sh b/repack.d/brave-browser-nightly.sh
index ecdf5d9c..74fa5eba 100755
--- a/repack.d/brave-browser-nightly.sh
+++ b/repack.d/brave-browser-nightly.sh
@@ -9,7 +9,7 @@ PRODUCTDIR=/opt/brave.com/brave-nightly
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts:brave-browser brave-browser-beta' $SPEC
+add_conflicts brave-browser brave-browser-beta
 
 set_alt_alternatives 80
 
diff --git a/repack.d/brave-browser.sh b/repack.d/brave-browser.sh
index 173fc3da..af0f672f 100755
--- a/repack.d/brave-browser.sh
+++ b/repack.d/brave-browser.sh
@@ -9,7 +9,7 @@ PRODUCTDIR=/opt/brave.com/brave
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts:brave-browser-beta brave-browser-dev brave-browser-nightly' $SPEC
+add_conflicts brave-browser-beta brave-browser-dev brave-browser-nightly
 
 set_alt_alternatives 80
 
diff --git a/repack.d/brscanads2200ads2700w.sh b/repack.d/brscanads2200ads2700w.sh
index 69d63e38..deb84953 100755
--- a/repack.d/brscanads2200ads2700w.sh
+++ b/repack.d/brscanads2200ads2700w.sh
@@ -3,7 +3,4 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-# Remove LIBJPEG version
-subst '1i%filter_from_requires /LIBJPEG.*_6.2/d' $SPEC
-
-set_autoreq 'yes'
+add_libs_requires
diff --git a/repack.d/cascadeur.sh b/repack.d/cascadeur.sh
index 54da448e..843b2079 100755
--- a/repack.d/cascadeur.sh
+++ b/repack.d/cascadeur.sh
@@ -18,9 +18,7 @@ add_bin_exec_command
 # QmQLQK6byKKzvvHEA84h4Auxci1o9T6bCQQikZFgRM8KBx
 install_file "https://ph-files.imgix.net/e07b5249-d804-4b4e-9458-fa037d30a14b.png?auto=compress&codec=mozjpeg&cs=strip&auto=format&w=72&h=72&fit=crop&bg=0fff&dpr=1" /usr/share/pixmaps/$PRODUCT.png
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF |create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -32,6 +30,6 @@ Categories=Games;
 Terminal=false
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 add_requires qt5-imageformats
+
+add_libs_requires
diff --git a/repack.d/chat-gpt.sh b/repack.d/chat-gpt.sh
index d0738d25..73f07c7b 100755
--- a/repack.d/chat-gpt.sh
+++ b/repack.d/chat-gpt.sh
@@ -3,12 +3,8 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-UNIREQUIRES="libwebkit2gtk-4.0.so.37 libgtk-3.so.0 libgdk-3.so.0 libcairo.so.2 libgdk_pixbuf-2.0.so.0
-libsoup-2.4.so.1 libgio-2.0.so.0 libjavascriptcoregtk-4.0.so.18
-libgobject-2.0.so.0 libglib-2.0.so.0
-libssl.so.3 libcrypto.so.3
-libgcc_s.so.1 libm.so.6 libc.so.6"
-
 . $(dirname $0)/common.sh
 
 is_soname_present libssl.so.3 || fatal "This package needs OpenSSL 3."
+
+add_libs_requires
diff --git a/repack.d/chromium-gost-stable.sh b/repack.d/chromium-gost-stable.sh
index 1a037853..fb3b36a8 100755
--- a/repack.d/chromium-gost-stable.sh
+++ b/repack.d/chromium-gost-stable.sh
@@ -11,7 +11,7 @@ PRODUCTDIR=/opt/$PRODUCT
 . $(dirname $0)/common-chromium-browser.sh
 
 # can be in the repo
-subst '1iConflicts:chromium-gost' $SPEC
+add_conflicts chromium-gost
 
 set_alt_alternatives 62
 
diff --git a/repack.d/cnrdrvcups-ufr2-uk.sh b/repack.d/cnrdrvcups-ufr2-uk.sh
index 9c5681ac..b1fccea7 100755
--- a/repack.d/cnrdrvcups-ufr2-uk.sh
+++ b/repack.d/cnrdrvcups-ufr2-uk.sh
@@ -4,12 +4,10 @@ BUILDROOT="$1"
 
 SPEC="$2"
 
-UNIREQUIRES="libglib-2.0.so.0 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libatk-1.0.so.0 libcairo.so.2 libcairo-gobject.so.2
-libcups.so.2 libcupsimage.so.2 libgdk_pixbuf-2.0.so.0 libgio-2.0.so.0 libgdk-3.so.0 libgtk-3.so.0
-libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpangoxft-1.0.so.0 libxml2.so.2 libjbig.so.2.1"
-
 . $(dirname $0)/common.sh
 
+add_libs_requires
+
 [ "$(epm print info -s)" = "alt" ] || exit 0
 
 # fixes for ALT bug with libjbig packing
diff --git a/repack.d/commfort-client.sh b/repack.d/commfort-client.sh
index 7f7b40b4..39bc3071 100755
--- a/repack.d/commfort-client.sh
+++ b/repack.d/commfort-client.sh
@@ -13,8 +13,7 @@ add_requires '/usr/bin/wine'
 
 add_bin_link_command $PRODUCT $PRODUCTDIR/run.sh
 
-mkdir -p usr/share/applications
-cat <<EOF >usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Name=CommFort
 Exec=$PRODUCT %F
@@ -24,7 +23,6 @@ Icon=$PRODUCT
 StartupWMClass=commfort.exe
 Categories=Wine;Chat;Network;InstantMessaging;
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
 
 # copied from ~/.local/share/icons/hicolor/256x256/apps/2887_CommFort.0.png
 i=256
diff --git a/repack.d/common.sh b/repack.d/common.sh
index f16a9033..d72ddbd4 100755
--- a/repack.d/common.sh
+++ b/repack.d/common.sh
@@ -150,6 +150,7 @@ pack_dir()
     subst "s|%files|%files\n%dir $file|" $SPEC
 }
 
+# Usage: <local file> </abs/path/to/file>
 install_file()
 {
     local src="$1"
@@ -159,15 +160,27 @@ install_file()
 
     if is_url "$src" ; then
         epm tool eget -O "$BUILDROOT$dest" "$src" || fatal "Can't download $src to install to $dest"
+    elif [ "$src" = "/dev/stdin" ] ; then
+        cp "$src" "$BUILDROOT/$dest" || return
     elif is_abs_path "$src" ; then
         cp "$BUILDROOT/$src" "$BUILDROOT/$dest" || return
     else
         cp "$src" "$BUILDROOT/$dest" || return
     fi
 
+    chmod 0644 "$BUILDROOT/$dest"
     pack_file "$dest"
 }
 
+# Create target file from file
+# Usage: echo "text" | create_file /abs/path/to/file
+create_file()
+{
+    local t="$1"
+    install_file /dev/stdin $t
+}
+
+
 add_bin_link_command()
 {
     local name="$1"
@@ -295,6 +308,19 @@ add_requires()
     subst "1iRequires: $*" $SPEC
 }
 
+add_conflicts()
+{
+    [ -n "$1" ] || return
+    subst "1iConflicts: $*" $SPEC
+}
+
+add_provides()
+{
+    [ -n "$1" ] || return
+    subst "1iProvides: $*" $SPEC
+}
+
+
 # libstdc++.so.6 -> libstdc++.so.6()(64bit)
 add_unirequires()
 {
@@ -304,7 +330,7 @@ add_unirequires()
         reqs=''
         for req in $* ; do
             reqs="$reqs $req"
-            echo "$req" | grep "^lib" | grep -q -v -F "(64bit)" && reqs="$reqs"'()(64bit)'
+            echo "$req" | grep "^lib.*\.so" | grep -q -v -F "(64bit)" && reqs="$reqs"'()(64bit)'
         done
         subst "1iRequires:$reqs" $SPEC
     else
@@ -335,28 +361,6 @@ add_electron_deps()
     add_unirequires "libnspr4.so libnss3.so libnssutil3.so libsmime3.so"
 }
 
-add_qt5_deps()
-{
-    add_unirequires "libm.so.6 libc.so.6"
-    add_unirequires "libglib-2.0.so.0 libgio-2.0.so.0 libgobject-2.0.so.0 libfontconfig.so.1 libfreetype.so.6"
-    add_unirequires "libEGL.so.1 libGL.so.1 libxcb.so.1 libX11.so.6 libX11-xcb.so.1 libglib-2.0.so.0"
-}
-
-add_qt6_deps()
-{
-    add_unirequires "libm.so.6 libc.so.6 libdl.so.2 libgcc_s.so.1 libpthread.so.0 libstdc++.so.6"
-    add_unirequires "libEGL.so.1 libGL.so.1 libxcb.so.1 libX11.so.6 libX11-xcb.so.1 libglib-2.0.so.0"
-    add_unirequires "libGLX.so.0 libOpenGL.so.0"
-    add_unirequires "libX11-xcb.so.1 libX11.so.6 libXcomposite.so.1 libXdamage.so.1 libXext.so.6 libXfixes.so.3 libXinerama.so.1 libXrandr.so.2 libXrender.so.1 libXss.so.1 libXtst.so.6"
-    add_unirequires "libasound.so.2 libdbus-1.so.3 libdrm.so.2 libexpat.so.1 libfontconfig.so.1 libfreetype.so.6 libgbm.so.1"
-    add_unirequires "libglib-2.0.so.0 libgthread-2.0.so.0 libharfbuzz.so.0 libjpeg.so.8 liblcms2.so.2 libminizip.so.1"
-    add_unirequires "libnspr4.so libnss3.so libnssutil3.so libopus.so.0 libpci.so.3 libplc4.so libplds4.so libpulse.so.0 libresolv.so.2 librt.so.1 libsmime3.so libsnappy.so.1"
-    add_unirequires "libtiff.so.5 libudev.so.1 libva-drm.so.2 libva-x11.so.2 libva.so.2 libwayland-client.so.0 libwayland-cursor.so.0 libwayland-egl.so.1 libwayland-server.so.0"
-    add_unirequires "libxcb-glx.so.0 libxcb-icccm.so.4 libxcb-image.so.0 libxcb-keysyms.so.1 libxcb-randr.so.0 libxcb-render-util.so.0 libxcb-render.so.0"
-    add_unirequires "libxcb-shape.so.0 libxcb-shm.so.0 libxcb-sync.so.1 libxcb-xfixes.so.0 libxcb-xkb.so.1 libxcb.so.1"
-    add_unirequires "libxkbcommon-x11.so.0 libxkbcommon.so.0 libxkbfile.so.1 libxml2.so.2 libxshmfence.so.1 libxslt.so.1 libz.so.1"
-}
-
 __get_binary_requires()
 {
     local fdir="$1"
@@ -432,19 +436,7 @@ is_soname_present()
     return 1
 }
 
-
-add_by_ldd_deps()
-{
-    local exe="$1"
-    [ -n "$exe" ] || exe="$PRODUCTDIR/$PRODUCT"
-    if is_abs_path "$exe" ; then
-        exe="$BUILDROOT$exe"
-    fi
-    [ -x "$exe" ] || fatal "Can't get requires via ldd for non executable $1"
-    add_unirequires "$(epm requires --direct "$exe")"
-}
-
-
+# TODO: remove
 filter_from_requires()
 {
     # ALT specific only
@@ -529,7 +521,7 @@ use_system_xdg()
 }
 
 
-#[ -d "$BUILDROOT" ] || fatal "Run me only via epm repack <package>"
+[ -d "$BUILDROOT" ] || fatal "Run me only via epm repack <package>"
 
 [ -n "$PRODUCT" ] || PRODUCT="$(basename $0 .sh)"
 
diff --git a/repack.d/cuda-z.sh b/repack.d/cuda-z.sh
index 7922a504..1bbb5325 100755
--- a/repack.d/cuda-z.sh
+++ b/repack.d/cuda-z.sh
@@ -5,26 +5,17 @@ SPEC="$2"
 
 PRODUCT=cuda-z
 
+. $(dirname $0)/common.sh
+
 # static linked
 # strace -f cuda-z 2>&1 | grep \.so | grep lib64/lib | grep fstat | sed -e 's|.*<||' -e 's|>.*||' | sort -u | epm --quiet --short qf | sort -u | xargs -n100
 # glibc-core glibc-pthread libgcc1 libstdc++6 libX11 libXau libxcb libXcursor libXdmcp libXext libXfixes libXrender
-#PREINSTALL_PACKAGES="glibc-core glibc-pthread libgcc1 libstdc++6 libX11 libXau libxcb libXcursor libXdmcp libXext libXfixes libXrender"
-# 
-UNIREQUIRES="libstdc++.so.6 libX11-xcb.so.1 libX11.so.6 libXau.so.6 libxcb.so.1 libXcursor.so.1 libXdmcp.so.6 libXext.so.6 libXfixes.so.3 libXrender.so.1"
-
 
-. $(dirname $0)/common.sh
-
-subst "s|^Group:.*|Group: Graphics|" $SPEC
-subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: https://cuda-z.sourceforge.net/|" $SPEC
-subst "s|^Summary:.*|Summary: CUDA-Z|" $SPEC
+add_unirequires libstdc++.so.6 libX11-xcb.so.1 libX11.so.6 libXau.so.6 libxcb.so.1 libXcursor.so.1 libXdmcp.so.6 libXext.so.6 libXfixes.so.3 libXrender.so.1
 
 add_bin_link_command
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Name=CUDA-Z
@@ -34,10 +25,11 @@ Icon=$PRODUCT
 Exec=$PRODUCT
 Terminal=false
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
 
 install_file "https://cuda-z.sourceforge.net/img/web-download-detect.png" /usr/share/pixmaps/$PRODUCT.png
 
 # Running 32 bit cuda-z on Ubuntu
 # libc6:i386 libstdc++6:i386 zlib1g:i386 libx11-6:i386 libxext6:i386 libxrender1:i386
 # https://blog.redscorp.net/?p=94
+
+add_libs_requires
diff --git a/repack.d/epson-printer-utility.sh b/repack.d/epson-printer-utility.sh
index d679767b..8a2e2c58 100755
--- a/repack.d/epson-printer-utility.sh
+++ b/repack.d/epson-printer-utility.sh
@@ -5,9 +5,7 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-add_requires udev
-
-add_libs_requires
+add_unirequires udev
 
 # utility
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT
@@ -27,3 +25,6 @@ remove_dir /usr/lib/epson-backend/rc.d
 remove_dir /usr/lib/epson-backend/scripts
 
 fix_desktop_file /opt/epson-printer-utility/bin/epson-printer-utility
+
+add_libs_requires
+
diff --git a/repack.d/epsonscan2.sh b/repack.d/epsonscan2.sh
index 3c3c90fe..635e288c 100755
--- a/repack.d/epsonscan2.sh
+++ b/repack.d/epsonscan2.sh
@@ -5,8 +5,9 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-add_requires udev
+add_unirequires udev
+
+fix_desktop_file /usr/bin/epsonscan2
 
 add_libs_requires
 
-fix_desktop_file /usr/bin/epsonscan2
diff --git a/repack.d/far2l-portable.sh b/repack.d/far2l-portable.sh
index 61d2a072..d9251224 100755
--- a/repack.d/far2l-portable.sh
+++ b/repack.d/far2l-portable.sh
@@ -6,7 +6,6 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: far2l' $SPEC
+add_conflicts far2l
 
-# set_autoreq 'yes'
 add_libs_requires
diff --git a/repack.d/figma-linux.sh b/repack.d/figma-linux.sh
index d7d31db6..e99c2ea4 100755
--- a/repack.d/figma-linux.sh
+++ b/repack.d/figma-linux.sh
@@ -13,3 +13,4 @@ fix_desktop_file
 fix_chrome_sandbox
 
 add_electron_deps
+add_libs_requires
diff --git a/repack.d/firefox-nightly.sh b/repack.d/firefox-nightly.sh
index 5e930476..931673eb 100755
--- a/repack.d/firefox-nightly.sh
+++ b/repack.d/firefox-nightly.sh
@@ -4,12 +4,9 @@ BUILDROOT="$1"
 SPEC="$2"
 
 PRODUCT=firefox
-
 PRODUCTCUR=$(basename $0 .sh)
 PRODUCTDIR=/opt/$PRODUCTCUR
 
-PREINSTALL_PACKAGES="fontconfig glib2 libalsa libatk libcairo libcairo-gobject libdbus libdbus-glib libfreetype libgdk-pixbuf libgio libgtk+3 libharfbuzz libpango libX11 libxcb libXcomposite libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXtst"
-
 . $(dirname $0)/common-chromium-browser.sh
 
 #for i in firefox firefox-devel ; do
@@ -17,9 +14,6 @@ PREINSTALL_PACKAGES="fontconfig glib2 libalsa libatk libcairo libcairo-gobject l
 #    subst "1iConflicts:$i" $SPEC
 #done
 
-# set_autoreq 'yes,noshell,nomonolib,nomono,nopython'
-add_libs_requires
-
 #set_alt_alternatives 65
 
 move_to_opt /usr/lib/$PRODUCTCUR
@@ -42,22 +36,11 @@ copy_icons_to_share()
     for i in 16 32 48 64 128 ; do
         sicon=$BUILDROOT$PRODUCTDIR/browser/chrome/icons/default/default$i.png
         [ -r $sicon ] || continue
-        mkdir -p $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/
-        rm -f $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
-        cp $sicon $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
+        install_file $sicon $/usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
     done
 
-    #subst "s|%files|%files\n/usr/share/icons/hicolor/*x*/apps/$iconname.png|" $SPEC
 }
 
 copy_icons_to_share
 
-if epm assure patchelf ; then
-for i in $BUILDROOT/$PRODUCTDIR/{lib*.so,plugin-container} ; do
-    a= patchelf --set-rpath '$ORIGIN/' $i || continue
-done
-
-for i in $BUILDROOT/$PRODUCTDIR/gmp-clearkey/0.1/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN/../../' $i || continue
-done
-fi
+add_libs_requires
diff --git a/repack.d/flashprint5.sh b/repack.d/flashprint5.sh
index c4001792..f6c52bdd 100755
--- a/repack.d/flashprint5.sh
+++ b/repack.d/flashprint5.sh
@@ -4,10 +4,8 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-PREINSTALL_PACKAGES="libGL libGLU libqt5-core libqt5-gui libqt5-network libqt5-opengl libqt5-widgets libudev1"
-
 . $(dirname $0)/common.sh
 
 move_file /usr/lib/libOCCTWrapper.so.1 /usr/lib64/libOCCTWrapper.so.1
 
-set_autoreq 'yes'
+add_libs_requires
diff --git a/repack.d/generic.sh b/repack.d/generic.sh
index ecab3db2..79674082 100755
--- a/repack.d/generic.sh
+++ b/repack.d/generic.sh
@@ -86,7 +86,7 @@ set_rpm_field "Distribution" "EEPM"
 
 # TODO: check the yaml file!!!
 if [ -r "$PKG.eepm.yaml" ] ; then
-    eval $(epm tool yaml $PKG.eepm.yaml | grep -E '(summary|description|upstream_file|upstream_url|url|appname|arches|group|license|version)=' ) #'
+    eval $(epm tool yaml $PKG.eepm.yaml | grep -E '(summary|description|upstream_file|upstream_url|url|appname|arch|group|license|version)=' ) #'
     # for tarballs fix permissions
     chmod $verbose -R a+rX *
 
diff --git a/repack.d/gitkraken.sh b/repack.d/gitkraken.sh
index afa2f7d4..bffd2fba 100755
--- a/repack.d/gitkraken.sh
+++ b/repack.d/gitkraken.sh
@@ -11,8 +11,6 @@ PRODUCT=gitkraken
 rm -v ./usr/bin/gitkraken
 add_bin_link_command
 
-add_electron_deps
-
 move_to_opt
 
 fix_chrome_sandbox
@@ -25,5 +23,5 @@ add_findreq_skiplist "$PRODUCTDIR/resources/app.asar.unpacked/node_modules/@msgp
 
 add_requires libXScrnSaver
 
-# TODO: replace gitkraken/resources/app.asar.unpacked/git with system's one optionally?
-#set_autoreq 'yes,noperl'
+add_electron_deps
+add_libs_requires
diff --git a/repack.d/gitlab-runner.sh b/repack.d/gitlab-runner.sh
index 056bf0fc..825942d6 100755
--- a/repack.d/gitlab-runner.sh
+++ b/repack.d/gitlab-runner.sh
@@ -19,3 +19,5 @@ PRODUCT=gitlab-runner
 # gitlab-ci-multi-runner
 
 add_requires curl git tar
+
+add_libs_requires
diff --git a/repack.d/google-chrome-stable.sh b/repack.d/google-chrome-stable.sh
index 1357bd8d..c529d03a 100755
--- a/repack.d/google-chrome-stable.sh
+++ b/repack.d/google-chrome-stable.sh
@@ -7,9 +7,10 @@ PRODUCT=google-chrome
 PRODUCTCUR=google-chrome-stable
 PRODUCTDIR=/opt/google/chrome
 
-
 . $(dirname $0)/common-chromium-browser.sh
 
+add_conflicts google-chrome-preinstall
+
 set_alt_alternatives 65
 
 copy_icons_to_share
@@ -20,6 +21,8 @@ add_bin_commands
 
 use_system_xdg
 
+subst "s|^Summary:.*|Summary: Google Chrome browser|" $SPEC
+
 # TODO: report to the upstream
 subst 's|Name=Google Chrome|Name=Google Chrome Web Browser\nName[ru]=Веб-браузер Google Chrome|' $BUILDROOT/usr/share/applications/*.desktop
 subst 's|GenericName=Web Browser|GenericName=Google Chrome Web Browser|' $BUILDROOT/usr/share/applications/*.desktop
@@ -27,7 +30,4 @@ subst 's|GenericName\[ru\]=Веб-браузер|GenericName[ru]=Веб-брау
 
 fix_desktop_file /usr/bin/google-chrome-stable
 
-subst "s|^Summary:.*|Summary: Google Chrome browser|" $SPEC
-subst '1iConflicts: google-chrome-preinstall' $SPEC
-
 add_chromium_deps
diff --git a/repack.d/hansoft.sh b/repack.d/hansoft.sh
index afe82c98..ccec5111 100755
--- a/repack.d/hansoft.sh
+++ b/repack.d/hansoft.sh
@@ -11,8 +11,7 @@ PRODUCTCUR=Hansoft
 add_bin_link_command $PRODUCT $PRODUCTDIR/$PRODUCTCUR
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
-mkdir -p usr/share/applications
-cat <<EOF >usr/share/applications/$PRODUCT.desktop
+cat <<EOF |create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Actions=Newconnection;Logoutexitall;
 Categories=Development;Office;
@@ -34,10 +33,9 @@ Exec=$PRODUCT -ExitAll
 Name=Log out & exit all
 X-Hansoft-TaskType=Command
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
 
 # copied from ~.local/share/icons/se.hansoft.Exe-PMClient_7B6AC2CBB8795205B8E6DC09CB75B5E6.png
 i=256
 install_file ipfs://QmbYM3wS2qXtWbUg9mASMPoJmgfL6smny1m3J4PfuiDtJR /usr/share/icons/hicolor/${i}x${i}/apps/$PRODUCT.png
 
-set_autoreq 'yes'
+add_libs_requires
diff --git a/repack.d/hplip-plugin.sh b/repack.d/hplip-plugin.sh
index a0aa8a73..5f949f6e 100755
--- a/repack.d/hplip-plugin.sh
+++ b/repack.d/hplip-plugin.sh
@@ -10,3 +10,5 @@ subst "s|^License: unknown$|License: Proprietary|" $SPEC
 subst "s|^Summary:.*|Summary: Binary plugin for HPs hplip printer driver library|" $SPEC
 
 add_requires hplip
+
+add_libs_requires
diff --git a/repack.d/icq.sh b/repack.d/icq.sh
index 272696b7..dc8ff1d8 100755
--- a/repack.d/icq.sh
+++ b/repack.d/icq.sh
@@ -31,9 +31,7 @@ exec $PRODUCTDIR/$PRODUCT "\$@"
 EOF
 
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -47,35 +45,9 @@ MimeType=x-scheme-handler/icq;
 Keywords=icq;
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 # https://hb.bizmrg.com/icq-www/linux/x64/packages/10.0.13286/icq.png
 install_file https://dashboard.snapcraft.io/site_media/appmedia/2020/04/icq_copy.png /usr/share/pixmaps/$PRODUCT.png
 
 subst "s|.*/opt/icq/unittests.*||" $SPEC
 
 add_libs_requires
-
-exit
-
-# ignore embedded libs
-filter_from_requires libQt5 libxcb "libX.*"
-
-if epm assure patchelf ; then
-cd $BUILDROOT$PRODUCTDIR
-for i in $PRODUCT  ; do
-    a= patchelf --set-rpath '$ORIGIN/lib' $i
-done
-
-for i in lib/*.so.*  ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-
-for i in QtQuick.2/lib*.so  ; do
-    a= patchelf --set-rpath '$ORIGIN/../lib' $i
-done
-
-for i in QtQuick/*/lib*.so  ; do
-    a= patchelf --set-rpath '$ORIGIN/../../lib' $i
-done
-fi
diff --git a/repack.d/ideaIC.sh b/repack.d/ideaIC.sh
index b03c5c4b..58ba8c71 100755
--- a/repack.d/ideaIC.sh
+++ b/repack.d/ideaIC.sh
@@ -9,7 +9,7 @@ PRODUCTCUR=idea-IC
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: ideaIU' $SPEC
+add_conflicts ideaIU
 
 subst "s|^Group:.*|Group: Development/Tools|" $SPEC
 #subst "s|^License: unknown$|License: GPLv2|" $SPEC
diff --git a/repack.d/ideaIU.sh b/repack.d/ideaIU.sh
index 36dc943e..7608ad66 100755
--- a/repack.d/ideaIU.sh
+++ b/repack.d/ideaIU.sh
@@ -9,7 +9,7 @@ PRODUCTCUR=idea-IU
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: ideaIU' $SPEC
+add_conflicts ideaIU
 
 subst "s|^Group:.*|Group: Development/Tools|" $SPEC
 #subst "s|^License: unknown$|License: GPLv2|" $SPEC
@@ -20,9 +20,7 @@ move_to_opt "/$PRODUCTCUR-*"
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT.sh
 add_bin_link_command $PRODUCTCUR $PRODUCT
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -36,11 +34,8 @@ StartupWMClass=jetbrains-idea
 Categories=Development;IDE
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
-mkdir -p $BUILDROOT/usr/share/pixmaps
-install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/
-install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/
+install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/$PRODUCT.png
+install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/$PRODUCT.svg
 
 # kind of hack
 subst 's|%dir "'$PRODUCTDIR'/"||' $SPEC
diff --git a/repack.d/jetbrains-toolbox.sh b/repack.d/jetbrains-toolbox.sh
index f1ebb97d..9ed7cdf6 100755
--- a/repack.d/jetbrains-toolbox.sh
+++ b/repack.d/jetbrains-toolbox.sh
@@ -10,12 +10,6 @@ PRODUCTDIR=/opt/$PRODUCTCUR
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Development/C|" $SPEC
-#subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: https://www.jetbrains.com/ru-ru/toolbox-app/|" $SPEC
-subst "s|^Summary:.*|Summary: JetBrains Toolbox App|" $SPEC
-
-
 # overwrite default exec script
 cat <<EOF >usr/bin/$PRODUCT
 #!/bin/sh
@@ -31,5 +25,4 @@ EOF
 
 add_requires java-openjdk
 
-# set_autoreq 'yes'
 add_libs_requires
diff --git a/repack.d/k3s.sh b/repack.d/k3s.sh
index 3e439134..e0016b2f 100755
--- a/repack.d/k3s.sh
+++ b/repack.d/k3s.sh
@@ -6,14 +6,9 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: File tools|" $SPEC
-subst "s|^License:.*$|License: Apache-2.0|" $SPEC
-subst "s|^URL:.*|URL: https://k3s.io|" $SPEC
-subst "s|^Summary:.*|Summary: K3s - Lightweight Kubernetes|" $SPEC
-
-subst '1iConflicts: kubernetes-client' $SPEC
+add_conflicts kubernetes-client
 # /usr/bin/ctr
-subst '1iConflicts: containerd' $SPEC
+add_conflicts containerd
 
 # Check https://get.k3s.io/
 
@@ -21,7 +16,7 @@ UNITDIR=/lib/systemd/system/
 [ -d "$UNITDIR" ] || UNITDIR=/usr/lib/systemd/system/
 
 mkdir -p .$UNITDIR
-cat >.$UNITDIR/k3s.service << EOF
+cat <<EOF | create_file $UNITDIR/k3s.service
 [Unit]
 Description=Lightweight Kubernetes
 Documentation=https://k3s.io
@@ -50,17 +45,10 @@ RestartSec=5s
 ExecStartPre=-/sbin/modprobe br_netfilter
 ExecStartPre=-/sbin/modprobe overlay
 ExecStart=/usr/bin/k3s server
-
 EOF
 
-pack_file $UNITDIR/k3s.service
-
-mkdir -p etc/systemd/system/
-cat >etc/systemd/system/k3s.service.env << EOF
+cat <<EOF | create_file /etc/systemd/system/k3s.service.env
 # K3S_URL=
 # K3S_TOKEN=
 # K3S_CLUSTER_SECRET=
 EOF
-
-pack_file /etc/systemd/system/k3s.service.env
-
diff --git a/repack.d/kubo.sh b/repack.d/kubo.sh
index fe42d529..f0583802 100755
--- a/repack.d/kubo.sh
+++ b/repack.d/kubo.sh
@@ -9,17 +9,11 @@ SPEC="$2"
 # add conflicts to all alternatives
 for i in kubo kubo-beta ; do
     [ "$i" = "$PRODUCT" ] && continue
-    subst "1iConflicts: $i" $SPEC
+    add_conflicts $i
 done
 
+add_conflicts go-ipfs
+add_provides go-ipfs
 
-subst "s|^Group:.*|Group: File tools|" $SPEC
-subst "s|^License:.*$|License: MIT/Apache-2.0|" $SPEC
-subst "s|^URL:.*|URL: https://github.com/ipfs/kubo|" $SPEC
-subst "s|^Summary:.*|Summary: An IPFS implementation in Go|" $SPEC
-
-set_autoreq 'yes'
-
-subst '1iConflicts: go-ipfs' $SPEC
-subst '1iProvides: go-ipfs' $SPEC
+add_libs_requires
 
diff --git a/repack.d/kyocera-sane.sh b/repack.d/kyocera-sane.sh
index 384acec3..a9ccc668 100755
--- a/repack.d/kyocera-sane.sh
+++ b/repack.d/kyocera-sane.sh
@@ -9,14 +9,6 @@ SPEC="$2"
 # TODO: broken
 # 40-scanner-permissions.rules
 
-create_file()
-{
-    local t="$1"
-    local l="$(basename $t)"
-    cat >$l
-    install_file $l $t
-}
-
 cat <<EOF | create_file /etc/sane.d/dll.d/kyocera
 # dll.conf snippet for kyocera
 #
diff --git a/repack.d/kyodialog.sh b/repack.d/kyodialog.sh
index a88fb24c..359544bd 100755
--- a/repack.d/kyodialog.sh
+++ b/repack.d/kyodialog.sh
@@ -14,7 +14,6 @@ PRODUCTCUR=$PRODUCT$VERSION
 # embedded
 filter_from_requires "python3(PyPDF3)"
 
-# set_autoreq 'yes'
 add_libs_requires
 
 # remove embedded PyPDF3
@@ -34,9 +33,7 @@ mkdir -p $BUILDROOT/usr/share/cups/model/
 ln -s /usr/share/ppd/kyocera $BUILDROOT/usr/share/cups/model/kyocera
 pack_file /usr/share/cups/model/kyocera
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCTCUR.desktop
+cat <<EOF |create_file /usr/share/applications/$PRODUCTCUR.desktop
 [Desktop Entry]
 Type=Application
 Name=Kyocera Print Panel
@@ -46,6 +43,5 @@ Comment=Kyocera Print Panel
 Terminal=false
 Categories=Qt;Printing;HardwareSettings;Settings
 EOF
-pack_file /usr/share/applications/$PRODUCTCUR.desktop
 
 install_file /usr/share/kyocera$VERSION/appicon_H.png /usr/share/pixmaps/$PRODUCTCUR.png
diff --git a/repack.d/liteide.sh b/repack.d/liteide.sh
index b853576d..bb54424f 100755
--- a/repack.d/liteide.sh
+++ b/repack.d/liteide.sh
@@ -9,7 +9,7 @@ PRODUCT=liteide
 . $(dirname $0)/common.sh
 
 # previous package name
-subst '1iConflicts: liteidex' $SPEC
+add_conflicts liteidex
 
 subst "s|^Group:.*|Group: Development/Tools|" $SPEC
 subst "s|^License: unknown$|License: LGPLv2|" $SPEC
@@ -24,9 +24,7 @@ done
 
 install_file $PRODUCTDIR/share/liteide/welcome/images/liteide.png /usr/share/pixmaps/$PRODUCT.png
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Type=Application
 Name=LiteIDE
@@ -37,8 +35,6 @@ Terminal=false
 Categories=Development;
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 # https://bugzilla.altlinux.org/45635
 add_requires golang
 
diff --git a/repack.d/lithium_ecad.sh b/repack.d/lithium_ecad.sh
index 3c4d4da7..93db40ac 100755
--- a/repack.d/lithium_ecad.sh
+++ b/repack.d/lithium_ecad.sh
@@ -3,35 +3,21 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-PREINSTALL_PACKAGES="glib2 libdbus libEGL fontconfig libfreetype libGL libGLU libICE libjasper libSM libX11 libxcb libXext libXi libXrender zlib"
-
 . $(dirname $0)/common.sh
 
 move_to_opt "/opt/lithium*" || fatal "can't move to $PRODUCTDIR"
 
 add_bin_link_command $PRODUCT $PRODUCTDIR/launcher.sh
 
-set_autoreq 'yes'
-
-cd $BUILDROOT$PRODUCTDIR || fatal
-if epm assure patchelf ; then
-for i in bin/{launcher,libraryCreator,projectCreator} ; do
-    a= patchelf --set-rpath '$ORIGIN' $i || continue
-done
-for i in bin/{*.so,*.so.*} ; do
-    a= patchelf --set-rpath '$ORIGIN' $i || continue
-done
-for i in bin/plugins/*/*.so ; do
-    a= patchelf --set-rpath '$ORIGIN/../../' $i || continue
-done
-fi
-
 # missed with other soname
-ln -s /usr/lib64/libjasper.so.4 bin/libjasper.so.1
-pack_file $PRODUCTDIR/bin/libjasper.so.1
+#ln -s /usr/lib64/libjasper.so.* bin/libjasper.so.1
+#pack_file $PRODUCTDIR/bin/libjasper.so.1
+ignore_lib_requires libjasper.so.1
+
+install_file $PRODUCTDIR/lithium-ecad.desktop /usr/share/applications/$PRODUCT.desktop
+fix_desktop_file "/opt/lithium_ecad-.*/launcher.sh"
+fix_desktop_file "/opt/lithium_ecad-.*/lithium-ecad.png"
 
-install_file lithium-ecad.desktop /usr/share/applications/$PRODUCT.desktop
-fix_desktop_file "/opt/lithium_ecad-.*/launcher.sh" $PRODUCT
-fix_desktop_file "/opt/lithium_ecad-.*/lithium-ecad.png" $PRODUCT
+install_file $PRODUCTDIR/lithium-ecad.png /usr/share/pixmaps/$PRODUCT.png
 
-install_file lithium-ecad.png /usr/share/pixmaps/$PRODUCT.png
+add_libs_requires
diff --git a/repack.d/lycheeslicer.sh b/repack.d/lycheeslicer.sh
index 1f917c60..7958a7f2 100755
--- a/repack.d/lycheeslicer.sh
+++ b/repack.d/lycheeslicer.sh
@@ -11,11 +11,8 @@ PRODUCTDIR=/opt/LycheeSlicer
 add_bin_link_command
 #add_bin_link_command $PRODUCTCUR $PRODUCT
 
-add_electron_deps
-
 fix_chrome_sandbox
 
 fix_desktop_file
 
-# ignore embedded libs
-filter_from_requires libQt5 node seamonkey thunderbird
+add_libs_requires
diff --git a/repack.d/master-pdf-editor.sh b/repack.d/master-pdf-editor.sh
index 330e9bcb..57727345 100755
--- a/repack.d/master-pdf-editor.sh
+++ b/repack.d/master-pdf-editor.sh
@@ -7,8 +7,6 @@ PRODUCT=masterpdfeditor5
 PRODUCTCUR=master-pdf-editor
 PRODUCTDIR=/opt/master-pdf-editor-5
 
-UNIREQUIRES="libsane.so.1 libz.so.1"
-
 . $(dirname $0)/common.sh
 
 add_bin_link_command
@@ -16,4 +14,5 @@ add_bin_link_command $PRODUCTCUR $PRODUCT
 
 fix_desktop_file
 
-add_qt5_deps
+add_libs_requires
+
diff --git a/repack.d/meridius.sh b/repack.d/meridius.sh
index 9c5e5371..ef726731 100755
--- a/repack.d/meridius.sh
+++ b/repack.d/meridius.sh
@@ -3,23 +3,11 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-PRODUCT="$(grep "^Name: " $SPEC | sed -e "s|Name: ||g" | head -n1)"
-PRODUCTDIR=/opt/$PRODUCT
-
 . $(dirname $0)/common.sh
 
-# move package to /opt
-ROOTDIR=$(basename $(find $BUILDROOT -mindepth 1 -maxdepth 1 -type d))
-mkdir -p $BUILDROOT/opt
-mv $BUILDROOT/$ROOTDIR $BUILDROOT$PRODUCTDIR
-subst "s|\"/$ROOTDIR/|\"$PRODUCTDIR/|" $SPEC
-
 fix_chrome_sandbox
 
-cd $BUILDROOT$PRODUCTDIR
-
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF > $BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Name=Meridius
 Exec=meridius
@@ -29,13 +17,11 @@ Icon=$PRODUCT
 Comment=Music Player for vk.com based on Electron, NuxtJS, Vue.
 Categories=AudioVideo;Audio;Video;Player
 EOF
-pack_file /usr/share/applications/$DESKTOPFILE
-
-install_file builder/icons/linux/256x256.png /usr/share/pixmaps/$PRODUCT.png
 
-cd - >/dev/null
+#install_file $PRODUCTDIR/io.github.purplehorrorrus.Meridius.desktop /usr/share/applications/$PRODUCT.desktop
+install_file $PRODUCTDIR/builder/icons/linux/256x256.png /usr/share/pixmaps/$PRODUCT.png
 
-add_bin_exec_command $PRODUCT
+add_bin_exec_command
 
 # remove broken discord integration
 # error: version `GLIBC_2.33' not found (required by ./python3)
diff --git a/repack.d/microsoft-edge-stable.sh b/repack.d/microsoft-edge-stable.sh
index c061901f..0592fe6d 100755
--- a/repack.d/microsoft-edge-stable.sh
+++ b/repack.d/microsoft-edge-stable.sh
@@ -13,7 +13,7 @@ PRODUCTDIR=/opt/microsoft/msedge
 
 for i in microsoft-edge-stable microsoft-edge-beta microsoft-edge-dev ; do
     [ "$i"  = "$PRODUCTCUR" ] && continue
-    subst "1iConflicts:$i" $SPEC
+    add_conflicts $i
 done
 
 
diff --git a/repack.d/mobirise.sh b/repack.d/mobirise.sh
index a52e0af3..0432047f 100755
--- a/repack.d/mobirise.sh
+++ b/repack.d/mobirise.sh
@@ -7,8 +7,6 @@ SPEC="$2"
 PRODUCT=mobirise
 PRODUCTDIR=/opt/Mobirise
 
-UNIREQUIRES="libjpeg.so.8"
-
 . $(dirname $0)/common-chromium-browser.sh
 
 add_bin_link_command
@@ -17,4 +15,6 @@ fix_desktop_file
 
 fix_chrome_sandbox
 
+# use both
 add_electron_deps
+add_libs_requires
diff --git a/repack.d/net.downloadhelper.coapp.noffmpeg.sh b/repack.d/net.downloadhelper.coapp.noffmpeg.sh
index b077561e..58d579dd 100755
--- a/repack.d/net.downloadhelper.coapp.noffmpeg.sh
+++ b/repack.d/net.downloadhelper.coapp.noffmpeg.sh
@@ -6,15 +6,16 @@ PRODUCTDIR=/opt/vdhcoapp
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: net.downloadhelper.coapp' $SPEC
+add_conflicts net.downloadhelper.coapp
+
+add_unirequires /usr/bin/xdg-open
+add_unirequires /usr/bin/ffmpeg /usr/bin/ffplay /usr/bin/ffprobe
 
 # use xdg-open from the system
 rm -v .$PRODUCTDIR/xdg-open
 ln -s /usr/bin/xdg-open .$PRODUCTDIR/xdg-open
-add_unirequires /usr/bin/xdg-open
-add_unirequires /usr/bin/ffmpeg /usr/bin/ffplay /usr/bin/ffprobe
 
-cat <<EOF > net.downloadhelper.coapp.json
+cat <<EOF | create_file /usr/lib64/mozilla/native-messaging-hosts/net.downloadhelper.coapp.json
 {
   "type": "stdio",
   "allowed_extensions": [
@@ -26,9 +27,8 @@ cat <<EOF > net.downloadhelper.coapp.json
   "path": "$PRODUCTDIR/vdhcoapp"
 }
 EOF
-install_file net.downloadhelper.coapp.json /usr/lib64/mozilla/native-messaging-hosts/net.downloadhelper.coapp.json
 
-cat <<EOF > net.downloadhelper.coapp.json
+cat <<EOF | create_file /etc/chromium/native-messaging-hosts/net.downloadhelper.coapp.json
 {
   "type": "stdio",
   "allowed_origins": [
@@ -42,4 +42,3 @@ cat <<EOF > net.downloadhelper.coapp.json
   "path": "$PRODUCTDIR/vdhcoapp"
 }
 EOF
-install_file net.downloadhelper.coapp.json /etc/chromium/native-messaging-hosts/net.downloadhelper.coapp.json
diff --git a/repack.d/nwjs-ffmpeg-prebuilt.sh b/repack.d/nwjs-ffmpeg-prebuilt.sh
index c73d1f01..5bfda073 100755
--- a/repack.d/nwjs-ffmpeg-prebuilt.sh
+++ b/repack.d/nwjs-ffmpeg-prebuilt.sh
@@ -6,7 +6,7 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: ffmpeg-plugin-browser' $SPEC
-subst '1iProvides: ffmpeg-plugin-browser' $SPEC
+add_conflicts ffmpeg-plugin-browser
+add_provides ffmpeg-plugin-browser
 
 add_libs_requires
diff --git a/repack.d/onlyoffice-desktopeditors.sh b/repack.d/onlyoffice-desktopeditors.sh
index e89fab44..6073179b 100755
--- a/repack.d/onlyoffice-desktopeditors.sh
+++ b/repack.d/onlyoffice-desktopeditors.sh
@@ -12,6 +12,7 @@ PRODUCTDIR=/opt/onlyoffice
 # $ rpm -qf /usr/lib64/LibreOffice/share/fonts/truetype/opens___.ttf
 #LibreOffice-common-7.0.1.2-alt1.0.p9.x86_64
 
+# ALT only
 add_requires fonts-ttf-liberation fonts-ttf-dejavu
 
 # pack icons
diff --git a/repack.d/opera-stable.sh b/repack.d/opera-stable.sh
index 0cc832f3..e3cd72d5 100755
--- a/repack.d/opera-stable.sh
+++ b/repack.d/opera-stable.sh
@@ -13,7 +13,7 @@ PRODUCTDIR=/opt/$PRODUCTCUR
 
 for i in opera-stable opera-beta opera-developer ; do
     [ "$i"  = "$PRODUCTCUR0" ] && continue
-    subst "1iConflicts:$i" $SPEC
+    add_conflicts $i
 done
 
 set_alt_alternatives 65
diff --git a/repack.d/pfusp.sh b/repack.d/pfusp.sh
index 906c15b9..4f0a614c 100755
--- a/repack.d/pfusp.sh
+++ b/repack.d/pfusp.sh
@@ -13,15 +13,6 @@ for i in opt/pfusp/consumables/pfuspconsumables \
    add_bin_link_command $(basename $i) /$i
 done
 
-create_file()
-{
-    local t="$1"
-    local l="$(basename $t)"
-    cat >$l
-    install_file $l $t
-}
-
-
 PFUSCANNER="pfusp"
 
 cat <<EOF | create_file /opt/pfusp/etc/$PFUSCANNER.conf
diff --git a/repack.d/pgadmin4-desktop.sh b/repack.d/pgadmin4-desktop.sh
index 2496b4ab..e90ba530 100755
--- a/repack.d/pgadmin4-desktop.sh
+++ b/repack.d/pgadmin4-desktop.sh
@@ -6,16 +6,17 @@ SPEC="$2"
 PRODUCT=pgadmin4
 PRODUCTDIR=/opt/pgadmin4
 
-UNIREQUIRES="xdg-utils libatomic.so.1"
-
 . $(dirname $0)/common.sh
 
 move_to_opt /usr/pgadmin4
 
 VERSION=$(grep "^Version:" $SPEC | sed -e "s|Version: ||")
 
+add_requires xdg-utils libatomic.so.1
 add_requires pgadmin4-server = $VERSION
 
 fix_desktop_file /usr/pgadmin4/bin/pgadmin4
 
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT
+
+add_libs_requires
diff --git a/repack.d/pgadmin4-server.sh b/repack.d/pgadmin4-server.sh
index 2c33711b..f3156a67 100755
--- a/repack.d/pgadmin4-server.sh
+++ b/repack.d/pgadmin4-server.sh
@@ -5,9 +5,10 @@ BUILDROOT="$1"
 SPEC="$2"
 PRODUCTDIR=/opt/pgadmin4
 
-UNIREQUIRES="python3 libkrb5.so.3 libpq.so.5"
-
 . $(dirname $0)/common.sh
 
 move_to_opt /usr/pgadmin4
 
+add_requires python3 libkrb5.so.3 libpq.so.5
+
+add_libs_requires
diff --git a/repack.d/plex-desktop.sh b/repack.d/plex-desktop.sh
index 60a7a563..5dbad2a6 100755
--- a/repack.d/plex-desktop.sh
+++ b/repack.d/plex-desktop.sh
@@ -26,20 +26,3 @@ done
 cd >/dev/null
 
 add_libs_requires
-
-exit
-
-add_requires glib2 glxinfo libalsa libdbus libdrm libEGL libexpat fontconfig libfreetype libgbm libGLX libharfbuzz libjpeg8 liblcms2 libminizip libnspr libnss libOpenGL libopus libpci libpulseaudio libsnappy libtiff5 libudev1 libva libwayland-client libwayland-cursor libwayland-egl libwayland-server libX11 libxcb libxcb-render-util libxcbutil-icccm libxcbutil-image libxcbutil-keysyms libXcomposite libXdamage libXext libXfixes libXinerama libxkbcommon libxkbcommon-x11 libxkbfile libxml2 libXrandr libXrender libXScrnSaver libxshmfence libxslt libXtst which zlib
-
-if epm assure patchelf ; then
-for i in bin/Plex "bin/Plex Transcoder" ; do
-    a= patchelf --set-rpath '$ORIGIN/../lib' "$i" || continue
-done
-for i in lib/lib*.so* ; do
-    a= patchelf --set-rpath '$ORIGIN' "$i" || continue
-done
-fi
-
-subst '1i%filter_from_requires /^libtiff.so.5(LIBTIFF_.*/d' $SPEC
-
-exit 0
diff --git a/repack.d/portmaster.sh b/repack.d/portmaster.sh
index 26619527..b7425e1c 100755
--- a/repack.d/portmaster.sh
+++ b/repack.d/portmaster.sh
@@ -15,13 +15,11 @@ remove_file $PRODUCTDIR/portmaster.desktop
 install -D -m644 .$PRODUCTDIR/portmaster_notifier.desktop ./usr/share/applications/portmaster_notifier.desktop
 remove_file $PRODUCTDIR/portmaster_notifier.desktop
 
-mkdir -p $BUILDROOT/usr/bin/
-cat <<EOF >$BUILDROOT/usr/bin/$PRODUCT
+add_bin_exec_command
+cat <<EOF >usr/bin/$PRODUCT
 #!/bin/sh
 $PRODUCTDIR/portmaster-start app --data=$PRODUCTDIR "\$@"
 EOF
-chmod a+x $BUILDROOT/usr/bin/$PRODUCT
-pack_file /usr/bin/$PRODUCT
 
 echo "Dowloading ... "
 .$PRODUCTDIR/portmaster-start --data $BUILDROOT$PRODUCTDIR update || fatal
diff --git a/repack.d/postman.sh b/repack.d/postman.sh
index 202ab450..f13a872b 100755
--- a/repack.d/postman.sh
+++ b/repack.d/postman.sh
@@ -6,9 +6,8 @@ SPEC="$2"
 
 . $(dirname $0)/common-chromium-browser.sh
 
-add_bin_link_command $PRODUCT $PRODUCTDIR/$PRODUCT
+add_bin_link_command
 
 fix_chrome_sandbox
 
 add_electron_deps
-
diff --git a/repack.d/pycharm-community.sh b/repack.d/pycharm-community.sh
index fe9b33c5..2fad039e 100755
--- a/repack.d/pycharm-community.sh
+++ b/repack.d/pycharm-community.sh
@@ -21,15 +21,13 @@ add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCT.sh
 # TODO:
 # https://github.com/archlinux/svntogit-community/blob/packages/pycharm-community-edition/trunk/pycharm.sh
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
 Name=PyCharm Community Edition
 Comment=Python IDE for Professional Developers
-Exec=/usr/bin/pycharm %f
+Exec=pycharm %f
 Icon=pycharm
 Terminal=false
 StartupNotify=true
@@ -37,8 +35,6 @@ StartupWMClass=jetbrains-pycharm-ce
 Categories=Development;IDE;Python;
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 install_file $PRODUCTDIR/bin/$PRODUCT.png /usr/share/pixmaps/
 install_file $PRODUCTDIR/bin/$PRODUCT.svg /usr/share/pixmaps/
 
@@ -69,14 +65,6 @@ for i in $PRODUCTDIR/plugins/python-ce/helpers/pydev/_pydevd_frame_eval/*-{win32
     remove_file $i
 done
 
-cd $BUILDROOT$PRODUCTDIR/ || exit
-
-if epm assure patchelf ; then
-for i in jbr/lib/lib*.so  ; do
-    a= patchelf --set-rpath '$ORIGIN/server:$ORIGIN' $i
-done
-fi
-
 subst 's|%dir "'$PRODUCTDIR'/"||' $SPEC
 subst 's|%dir "'$PRODUCTDIR'/bin/"||' $SPEC
 subst 's|%dir "'$PRODUCTDIR'/lib/"||' $SPEC
@@ -87,4 +75,4 @@ pack_dir $PRODUCTDIR/bin/
 pack_dir $PRODUCTDIR/lib/
 pack_dir $PRODUCTDIR/plugins/
 
-set_autoreq 'yes,nopython,nopython3,nomono,nomonolib'
+add_libs_requires
diff --git a/repack.d/pycharm-professional.sh b/repack.d/pycharm-professional.sh
index ff691f76..e26b5d43 100755
--- a/repack.d/pycharm-professional.sh
+++ b/repack.d/pycharm-professional.sh
@@ -18,15 +18,13 @@ subst "s|^Summary:.*|Summary: The Python IDE for Professional Developers (Free 3
 move_to_opt "/pycharm-*"
 add_bin_link_command $PRODUCT $PRODUCTDIR/bin/$PRODUCTCUR.sh
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF |create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
 Name=PyCharm Professional Edition
 Comment=Python IDE for Professional Developers (Free 30-day trial available)
-Exec=/usr/bin/$PRODUCT %f
+Exec=$PRODUCT %f
 Icon=$PRODUCT
 Terminal=false
 StartupNotify=true
@@ -34,8 +32,6 @@ StartupWMClass=jetbrains-pycharm-pro
 Categories=Development;IDE;Python;
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 install_file $PRODUCTDIR/bin/$PRODUCTCUR.png /usr/share/pixmaps/$PRODUCT.png
 install_file $PRODUCTDIR/bin/$PRODUCTCUR.svg /usr/share/pixmaps/$PRODUCT.svg
 
@@ -78,17 +74,6 @@ cd $BUILDROOT$PRODUCTDIR/ || exit
 file=$(basename $(ls $BUILDROOT$PRODUCTDIR/plugins/tailwindcss/server/node.napi.musl-*.node))
 [ -n "$file" ] && remove_file $PRODUCTDIR/plugins/tailwindcss/server/$file
 
-if epm assure patchelf ; then
-for i in jbr/lib/lib*.so  ; do
-    a= patchelf --set-rpath '$ORIGIN/server:$ORIGIN' $i
-done
-
-for i in plugins/remote-dev-server/selfcontained/lib/lib*.so*  ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-fi
-
-
 subst 's|%dir "'$PRODUCTDIR'/"||' $SPEC
 subst 's|%dir "'$PRODUCTDIR'/bin/"||' $SPEC
 subst 's|%dir "'$PRODUCTDIR'/lib/"||' $SPEC
@@ -99,5 +84,4 @@ pack_dir $PRODUCTDIR/bin/
 pack_dir $PRODUCTDIR/lib/
 pack_dir $PRODUCTDIR/plugins/
 
-# set_autoreq 'yes,nopython,nopython3,nomono,nomonolib'
 add_libs_requires
diff --git a/repack.d/realvnc-vnc-server.sh b/repack.d/realvnc-vnc-server.sh
index 095dde58..4de75a73 100755
--- a/repack.d/realvnc-vnc-server.sh
+++ b/repack.d/realvnc-vnc-server.sh
@@ -6,9 +6,6 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: tigervnc' $SPEC
+add_conflicts tigervnc
 
-filter_from_requires '\\/bin\\/chkconfig' '\\/bin\\/service' '\\/lib\\/svc\\/share\\/smf_include.sh'
-
-# set_autoreq 'yes'
 add_libs_requires
diff --git a/repack.d/realvnc-vnc-viewer.sh b/repack.d/realvnc-vnc-viewer.sh
index 36e6c462..4de75a73 100755
--- a/repack.d/realvnc-vnc-viewer.sh
+++ b/repack.d/realvnc-vnc-viewer.sh
@@ -6,7 +6,6 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-subst '1iConflicts: tigervnc' $SPEC
+add_conflicts tigervnc
 
-# set_autoreq 'yes'
 add_libs_requires
diff --git a/repack.d/sbb.sh b/repack.d/sbb.sh
index b7b84701..23b14ebf 100755
--- a/repack.d/sbb.sh
+++ b/repack.d/sbb.sh
@@ -3,9 +3,6 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-#REQUIRES="libcurl-gnutls-compat postgresql"
-#PREINSTALL_PACKAGES="libcurl libsqlite3 libX11 libxml2 zlib $REQUIRES"
-
 . $(dirname $0)/common.sh
 
 # see https://bugzilla.altlinux.org/47890
@@ -14,15 +11,3 @@ ignore_lib_requires "libcurl-gnutls.so.4"
 add_requires "libcurl-gnutls.so.4(64bit)"
 
 add_libs_requires
-
-exit
-
-# ошибка: Неудовлетворенные зависимости:
-#    libcurl.so.4(CURL_OPENSSL_3)(64bit) нужен для sbb-02.008.02-alt1.repacked.with.epm.20.x86_64
-
-subst '1i%filter_from_requires /^libcurl.so.4(CURL_OPENSSL_.*/d' $SPEC
-subst '1i%filter_from_requires /^libcurl-gnutls.so.4(CURL_GNUTLS_.*/d' $SPEC
-
-add_requires $REQUIRES
-
-set_autoreq 'yes'
diff --git a/repack.d/snap4arduino.sh b/repack.d/snap4arduino.sh
index 392c99ee..6563aa04 100755
--- a/repack.d/snap4arduino.sh
+++ b/repack.d/snap4arduino.sh
@@ -8,17 +8,11 @@ PRODUCT=snap4arduino
 
 . $(dirname $0)/common.sh
 
-# TODO: move to json in pack.d
-subst "s|^Group:.*|Group: Development/Other|" $SPEC
-subst "s|^License: unknown$|License: AGPL-3.0|" $SPEC
-subst "s|^URL:.*|URL: https://snap4arduino.rocks/|" $SPEC
-subst "s|^Summary:.*|Summary: A modification of the Snap! visual programming language that lets you seamlessly interact with almost all versions of the Arduino board.|" $SPEC
-
 add_bin_link_command $PRODUCT $PRODUCTDIR/run
 
 # TODO: copy icons
 
-cat <<EOF >$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Type=Application
 Version=1.0
@@ -28,6 +22,5 @@ Name=Snap4Arduino
 Name[en]=Snap4Arduino
 GenericName[en]=Use Snap! to control Arduino boards. Arduino goes lambda!
 EOF
-install_file $PRODUCT.desktop /usr/share/applications/$PRODUCT.desktop
 
 add_libs_requires
diff --git a/repack.d/softmaker-freeoffice-2021.sh b/repack.d/softmaker-freeoffice-2021.sh
index 798d9d7c..cc24275d 100755
--- a/repack.d/softmaker-freeoffice-2021.sh
+++ b/repack.d/softmaker-freeoffice-2021.sh
@@ -7,15 +7,11 @@ PRODUCT=freeoffice2021
 PRODUCTDIR=/usr/share/freeoffice2021
 VERSION=free21
 
-#PREINSTALL_PACKAGES="coreutils file gawk grep libcurl libGL libX11 libXext libXmu libXrandr libXrender sed xprop"
-UNIREQUIRES="coreutils file gawk grep sed xprop"
-
 . $(dirname $0)/common.sh
 
 remove_file $PRODUCTDIR/add_rpm_repo.sh
 
-filter_from_requires dnf gconftool-2 gnomevfs-info kfile rpmkeys yum
-
+add_requires coreutils file gawk grep sed xprop
 #use_system_xdg $PRODUCTDIR/mime/xdg-utils
 remove_dir $PRODUCTDIR/mime/xdg-utils
 
diff --git a/repack.d/sublime-text.sh b/repack.d/sublime-text.sh
index 34c43425..3a5dc174 100755
--- a/repack.d/sublime-text.sh
+++ b/repack.d/sublime-text.sh
@@ -10,13 +10,6 @@ PRODUCTDIR=/opt/$PRODUCT
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Text tools|" $SPEC
-subst "s|^URL:.*|URL: https://www.sublimetext.com|" $SPEC
-subst "s|^Summary:.*|Summary: Sophisticated text editor for code, html and prose|" $SPEC
-subst "s|^License: unknown$|License: Proprietary|" $SPEC
-
-#filter_from_requires "python3(sublime_api)"
-
 for res in 128x128 16x16 256x256 32x32 48x48; do
     install_file .$PRODUCTDIR/Icon/${res}/sublime-text.png /usr/share/icons/hicolor/${res}/apps/sublime-text.png
 done
diff --git a/repack.d/synology-drive.sh b/repack.d/synology-drive.sh
index b8a289ab..4eb6a155 100755
--- a/repack.d/synology-drive.sh
+++ b/repack.d/synology-drive.sh
@@ -6,8 +6,6 @@ SPEC="$2"
 PRODUCT=synology-drive
 PRODUCTDIR=/opt/Synology/SynologyDrive
 
-PREINSTALL_PACKAGES="coreutils glib2 libdbus libgtk+3 libICE libpango libSM libX11 libxcb libxkbcommon libXrender fontconfig libfreetype"
-
 . $(dirname $0)/common.sh
 
 cd $BUILDROOT/$PRODUCTDIR || exit
@@ -38,25 +36,3 @@ remove_file $PRODUCTDIR/package/cloudstation/icon-overlay/15/lib/plugin-cb.so ||
 # https://www.synology.com/api/support/findDownloadInfo?lang=ru-ru&product=DS2411%2B&major=6&minor=2
 
 add_libs_requires
-exit
-
-if epm assure patchelf ; then
-for i in lib/lib*.so.* package/cloudstation/lib/lib*.so.* ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-
-# /opt/Synology/SynologyDrive/package/cloudstation/lib/plugins/designer/libqquickwidget.so
-for i in package/cloudstation/lib/plugins/designer/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN../../' $i
-done
-
-for i in bin/launcher package/cloudstation/bin/cloud-drive-* ; do
-    a= patchelf --set-rpath '$ORIGIN/../lib' $i
-done
-fi
-
-# TODO: some dependency leak?
-# ignore embedded libs
-filter_from_requires libQt5
-
-
diff --git a/repack.d/teamspeak3.sh b/repack.d/teamspeak3.sh
index cb360402..926ec29c 100755
--- a/repack.d/teamspeak3.sh
+++ b/repack.d/teamspeak3.sh
@@ -5,11 +5,6 @@ SPEC="$2"
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Video|" $SPEC
-#subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: http://www.teamspeak.com|" $SPEC
-subst "s|^Summary:.*|Summary: TeamSpeak is software for quality voice communication via the Internet|" $SPEC
-
 add_bin_link_command $PRODUCT $PRODUCTDIR/ts3client_runscript.sh
 #add_bin_link_command $PRODUCT $PRODUCTDIR/ts3client_linux_amd64
 
diff --git a/repack.d/teamspeak5.sh b/repack.d/teamspeak5.sh
index c575a392..622b14b9 100755
--- a/repack.d/teamspeak5.sh
+++ b/repack.d/teamspeak5.sh
@@ -8,20 +8,13 @@ PRODUCTDIR=/opt/$PRODUCTCUR
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Video|" $SPEC
-#subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: http://www.teamspeak.com|" $SPEC
-subst "s|^Summary:.*|Summary: TeamSpeak is software for quality voice communication via the Internet|" $SPEC
-
 add_bin_link_command $PRODUCTCUR $PRODUCTDIR/TeamSpeak
 add_bin_link_command $PRODUCT $PRODUCTCUR
 
 add_electron_deps
 fix_chrome_sandbox
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Encoding=UTF-8
 Name=TeamSpeak 5
@@ -35,6 +28,5 @@ Type=Application
 Categories=Network;Application
 StartupWMClass=TeamSpeak 5
 EOF
-pack_file /usr/share/applications/$PRODUCT.desktop
 
 install_file .$PRODUCTDIR/logo-128.png /usr/share/pixmaps/$PRODUCT.png
diff --git a/repack.d/ungoogled-chromium.sh b/repack.d/ungoogled-chromium.sh
index 26f645cf..d982cf94 100755
--- a/repack.d/ungoogled-chromium.sh
+++ b/repack.d/ungoogled-chromium.sh
@@ -8,13 +8,6 @@ PRODUCT=ungoogled-chromium
 
 . $(dirname $0)/common-chromium-browser.sh
 
-# move package to /opt
-ROOTDIR=$(basename $(find $BUILDROOT -mindepth 1 -maxdepth 1 -type d))
-subst "s|^License: unknown$|License: BSD-3-Clause license|" $SPEC
-subst "s|^Summary:.*|Summary: Google Chromium, sans integration with Google|" $SPEC
-
-move_to_opt /$ROOTDIR
-
 add_bin_link_command $PRODUCT $PRODUCTDIR/chrome-wrapper
 
 use_system_xdg
@@ -24,10 +17,7 @@ install_file $PRODUCTDIR/product_logo_48.png /usr/share/pixmaps/$PRODUCT.png
 #fix duplication .desktop file
 subst "s|chromium-devel|ungoogled-chromium|" $BUILDROOT/opt/$PRODUCT/chrome-wrapper
 
-
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -43,12 +33,9 @@ GenericName=Ungoogle Chromium Web Browser
 GenericName[ru]=Веб-браузер Ungoogled Chromium
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 set_alt_alternatives 65
 
 [ -f .$PRODUCTDIR/chrome_sandbox ] && move_file $PRODUCTDIR/chrome_sandbox $PRODUCTDIR/chrome-sandbox
 fix_chrome_sandbox
 
 add_chromium_deps
-
diff --git a/repack.d/unigine-heaven.sh b/repack.d/unigine-heaven.sh
index d49a1e13..5f554d91 100755
--- a/repack.d/unigine-heaven.sh
+++ b/repack.d/unigine-heaven.sh
@@ -9,11 +9,6 @@ PRODUCTDIR=/opt/unigine-heaven
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Graphics|" $SPEC
-subst "s|^License: unknown$|License: Proprietary|" $SPEC
-subst "s|^URL:.*|URL: https://benchmark.unigine.com/heaven|" $SPEC
-subst "s|^Summary:.*|Summary: Unigine Heaven (Unigine Benchmark)|" $SPEC
-
 mkdir -p $BUILDROOT$PRODUCTDIR/
 for i in bin data documentation ; do
     mv $BUILDROOT/$i $BUILDROOT$PRODUCTDIR/$i
@@ -51,9 +46,7 @@ pack_file /usr/bin/heaven
 
 install_file $PRODUCTDIR/data/launcher/icon.png /usr/share/pixmaps/$PRODUCT.png
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Name=Unigine Heaven 2009
@@ -63,6 +56,4 @@ Exec=heaven
 Terminal=false
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 add_libs_requires
diff --git a/repack.d/unigine-superposition.sh b/repack.d/unigine-superposition.sh
index cfefeb65..2ea3bfa5 100755
--- a/repack.d/unigine-superposition.sh
+++ b/repack.d/unigine-superposition.sh
@@ -9,11 +9,6 @@ PRODUCTDIR=/opt/unigine-superposition
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Graphics|" $SPEC
-subst "s|^License: unknown$|License: Proprietary|" $SPEC
-subst "s|^URL:.*|URL: https://benchmark.unigine.com/superposition|" $SPEC
-subst "s|^Summary:.*|Summary: Unigine Superposition (Unigine Benchmark)|" $SPEC
-
 # move subdirs
 mkdir -p $BUILDROOT$PRODUCTDIR/
 for i in bin data docs ; do
@@ -57,9 +52,7 @@ remove_file $PRODUCTDIR/bin/qt/lib/libQt5QuickTest.so.5
 add_bin_exec_command superposition $PRODUCTDIR/bin/launcher
 add_bin_link_command $PRODUCT /usr/bin/superposition
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -71,6 +64,4 @@ Terminal=false
 Categories=Launcher;Benchmark;
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 add_libs_requires
diff --git a/repack.d/unigine-valley.sh b/repack.d/unigine-valley.sh
index 579d8fe1..4fd1786f 100755
--- a/repack.d/unigine-valley.sh
+++ b/repack.d/unigine-valley.sh
@@ -9,11 +9,6 @@ PRODUCTDIR=/opt/unigine-valley
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Graphics|" $SPEC
-subst "s|^License: unknown$|License: Proprietary|" $SPEC
-subst "s|^URL:.*|URL: https://benchmark.unigine.com/valley|" $SPEC
-subst "s|^Summary:.*|Summary: Unigine Valley (Unigine Benchmark)|" $SPEC
-
 mkdir -p $BUILDROOT$PRODUCTDIR/
 for i in bin data documentation ; do
     mv $BUILDROOT/$i $BUILDROOT$PRODUCTDIR/$i
@@ -31,16 +26,6 @@ done
 pack_dir $PRODUCTDIR
 pack_dir $PRODUCTDIR/bin
 
-
-add_bin_link_command $PRODUCT /usr/bin/valley
-
-#epm assure patchelf || exit
-
-#for i in *_x64 lib*_x64.so* ; do
-#    a= patchelf --set-rpath '$ORIGIN' $i
-#done
-
-
 mkdir -p $BUILDROOT/usr/bin
 cat <<EOF >$BUILDROOT/usr/bin/valley
 #!/bin/sh
@@ -51,11 +36,11 @@ EOF
 chmod a+x $BUILDROOT/usr/bin/valley
 pack_file /usr/bin/valley
 
+add_bin_link_command $PRODUCT /usr/bin/valley
+
 install_file $PRODUCTDIR/data/launcher/icon.png /usr/share/pixmaps/$PRODUCT.png
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Name=Unigine Valley 2013
@@ -65,6 +50,4 @@ Exec=valley
 Terminal=false
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 add_libs_requires
diff --git a/repack.d/virtualhere.sh b/repack.d/virtualhere.sh
index d404a815..4eb49312 100755
--- a/repack.d/virtualhere.sh
+++ b/repack.d/virtualhere.sh
@@ -8,13 +8,7 @@ BINFILE=vhusbd
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Networking/Remote access|" $SPEC
-#subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: https://virtualhere.com/usb_server_software|" $SPEC
-subst "s|^Summary:.*|Summary: Generic VirtualHere USB Server|" $SPEC
-
-mkdir -p $BUILDROOT/etc/systemd/system/
-cat << EOF > $BUILDROOT/etc/systemd/system/$PRODUCT.service
+cat << EOF | create_file /etc/systemd/system/$PRODUCT.service
 [Unit]
 Description=VirtualHere Server
 After=network.target
@@ -28,6 +22,4 @@ EOF
 mkdir -p $BUILDROOT/etc/$PRODUCT/
 pack_dir /etc/$PRODUCT
 
-pack_file /etc/systemd/system/$PRODUCT.service
-
 add_libs_requires
diff --git a/repack.d/vivaldi-snapshot.sh b/repack.d/vivaldi-snapshot.sh
index 1466d999..f7aa9077 100755
--- a/repack.d/vivaldi-snapshot.sh
+++ b/repack.d/vivaldi-snapshot.sh
@@ -9,7 +9,7 @@ PRODUCTDIR=/opt/$PRODUCTCUR
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts:vivaldi-stable' $SPEC
+add_conflicts vivaldi-stable
 
 set_alt_alternatives 65
 
diff --git a/repack.d/vivaldi-stable.sh b/repack.d/vivaldi-stable.sh
index 46299158..a446cfed 100755
--- a/repack.d/vivaldi-stable.sh
+++ b/repack.d/vivaldi-stable.sh
@@ -9,7 +9,7 @@ PRODUCTDIR=/opt/vivaldi
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts:vivaldi-snapshot' $SPEC
+add_conflicts vivaldi-snapshot
 
 set_alt_alternatives 65
 
diff --git a/repack.d/vk-calls.sh b/repack.d/vk-calls.sh
index 4c3a9669..2977f53c 100755
--- a/repack.d/vk-calls.sh
+++ b/repack.d/vk-calls.sh
@@ -33,13 +33,3 @@ pack_file /etc/tmpfiles.d/$PRODUCT.conf
 
 
 add_libs_requires
-# autoreq is disabled: don't patch elf due requires
-exit
-
-
-if epm assure patchelf ; then
-for i in .$PRODUCTDIR/lib* .$PRODUCTDIR/$PRODUCT  ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-fi
-
diff --git a/repack.d/vk.sh b/repack.d/vk.sh
index bf9e40e8..4a6c4a01 100755
--- a/repack.d/vk.sh
+++ b/repack.d/vk.sh
@@ -17,5 +17,5 @@ add_electron_deps
 
 remove_dir /etc
 
-rm -f $BUILDROOT/usr/bin/vk
+rm -f usr/bin/vk
 add_bin_link_command
diff --git a/repack.d/vkteams.sh b/repack.d/vkteams.sh
index 38263ff3..db3bf1a4 100755
--- a/repack.d/vkteams.sh
+++ b/repack.d/vkteams.sh
@@ -7,11 +7,6 @@ PRODUCT=vkteams
 
 . $(dirname $0)/common.sh
 
-subst "s|^Group:.*|Group: Networking/Instant messaging|" $SPEC
-#subst "s|^License: unknown$|License: GPLv2|" $SPEC
-subst "s|^URL:.*|URL: https://teams.vk.com/|" $SPEC
-subst "s|^Summary:.*|Summary: VK Teams|" $SPEC
-
 add_bin_exec_command $PRODUCT
 # Hack against https://bugzilla.altlinux.org/43779
 # Create non writeable local .desktop file
@@ -22,9 +17,7 @@ LDT=~/.local/share/applications/vkteamsdesktop.desktop
 exec $PRODUCTDIR/$PRODUCT "\$@"
 EOF
 
-# create desktop file
-mkdir -p $BUILDROOT/usr/share/applications/
-cat <<EOF >$BUILDROOT/usr/share/applications/$PRODUCT.desktop
+cat <<EOF | create_file /usr/share/applications/$PRODUCT.desktop
 [Desktop Entry]
 Version=1.0
 Type=Application
@@ -38,40 +31,9 @@ MimeType=x-scheme-handler/vkteams;x-scheme-handler/myteam-messenger;
 Keywords=vkteams;
 EOF
 
-pack_file /usr/share/applications/$PRODUCT.desktop
-
 ICONURL=https://is1-ssl.mzstatic.com/image/thumb/Purple122/v4/a8/36/64/a83664d6-9401-a8a4-c845-89e0c3ab0c89/icons-bundle.png/246x0w.png
 install_file $ICONURL /usr/share/pixmaps/$PRODUCT.png
 
 subst "s|.*$PRODUCTDIR/unittests.*||" $SPEC
 
 add_libs_requires
-# autoreq is disabled: don't patch elf due requires
-exit
-
-cd $BUILDROOT$PRODUCTDIR
-
-if epm assure patchelf ; then
-
-for i in $PRODUCT  ; do
-    a= patchelf --set-rpath '$ORIGIN/lib' $i
-done
-
-for i in lib/*.so.*  ; do
-    a= patchelf --set-rpath '$ORIGIN' $i
-done
-
-for i in QtQuick.2/lib*.so  ; do
-    a= patchelf --set-rpath '$ORIGIN/../lib' $i
-done
-
-for i in QtQuick/*/lib*.so  ; do
-    a= patchelf --set-rpath '$ORIGIN/../../lib' $i
-done
-
-fi
-
-# FIXME: check the full list
-filter_from_requires libQt5 libxcb "libX.*"
-
-set_autoreq 'yes'
diff --git a/repack.d/weasis.sh b/repack.d/weasis.sh
index 90dcbdac..f75fa066 100755
--- a/repack.d/weasis.sh
+++ b/repack.d/weasis.sh
@@ -26,16 +26,3 @@ fix_desktop_file "/opt/weasis/lib/Weasis"
 fix_desktop_file "/opt/weasis/lib/Dicomizer"
 
 add_libs_requires
-# autoreq is disabled: don't patch elf due requires
-exit
-
-cd $BUILDROOT$PRODUCTDIR/ || fatal
-if epm assure patchelf ; then
-    for i in lib/runtime/lib/lib*.so ; do
-        a= patchelf --set-rpath '$ORIGIN:$ORIGIN/server' $i
-    done
-fi
-
-#add_findreq_skiplist "$PRODUCTDIR/runtime/lib/amd64/libav*.so"
-
-set_autoreq 'yes'
diff --git a/repack.d/webdavmailrucloud.sh b/repack.d/webdavmailrucloud.sh
index 6944e893..1ac70ab9 100755
--- a/repack.d/webdavmailrucloud.sh
+++ b/repack.d/webdavmailrucloud.sh
@@ -7,16 +7,10 @@ PRODUCTDIR=/opt/WebDAVCloudMailRu
 
 . $(dirname $0)/common.sh
 
-subst "s|^License: unknown$|License: MIT|" $SPEC
-subst "s|^Url:.*|Url: https://github.com/yar229/WebDavMailRuCloud|" $SPEC
-subst "s|^Summary:.*|Summary: WebDAV emulator for Cloud.mail.ru / Yandex.Disk|" $SPEC
-
-mkdir -p usr/bin
+add_bin_exec_command wdmrc $PRODUCTDIR/wdmrc.dll
 cat <<EOF >usr/bin/wdmrc
 #!/bin/sh
 dotnet $PRODUCTDIR/wdmrc.dll "\$@"
 EOF
-chmod a+x usr/bin/wdmrc
-pack_file /usr/bin/wdmrc
 
 add_requires dotnet-6.0
diff --git a/repack.d/wing-personal10.sh b/repack.d/wing-personal10.sh
index 8132d83e..1720ea2b 100755
--- a/repack.d/wing-personal10.sh
+++ b/repack.d/wing-personal10.sh
@@ -16,10 +16,9 @@ add_bin_link_command $PRODUCT $PRODUCTDIR/$PRODUCTCUR
 
 add_libs_requires
 
-
 for size in 16 32 48 64 128
 do
-    install_file $PRODUCTDIR/resources/wing$size.png //usr/share/icons/hicolor/${size}x${size}/apps/$PRODUCT.png
+    install_file $PRODUCTDIR/resources/wing$size.png /usr/share/icons/hicolor/${size}x${size}/apps/$PRODUCT.png
 done
 
 install_file $PRODUCTDIR/resources/linux/desktop/wing-personal10.desktop /usr/share/applications/$PRODUCT.desktop
diff --git a/repack.d/yandex-browser-beta.sh b/repack.d/yandex-browser-beta.sh
index 28b3461e..5dc6121c 100755
--- a/repack.d/yandex-browser-beta.sh
+++ b/repack.d/yandex-browser-beta.sh
@@ -10,10 +10,8 @@ PRODUCTDIR=/opt/yandex/browser-beta
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts: yandex-browser-stable' $SPEC
-subst '1iConflicts: yandex-browser-corporate' $SPEC
-subst "s|^\(Version:.*\)|\1\nProvides: yandex-browser = %version|" $SPEC
-
+add_conflicts yandex-browser-stable yandex-browser-corporate
+add_provides "yandex-browser = %version"
 
 add_findreq_skiplist $PRODUCTDIR/update-ffmpeg
 
diff --git a/repack.d/yandex-browser-corporate.sh b/repack.d/yandex-browser-corporate.sh
index f8909ddc..5d6b73cc 100755
--- a/repack.d/yandex-browser-corporate.sh
+++ b/repack.d/yandex-browser-corporate.sh
@@ -10,9 +10,8 @@ PRODUCTDIR=/opt/yandex/browser
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts: yandex-browser-stable' $SPEC
-subst '1iConflicts: yandex-browser-beta' $SPEC
-subst "s|^\(Version:.*\)|\1\nProvides: yandex-browser = %version|" $SPEC
+add_conflicts yandex-browser-stable yandex-browser-beta
+add_provides "yandex-browser = %version"
 
 add_findreq_skiplist $PRODUCTDIR/update-ffmpeg
 
diff --git a/repack.d/yandex-browser-stable.sh b/repack.d/yandex-browser-stable.sh
index 4c59f8c4..23f9860e 100755
--- a/repack.d/yandex-browser-stable.sh
+++ b/repack.d/yandex-browser-stable.sh
@@ -10,9 +10,8 @@ PRODUCTDIR=/opt/yandex/browser
 
 . $(dirname $0)/common-chromium-browser.sh
 
-subst '1iConflicts: yandex-browser-beta' $SPEC
-subst '1iConflicts: yandex-browser-corporate' $SPEC
-subst "s|^\(Version:.*\)|\1\nProvides: yandex-browser = %version|" $SPEC
+add_conflicts yandex-browser-beta yandex-browser-corporate
+add_provides "yandex-browser = %version"
 
 add_findreq_skiplist $PRODUCTDIR/update-ffmpeg
 
diff --git a/repack.d/yaradio-yamusic.sh b/repack.d/yaradio-yamusic.sh
index a04f086a..a51ac13c 100755
--- a/repack.d/yaradio-yamusic.sh
+++ b/repack.d/yaradio-yamusic.sh
@@ -9,7 +9,6 @@ PRODUCTDIR=/opt/YaMusic.app
 . $(dirname $0)/common-chromium-browser.sh
 
 add_bin_link_command
-#add_bin_link_command $PRODUCTCUR $PRODUCT
 
 add_electron_deps
 
@@ -18,6 +17,6 @@ fix_chrome_sandbox
 fix_desktop_file
 
 if [ -f usr/share/icons/hicolor/0x0/apps/yaradio-yamusic.png ] ; then
-    install_file /usr/share/icons/hicolor/0x0/apps/yaradio-yamusic.png /usr/share/icons/hicolor/256x256/apps/yaradio-yamusic.png
+    install_file usr/share/icons/hicolor/0x0/apps/yaradio-yamusic.png /usr/share/icons/hicolor/256x256/apps/yaradio-yamusic.png
     remove_dir /usr/share/icons/hicolor/0x0/
 fi
diff --git a/repack.d/zoom.sh b/repack.d/zoom.sh
index 7a40f1b7..3ca46f09 100755
--- a/repack.d/zoom.sh
+++ b/repack.d/zoom.sh
@@ -3,16 +3,8 @@
 BUILDROOT="$1"
 SPEC="$2"
 
-PRODUCT=zoom
-PRODUCTDIR=/opt/zoom
-
 . $(dirname $0)/common-chromium-browser.sh
 
-# TODO: remove it after fix https://bugzilla.altlinux.org/42189
-# fix broken symlink
-rm -fv $BUILDROOT/usr/bin/zoom
-add_bin_link_command $PRODUCT $PRODUCTDIR/ZoomLauncher
-
 fix_chrome_sandbox $PRODUCTDIR/cef/chrome-sandbox
 
 fix_desktop_file /usr/bin/zoom
@@ -21,70 +13,3 @@ fix_desktop_file /usr/bin/zoom
 remove_file /opt/zoom/Qt/qml/Qt/labs/lottieqt/liblottieqtplugin.so
 
 add_libs_requires
-# autoreq is disabled: don't patch elf due requires
-exit
-
-subst '1i%filter_from_requires /^mesa-dri-drivers(x86-32)/d' $SPEC
-
-# ignore embedded libs requires
-for i in libQt5 libav libswresample libfdkaac libmpg123 libquazip libturbojpeg libicu libOpenCL ; do
-    subst "1i%filter_from_requires /^$i.*/d" $SPEC
-done
-
-if epm assure patchelf ; then
-
-for i in $BUILDROOT/opt/zoom/lib*.so.* $BUILDROOT/opt/zoom/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN:$ORIGIN/Qt/lib' $i || continue
-done
-
-for i in $BUILDROOT/opt/zoom/Qt/lib/*.so.* ; do
-    a= patchelf --set-rpath '$ORIGIN:$ORIGIN/../../' $i || continue
-done
-
-for i in $BUILDROOT/opt/zoom/Qt/plugins/*/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN/../../lib' $i || continue
-done
-
-for i in $BUILDROOT/opt/zoom/Qt/qml/QtQuick/*/lib*.so.* $BUILDROOT/opt/zoom/Qt/qml/QtQuick/XmlListModel/lib* $BUILDROOT/opt/zoom/Qt/qml/QtQml/RemoteObjects/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN/../../../lib' $i || continue
-done
-
-for i in $BUILDROOT/opt/zoom/Qt/qml/Qt/labs/*/lib*.so ; do
-    a= patchelf --set-rpath '$ORIGIN/../../../../lib' $i
-done
-
-#for i in $BUILDROOT/opt/zoom/cef/libcef.so ; do
-#    a= patchelf --set-rpath '$ORIGIN/../' $i || continue
-#done
-
-for i in $BUILDROOT/opt/zoom/{zoom,zopen} ; do
-    a= patchelf --set-rpath '$ORIGIN:$ORIGIN/Qt/lib:$ORIGIN/cef' $i
-done
-
-fi
-
-# missed Qt deps
-remove_file /opt/zoom/Qt/qml/QtQuick/XmlListModel/libqmlxmllistmodelplugin.so
-remove_file /opt/zoom/Qt/qml/QtQuick/Scene2D/libqtquickscene2dplugin.so
-remove_file /opt/zoom/Qt/qml/QtQuick/Scene3D/libqtquickscene3dplugin.so
-
-echo "Fix for library libQt5Multimedia.so.5 not found"
-remove_file /opt/zoom/Qt/plugins/audio/libqtaudio_alsa.so
-remove_file /opt/zoom/Qt/plugins/audio/libqtmedia_pulse.so
-
-# library libQt5RemoteObjects.so.5 not found
-remove_file /opt/zoom/Qt/qml/QtQml/RemoteObjects/libqtqmlremoteobjects.so
-# library libQt5Sql.so.5 not found
-remove_file /opt/zoom/Qt/qml/QtQuick/LocalStorage/libqmllocalstorageplugin.so
-# library libQt5QuickParticles.so.5 not found
-remove_file /opt/zoom/Qt/qml/QtQuick/Particles.2/libparticlesplugin.so
-
-
-echo "Fix for /opt/zoom/Qt/qml/Qt/labs/lottieqt/liblottieqtplugin.so: library libQt5Bodymovin.so.5 not found"
-# qt5-qtlottie
-remove_file /opt/zoom/Qt/qml/Qt/labs/lottieqt/liblottieqtplugin.so
-
-# library libQt5EglFSDeviceIntegration.so.5 not found
-remove_file /opt/zoom/Qt/plugins/platforms/libqeglfs.so
-remove_dir /opt/zoom/Qt/plugins/egldeviceintegrations
-
-- 
2.24.1