Package Details: hledger-bin 1.52.1-1

Git Clone URL: https://aur.archlinux.org/hledger-bin.git (read-only, click to copy)
Package Base: hledger-bin
Description: Command-line interface for the hledger accounting system
Upstream URL: http://hledger.org
Keywords: hledger ledger
Licenses: GPL-3.0-or-later
Conflicts: hledger
Provides: hledger
Submitter: ccat3z
Maintainer: gesh
Last Packager: gesh
Votes: 9
Popularity: 0.000203
First Submitted: 2020-08-22 05:39 (UTC)
Last Updated: 2026-05-01 04:19 (UTC)

Dependencies (1)

Required by (7)

Sources (1)

Latest Comments

« First ‹ Previous 1 2 3 4 5 Next › Last »

dude commented on 2025-01-10 13:33 (UTC) (edited on 2025-01-10 13:34 (UTC) by dude)

Thanks! I might not have time to review your changes for another few days, so I'm going to add you as a co-maintainer if that's okay. That way you can make changes to it as you see fit, without having to wait on me (I think that's how it works).

gesh commented on 2025-01-09 19:31 (UTC) (edited on 2025-01-09 19:43 (UTC) by gesh)

For some reason I thought I'd posted the patch, apologies. Checking with ldd, it seems that zlib and ncurses are indeed necessary, though ncurses5 isn't (that's due to an older version of the dependencies). Looking at the dependency tree, zlib is a transitive dependency of hledger-web (via its use of yesod), but not of either of the others. EDIT: Double-checking shows that everyone depends on ncurses for some reason, fixed the patch)

The patch (I omitted that on my local system, I removed the tabs, replaced the quotes for pkgdesc by single quotes, and most controversially extracted the common package() instructions into a separate function): (note the depends+=() line is not optional if you want hledger to have the correct dependencies in .SRCINFO)

diff --git a/PKGBUILD b/PKGBUILD
index 4c6d661..d6caa86 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,56 +1,52 @@
 # Maintainer: dude <brrtsm@gmail.com>

-pkgver=1.40
+pkgver=1.41
 pkgname=(hledger-bin hledger-ui-bin hledger-web-bin)
-pkgrel=5
+pkgrel=1
 pkgdesc="Easy-to-use command-line/curses/web plaintext accounting tool"
 arch=(x86_64)
 url="http://hledger.org"
-license=('GPL')
-depends=('gmp' 'ncurses5-compat-libs')
-makedepends=('coreutils')
+license=('GPL-3.0-or-later')
+depends=('gmp' 'ncurses')
 optdepends=('asciinema: hledger demo support')
 source=(
-    hledger-${pkgver}.tar.gz::https://github.com/simonmichael/hledger/releases/download/${pkgver}/hledger-linux-x64.tar.gz
-    https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger/shell-completion/hledger-completion.bash
+    hledger-${pkgver}.tar.zip::https://github.com/simonmichael/hledger/releases/download/${pkgver}/hledger-linux-x64.zip
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger/hledger.1
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger-ui/hledger-ui.1
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger-web/hledger-web.1
 )
-sha256sums=(
-    8f41679941ee6e68d77b9a6f9c0d155d9e6e27265da297f92d0a5bcf5658679e
-    662abb7f39b9582315a6d014012fdff56664e8cf6b2665f1d96ae3285930d4ce
-    cb37c183da683bd6031c881272998f994a60ead08b25e61c4698d6cbc3269968
-    7a789e1a2b82f0e250efb5ec0d1b630a6053cabb2912bccddee7f65fc08fe992
-    cfd949b03ce0a0ce20d7ab1e99173456465d02716cc3ad472a4be7bc2e31d325
-)
+sha256sums=('97b28749dbd673f093f0f0784b0cd938f41f0729bb4a73daf3aa56d7994c3353'
+            'd8608500460bddd820429a1b6a46e1a6f4f2955666c0ddf33969f2eb2d6886cc'
+            '8f4aa0bc4b0474596a06b48e9227fa6c18ecb58b123c078f81776ef4d2eb85ee'
+            'b49e60026438567f9ed98c80930ac9c2d60e637e2518a2ae4eaed606f16c46cb')

 prepare() {
     cd $srcdir
-    tar -xvf ./hledger-${pkgver}.tar.gz
+    tar -xvf ./hledger-${pkgver}.tar
 }

 package_hledger-bin() {
     pkgdesc="Command-line interface for the hledger accounting system"
    provides=(hledger)
    conflicts=(hledger)
-    depends+=(glibc)
+    depends+=()

-    install -Dm 755 ./hledger "$pkgdir/usr/bin/hledger"
-    install -Dm 644 hledger-completion.bash "$pkgdir/usr/share/bash-completion/completions/hledger"
-    install -Dm 644 hledger.1 -t "$pkgdir/usr/share/man/man1/"
+    install -Dm 755 "$pkgname" -t "$pkgdir/usr/bin/"
+    install -Dm 644 hledger-completion.bash \
+        "$pkgdir/usr/share/bash-completion/completions/$pkgname"
+    install -Dm 644 "$pkgname".1 -t "$pkgdir/usr/share/man/man1/"
 }

 package_hledger-ui-bin() {
     pkgdesc="Curses-style terminal interface for the hledger accounting system"
    provides=(hledger-ui)
    conflicts=(hledger-ui)
-    depends+=(zlib)
+    depends+=()

-    install -Dm 755 ./hledger-ui "$pkgdir/usr/bin/hledger-ui"
-    mkdir -p "$pkgdir/usr/share/bash-completion/completions/"
-    ln -sr "$pkgdir/usr/share/bash-completion/completions/hledger"{,-ui}
-    install -Dm 644 hledger-ui.1 -t "$pkgdir/usr/share/man/man1/"
+    install -Dm 755 "$pkgname" -t "$pkgdir/usr/bin/"
+    install -Dm 644 hledger-completion.bash \
+        "$pkgdir/usr/share/bash-completion/completions/$pkgname"
+    install -Dm 644 "$pkgname".1 -t "$pkgdir/usr/share/man/man1/"
 }

 package_hledger-web-bin() {
@@ -59,8 +55,8 @@ package_hledger-web-bin() {
    conflicts=(hledger-web)
     depends+=(zlib)

-    install -Dm 755 ./hledger-web "$pkgdir/usr/bin/hledger-web"
-    mkdir -p "$pkgdir/usr/share/bash-completion/completions/"
-    ln -sr "$pkgdir/usr/share/bash-completion/completions/hledger"{,-web}
-    install -Dm 644 hledger-web.1 -t "$pkgdir/usr/share/man/man1/"
+    install -Dm 755 "$pkgname" -t "$pkgdir/usr/bin/"
+    install -Dm 644 hledger-completion.bash \
+        "$pkgdir/usr/share/bash-completion/completions/$pkgname"
+    install -Dm 644 "$pkgname".1 -t "$pkgdir/usr/share/man/man1/"
 }

dude commented on 2025-01-09 18:57 (UTC)

@gesh Can you provide a diff with all of the changes that you mentioned?

Regarding ncurses, that's required for hledger-ui as far as I know. Not sure about zlib.

gesh commented on 2024-12-30 19:42 (UTC) (edited on 2024-12-30 19:56 (UTC) by gesh)

In reading the diff, just noticed prepare() contains an absolutely unnecessary extraction of a tar archive. EDIT: turns out pacman isn't smart enough to extract .tar.zip files (in fact, the fact that it extracts one level at all is a coincidence -- makepkg tries to autodetect the archive type and seems to be accidentally detecting the underlying tar archive. Luckily, bsdtar -xf can extract both zip and tar archives, but since zip files are themselves archives, it stops the extraction after one step (in contrast to eg .tar.xz files)). On the other hand, Github is too stubborn to enable automatically uploading .tar.gz files1, so upstream ended up going with .tar.zip files2.

Also, the new release packages the bash completion with it, no need to download it separately anymore. Hopefully, soon the manpages will also be distributed in the bindist, making the hardcoded urls unnecessary3

Also, the license is GPL-3+, see the manpage.

Also, you either want the split packages to work independently (in which case, independent copies of hledger-completion.bash should be shipped with each, instead of symlinking), or you want to make the -ui and -web variants depend on the vanilla hledger.

Finally, are you sure the ncurses5 and zlib dependencies are necessary? The former is IIUC only needed for GHCs from more than 7 years ago4, and I can't find mention of the latter in the repo. Also, glibc and coreutils are in base, there's no need to manually specify them.

dbh97 commented on 2024-12-27 10:09 (UTC)

Here's 1.41 diff.

diff --git a/PKGBUILD b/PKGBUILD
index 4c6d661..7f526c5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,6 +1,6 @@
 # Maintainer: dude <brrtsm@gmail.com>

-pkgver=1.40
+pkgver=1.41
 pkgname=(hledger-bin hledger-ui-bin hledger-web-bin)
 pkgrel=5
 pkgdesc="Easy-to-use command-line/curses/web plaintext accounting tool"
@@ -11,23 +11,24 @@ depends=('gmp' 'ncurses5-compat-libs')
 makedepends=('coreutils')
 optdepends=('asciinema: hledger demo support')
 source=(
-    hledger-${pkgver}.tar.gz::https://github.com/simonmichael/hledger/releases/download/${pkgver}/hledger-linux-x64.tar.gz
+    hledger-${pkgver}.zip::https://github.com/simonmichael/hledger/releases/download/${pkgver}/hledger-linux-x64.zip
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger/shell-completion/hledger-completion.bash
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger/hledger.1
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger-ui/hledger-ui.1
     https://raw.githubusercontent.com/simonmichael/hledger/hledger-${pkgver}/hledger-web/hledger-web.1
 )
 sha256sums=(
-    8f41679941ee6e68d77b9a6f9c0d155d9e6e27265da297f92d0a5bcf5658679e
-    662abb7f39b9582315a6d014012fdff56664e8cf6b2665f1d96ae3285930d4ce
-    cb37c183da683bd6031c881272998f994a60ead08b25e61c4698d6cbc3269968
-    7a789e1a2b82f0e250efb5ec0d1b630a6053cabb2912bccddee7f65fc08fe992
-    cfd949b03ce0a0ce20d7ab1e99173456465d02716cc3ad472a4be7bc2e31d325
+    97b28749dbd673f093f0f0784b0cd938f41f0729bb4a73daf3aa56d7994c3353
+    4acdf7a80ff641210bd4de7814b9f44607b51d44b3df08b709eb202670047801
+    d8608500460bddd820429a1b6a46e1a6f4f2955666c0ddf33969f2eb2d6886cc
+    8f4aa0bc4b0474596a06b48e9227fa6c18ecb58b123c078f81776ef4d2eb85ee
+    b49e60026438567f9ed98c80930ac9c2d60e637e2518a2ae4eaed606f16c46cb
 )

 prepare() {
     cd $srcdir
-    tar -xvf ./hledger-${pkgver}.tar.gz
+    unzip ./hledger-${pkgver}.zip
+    tar -xf ./hledger-linux-x64.tar
 }

 package_hledger-bin() {

gesh commented on 2024-09-17 18:05 (UTC)

Note the installation instructions in the completion file -- it should be symlinked to also be pointed to by /usr/share/bash-completion/completions/hledger-{ui,web}. Currently, the only way to load the completion for eg hledger-ui is to first do hledger <TAB> -- this will pull in the completion file, which will additionally configure completion for hledger-ui and hledger-web.

diff --git a/PKGBUILD b/PKGBUILD
index cb9759e..4c6d661 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@

 pkgver=1.40
 pkgname=(hledger-bin hledger-ui-bin hledger-web-bin)
-pkgrel=4
+pkgrel=5
 pkgdesc="Easy-to-use command-line/curses/web plaintext accounting tool"
 arch=(x86_64)
 url="http://hledger.org"
@@ -48,6 +48,8 @@ package_hledger-ui-bin() {
     depends+=(zlib)

     install -Dm 755 ./hledger-ui "$pkgdir/usr/bin/hledger-ui"
+    mkdir -p "$pkgdir/usr/share/bash-completion/completions/"
+    ln -sr "$pkgdir/usr/share/bash-completion/completions/hledger"{,-ui}
     install -Dm 644 hledger-ui.1 -t "$pkgdir/usr/share/man/man1/"
 }

@@ -58,5 +60,7 @@ package_hledger-web-bin() {
     depends+=(zlib)

     install -Dm 755 ./hledger-web "$pkgdir/usr/bin/hledger-web"
+    mkdir -p "$pkgdir/usr/share/bash-completion/completions/"
+    ln -sr "$pkgdir/usr/share/bash-completion/completions/hledger"{,-web}
     install -Dm 644 hledger-web.1 -t "$pkgdir/usr/share/man/man1/"
 }

dude commented on 2024-09-14 16:03 (UTC)

@tee Thanks, I've added that as an optdepends just now

tee commented on 2024-09-14 15:42 (UTC)

This optionally depends on asciinema, for hledger demo 2.

gesh commented on 2024-09-10 19:08 (UTC)

Ah, right. I had considered that a static resource (i.e. not something making this a VCS package), but of course you're right to want to get the version of the completion at that tag. Also, TIL that syntax to get the file at a given tag, thanks!

dude commented on 2024-09-10 18:39 (UTC)

@gesh Fixed it for you...just needed to specify hledger-${pkgver} as the git tag, instead of the master branch.