eric wroteFirst, the hook will be run AFTER the installation, so the trouble will not go away :).
This is actually not true at all. the PreTransaction hook will run
after downloading all files to be installed/updated and doing checks but
before processing package changes! This is why this is pretty neat. Together with the AbortOnFail option your update will exit erroneous if your command exits 1+ without applying any changes to your installed packages.
Thanks for the pointer on execv, I read a lot and found out that exec apparently != bash earlier :D *facepalm*
eric wroteAlso you comparaison will always be false because at least the release number will not be the same between extra and obextra repo(5.14.1-1,5.14.1-2).
This is exactly why I simply pipe head -c-2 to the command:
pacman -S obextra/qt5-base --print-format %v | head -c-2
eric wroteInstead of using pacman and a pipe to parse the result, just use vercmp program and expac
Thanks for this great hint. Absolutely appreciate it. This intrigued me very much but unfortunately it does not work as I would think:
marian@ obarun ~ % vercmp "5.14.1-2" "5.14.1-1"
1
marian@ obarun ~ % vercmp "5.14.1-1" "5.14.1-2"
-1
The unique bit is still used for comparison here so I don't really see the benefit in using vercmp over test. I really like expac though.
I knew about calling a file but I wanted to have a single .hook file to begin with.
Finally, wouldn't adding qt5-base to IgnorePkg
completely block this package?! This is absolutely
not my intention. The goal is to interrupt my pacman update any time a qt5 package wants to be updated and qt5-base has a version mismatch. Because my DE is Qt based but my finger is usually quite quick in pressing [Y] when updating _(^_^; )\
I'm quite happy with this hook:
OBAR=$(expac -S %v obextra/qt5-base | head -c-2); ARCH=$(expac -S %v extra/qt5-base | head -c-2); [ $OBAR = $ARCH ] && exit || { echo -e >&2 "\nA version mismatch was found between upstream Arch and Obarun qt5-base! Please be patient while this package gets updated. If this is still present after a short period of time please report this issue on https://forum.obarun.org/viewtopic.php?id=822\n\nobextra/qt5-base: $OBAR\n extra/qt5-base: $ARCH (upstream)\n"; exit 1; }
This also prints a very nice and clean error message right into pacman and then triggers AbortOnFail. Awesome! (Apart from the one-liner being unreadable...can I multi-line write this?)
This is how it looks like when a qt5 package wants to update/install but
qt5-base has a version mismatch (I downgraded Qt and forced this example to compare the unique bit also; the actual command uses head to cut that off). Note how (1/1) is the "Description" field of the hook, this will also print if the test exits 0. It's pretty verbose about what is going on. Right after that the "Exec" field is run and exits with 1 printing a very well formatted error message to standard error and causing "AbortOnFail" to trigger.
marian@ obarun ~ % sudo pacman -Su
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
Packages (21) perl-alien-build-1.98-1 python-pycurl-7.43.0.5-1 qt5-base-5.14.1-2
qt5-declarative-5.14.1-1 qt5-graphicaleffects-5.14.1-1
qt5-imageformats-5.14.1-1 qt5-location-5.14.1-1 qt5-multimedia-5.14.1-1
qt5-networkauth-5.14.1-1 qt5-quickcontrols-5.14.1-1
qt5-quickcontrols2-5.14.1-1 qt5-script-5.14.1-1 qt5-sensors-5.14.1-1
qt5-speech-5.14.1-1 qt5-svg-5.14.1-1 qt5-tools-5.14.1-1
qt5-virtualkeyboard-5.14.1-1 qt5-webchannel-5.14.1-1
qt5-webengine-5.14.1-1 qt5-x11extras-5.14.1-1 qt5-xmlpatterns-5.14.1-1
Total Installed Size: 309.40 MiB
Net Upgrade Size: -0.14 MiB
:: Proceed with installation? [Y/n]
(21/21) checking keys in keyring [# ###########################] 100%
(21/21) checking package integrity [# ###########################] 100%
(21/21) loading package files [# ###########################] 100%
(21/21) checking for file conflicts [# ###########################] 100%
(21/21) checking available disk space [# ###########################] 100%
:: Running pre-transaction hooks...
(1/1) Qt5 pacakges are selected for upgrade/install; qt5-base will be checked for version mismatch.
A version mismatch was found between upstream Arch and Obarun qt5-base!
Please be patient while this package gets updated.
If this is still present after a short period of time please report this issue on https://forum.obarun.org/viewtopic.php?id=822
obextra/qt5-base: 5.14.1-2
extra/qt5-base: 5.14.1-1 (upstream)
error: command failed to execute correctly
error: failed to commit transaction (failed to run transaction hooks)
Errors occurred, no packages were upgraded.
marian@ obarun [1] ~ %
And for the very curious here I added back the " | head -c-2" pipe and re-ran my update with matching qt5-base versions to successfully update my system:
marian@ obarun [1] ~ % sudo pacman -Syyu
[sudo] password for marian:
:: Synchronizing package databases...
obcore 22.7 KiB 7.37 MiB/s 00:00 [# ###########################] 100%
obcore.sig 310.0 B 0.00 B/s 00:00 [# ###########################] 100%
obextra 70.1 KiB 325 KiB/s 00:00 [# ###########################] 100%
obextra.sig 310.0 B 0.00 B/s 00:00 [# ###########################] 100%
obcommunity 14.4 KiB 0.00 B/s 00:00 [# ###########################] 100%
obcommunity.sig 310.0 B 0.00 B/s 00:00 [# ###########################] 100%
observice 17.9 KiB 0.00 B/s 00:00 [# ###########################] 100%
observice.sig 310.0 B 0.00 B/s 00:00 [# ###########################] 100%
core 133.5 KiB 657 KiB/s 00:00 [# ###########################] 100%
extra 1641.0 KiB 830 KiB/s 00:02 [# ###########################] 100%
community 4.8 MiB 1162 KiB/s 00:04 [# ###########################] 100%
herecura 67.1 KiB 958 KiB/s 00:00 [# ###########################] 100%
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
Packages (21) perl-alien-build-1.98-1 python-pycurl-7.43.0.5-1 qt5-base-5.14.1-2
qt5-declarative-5.14.1-1 qt5-graphicaleffects-5.14.1-1
qt5-imageformats-5.14.1-1 qt5-location-5.14.1-1 qt5-multimedia-5.14.1-1
qt5-networkauth-5.14.1-1 qt5-quickcontrols-5.14.1-1
qt5-quickcontrols2-5.14.1-1 qt5-script-5.14.1-1 qt5-sensors-5.14.1-1
qt5-speech-5.14.1-1 qt5-svg-5.14.1-1 qt5-tools-5.14.1-1
qt5-virtualkeyboard-5.14.1-1 qt5-webchannel-5.14.1-1
qt5-webengine-5.14.1-1 qt5-x11extras-5.14.1-1 qt5-xmlpatterns-5.14.1-1
Total Installed Size: 309.40 MiB
Net Upgrade Size: -0.14 MiB
:: Proceed with installation? [Y/n]
(21/21) checking keys in keyring [# ###########################] 100%
(21/21) checking package integrity [# ###########################] 100%
(21/21) loading package files [# ###########################] 100%
(21/21) checking for file conflicts [# ###########################] 100%
(21/21) checking available disk space [# ###########################] 100%
:: Running pre-transaction hooks...
(1/1) Qt5 pacakges are selected for upgrade/install; qt5-base will be checked for version mismatch.
:: Processing package changes...
( 1/21) upgrading perl-alien-build [# ###########################] 100%
( 2/21) upgrading python-pycurl [# ###########################] 100%
( 3/21) upgrading qt5-base [# ###########################] 100%
( 4/21) upgrading qt5-declarative [# ###########################] 100%
( 5/21) upgrading qt5-graphicaleffects [# ###########################] 100%
( 6/21) upgrading qt5-imageformats [# ###########################] 100%
( 7/21) upgrading qt5-location [# ###########################] 100%
( 8/21) upgrading qt5-multimedia [# ###########################] 100%
( 9/21) upgrading qt5-networkauth [# ###########################] 100%
(10/21) upgrading qt5-quickcontrols [# ###########################] 100%
(11/21) upgrading qt5-quickcontrols2 [# ###########################] 100%
(12/21) upgrading qt5-script [# ###########################] 100%
(13/21) upgrading qt5-sensors [# ###########################] 100%
(14/21) upgrading qt5-speech [# ###########################] 100%
(15/21) upgrading qt5-svg [# ###########################] 100%
(16/21) upgrading qt5-tools [# ###########################] 100%
(17/21) upgrading qt5-virtualkeyboard [# ###########################] 100%
(18/21) upgrading qt5-webchannel [# ###########################] 100%
(19/21) upgrading qt5-webengine [# ###########################] 100%
(20/21) upgrading qt5-x11extras [# ###########################] 100%
(21/21) upgrading qt5-xmlpatterns [# ###########################] 100%
:: Running post-transaction hooks...
(1/3) Warn about old perl modules
(2/3) Updating icon theme caches...
(3/3) Updating the desktop file MIME type cache...
marian@ obarun ~ %