void-linux / void-packages

The Void source packages collection
https://voidlinux.org
Other
2.59k stars 2.16k forks source link

Package request: Wyrd #35401

Open wayover13 opened 2 years ago

wayover13 commented 2 years ago

Wyrd is a text-based front-end to Remind, a sophisticated calendar and alarm program. Looks like Wyrd used to be in Void repositories but seems to have been removed, possibly owing to the project being moribund. Wyrd now has a new maintainer who has released a new version, 1.5.0--see https://gitlab.com/wyrd-calendar/wyrd. Requesting that Wyrd be re-added to Void repos.

Barbaross93 commented 2 years ago

I started on putting a template file together:

# Template file for 'wyrd'
pkgname=wyrd
version=1.5.3
revision=1
build_style=gnu-configure
#configure_args=""
#make_build_args=""
#make_install_args=""
hostmakedepends="ocaml camlp5 base-devel"
makedepends="ncurses-devel"
depends="remind"
conf_files="/etc/wyrdrc"
short_desc="Ncurses front-end to Remind"
maintainer="Barbaross <cullenrss@gmail.com>"
license="GPL-2.0-or-later"
homepage="https://gitlab.com/wyrd-calendar/wyrd"
distfiles="${homepage}/-/archive/${version}/wyrd-${version}.tar.gz"
checksum=1d7936dd10b795a17bbce06ae14079eb36120f26fd7bd27b522f8df5196790e7

pre_configure() {
    ./prep-devtree.sh
}

The problem I'm running into now is that wyrd now depends on ocaml-curses. I think technically the right thing to do would be to create a separate package for it, but since it's an ocaml package I'm unsure of how to write the template file since there's no build_style for ocaml/dune build projects. Some pointers on how to proceed here would be greatly appreciated.

Barbaross93 commented 2 years ago

So, I ended up finding a package that used opam install within it's template and applied that method to the wyrd package. The new template looks like this:

# Template file for 'wyrd'
pkgname=wyrd
version=1.5.3
revision=1
build_style=gnu-configure
#configure_args=""
#make_build_args=""
#make_install_args=""
hostmakedepends="ocaml camlp5 opam base-devel"
makedepends="ncurses-devel"
depends="remind"
conf_files="/etc/wyrdrc"
short_desc="Ncurses front-end to Remind"
maintainer="Barbaross <cullenrss@gmail.com>"
license="GPL-2.0-or-later"
homepage="https://gitlab.com/wyrd-calendar/wyrd"
distfiles="${homepage}/-/archive/${version}/wyrd-${version}.tar.gz"
checksum=1d7936dd10b795a17bbce06ae14079eb36120f26fd7bd27b522f8df5196790e7

pre_configure() {
    ./prep-devtree.sh
}

pre_build() {
    opam init -y --compiler=ocaml-system --disable-sandboxing
    eval $(opam env)
    opam install -y curses
}

The issue now however is that during opam install -y curses, an error occurs in which one of the dependencies fails to get installed and therefore breaks the command. See here. There seems to be debate on whether the fix should come from either Void or the maintainer of the ocaml dependency. A Void maintainer has made a firm stance against fixing the issue in pkg-config (source), so it seems the fix needs to come from opam, where an issue has already been reported.

So it seems I'm back to square one. An AUR package managed to get it working through dune, but again, I'm unsure of how to approach this for Void's xbps packaging.

Barbaross93 commented 2 years ago

So, I finally got everything working. I did end up making a separate package for ocaml-curses and was successful in installing it.

The only issue left is that during the documentation creation, I have to manually hit enter a few times. The documents are made with latex2man and lualatex. I assume I'll need to edit the makefile to skip these checks?

wayover13 commented 2 years ago

Great news! Thank you! Looking forward to this utility being back in the repos.