Also, the proper mailing list to ask for a PKGBUILD review is aur-general@lists.archlinux.org. I haven't noticed you used aur-dev@lists.archlinux.org instead when I replied the first time so I forwarded the discussion to the proper mailing list this time via this reply. Let's continue this discussion here please :) For everyone's context, here's the initial PKGBUILD provided for a review: https://bpa.st/TXEW2 -- Regards, Robin Candau / Antiz Le 02/07/2023 à 20:59, Robin Candau a écrit :
Le 02/07/2023 à 04:20, james smith a écrit :
I am trying to package this https://github.com/lemmygtk/lemoa this is my pkgbuild any tips on how to improve it before I send it to aur is appreciated
Hi James,
_/Quick note before reviewing your PKGBUILD:/_ /When asking for a review, try to make your PKGBUILD publicly readable somewhere (by posting it in paste service for instance, like https://bpa.st/ or https://gist.github.com/). This is way easier to track as the discussion progresses and way more "trust worthy" than an attached file sent to a mailing list. /
In it's current state, your PKGBUILD won't work and needs some modifications and improvements. Here's what I can list after a quick review:
- The comments at the top provided by the PKGBUILD example file should be removed.
- You can remove variables/arrays that are empty/unused in your PKGBUILD (epoch, groups, checkdepends, etc...).
- Consider filling out the maintainer info at the top of the PKGBUILD. This isn't mandatory but it is recommended and appreciated.
- The pkgname you chose refers to a VCS package ("lemoa*-git*"). If you indeed want your package to be a VCS package (meaning that it relies on the latest upstream commit instead of a specific tag/release) then you have to adapt your PKGBUILD accordingly with a proper "pkgver()" function [1]. Otherwise, switch your "pkgname" to "lemoa" and update the rest of the PKGBUILD accordingly.
- 'GNU' isn't a valid license. The correct license for "lemoa" currently is 'GPL3' [2]. See also the license section of the PKGBUILD wiki page for more information [3].
- The 'Gtk' package listed in the "depends" array isn't a valid package. "Lemoa" seems to depends on GTK-4 [4] which can be installed via the "gtk4" package in Arch [5].
- Upstream documentation also lists "rust, cargo and pkg-config" as "Build dependencies" [4]. According to that, you should add the "cargo" package (which also provides "rust") to your "makedepends" array. However, you don't have to explicitly list the "pkg-config" package (provided by the "pkgconf" package in Arch [6]) because it is a member of the "base-devel" meta-package [7] which is assumed installed during build-time [8].
- The "install" variable expects the name of an optional ".install" script used to perform tasks before or after the install, the upgrade and/or the removal of the package [9], it isn't meant to store a "raw" command like you did. At first glance, there's no need for an install script in your case so you can remove that variable.
- The "source" array is wrong and will fail to download the repo. It should be "git*+*$url" instead of "git*=*$url". See the VCS sources section of the wiki for more information [10]. Just for the sake of it, I'll add the usual trailing ".git" at the end, like so: source=("git+${url}.git")
- Because the sources are not static in a VCS package, you have to explicitly skip the checksum by adding 'SKIP' to the "md5sums" array [11]. Letting it empty will not work. On a side note, I recommend switching to a more modern and secure hash algorithm generally speaking ("sha256sums" for instance).
- You shouldn't "git clone" the repo inside the "build()" function. This is implicitly done beforehand by filling the correct/proper sources in the "source" array.
- The "ninja -C _build install" part as to be called within the "package()" function. You'll also need to setup the destination directory to "$pkgdir" which is the temporary directory where "makepkg" builds and bundles the package [12]. See the "package()" section of the Meson packaging guidelines for more information [13].
Overall, I advice you to read closely the three following Arch wiki pages which should contain most of the information you'll need to write a proper PKGBUILD for "lemoa-git": - PKGBUILD [14] - VCS Packaging Guidelines [15] - Meson Packaging Guidelines [16]
I hope this helps :) Don't hesitate to ask for details or further questions if needed!
[1] https://wiki.archlinux.org/title/VCS_package_guidelines#The_pkgver()_functio... [2] https://github.com/lemmygtk/lemoa/blob/main/LICENSE [3] https://wiki.archlinux.org/title/PKGBUILD#license [4] https://github.com/lemmygtk/lemoa#build-dependencies [5] https://archlinux.org/packages/extra/x86_64/gtk4/ [6] https://archlinux.org/packages/core/x86_64/pkgconf/ [7] https://archlinux.org/packages/core/any/base-devel/ [8] https://wiki.archlinux.org/title/PKGBUILD#makedepends [9] https://wiki.archlinux.org/title/PKGBUILD#install [10] https://wiki.archlinux.org/title/VCS_package_guidelines#VCS_sources [11] https://wiki.archlinux.org/title/VCS_package_guidelines#Authentication_and_s... [12] https://wiki.archlinux.org/title/Creating_packages#Defining_PKGBUILD_variabl... [13] https://wiki.archlinux.org/title/Meson_package_guidelines#package() [14] https://wiki.archlinux.org/title/PKGBUILD [15] https://wiki.archlinux.org/title/VCS_package_guidelines [16] https://wiki.archlinux.org/title/Meson_package_guidelines
-- Regards, Robin Candau / Antiz
participants (1)
-
Robin Candau