pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: unresolved dependency on heimdal



Le 2020-01-24 13:04, Frédéric Fauberteau a écrit :
Le 2020-01-24 12:06, Frédéric Fauberteau a écrit :
Le 2020-01-24 11:28, Thomas Klausner a écrit :
On Fri, Jan 24, 2020 at 11:25:43AM +0100, Frédéric Fauberteau wrote:
Le 2020-01-24 10:20, Frédéric Fauberteau a écrit :
> Le 2020-01-24 09:26, Jörn Clausen a écrit :
> > Hi!
> >
> > In the last few days I saw this several times on NetBSD-8.1:
> >
> > ===> Creating toolchain wrappers for cmake-3.16.3
> > ERROR: heimdal>=0.4e heimdal>=0.6 is not installed; can't buildlink
> > files.
> > *** Error code 1
> >
> > In this case deve/cmake fails, but I think I also had another package
> > that did not build. Neither package has a direct dependency on
> > heimdal, so I don't know where the actual mismatch comes from.
> >
> > The problem is easily resolved by installing security/heimdal.
> >
> > More importantly: What's the cause here? Will NetBSD 9 come with a
> > newer version of heimdal and some package maintainer is using -current
> > and accidentally created a dependency?
>
> I have the same problem on Netbsd 8.0 with devel/cmake and with
> textproc/redland too.
>
> I am investigating for devel/cmake (that breaks a lot of packages) but
> I don't understand why heimdal is not added as an indirected
> dependency.
>
> When we look at the buildlink tree, we see that heimdal appears:
> $ bmake show-var VARNAME=BUILDLINK_TREE
> libarchive bzip2 -bzip2 xz -xz zlib -zlib -libarchive libexecinfo
> -libexecinfo libuv -libuv rhash openssl -openssl -rhash expat -expat
> curl heimdal sqlite3 -sqlite3 db1 -db1 -heimdal libidn2 iconv -iconv
> gettext iconv -iconv -gettext libunistring -libunistring -libidn2
> nghttp2 -nghttp2 gettext -gettext zlib -zlib openssl -openssl -curl
> ncurses -ncurses pthread -pthread
>
> It should be built as a dependency of curl, but surprisingly, it
> doesn't.

I add tech-pkg@ to this thread because I think it is a technical problem.

I am starting to understand better. security/heimdal is a dependency of
www/curl with the option gssapi. Nevertheless, it is not added as a
dependency since there is a builtin implementation:
# pwd
/usr/pkgsrc/www/curl
# make show-depends
libidn2>=2.0.0:../../devel/libidn2
nghttp2>=1.40.0nb2:../../www/nghttp2

This is the default configuration I use in a chrooted sandbox to run pbulk. But in the /etc/mk.conf of my NetBSD, I have PREFER_PKGSRC=yes that produces
now:
$ bmake show-depends
heimdal>=1.5.3nb22:../../security/heimdal
libidn2>=2.0.0:../../devel/libidn2
gettext-lib>=0.18:../../devel/gettext-lib
nghttp2>=1.40.0nb2:../../www/nghttp2
zlib>=1.2.3:../../devel/zlib
openssl>=1.1.1dnb2:../../security/openssl

security/heimdal should not be in BUILDLINK_TREE of devel/cmake if it is not
a dependency of www/curl.

pkgsrc does not get this information from the installed packages, but
from the pkgsrc tree. It's not an easy task to change that.

I understood that devel/cmake included www/curl/buildlink3.mk that
included mk/krb5.buildlink3.mk that included
security/heimdal/buildlink3.mk that set BUILDLINK_TREE+=  heimdal.
There is no relation here with installed packages.

So you need to use the same settings everywhere -- decide if you want
to PREFER_PKGSRC and build cmake with that as well...or remove it in
both places.

I just said that with PREFER_PKGSRC= yes, security/heimdal was shown
as a dependency of www/curl and was built. But I get the error in a
chrooted sandbox in which PREFER_PKGSRC is not defined. Then
security/heimdal is not built as a dependency of www/curl.
Nevertheless, I understood that because heimdal appears in
BUILDLINK_TREE of devel/cmake, the following code from
mk/buildlink3/bsd.buildlink3.mk was executed:
${_BLNK_COOKIE.${_pkg_}}:
        ${RUN}                                  \
case "${BUILDLINK_PREFIX.${_pkg_}}" in \ *not_found) \
                ${RROR_MSG} "${BUILDLINK_API_DEPENDS.${_pkg_}} is not
installed; can't buildlink files."; \
                exit 1;

I don't understand why BUILDLINK_PREFIX.heimdal=
BUILDLINK_PREFIX.heimdal_not_found.

Since the recent changes of openssl, I think that USE_BUILTIN.heimdal=
no because USE_BUILTIN.openssl= no because builtin version 1.0.2k does
not match openssl>=1.1.1

is this behavior correct?
# cd /usr/pkgsrc/devel/cmake && make show-var VARNAME=USE_BUILTIN.heimdal
no
# cd /usr/pkgsrc/www/curl && make show-var VARNAME=USE_BUILTIN.heimdal
yes

I understand that www/curl will not build security/heimdal since it considers that the builtin version is used. But when devel/cmake tests its dependencies, it considers that builtin version of heimdal is not used and it complains that the package is not installed.

Home | Main Index | Thread Index | Old Index