On Sun, Sep 03 2023, Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
> On Sun, Sep 03 2023, Jonathan Schleifer <js-openbsd-po...@nil.im> wrote:
>> This would be small enough if the package still built. Moving
>>> SHARED_LIBS to 0.0 I get:
>>>
>>> Error: /usr/obj/pobj/objfw-1.0/fake-amd64/usr/local/lib/libobjfw.so.0.0 
>>> does not exist
>>> Error: /usr/obj/pobj/objfw-1.0/fake-amd64/usr/local/lib/libobjfwrt.so.0.0 
>>> does not exist
>>> Error: /usr/obj/pobj/objfw-1.0/fake-amd64/usr/local/lib/libobjfwtls.so.0.0 
>>> does not exist
>>
>> Ah, so the problem here was different definitions of soname. For me, the
>> .0.0 is part of the soname, so it is indeed part of the soname after all
>> (if going by my definition).
>
> Not sure we have the same definition indeed.  objfw indeed seems to
> use -Wl,-soname but not on OpenBSD (which is fine), so the resulting
> library doesn't have a DT_SONAME dynamic tag and the versioning
> information available to ld.so(8) only comes from the major.minor
> version encoded in the library file name.
>
>>> at make package time.  This is what Stuart meant when he said that the
>>> port should be in control: SHARED_LIBS should decide the version used to
>>> build and install the shared libraries.
>>
>> So in plain English: OpenBSD wants to ignore upstream library version /
>> soname versions and always use its own. Got it.
>
> Basically, yes.
>
>>> For automake or cmake ports this
>>> is usually handled transparently by the ports infrastructure, which sets
>>> various values in the build environment.  Here you don't seem to use
>>> automake so you're probably going to need patches + ${SUBST_CMD} to inject
>>> LIBobjfw_VERSION etc at the right spot.
>>
>> Ah, perfect, this can just be overridden using MAKE_FLAGS. Done.
>
> Thanks.  See the attached port for a more 
>
>>> Regarding the port, I see two nits:
>>> - Portable -> portable in COMMENT
>> Done
>>> - maybe include your full name in MAINTAINER
>> Done
>>> - .SILENT doesn't help understanding what is going on
>> The non-.SILENT output isn't too useful either, as that's just a bunch
>> of shellscript then that loops over things.
>
> I don't know which of .SILENT or make -s or the escape characters hide
> the compiler command lines used to build the object files, but let's
> find a way to disable this behaviour at least in the port.  We need to
> see the programs and flags involved, if only to verify that said flags
> are sane in the context of the ports tree.
>
>>> and I wonder about two things:
>>> - COMPILER + COMPILER_LANGS: is COMPILER_LANGS actually useful here?
>> You mean because Clang is guaranteed to support ObjC?
>
> Yup.  Also the ports infrastructure doesn't seem to do much with
> COMPILER_LANGS=objc.
>
>>> - is this framework already used by other applications in the wild?
>> I'm at least fairly certain not by anything else in OpenBSD ports ;).
>>>    Could it be used as a building block for other ports?
>> Define building blocks.
>
> Like being used as an alternative for other objc frameworks and as
> a runtime for objc applications.  Admittedly that's not an ecosystem
> I know much about.
>
>> Like a Makefile template for other ports?
>> I don't think so, it's just a regular library, users of the library can
>> use whatever build system they want.
>>>    Do we have to
>>>    care about some existing ports automatically picking it up?
>> I don't think so, no.
>>> That's a lot of questions, sorry :)
>>
>> No worries, I hope I addressed everything with the new tarball I attached.
>
> Thanks.  Updated tarball attached which simplifies SHARED_LIBS handling
> and zaps COMPILER_LANGS=objc.  Could you please tweak/patch the port so
> that compiler/linker commands are printed?

Woops...

Attachment: objfw-2.tar.gz
Description: Binary data

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to