Index | Thread | Search

From:
Theo Buehler <tb@theobuehler.org>
Subject:
Re: net/ocserv package broken
To:
Renaud Allard <renaud@allard.it>
Cc:
ports <ports@openbsd.org>
Date:
Wed, 22 Oct 2025 08:51:12 +0200

Download raw body.

Thread
On Wed, Oct 22, 2025 at 08:25:04AM +0200, Renaud Allard wrote:
> Hello,
> 
> I have upgraded some servers to 7.8. One of them is running ocserv.
> However ocserv package (fetched from ftp.fr and ftp.eu) seems broken.
> 
> tar xvzf ocserv-1.3.0p0.tgz
> 
> +CONTENTS
> +DESC
> sbin/ocserv
> sbin/ocserv-worker
> man/man8/ocserv.8
> bin/occtl
> bin/ocpasswd
> man/man8/occtl.8
> man/man8/ocpasswd.8
> share/examples/ocserv/sample.config
> share/examples/ocserv/ocserv-fw
> share/examples/ocserv/profile.xml
> tar: Removing leading / from absolute path names in the archive
> etc/rc.d/ocserv
> share/examples/ocserv/sample.passwd
> 
> ldd sbin/ocserv
> 
> sbin/ocserv:
> ld.so: ocserv: can't load library 'libllhttp.so.0.0'
> sbin/ocserv: signal 9

If you haven't installed the pkglocatedb package, install it. Then

$ pkglocate libllhttp
llhttp-9.3.0p0:www/llhttp:/usr/local/lib/libllhttp.so.0.0
llhttp-9.3.0p0:www/llhttp:/usr/local/lib/pkgconfig/libllhttp.pc
$ doas pkg_add llhttp

will work around this.

> I did rebuild the package on a server running 7.8 and the package doesn't
> have the issue. Any idea how to solve that?

This is what we call a hidden dependency. The configure script picks up
llhttp if it happens to be installed on the build machine at configure
time. This will work on that machine whether llhttp is present or not.
However, if llhttp was present, this package won't work if llhttp is
missing on the machine you want to run it on. The missing dependency can
also cause build-time failures on the bulk build machines if llhttp is
removed during the build of ocserv since its presence appears no longer
needed.

There are two fixes for this: 1. add or 2. disable the dependency. Since
llhttp is cheap, I see no real reason to disable it. Disabling would
be by passing --without-llhttp to the CONFIGURE_ARGS. Which way we go
is your call as a maintainer.

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/ocserv/Makefile,v
diff -u -p -r1.61 Makefile
--- Makefile	28 Jun 2025 00:36:32 -0000	1.61
+++ Makefile	22 Oct 2025 06:33:28 -0000
@@ -2,7 +2,7 @@ COMMENT=	server implementing the AnyConn
 
 DISTNAME=	ocserv-1.3.0
 EXTRACT_SUFX=	.tar.xz
-REVISION=	0
+REVISION=	1
 
 CATEGORIES=	net
 
@@ -13,7 +13,7 @@ MAINTAINER =	Renaud Allard <renaud@allar
 # GPLv2+
 PERMIT_PACKAGE=	Yes
 
-WANTLIB+=	c curses ev gnutls lz4 m nettle oath pam protobuf-c
+WANTLIB+=	c curses ev gnutls llhttp lz4 m nettle oath pam protobuf-c
 WANTLIB+=	radcli readline talloc
 
 SITES=		https://www.infradead.org/ocserv/download/
@@ -30,7 +30,8 @@ LIB_DEPENDS=	archivers/lz4 \
 		net/radcli>=1.2.5 \
 		security/gnutls \
 		security/oath-toolkit \
-		security/openpam
+		security/openpam \
+		www/llhttp
 TEST_DEPENDS=	net/openconnect \
 		shells/bash \
 		sysutils/coreutils \