Request all necessarry questions first and handle completion failures like pikaur does
I like the speed of rust and such in paru but I don't like coming back to a question in the middle of an system update if I leave.
Another thing pikaur also seems to handle well is completion failures with a system update or several updates by asking if you want to bypass that update. Could you add these features to paru to make it more pikaur like.
It seems to only make sense to me and I been using pikaur most of the time even though I feel reluctant too because paru feels more state of the art in its programming.
Request all necessarry questions first
How does paru not do this?
an example would be
Pikaur
Reading repository package databases... Resolving AUR dependencies...
:: AUR package will be installed: ffmpeg-full -> 5.0.1-2
:: Proceed with installation? [Y/n] :: [v]iew package details [m]anually select packages
looking for conflicting AUR packages... :: ffmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N] Do you want to edit PKGBUILD for ffmpeg-full package? [y/N]
Code is run to build
:: ffmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N] Y error: failed to prepare transaction (could not satisfy dependencies) :: removing ffmpeg breaks dependency 'ffmpeg>=2:5.0' required by lib32-libffmpeg Command 'sudo pacman --color=always --upgrade /home/linux/.cache/pikaur/pkg/ffmpeg-full-5.0.1-2-x86_64.pkg.tar.zst' failed to execute. Do you want to retry? [Y/n] n Do you want to proceed? [y/N] y $
Paru
: Packages to install (eg: 1 2 3, 1-3): :: 1 :: Resolving dependencies... :: Calculating conflicts... :: Calculating inner conflicts...
:: Conflicts found: ffmpeg-full: ffmpeg
:: Conflicting packages will have to be confirmed manually
Aur (1) ffmpeg-full-5.0.1-2
:: Proceed to review? [Y/n]: y
:: Downloading PKGBUILDs... PKGBUILDs up to date nothing new to review fetching devel info... ==> Making package: ffmpeg-full 5.0.1-2 (Sun 19 Jun 2022 11:14:07 AM EDT) ==> Retrieving sources... -> Found ffmpeg-5.0.1.tar.xz -> Found ffmpeg-5.0.1.tar.xz.asc -> Found 010-ffmpeg-add-svt-hevc-g111eef1.patch -> Found 030-ffmpeg-add-svt-vp9-g308ef44.patch -> Found 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch -> Found 050-ffmpeg-vmaf-2.x.patch -> Found 060-ffmpeg-fix-segfault-with-avisynthplus.patch -> Found 070-ffmpeg-libsvtav1-0.9.0-part1.patch -> Found 080-ffmpeg-libsvtav1-0.9.0-part2.patch -> Found LICENSE ==> Validating source files with sha256sums... ffmpeg-5.0.1.tar.xz ... Passed ffmpeg-5.0.1.tar.xz.asc ... Skipped 010-ffmpeg-add-svt-hevc-g111eef1.patch ... Passed 030-ffmpeg-add-svt-vp9-g308ef44.patch ... Passed 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch ... Passed 050-ffmpeg-vmaf-2.x.patch ..ng do you want to install. Passed 060-ffmpeg-fix-segfault-with-avisynthplus.patch ... Passed 070-ffmpeg-libsvtav1-0.9.0-part1.patch ... Passed 080-ffmpeg-libsvtav1-0.9.0-part2.patch ... Passed LICENSE ... Passed ==> Verifying source file signatures with gpg... ffmpeg-5.0.1.tar.xz ... Passed ==> Making package: ffmpeg-full 5.0.1-2 (Sun 19 Jun 2022 11:14:08 AM EDT) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Retrieving sources... -> Found ffmpeg-5.0.1.tar.xz -> Found ffmpeg-5.0.1.tar.xz.asc -> Found 010-ffmpeg-add-svt-hevc-g111eef1.patch -> Found 030-ffmpeg-add-svt-vp9-g308ef44.patch -> Found 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch -> Found 050-ffmpeg-vmaf-2.x.patch -> Found 060-ffmpeg-fix-segfault-with-avisynthplus.patch -> Found 070-ffmpeg-libsvtav1-0.9.0-part1.patch -> Found 080-ffmpeg-libsvtav1-0.9.0-part2.patch -> Found LICENSE ==> Validating source files with sha256sums... ffmpeg-5.0.1.tar.xz ... Passed ffmpeg-5.0.1.tar.xz.asc ... Skipped 010-ffmpeg-add-svt-hevc-g111eef1.patch ... Passed 030-ffmpeg-add-svt-vp9-g308ef44.patch ... Passed 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch ... Passed 050-ffmpeg-vmaf-2.x.patch ... Passed 060-ffmpeg-fix-segfault-with-avisynthplus.patch ... Passed 070-ffmpeg-libsvtav1-0.9.0-part1.patch ... Passed 080-ffmpeg-libsvtav1-0.9.0-part2.patch ... Passed LICENSE ... Passed ==> Verifying source file signatures with gpg... ffmpeg-5.0.1.tar.xz ... Passed ==> Removing existing $srcdir/ directory... ==> Extracting sources... -> Extracting ffmpeg-5.0.1.tar.xz with bsdtar ==> Starting prepare()... patching file configure Hunk #1 succeeded at 289 (offset 1 line). Hunk #2 succeeded at 1813 (offset 20 lines). Hunk #3 succeeded at 3379 (offset 62 lines). Hunk #4 succeeded at 6683 (offset 145 lines). patching file libavcodec/Makefile Hunk #1 succeeded at 1087 (offset 23 lines). patching file libavcodec/allcodecs.c Hunk #1 succeeded at 783 (offset 9 lines). patching file libavcodec/libsvt_hevc.c patching file configure Hunk #1 succeeded at 286 (offset 1 line). Hunk #2 succeeded at 1856 with fuzz 1 (offset 23 lines). Hunk #3 succeeded at 3373 (offset 60 lines). Hunk #4 succeeded at 6655 (offset 129 lines). patching file libavcodec/Makefile Hunk #1 succeeded at 1082 (offset 22 lines). patching file libavcodec/allcodecs.c Hunk #1 succeeded at 768 (offset 9 lines). patching file libavcodec/libsvt_vp9.c patching file libavformat/avformat.h Hunk #1 succeeded at 1115 (offset 105 lines). patching file libavformat/utils.c Hunk #1 succeeded at 92 with fuzz 1 (offset -29 lines). patching file configure Hunk #1 succeeded at 3753 (offset 2 lines). Hunk #2 succeeded at 6628 (offset 2 lines). patching file doc/filters.texi patching file libavfilter/vf_libvmaf.c patching file libavformat/avisynth.c patching file doc/encoders.texi patching file libavcodec/libsvtav1.c patching file configure Hunk #1 succeeded at 6617 (offset 22 lines). patching file doc/encoders.texi patching file libavcodec/libsvtav1.c Hunk #1 succeeded at 64 (offset -4 lines). Hunk #2 succeeded at 156 (offset -4 lines). Hunk #3 succeeded at 241 (offset -4 lines). Hunk #4 succeeded at 252 (offset -4 lines). Hunk #5 succeeded at 523 (offset -4 lines). Hunk #6 succeeded at 561 (offset -4 lines). Hunk #7 succeeded at 585 (offset -4 lines). ==> Sources are ready. ffmpeg-full-5.0.1-2: parsing pkg list... :: ffmpeg-full-5.0.1-2 is up to date -- skipping build loading packages... resolving dependencies... looking for conflicting packages... :: ffmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N] y error: failed to prepare transaction (could not satisfy dependencies) :: removing ffmpeg breaks dependency 'ffmpeg>=2:5.0' required by lib32-libffmpeg $
Explanation
In the above pikaur is asks Proceed with installation? [Y/n] then asks fmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N] then asks Do you want to edit PKGBUILD for ffmpeg-full package? [y/N] all before building
Paru asks "fmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N]" only after building (although in this instance a build was detected since I ran in pikaur so it skipped) even though it detects it right away saying
:: Conflicts found: ffmpeg-full: ffmpeg
Pikaur does have the question "fmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N]" asked again after building, I assume by pacman? But it autofills Y
In this sequence pikaur asks questions first so that the user doesnt have to answer questions later on and can hopefully just walk away if there are no issues since they may want to do something else and not come back to questions but paru does not.
Also in paru if I say N to "Proceed to review?" in paru it just stops everything and often forces me into the edit screen If I say Y. However Pikaur asks if I want to install and if I want to edit and allows me to skip editing 100% of the time If I say N to Do you want to edit PKGBUILD or edit if I like by saying Y
Pikaur also asks at the end during failure to retry so I can go fix the issue, in this case removing ffmpeg with no dependancies would fix it so if I do that in another terminal and retry it would work. In paru if theres an error thats fatal it just stops and has to be rerun completely.
If theres multiple packages like in a system update pikaur asks all necessary questions right away for ALL packages, including if I want to edit any of them, paru doesnt. With pikaur if theres a failure with a package it often brings up the prompt
Command 'makepkg --force' failed to execute. ::Try recovering? [R] retry build [p] PGP check skip [c] checksums skip [f] skip 'check()' function of PKGBUILD [i] ignore architecture [d] delete build dir and try again [e] edit PKGBUILD <------------------------> [s] skip building this package [a] abort building all the packages
Paru just fails without troubleshoot options and allows all packages that are being updated to fail rather than allowing me options to skip to next package or troubleshoot.
Paru asks "fmpeg-full and ffmpeg are in conflict. Remove ffmpeg? [y/N]" only after building (although in this instance a build was detected since I ran in pikaur so it skipped) even though it detects it right away saying
This has always been behind the --useask flag.
In this sequence pikaur asks questions first so that the user doesnt have to answer questions later on and can hopefully just walk away if there are no issues since they may want to do something else and not come back to questions but paru does not.
Yes paru does this
Also in paru if I say N to "Proceed to review?" in paru it just stops everything and often forces me into the edit screen If I say Y. However Pikaur asks if I want to install and if I want to edit and allows me to skip editing 100% of the time If I say N to Do you want to edit PKGBUILD or edit if I like by saying Y
Paru is not asking "do you want to review". Paru is asking if you want to continue. The flow is
- Resolve Deps
- Install summary
- Ask If want to continue
- Review
- Ask if want to continue
- Build
This is the flow, Answering no to any question will quit.
Pikaur also asks at the end during failure to retry so I can go fix the issue, in this case removing ffmpeg with no dependancies would fix it so if I do that in another terminal and retry it would work. In paru if theres an error thats fatal it just stops and has to be rerun completely.
I don't really see how this adds any value compared to just rerunning the command.
Paru just fails without troubleshoot options and allows all packages that are being updated to fail rather than allowing me options to skip to next package or troubleshoot.
Again don't really see much value in these options other than encouraging users to skip things instead of understanding issues.
Anyway feel free to open specific issues for these points. But this issue has always been very generic so closing.