Haikuporter: "waiting for build package <...> to be activated" - how to i get out of these?

I’ve (re)started in my journey in porting stuff to Haiku (mostly POSIX), It’s very educational…and hard

I was wondering if you can help me getting out of those “waiting for build package blahblahblah to be activated” errors I get most of the times. There’s no log, there, so I’m almost lost everytime.

The ones that puzzles me most are those that stuck che building process when I add some specific commands in BUILD_PREREQUISITES block.

For example, in this one https://github.com/theclue/haikuports/blob/fitsToPNG/sci-astronomy/fitspng/fitspng-1.4.recipe I get that error when I add cmd:aclocal. I’m desperately try to understand why :open_mouth:

In another case I crushed there while after having added just cmd:awk! And that was even more puzzling because suddenly the error faded away after some cleaning in the recipe file (tabs, indentations…ofc there was more than that for sure, but went unnoticed to me while i was housecleaning the file so i don’t know the cause-effect): https://github.com/haikuports/haikuports/pull/4838

So, where is the logic behind these errors? Where is the best way to start debugging when they pop up?

Usually it’s because the first entry in your PROVIDES does not match the filename of the recipe. Haikuporter uses the filename of the recipe to check what package would be activated, but the package kit uses the PROVIDES entry.

But it could be other problems in the PROVIDES, REQUIRES, etc. entries, for example if you have non-breakable spaces accidentally put there or other special characters, or otherwise invalid syntax.

More sanity checks could be added to haikuporter so that the problems are caught earlier and with a better error message.

Tnx allot @PulkoMandy

this is incredibly frustrating for a newbie :frowning:

I’ve checked everything possible in https://github.com/theclue/haikuports/blob/fitsToPNG/sci-astronomy/fitspng/fitspng-1.4.recipe but the script is totally clean (at least, it seems to me) :man_shrugging:

But i’m stubborn and I must rescue in it. I won’t give up

There are no internal logs or somewhat to check into?

ARCHITECTURES="!x86_gcc2 x86 x86_64 ?arm ?ppc ?sparc"

SECONDARY_ARCHITECTURES=“x86 x86_64”

PROVIDES="

fitspng$secondaryArchSuffix = $portVersion

"

Too many primary architectures to start with (don’t know what your primary architecture is)
Secondary architecture doesn’t have x86_64 so you can remove that
In provides there is nothing providing a cmd or the likes?

Try to run haikuporter with the -S option (strict) it would probably reveal some other things (haven’t checked)

Tnx Begasus, that was probably the issue I guess.

I will add all those infos you’re providing me in a FAQ. Perhaps it could be useful to add a page to HP Wiki on github?

Another question I’ve asked yesterday on IRC, too. A recipe which was supponed to works (it build correctly since…well…yesterday) has stopped working with several errors in dependencies like these:

Warning: POLICY ERROR: "/packaging/cfitsio/lib/libcfitsio.so" needs library "libssl.so.1.1"

This is the recipe: CFITSIO - NASA Library for manipulating FITS files: new recipe by theclue · Pull Request #4838 · haikuports/haikuports · GitHub
As you may see, it’s absolutely working…it was even merged upstream!

All these supposed “requirements” are related to libcurl most probably. They are not directed requirements of my recipe, that’s for sure.

Is there something broken in my local repo/setup perhaps?

Haikuporter scans the generated .so file and sees that it indeed directly links to libSSL. That may be indeed a problem in how libcurl is built (and in particular, in its pkg-config files). For some reason, your library is linked directly against libssl, which is now a dependency for it. If we modified curl to link to something else, your library would still be linked to libssl and would still needs it. So, for the time being, you must add that as a requirement to the package. And for the long term fix, we should check why curl is doing that.

Probably a .la somewhere that wasn’t removed, or something like that?

I’m continuing to investigate the issue inspecting the generates Makefile

The offending libs are clearly libcurl dependencies coming from curl-config.

LIBS_CURL = -L/packages/curl-7.69.1-1/.self/develop/lib -lcurl -lnghttp2 -lssl -lcrypto -lssl -lcrypto -lz -lnetwork

The build step clearly references them directly

${SHLIB_LD} ${LDFLAGS} -o ${CFITSIO_SHLIB} ${OBJECTS} -lm ${LIBS_CURL} ${LIBS}

I don’t know how to fix this, but I will continue investigating…

Haiku don’t have libm, its functions are located in libroot.

Well, that’s good to know. I’m going to clean that right now. Tnx for reporting! :slight_smile:

Well, that explains it; curl should not be forcing those dependencies on applications.

We have a libm.a which is empty so -lm still works, as it’s required to by the POSIX specification.

I’m totally going to add it in my HP tricks page :slightly_smiling_face:

/me keep calm and amending the last commit

Add an empty line between line 14 and 15
Use “libpng16” instead of “libpng” (see issue https://github.com/haikuports/haikuports/issues/3525)

(not tested the recipe itself here) :slight_smile:

EDIT: cfitsio needs a fix in PROVIDES_devel, also missing deppendencies on ssl, crypto, nghttp and libz in the recipe (working on that atm)

EDIT2: cmd:fitspng isn’t provided if you build for secondary architecture, or you could add $secondaryArchSuffix there or better omit dir bindir …