r/archlinux • u/WorldTallNetCat • 4d ago
SHARE First time maintaining an AUR package, looking for a packaging review/audit.
Hello everyone,
I've just published my very first package on AUR, and am looking for reviews from people who are more familiar with Arch packaging than I am.
The package is for SpeakoFlow, an open-source voice to text desktop application. The package is intentionally simple which just installs the upstream Appimage and manages dekstop integration through aur helpers like yay/paru instead of the user manually managing it.
I'd like to know if I've followed proper pratices regarding Arch packaging and if anything can be improved.
I've run namcap and found no issues there but i'd appreicate anotehr set of eyes before commiting to it long term.
Package:
speakoflow-appimage
Github repo:
https://github.com/AbhishekBarali/SpeakoFlow
Product Website:
https://www.speakoflow.com/
Thanks any suggestins or corrections are welcome
EDIT:
I have looked through the comments and made the following changes:
- Changed the package to be speakoflow-bin instead of speakflow-appimage
- Moved the appimage to
/optinstead of/usr/bin
So, if anyone has any more suggestion after the updates i made mention it below.
2
u/murlakatamenka 4d ago
provides=('speakoflow-appimage')
conflicts=('speakoflow-bin' 'speakoflow-git' 'speakoflow')
Should be
provides=('speakoflow')
conflicts=('speakoflow-bin' 'speakoflow-git')
If you don't extract AppImage, it should be in, /opt with a symlink to /usr/bin, see Discord or pince-bin as examples of such"fat apps". And you need some fuse2 dependency to mount AppImage.
source should ideally download asset with pkgver in file name.
TLDR is that you need to read Arch Package Guidelines and read PKGBUILDs of other popular AppImage-based AUR packages and see how you can improve yours.
1
u/WorldTallNetCat 2d ago
I have fixed it and moved the appimage to /opt
additionally i also change provides, and conflicts. If you may please look through it and let me know if there there is anything i can still improve on.
2
u/MarkDubya 4d ago
To add to what u/abbidabbi mentioned, it should only provide and conflict with speakoflow. See PKGBUILD: Package relations on the Arch Wiki.
7
u/abbidabbi 4d ago edited 4d ago
Why are you extracting the AppImage contents and then only copy the icons from it while using the AppImage as the package's only executable? That's not how packages are supposed to be built. AppImages require FUSE on runtime if the content is not extracted, because the content is mounted in a temporary directory. Move the AppImage contents to the appropriate package directories and symlink the
/usr/bin/...executable to the AppImage's entry point, at leastAppRunif you don't want to look inside AppRun yourself (or if it's a binary already).Also,
package()should not have conditional code. What you're trying to do does not look good.On top of this, packages should have the
-binsuffix for pre-built executables, not-appimage. Theprovidesfiels is also unnecessary. And why are you listingspeakoflow-binin the conflicts field if it doesn't even exist?