Package Details: hledger-bin 1.41-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: 8
Popularity: 0.82
First Submitted: 2020-08-22 05:39 (UTC)
Last Updated: 2025-01-19 19:59 (UTC)

Latest Comments

1 2 3 4 5 Next › Last »

gesh commented on 2025-01-19 14:08 (UTC)

@alerque Done, though I'm a little confused as to how you're using this?

Also, this feels like something a clever enough pacman should be able to do itself, I've raised this upstream: https://gitlab.archlinux.org/pacman/pacman/-/issues/225

alerque commented on 2025-01-17 12:55 (UTC)

Would you mind fixing the provide declarations (in 3 places of course) with version specs:

- provides=(hledger)
+ provides=("hledger=$pkgver")

This will make builds of this package easier to manage as project dependencies so it can resolve whether to prefer the (frequently OOD) official hledger package or this one. Thanks.

gesh commented on 2025-01-14 18:11 (UTC)

@zibolo That's odd -- I'm guessing I mistakenly ldd'd hledger-git, which yielded these false positives. Checking the archives, I can confirm what you're saying, and indeed dropping all depends lines yields a seemingly-working binary even when building in a clean chroot.

Indeed, checking upstream, the release is built against musl in an Alpine Linux container. Thanks for pointing it out, I'll be using upstream's config to fix my -static packages.

zibolo commented on 2025-01-12 20:26 (UTC)

Hello @gesh! I'm not an expert and I'm curious how did you determine gmp and ncurses dependencies.

By downloading the latest (1.41) prebuilt binaries, all executables seems to be "fully" statically linked, indeed ldd hledger* returns "not a dynamic executable".

file says hledger: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked [...].

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/"
 }