Difference between revisions of "Talk:AUR helpers"

From ArchWiki
Jump to: navigation, search
(Reliable solver: typo)
(pikaur's interactive control flow: close, discussion reached its natural conclusion in User talk:Actionless)
 
(254 intermediate revisions by 13 users not shown)
Line 2: Line 2:
 
}}
 
}}
  
== Comparison table - build directory ==
+
== Reliable Updater ==
  
Considering /tmp is mounted as tmpfs on Arch, and the potential downsides from building in RAM (running out of space), I think a column with the default build location for various helpers would be helpful.  
+
Interested in feedback on possibly adding Reliable Updater as a category to Comparison table.
  
The default values I've garnered so far, assuming TMPDIR is not set:
+
ie:  
 +
Does it handle accurate update status on VCS packages?
 +
Does it handle accurate update status when developer fails to update .SCRINFO? https://wiki.archlinux.org/index.php/.SRCINFO
  
* aurutils: $XDG_CACHE_HOME
+
And any other unmentioned situations. [[User:Cody Learner|Cody Learner]] ([[User talk:Cody Learner|talk]]) 18:49, 22 February 2018 (UTC)
* pacaur: $XDG_CACHE_HOME (changed from /tmp, see [https://github.com/rmarquis/pacaur/commit/c5d750f75f040b21249fff100a2c8875348d03d1])
 
* bauerbill: $PWD/build
 
* pkgbuilder: $PWD, /tmp when specified with -S
 
* packer: /tmp (TMPDIR)
 
* yaourt: /tmp (yaourtrc)
 
  
-- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:16, 1 April 2016 (UTC)
+
:The second is an issue only pacaur has, by design to "improve metadata on the AUR". It has nothing to do with what an AUR helper should do. The first is at best a specificity, since the AUR has no perception of what a VCS package is. See {{Bug|56602}}. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 20:02, 22 February 2018 (UTC)
  
: Yes, this could be useful. Although you'd want not to use color here, since users that know what they're doing would prefer to use /tmp (or setting up BUILDDIR to /tmp). --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 11:15, 3 April 2016 (UTC)
+
:: I think the most important here to provide reliable testcase to prove the reliability of updater :-) I would suggest mb creating a repo a with some stub PKGBUILDs which could be used as testcases for criterias in the table. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 20:19, 22 February 2018 (UTC)
  
:: +1. see also [[#Multi-thread support]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 11:33, 3 April 2016 (UTC)
+
::: Not sure what a testcase of such would look like, since scoring on the other criteria should guarantee reliable updates apart from some pecularities outlined above.
::: Well, while it does have benefits for some users, it's still a bad default. As you say though, this is easy enough to change either way, unlike any of the behaviour described in the other columns.
+
::: About the second case, it has been suggested before to create some centralized place for testing helpers instead of a few arbitrarily chosen AUR packages. However, since AUR helpers are (by definition) for the AUR, I wonder how you'd go about testing these helpers with an external repository. PKGBUILDs specifically made for testing helpers would not be accepted on AUR anyways as too specific. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 22:30, 22 February 2018 (UTC)
::: We could leave out the colors, but mention the drawbacks/benefits in the "meanings" paragraph. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:35, 4 April 2016 (UTC)
 
  
:::: It is bad default because some users have no idea about what they are doing, but this is strictly related to user preferences. Adding the meaning instead of colors sounds like the perfect solution to me. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 14:35, 4 April 2016 (UTC).
+
:::: And what about adding packages to AUR but with some special prefix in package name (`_stub-package-test-reliable-solver`) and very explicit description ("DON'T INSTALL ME. Stub package intended for testing AUR helpers for 'reliable solver' criteria.") and so on? [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 23:53, 22 February 2018 (UTC)
  
== Multi-thread support ==
+
::::: Considering AUR helpers are something that's tolerated instead of supported, I doubt such packages explicitely targeting them with no use otherwise would have a long lifetime. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:00, 23 February 2018 (UTC)
  
This also made me wonder if tools differentiate regarding multi-thread support (seems related, e.g. cower has a defaulted option for it). --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 11:33, 3 April 2016 (UTC)
+
:::::: See [[#"Reference" implementation]] for an alternative. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:29, 8 March 2018 (UTC)
  
: AFAIK, besides cower, packer [http://kmkeen.com/multithreaded-bash/] and bauerbill ({{ic|download.sh}} amongst others) have multiple threads. aurutils also uses aria2c for downloads, if that counts.
+
::::::: I would argue this is covered by the new "Pacman wrap" column. That said there's some strange cases (e.g. {{AUR|rakudo}} or {{AUR|nvidia-beta}}) which some helpers can install successfully but fail to update afterward. Usually this involves version requirements (though note {{Bug|54906}}). -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 22:31, 18 March 2018 (UTC)
: The benefits of multiple threads are however not always clear:  
 
:: * by my understanding, cower uses multiple threads, but with one query per package [https://github.com/falconindy/cower/blob/master/cower.c#L667] (compare against multiinfo).
 
:: * More generally, tasks (like dependency solving) can be sped up by using different methods which need to be called less often
 
:: * Building packages would almost always be done sequentially: dependencies have to be installed (resulting in pacman locks), and there's {{ic|-j}} in {{ic|makepkg.conf}} anyway.
 
: Regardless, there are some large differences in AUR helper speed (with bauerbill being ahead of the rest). But I'm not sure how to quantify this in the table ... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:31, 3 April 2016 (UTC)
 
  
:: Multi-thread support doesn't necessarily mean the helper is better. In cower case, multi-thread support was implemented before multiinfo was available in the RPC interface, and as of today using multiinfo is less complex and faster than using multiple info threads. Since it is difficult to implement multiinfo support without an important rewrite, cower multithreading is more a drawback than an advantage.
+
== "Reference" implementation ==
:: As for speed, it's indeed very hard to quantify in a meaningful manner. For example, pacaur dependency solver is slower than bauerbill's solver, but on the other hand it is designed to compute more stuff than other helpers up front in order to avoid bothering the user once the install process is started. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 13:42, 3 April 2016 (UTC)
 
  
::: Interesting. Actually, I did not want to induce a "speed" column, rather the opposite. As you both say, always very difficult to choose a fairly universal/comparable benchmark, so "speed" as such is better be left out of comparison (as a column). If one wants to mention it, it might be useful to have a general remark at the top of the table, or somewhere else in the article, quoting some of the influencing factors you name; perhaps linking to (re -j) [[Makepkg#MAKEFLAGS]] and (re Skyhawk's remark above) [[Makepkg#Improving compile times]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 14:01, 3 April 2016 (UTC)
+
This is an alternative to [[#Reliable_Updater]]. Instead of an arbitrary set of test packages, we could write up a "specification" on what a reliable AUR helper should do. This should also be more helpful for potential AUR helper writers who otherwise have to wade through complex, fully-featured AUR helpers.
  
== <s>Unmaintained Aur Helpers</s> ==
+
I propose a minimal reference implementation with the following points:
  
It seems my edit to adding the info about Pacaur being unmaintained was reverted. Are we not allowed to mark aur helpers as unmaintained? What is the proper way to go about letting users know that things like Pacaur are now unmaintained upstream?[https://github.com/rmarquis/pacaur] {{unsigned|19:33, 18 December 2017‎|Ase1590}}
+
* No client-side workarounds for upstream limitations. In particular, a reference implementation does not need to score full points on split packages, as {{ic|makepkg --pkg}} was removed with pacman 5.
 +
* Minimal language constructs in e.g. a scripting language like {{Pkg|dash}}.
 +
* Prefer simplicity of implementation over being fully featured. In particular, an implementation may only support git clone and not git diff.
  
:Unmaintained helpers are not a big deal since helpers should only be used by people who can solve their own problems (as indicated by the warning at the top of the article). However, if you can demonstrate that a helper ''actually stops working'' in a general sense, with no community interest to fix it, you can remove them from the article. (and file a request on AUR as well) -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:43, 18 December 2017 (UTC)
+
My initial plan was to keep such an implementation in a man page {{ic|aurhelper(7)}} (hosted as part of aurutils), but we can consider including on a sub-page of this article. It could be then linked from the comparison table. Thoughts? -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:28, 8 March 2018 (UTC)
  
::I would argue that an [unmaintained] tag would be helpful for quickly finding an AUR helper instead of having to futz around on github pages to see that it has not be updated in X amount of months/years and that it has been abandoned. I agree that if an aur helper ''actually'' broke due to some update, that it would be a candidate for removal from the AUR helper page. The whole point of wiki info is for at-glance quick info, otherwise, it'd be documentation and not a wiki. [[User:Ase1590|Ase1590]] ([[User talk:Ase1590|talk]]) 18:59, 18 December 2017 (UTC)
+
: Generally agree with the idea, but I don't think there is a way around a set of PKGBUILDs that could be used to test helpers in a local AUR instance. F.e., I wouldn't define a "reliable" helper that doesn't handle split packages well. Since helpers are tolerated rather than supported, upstream limitations of the AUR might be temporary or permanent, meaning the limitation would actually be in the helper itself (f.e. like regex support). Also, I'd use pseudo code for such a reference as the actual implementation itself doesn't matter, unless you'd like to write a new minimalist helper. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 15:26, 8 March 2018 (UTC)
  
:::That brings other issues. First, you'd have to make a reasonable definition of "unmaintained". Should it be an official statement from the maintainer where he distances himself from the project? Should it be some fixed interval between commits? Should it be how upstream cares for outstanding issues? If you include the last two criteria, 90% of the AUR helpers on this page classifies as "unmaintained" and the value of the tag is lost.
+
::Apart from {{Bug|56602}}, I can't think of a case where upstream ''opposed'' removing limitations, even if helpers directly benefited. cf. the regex support discussed in [https://lists.archlinux.org/pipermail/aur-dev/2016-May/004036.html] or the exit codes finally introduced in makepkg 5.1 which made automatic building significantly easier imo. To me it seems that the main reason we have these AUR limations is due to the minimal interest of helper writers in contributing upstream, and upstream itself having different priorities. Not sure why former is the case, the PHP codebase may play part in it - at least it does for me.
:::Second, the "unmaintained" information would have to be continually checked to keep the page factual, which for 23 helpers in [[AUR helpers#Build and search]] alone is hardly reasonable. Especially when you as the user already has a nice table at the bottom, which narrows down your choice to 3-4 projects (entries with all the green) already. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:14, 18 December 2017 (UTC)
+
::You can keep ''dash'' close enough to pseudo-code, I guess less so if you want a complete example rather than exemplary code blocks. For the PKGBUILD set, I use this: [https://github.com/AladW/aurutils-test/blob/master/package.t#L11-L31] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:34, 8 March 2018 (UTC)
  
::::I think we can use your first definition of unmaintained as the formal definition for this page. The developer of Pacaur has made an official statement where he is distancing himself. As for the second point, the "continually checked" argument does not make sense for a wiki, as users are free to edit and update information whenever. All wiki pages can be subject to information rot, just look at some of the less common non-english pages in the arch wiki, which have in one instance in IRC displayed information about configuring arch prior to Systemd integration. Wikis stay up to date so long as other users contribute. [[User:Ase1590|Ase1590]] ([[User talk:Ase1590|talk]]) 19:29, 18 December 2017 (UTC)
+
::: My understanding is that changes that aren't invasive will be accepted upstream, but otherwise might be rejected (see [https://lists.archlinux.org/pipermail/aur-dev/2018-January/004421.html]). One prominent example that comes to mind is {{Bug|48796}}. It's not really relevant anymore since x86 has been officially dropped, but the solution would involve duplicating DB tables on the server, which isn't trivial to implement/migrate. Many of the feature requests involve non-trivial code change, which is the main reason nobody pushed patches; I dislike PHP but the language itself isn't too hard either. For regex, see the bottom of [https://lists.archlinux.org/pipermail/aur-dev/2016-May/004044.html], which is the follow-up of your link above.
 +
::: Your testsuite seems interesting (thanks for the link), but one advantage of having a fixed set of packages is that these packages might be updated and change, making these edge cases difficult to test. This happened quite a few times with my own list of test packages in the past and this was rather annoying. [[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 20:20, 8 March 2018 (UTC)
  
:::::It still makes no sense to me as it punishes projects for maintainers declaring them as unmaintained. Other projects could make no such announcement and be left in a far worse state, yet as they would not be marked as "unmaintained", would be prioritized in their consideration. (which again, is not deserved) -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:32, 18 December 2017 (UTC)
+
== Move batch interaction as separate column? ==
  
:::::: I suppose we could add a softer toned tag such as [project maintainer needed] that way this instead encourages people to pick it up upstream when reading. Formally abandoned packages are going to lose support over time anyway from social media like reddit and those subscribed to the project via things like github, and it can't be helped (especially if the package outright becomes broken/incompatible). [[User:Ase1590|Ase1590]] ([[User talk:Ase1590|talk]]) 19:41, 18 December 2017 (UTC)
+
This is probably a feature most users naturally expect from a program that builds and installs many packages in succession, by definition. It's also not trivial to implement (with only the undocumented {{ic|pacman --ask}} or {{Pkg|pacutils}} providing a proper solution) - see recent edits where helpers that supposedly qualified did not. Helpers that still view all PKGBUILDs ahead of time would get a "Partial" rating. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 08:36, 17 May 2018 (UTC)
  
::::::: That's a notion I can support. I'm not sure on the best format to add such a tag to the page. It seems out of place in the "Specificity" column of the comparison table (since it's not a feature of the project); on the other hand, it's more in plain view there and e.g. aura already mentions an aspect not strictly feature-related (the need for ArchHaskell). -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:51, 18 December 2017 (UTC)
+
:Note: I'm unsure on the status of {{AUR|bauerbill}} and {{AUR|pakku}} on this regard. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 10:47, 17 May 2018 (UTC)
  
:::::::: How about [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=503126&oldid=503125] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:57, 18 December 2017 (UTC)
+
::Neither {{ic|--ask}} parameter nor {{ic|pacutils}} is used by pakku. It just passes {{ic|--noconflict}} to pacman, so it will fail on conflicts. [[User:Kitsunyan|Kitsunyan]] ([[User talk:Kitsunyan|talk]]) 11:22, 17 May 2018 (UTC)
  
::::::::: I like this, though it might look more pleasing if it were moved under the Build and Search heading at the end of the pacaur description, though that ''could'' just be my OCD just kicking in. [[User:Ase1590|Ase1590]] ([[User talk:Ase1590|talk]]) 20:06, 18 December 2017 (UTC)
+
:::{{ic|--noconflict}} is not a valid pacman parameter. I guess you mean {{ic|--noconfirm}}. If it just fails rather than handle these conflicts beforehand it doesn't qualify as "batch interaction", where these conflicts are handled before the build starts (same for {{aur|aurman}}). -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:30, 17 May 2018 (UTC)
  
:::::::::: Feel free to make the change. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 20:13, 18 December 2017 (UTC)
+
::::Yes, I meant {{ic|--noconfirm}}, just a typo. [[User:Kitsunyan|Kitsunyan]] ([[User talk:Kitsunyan|talk]]) 11:34, 17 May 2018 (UTC)
  
::::::::::: After thinking about it, I think yours is best. Most attention will be focused on the table as you said earlier, so if the aim is to attract new contributers to a project then it makes most sense for it to be in the highest visibility area, which in this case is the comparison table -- 21:19, 18 December 2017‎ Ase1590
+
:::::Right, thanks for clarifying then. Draft of the new table: [[User:Alad/AUR_helpers#Active]]. Note that I put "No" for git diff in pakku's entry. I guess you could argue it could be Optional if you have some hook ability (same for {{AUR|bauerbill}}). -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:11, 17 May 2018 (UTC)
  
== Reliable solver  ==
+
::::::I don't mind. Pakku provides {{ic|PreBuildCommand}} hook which allows user to insert his custom script, but that's quite complex task, and I think it'd be better if it was implemented in pakku directly, which I'm planning to do later.
 +
::::::Speaking about batch interaction, I think I misled you. Pakku will fail on conflicts only if user specify {{ic|--noconfirm}} himself. Pakku never uses {{ic|--noconfirm}} by its own. When I added "batch interaction" to table, I meant that pakku will ask to view files before build, and ask about installing only if it's necessary to install something right now (this mechanism is quite complex, further explanation would be inappropriate here). [[User:Kitsunyan|Kitsunyan]] ([[User talk:Kitsunyan|talk]]) 19:52, 17 May 2018 (UTC)
  
https://aur.archlinux.org/packages/plasma-git-meta/ have some missing dependencies:
+
::::::Speaking about the table you edited in the page. Since you've reordered the columns ("native pacman" is a 5th column now), it would be better to reorder their descriptions as well. Unrelated to the topic, but you mentioned it here. [[User:Kitsunyan|Kitsunyan]] ([[User talk:Kitsunyan|talk]]) 17:29, 20 May 2018 (UTC)
  discover-git
 
  oxygen-git
 
  
Which other package can I use to test the criteria of being a reliable solver?
+
:::::::Good point, changed with [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=522181&oldid=522150] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:48, 20 May 2018 (UTC)
[[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 19:24, 5 February 2018 (UTC)
 
  
:Try plasma-desktop-git or ros-indigo-desktop. I tried testing it myself but couldn't since pkaur failed immediately with a python traceback. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 10:05, 5 February 2018 (UTC)
+
== <s>Add diff column</s> ==
  
:: `ros-indigo-desktop` failed because it depends on https://aur.archlinux.org/packages/ros-indigo-catkin/ which depends on `python2-catkin-pkg` (which provided by https://aur.archlinux.org/packages/python2-catkin_pkg/). However AUR RPC seems to be not supports search by Provides field:
+
Alternative to [https://wiki.archlinux.org/index.php?title=Talk:AUR_helpers&diff=520747&oldid=520621]. Independent of {{ic|git clone}} support (aurutils supports tar diffs and yay will probably do the same at one point).  
:: https://aur.archlinux.org/rpc/?v=5&type=search&arg=python2-catkin-pkg&by=name-desc
 
:: https://aur.archlinux.org/rpc/?v=5&type=info&arg[]=python2-catkin-pkg
 
  
:: For `plasma-desktop-git` i've got dependencies resolved (hopefully correctly):
+
The question is if helper with optional automatic build like {{AUR|pkgbuilder}} and {{AUR|naaman}} again don't apply and get an N/A entry. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 10:46, 17 May 2018 (UTC)
:: https://imgur.com/a/9dA5S however it's gonna build for month or so on my hardware. Mb there is some way to reproduce it with some simpler example? [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 19:24, 5 February 2018 (UTC)
 
  
::: Also could you please upload the traceback somewhere? It's probably unrelated to resolving but still will be useful for me. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 19:32, 5 February 2018 (UTC)
+
:Considering the significant effort it took into researching this and the build interaction column (both which I initially thought trivial), I'll merge my copy soon unless someone makes a reasonable objection. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:16, 17 May 2018 (UTC)
  
::::[https://paste.xinu.at/Kn7s/] [https://paste.xinu.at/w7Gud/] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:23, 6 February 2018 (UTC)
+
== <s>Extend "inactive" to include "native pacman"</s> ==
  
::::: thanks! and what is the output of `file /var/lib/pacman/sync/custom.db`? i have idea how to fix that but first i am trying to understand if .db file is always gzip or its format could vary
+
Helpers which willfully use broken behavior like {{ic|pacman -Ud}} (warranting a red entry in the "Native pacman" column) for at least 6 months should be moved to the Inactive table. In particular, {{AUR|trizen}}. Thoughts? -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 11:57, 17 May 2018 (UTC)
  
::::: also dependencies list for plasma got computed the same (in pikaur some of deps were duplicated but i've fixed that already) [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 21:14, 6 February 2018 (UTC)
+
:Ack from me, although I would change section name from "Inactive" to "Inactive or problematic", as criteria for belonging is getting wider. -- [[User:Svito|Svito]] ([[User talk:Svito|talk]]) 20:31, 18 May 2018 (UTC)
  
::::::The database files can also be ''xz'' or any other format that ''bsdtar'' supports. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 21:39, 6 February 2018 (UTC)
+
::You're right, "inactive" is probably misleading/too vague in this case. Thanks for the suggestion. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 21:11, 18 May 2018 (UTC)
 +
 
 +
== <s>Pakku now supports diff view</s> ==
 +
 
 +
Support for diff view was added in 0.12. [[User:Kitsunyan|Kitsunyan]] ([[User talk:Kitsunyan|talk]]) 17:24, 20 May 2018 (UTC)
 +
 
 +
:Thanks, added [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=522182&oldid=522181]. I hope I linked the right commit. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:48, 20 May 2018 (UTC)
 +
 
 +
::My bad, I should have linked the commit. Your link is right. [[User:Kitsunyan|Kitsunyan]] ([[User talk:Kitsunyan|talk]]) 19:17, 20 May 2018 (UTC)
 +
 
 +
== <s>pikaur's interactive control flow</s> ==
 +
 
 +
[https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=prev&oldid=522369], [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=next&oldid=522374]: Why interactive control flow is worse feature to mention than vifm or deep search? -- [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 14:16, 21 May 2018 (UTC)
 +
 
 +
:Because no idea what's that even supposed to mean or if it's more than a trivial feature. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:46, 21 May 2018 (UTC)
 +
 
 +
::but it's the same with two other examples i gave in the topic, and actually it was a link to the commit with the description [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 14:58, 21 May 2018 (UTC)
 +
 
 +
:::The first part is related to batch interaction - that you use an {{man|1|expect}} clone to achieve this is a technical detail that can already be read from the linked commit in said column. The second part about restarting operations appears trivial since most helpers have some way to continue where you've left off if something fails. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:37, 21 May 2018 (UTC)
 +
 
 +
::::But in linked column about batch interaction and pacman wrapping it's not saying the same as in a new link i was adding. the main point was the approach to resolving dependencies -- instead of computing them by my own and forcing pacman to comply i am just guessing which questions could be asked by pacman and interactively answering through expect-like mechanism, leaving user to answer to unexpected questions. That's a very big difference in compare to all other helpers. [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 15:40, 21 May 2018 (UTC)
 +
 
 +
:::::I still have no idea what you mean by "forcing pacman to comply". {{ic|pacaur}} did just that, ask questions on what conflicts may occur, save the user's answer then feed it back to pacman. The only difference here is that pacaur used pacman --ask and you feed the user answer to pacman's stdin.
 +
:::::If there's some helper out there automatically overriding pacman conflicts or removing installed packages without telling the user, that's something that should be fixed on that helper's end. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:45, 21 May 2018 (UTC)
 +
 
 +
::::::The only other helper with "full" batch interaction is {{AUR|yay}}, so I guess you mean this commit: [https://github.com/Jguer/yay/commit/e88bf0f5b7f3ba3ffba01926bc3274b2f47e1efc] So does that mean it just gives you a list of conflicting packages it computed before the build begins, or "trying to be smarter than pacman" as you put it? Maybe [[User:Morganamilo]] can clarify. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:44, 21 May 2018 (UTC)
 +
 
 +
:::::: The --ask flag which have as an example actually implies --noconfirm so yes -- that's something what i consider bad behavior, because in case of some unexpected situation pacman will either do something wrong without any prompt from the user either fail [[User:Actionless|Actionless]] ([[User talk:Actionless|talk]]) 16:47, 21 May 2018 (UTC)
 +
 
 +
:::::::pacman isn't going to do something wrong since at least 2009 [https://git.archlinux.org/pacman.git/commit/?id=b7db46d610efd5f71d5e4e887fed7a3fd3b3dd86] when run with {{ic|--noconfirm}}. I guess what you're trying to advertise as specificity is something like "--no-confirm-but-not-really"? If so that should be explained much more precisely than two disparaging sentences in a README. Something like a wiki article on your github that would be linked from the {{ic|Batch interaction}} column. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:04, 21 May 2018 (UTC)
 +
 
 +
::::::::For the last point, compare [https://wiki.archlinux.org/index.php?title=AUR_helpers&diff=522425&oldid=522397] which moves "deep search" to the {{ic|Reliable solver}} column since it's an elaborate description why and how {{AUR|aurman}} qualifies.
 +
::::::::I would argue that [[vifm]] should remain as an aurutils specificity though, since it's beyond the scope of the {{ic|Secure}} column (much like {{AUR|bauerbill}}'s trust management is) and all other helpers including pikaur have 9001 prompts before the start of any build process. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:14, 21 May 2018 (UTC)
 +
 
 +
== aurutils as pacman wrapper (external project) ==
 +
 
 +
Apparently there's this ongoing project which wraps both pacman and aurutils: [https://github.com/Cody-Learner/aurt.aurutils.based] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:39, 21 May 2018 (UTC)

Latest revision as of 17:53, 22 May 2018

Note: Moderation — If your AUR helper does partial upgrades without explicit user intervention (i.e, specifying -Sy on the command line), it has no place on this page or anywhere else on ArchWiki. No exceptions. -- Alad (talk) 09:37, 20 September 2015 (UTC)

Reliable Updater

Interested in feedback on possibly adding Reliable Updater as a category to Comparison table.

ie: Does it handle accurate update status on VCS packages? Does it handle accurate update status when developer fails to update .SCRINFO? https://wiki.archlinux.org/index.php/.SRCINFO

And any other unmentioned situations. Cody Learner (talk) 18:49, 22 February 2018 (UTC)

The second is an issue only pacaur has, by design to "improve metadata on the AUR". It has nothing to do with what an AUR helper should do. The first is at best a specificity, since the AUR has no perception of what a VCS package is. See FS#56602. -- Alad (talk) 20:02, 22 February 2018 (UTC)
I think the most important here to provide reliable testcase to prove the reliability of updater :-) I would suggest mb creating a repo a with some stub PKGBUILDs which could be used as testcases for criterias in the table. Actionless (talk) 20:19, 22 February 2018 (UTC)
Not sure what a testcase of such would look like, since scoring on the other criteria should guarantee reliable updates apart from some pecularities outlined above.
About the second case, it has been suggested before to create some centralized place for testing helpers instead of a few arbitrarily chosen AUR packages. However, since AUR helpers are (by definition) for the AUR, I wonder how you'd go about testing these helpers with an external repository. PKGBUILDs specifically made for testing helpers would not be accepted on AUR anyways as too specific. -- Alad (talk) 22:30, 22 February 2018 (UTC)
And what about adding packages to AUR but with some special prefix in package name (`_stub-package-test-reliable-solver`) and very explicit description ("DON'T INSTALL ME. Stub package intended for testing AUR helpers for 'reliable solver' criteria.") and so on? Actionless (talk) 23:53, 22 February 2018 (UTC)
Considering AUR helpers are something that's tolerated instead of supported, I doubt such packages explicitely targeting them with no use otherwise would have a long lifetime. -- Alad (talk) 12:00, 23 February 2018 (UTC)
See #"Reference" implementation for an alternative. -- Alad (talk) 13:29, 8 March 2018 (UTC)
I would argue this is covered by the new "Pacman wrap" column. That said there's some strange cases (e.g. rakudoAUR or nvidia-betaAUR) which some helpers can install successfully but fail to update afterward. Usually this involves version requirements (though note FS#54906). -- Alad (talk) 22:31, 18 March 2018 (UTC)

"Reference" implementation

This is an alternative to #Reliable_Updater. Instead of an arbitrary set of test packages, we could write up a "specification" on what a reliable AUR helper should do. This should also be more helpful for potential AUR helper writers who otherwise have to wade through complex, fully-featured AUR helpers.

I propose a minimal reference implementation with the following points:

  • No client-side workarounds for upstream limitations. In particular, a reference implementation does not need to score full points on split packages, as makepkg --pkg was removed with pacman 5.
  • Minimal language constructs in e.g. a scripting language like dash.
  • Prefer simplicity of implementation over being fully featured. In particular, an implementation may only support git clone and not git diff.

My initial plan was to keep such an implementation in a man page aurhelper(7) (hosted as part of aurutils), but we can consider including on a sub-page of this article. It could be then linked from the comparison table. Thoughts? -- Alad (talk) 13:28, 8 March 2018 (UTC)

Generally agree with the idea, but I don't think there is a way around a set of PKGBUILDs that could be used to test helpers in a local AUR instance. F.e., I wouldn't define a "reliable" helper that doesn't handle split packages well. Since helpers are tolerated rather than supported, upstream limitations of the AUR might be temporary or permanent, meaning the limitation would actually be in the helper itself (f.e. like regex support). Also, I'd use pseudo code for such a reference as the actual implementation itself doesn't matter, unless you'd like to write a new minimalist helper. Spyhawk (talk) 15:26, 8 March 2018 (UTC)
Apart from FS#56602, I can't think of a case where upstream opposed removing limitations, even if helpers directly benefited. cf. the regex support discussed in [1] or the exit codes finally introduced in makepkg 5.1 which made automatic building significantly easier imo. To me it seems that the main reason we have these AUR limations is due to the minimal interest of helper writers in contributing upstream, and upstream itself having different priorities. Not sure why former is the case, the PHP codebase may play part in it - at least it does for me.
You can keep dash close enough to pseudo-code, I guess less so if you want a complete example rather than exemplary code blocks. For the PKGBUILD set, I use this: [2] -- Alad (talk) 18:34, 8 March 2018 (UTC)
My understanding is that changes that aren't invasive will be accepted upstream, but otherwise might be rejected (see [3]). One prominent example that comes to mind is FS#48796. It's not really relevant anymore since x86 has been officially dropped, but the solution would involve duplicating DB tables on the server, which isn't trivial to implement/migrate. Many of the feature requests involve non-trivial code change, which is the main reason nobody pushed patches; I dislike PHP but the language itself isn't too hard either. For regex, see the bottom of [4], which is the follow-up of your link above.
Your testsuite seems interesting (thanks for the link), but one advantage of having a fixed set of packages is that these packages might be updated and change, making these edge cases difficult to test. This happened quite a few times with my own list of test packages in the past and this was rather annoying. Spyhawk (talk) 20:20, 8 March 2018 (UTC)

Move batch interaction as separate column?

This is probably a feature most users naturally expect from a program that builds and installs many packages in succession, by definition. It's also not trivial to implement (with only the undocumented pacman --ask or pacutils providing a proper solution) - see recent edits where helpers that supposedly qualified did not. Helpers that still view all PKGBUILDs ahead of time would get a "Partial" rating. -- Alad (talk) 08:36, 17 May 2018 (UTC)

Note: I'm unsure on the status of bauerbillAUR and pakkuAUR on this regard. -- Alad (talk) 10:47, 17 May 2018 (UTC)
Neither --ask parameter nor pacutils is used by pakku. It just passes --noconflict to pacman, so it will fail on conflicts. Kitsunyan (talk) 11:22, 17 May 2018 (UTC)
--noconflict is not a valid pacman parameter. I guess you mean --noconfirm. If it just fails rather than handle these conflicts beforehand it doesn't qualify as "batch interaction", where these conflicts are handled before the build starts (same for aurmanAUR). -- Alad (talk) 11:30, 17 May 2018 (UTC)
Yes, I meant --noconfirm, just a typo. Kitsunyan (talk) 11:34, 17 May 2018 (UTC)
Right, thanks for clarifying then. Draft of the new table: User:Alad/AUR_helpers#Active. Note that I put "No" for git diff in pakku's entry. I guess you could argue it could be Optional if you have some hook ability (same for bauerbillAUR). -- Alad (talk) 12:11, 17 May 2018 (UTC)
I don't mind. Pakku provides PreBuildCommand hook which allows user to insert his custom script, but that's quite complex task, and I think it'd be better if it was implemented in pakku directly, which I'm planning to do later.
Speaking about batch interaction, I think I misled you. Pakku will fail on conflicts only if user specify --noconfirm himself. Pakku never uses --noconfirm by its own. When I added "batch interaction" to table, I meant that pakku will ask to view files before build, and ask about installing only if it's necessary to install something right now (this mechanism is quite complex, further explanation would be inappropriate here). Kitsunyan (talk) 19:52, 17 May 2018 (UTC)
Speaking about the table you edited in the page. Since you've reordered the columns ("native pacman" is a 5th column now), it would be better to reorder their descriptions as well. Unrelated to the topic, but you mentioned it here. Kitsunyan (talk) 17:29, 20 May 2018 (UTC)
Good point, changed with [5] -- Alad (talk) 18:48, 20 May 2018 (UTC)

Add diff column

Alternative to [6]. Independent of git clone support (aurutils supports tar diffs and yay will probably do the same at one point).

The question is if helper with optional automatic build like pkgbuilderAUR and naamanAUR again don't apply and get an N/A entry. -- Alad (talk) 10:46, 17 May 2018 (UTC)

Considering the significant effort it took into researching this and the build interaction column (both which I initially thought trivial), I'll merge my copy soon unless someone makes a reasonable objection. -- Alad (talk) 17:16, 17 May 2018 (UTC)

Extend "inactive" to include "native pacman"

Helpers which willfully use broken behavior like pacman -Ud (warranting a red entry in the "Native pacman" column) for at least 6 months should be moved to the Inactive table. In particular, trizenAUR. Thoughts? -- Alad (talk) 11:57, 17 May 2018 (UTC)

Ack from me, although I would change section name from "Inactive" to "Inactive or problematic", as criteria for belonging is getting wider. -- Svito (talk) 20:31, 18 May 2018 (UTC)
You're right, "inactive" is probably misleading/too vague in this case. Thanks for the suggestion. -- Alad (talk) 21:11, 18 May 2018 (UTC)

Pakku now supports diff view

Support for diff view was added in 0.12. Kitsunyan (talk) 17:24, 20 May 2018 (UTC)

Thanks, added [7]. I hope I linked the right commit. -- Alad (talk) 18:48, 20 May 2018 (UTC)
My bad, I should have linked the commit. Your link is right. Kitsunyan (talk) 19:17, 20 May 2018 (UTC)

pikaur's interactive control flow

[8], [9]: Why interactive control flow is worse feature to mention than vifm or deep search? -- Actionless (talk) 14:16, 21 May 2018 (UTC)

Because no idea what's that even supposed to mean or if it's more than a trivial feature. -- Alad (talk) 14:46, 21 May 2018 (UTC)
but it's the same with two other examples i gave in the topic, and actually it was a link to the commit with the description Actionless (talk) 14:58, 21 May 2018 (UTC)
The first part is related to batch interaction - that you use an expect(1) clone to achieve this is a technical detail that can already be read from the linked commit in said column. The second part about restarting operations appears trivial since most helpers have some way to continue where you've left off if something fails. -- Alad (talk) 15:37, 21 May 2018 (UTC)
But in linked column about batch interaction and pacman wrapping it's not saying the same as in a new link i was adding. the main point was the approach to resolving dependencies -- instead of computing them by my own and forcing pacman to comply i am just guessing which questions could be asked by pacman and interactively answering through expect-like mechanism, leaving user to answer to unexpected questions. That's a very big difference in compare to all other helpers. Actionless (talk) 15:40, 21 May 2018 (UTC)
I still have no idea what you mean by "forcing pacman to comply". pacaur did just that, ask questions on what conflicts may occur, save the user's answer then feed it back to pacman. The only difference here is that pacaur used pacman --ask and you feed the user answer to pacman's stdin.
If there's some helper out there automatically overriding pacman conflicts or removing installed packages without telling the user, that's something that should be fixed on that helper's end. -- Alad (talk) 15:45, 21 May 2018 (UTC)
The only other helper with "full" batch interaction is yayAUR, so I guess you mean this commit: [10] So does that mean it just gives you a list of conflicting packages it computed before the build begins, or "trying to be smarter than pacman" as you put it? Maybe User:Morganamilo can clarify. -- Alad (talk) 16:44, 21 May 2018 (UTC)
The --ask flag which have as an example actually implies --noconfirm so yes -- that's something what i consider bad behavior, because in case of some unexpected situation pacman will either do something wrong without any prompt from the user either fail Actionless (talk) 16:47, 21 May 2018 (UTC)
pacman isn't going to do something wrong since at least 2009 [11] when run with --noconfirm. I guess what you're trying to advertise as specificity is something like "--no-confirm-but-not-really"? If so that should be explained much more precisely than two disparaging sentences in a README. Something like a wiki article on your github that would be linked from the Batch interaction column. -- Alad (talk) 17:04, 21 May 2018 (UTC)
For the last point, compare [12] which moves "deep search" to the Reliable solver column since it's an elaborate description why and how aurmanAUR qualifies.
I would argue that vifm should remain as an aurutils specificity though, since it's beyond the scope of the Secure column (much like bauerbillAUR's trust management is) and all other helpers including pikaur have 9001 prompts before the start of any build process. -- Alad (talk) 17:14, 21 May 2018 (UTC)

aurutils as pacman wrapper (external project)

Apparently there's this ongoing project which wraps both pacman and aurutils: [13] -- Alad (talk) 17:39, 21 May 2018 (UTC)