Re: New port: devel/objfw

2023-09-07 Thread Jonathan Schleifer

Am 05.09.23 um 12:50 schrieb Stuart Henderson:


Except it isn't robust to changes - it can just silently fail to apply,
which doesn't happen with a patch.


My worry was that a patch still applies and misses to remove an -s, then 
giving you only partial output, which is worse than no output.


In any case, that won't be a concern. The buildsys now supports 
--disable-silent-rules 
(https://fl.nil.im/buildsys/info/182a6b6bca378d8c) and this will be in 
the next release (https://objfw.nil.im/info/9e971288b972f330).


--
Jonathan



Re: New port: devel/objfw

2023-09-05 Thread Stuart Henderson
On 2023/09/04 22:52, Jonathan Schleifer wrote:
> Am 04.09.23 um 16:30 schrieb Jeremie Courreges-Anglas:
> 
> > Thanks.  I have imported objfw as proposed in your last tarball, except
> > with a simple patch for clarity instead of your ed(1) script.
> 
> Thank you!
> 
> My reason for using the ed script over a patch was that it'll be
> more robust to changes. I'll see if I can add a general
> `--disable-silent-rules` or something.

Except it isn't robust to changes - it can just silently fail to apply,
which doesn't happen with a patch.



Re: New port: devel/objfw

2023-09-04 Thread Jonathan Schleifer

Am 04.09.23 um 16:30 schrieb Jeremie Courreges-Anglas:


Thanks.  I have imported objfw as proposed in your last tarball, except
with a simple patch for clarity instead of your ed(1) script.


Thank you!

My reason for using the ed script over a patch was that it'll be more 
robust to changes. I'll see if I can add a general 
`--disable-silent-rules` or something.


--
Jonathan



Re: New port: devel/objfw

2023-09-04 Thread Jeremie Courreges-Anglas
On Sun, Sep 03 2023, Jonathan Schleifer  wrote:
> Am 03.09.23 um 19:49 schrieb Jeremie Courreges-Anglas:
>
>> 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.
>
> Attached is an updated port that removes the silent rules. However, that
> makes the output quite confusing and is IMO not really an improvement.
> But hey, you're the guys looking at that output, if that's what you
> prefer, I'm fine with that :-).
>
>> 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.
>
> If that's all: buildsys.mk is the source of truth for all that. Printing
> OBJC, OBJCFLAGS, CPPFLAGS, LIBS and LDFLAGS from that would probably be
> sufficient for that purpose and would look a lot less messy.

There are two colliding interests here: having a build log that looks
neat to you or the end user (hence the ascii escape sequences, I guess),
and explicit build logs that bring us porters valuable information.
There are few things as frustrating for us as an opaque build system.

The output may look a bit messy in the port, but in that context that's
better than no output at all.  If that's something you want to care
about, many projects handle both wishes with a --disable-silent-rules or
V=0/V=1 button.

>> 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.
>
> Nope, this is not an OpenStep implementation, so cannot act as the
> alternative of one.

ack

>> 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?
>
> I took those two changes. For silent see above.

Thanks.  I have imported objfw as proposed in your last tarball, except
with a simple patch for clarity instead of your ed(1) script.

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



Re: New port: devel/objfw

2023-09-04 Thread Stuart Henderson
On 2023/09/03 20:48, Jonathan Schleifer wrote:
> Am 03.09.23 um 19:49 schrieb Jeremie Courreges-Anglas:
> 
> > 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.
> 
> Attached is an updated port that removes the silent rules. However, that
> makes the output quite confusing and is IMO not really an improvement. But
> hey, you're the guys looking at that output, if that's what you prefer, I'm
> fine with that :-).

we often aren't looking at the output directly, rather grepping the
build logs looking for software using e.g. certain headers / compiler
flags / etc.



Re: New port: devel/objfw

2023-09-03 Thread Jonathan Schleifer

Am 03.09.23 um 19:55 schrieb Stuart Henderson:


yep, exactly. reasons:

- we find that some upstream projects don't understand shared library
versioning, and either increment the version number when not needed, or
don't increment when it is needed.


Upstream handling reads exactly like OpenBSD handling, so this case is 
probably fine. (minor increased for new symbols, major increased on ABI 
break)



as this information is used to trigger
updates of packages depending on a library after that library has
changed incompatibly, it needs to work otherwise people get mismatching
library+other packages.

- in the past (rarely) we've had to bump library versions in ports after
a major incompatible change in system headers/libraries

I think we're unlikely to use this second reason again, we have a
different mechanism to force updates of all ports which is more
convenient now, but even ignoring that the first reason is enough.
and considering that when a port is brought into OpenBSD the upstream
library version is often >0.0, making sure that ports start with 0.0
means that we can check that ports is indeed in control of the version
number.


I guess since the second case is unlikely, in practice, OpenBSD's 
version will always be one major version less than upstream. But hey, if 
that is required to show "we're using OpenBSD library versions here and 
not upstream versions", so be it. My concern is just someone having it 
installed without ports on OpenBSD - and then there is a lot of fun with 
library versions being exactly one major version apart. Seems like 
asking for trouble on systems where you have both, ports and non-ports 
versions.



please don't do this, patches straight from github are fragile and
easily change e.g. when the shortened commit hash is no longer unique
they add an extra hex digit.

if you must fetch a patch from elsewhere please use a static file rather
than an on-the-fly generated one, but preferably include the patches in
the port (copy the original files with an .orig.port suffix in the work
directory and apply patches, then run "make update-patches" to generate
files with the correct format and filename conventions)


I realized that patch is not needed at all, as both versions are 1.0 in 
this release. Only in the future, when they diverge, such a patch would 
be required. However, any future release will already include the patch, 
so, including it is not necessary and just setting the variables like it 
already were will just magically make it work with the next update.


--
Jonathan



Re: New port: devel/objfw

2023-09-03 Thread Jonathan Schleifer

Am 03.09.23 um 19:49 schrieb Jeremie Courreges-Anglas:


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.


Attached is an updated port that removes the silent rules. However, that 
makes the output quite confusing and is IMO not really an improvement. 
But hey, you're the guys looking at that output, if that's what you 
prefer, I'm fine with that :-).



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.


If that's all: buildsys.mk is the source of truth for all that. Printing 
OBJC, OBJCFLAGS, CPPFLAGS, LIBS and LDFLAGS from that would probably be 
sufficient for that purpose and would look a lot less messy.



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.


Nope, this is not an OpenStep implementation, so cannot act as the 
alternative of one.



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?


I took those two changes. For silent see above.

PTAL.

--
Jonathan

objfw.tar.gz
Description: application/gzip


Re: New port: devel/objfw

2023-09-03 Thread Stuart Henderson
On 2023/09/03 15:58, Jonathan Schleifer 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).
> 
> > 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.

yep, exactly. reasons:

- we find that some upstream projects don't understand shared library
versioning, and either increment the version number when not needed, or
don't increment when it is needed. as this information is used to trigger
updates of packages depending on a library after that library has
changed incompatibly, it needs to work otherwise people get mismatching
library+other packages.

- in the past (rarely) we've had to bump library versions in ports after
a major incompatible change in system headers/libraries

I think we're unlikely to use this second reason again, we have a
different mechanism to force updates of all ports which is more
convenient now, but even ignoring that the first reason is enough.
and considering that when a port is brought into OpenBSD the upstream
library version is often >0.0, making sure that ports start with 0.0 
means that we can check that ports is indeed in control of the version
number.

> > - .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.
> > and I wonder about two things:
> > - COMPILER + COMPILER_LANGS: is COMPILER_LANGS actually useful here?
> You mean because Clang is guaranteed to support 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 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.

comments on the makefile:

: COMPILER=   base-clang ports-clang
: COMPILER_LANGS =objc

objc is not supported by the COMPILER/COMPILER_LANGS framework; from
bsd.port.mk(5):

 COMPILER_LANGS
 The value of COMPILER_LANGS will be added to the respective
 module's supported langs.  Defaults to ‘c c++’.  Only ‘c’ and
 ‘c++’ are supported by this mechanism.  ‘fortran’ or ‘java’ still
 need old modules annotations, so that it's possible to select,
 e.g., ‘gfortran’ from gcc 8 while having clang from base.  See
 also CHOSEN_COMPILER.

: LIBOBJFW_VERSION_MAJOR =0
: LIBOBJFW_VERSION_MINOR =0
: LIBOBJFWRT_VERSION_MAJOR =  0
: LIBOBJFWRT_VERSION_MINOR =  0
: LIBOBJFWTLS_VERSION_MAJOR = 0
: LIBOBJFWTLS_VERSION_MINOR = 0
: 
: SHARED_LIBS +=  objfw ${LIBOBJFW_VERSION_MAJOR}.${LIBOBJFW_VERSION_MINOR}
: SHARED_LIBS +=  objfwrt 
${LIBOBJFWRT_VERSION_MAJOR}.${LIBOBJFWRT_VERSION_MINOR}
: SHARED_LIBS +=  objfwtls 
${LIBOBJFWTLS_VERSION_MAJOR}.${LIBOBJFWTLS_VERSION_MINOR}
...
: MAKE_FLAGS +=   OBJFW_LIB_MAJOR=${LIBOBJFW_VERSION_MAJOR}
: MAKE_FLAGS +=   OBJFW_LIB_MINOR=${LIBOBJFW_VERSION_MINOR}
: MAKE_FLAGS +=   OBJFWRT_LIB_MAJOR=${LIBOBJFWRT_VERSION_MAJOR}
: MAKE_FLAGS +=   OBJFWRT_LIB_MINOR=${LIBOBJFWRT_VERSION_MINOR}
: MAKE_FLAGS +=   OBJFWTLS_LIB_MAJOR=${LIBOBJFWTLS_VERSION_MAJOR}
: MAKE_FLAGS +=   OBJFWTLS_LIB_MINOR=${LIBOBJFWTLS_VERSION_MINOR}

this can be simplified

SHARED_LIBS +=  objfw 0.0
SHARED_LIBS +=  objfwrt 0.0
SHARED_LIBS +=  objfwtls 0.0

MAKE_FLAGS +=   OBJFW_LIB_MAJOR=${LIBobjfw_VERSION:R} \
OBJFW_LIB_MINOR=${LIBobjfw_VERSION:E} \
OBJFWRT_LIB_MAJOR=${LIBobjfwrt_VERSION:R} \
OBJFWRT_LIB_MINOR=${LIBobjfwrt_VERSION:E} \
OBJFWTLS_LIB_MAJOR=${LIBobjfwtls_VERSION:R} \
OBJFWTLS_LIB_MINOR=${LIBobjfwtls_VERSION:E}

: MASTER_SITES1 = https://github.com/ObjFW/ObjFW/commit/

please don't do this, patches straight from github are fragile and
easily change e.g. when the shortened commit hash is no longer 

Re: New port: devel/objfw

2023-09-03 Thread Jeremie Courreges-Anglas
On Sun, Sep 03 2023, Jeremie Courreges-Anglas  wrote:
> On Sun, Sep 03 2023, Jonathan Schleifer  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...



objfw-2.tar.gz
Description: Binary data

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


Re: New port: devel/objfw

2023-09-03 Thread Jeremie Courreges-Anglas
On Sun, Sep 03 2023, Jonathan Schleifer  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?

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



Re: New port: devel/objfw

2023-09-03 Thread Jonathan Schleifer

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).



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.



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.


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.

and I wonder about two things:
- COMPILER + COMPILER_LANGS: is COMPILER_LANGS actually useful here?

You mean because Clang is guaranteed to support 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 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.

--
Jonathan


objfw.tar.gz
Description: application/gzip


Re: New port: devel/objfw

2023-09-03 Thread Jeremie Courreges-Anglas
On Sun, Sep 03 2023, Jonathan Schleifer  wrote:
> Am 03.09.23 um 12:55 schrieb Jeremie Courreges-Anglas:
>
>> On Sun, Sep 03 2023, Jonathan Schleifer  wrote:
>>> Am 31.08.23 um 09:56 schrieb Jonathan Schleifer:
>>>
 Am 31.08.23 um 08:26 schrieb Stuart Henderson:
>>> SHARED_LIBS +=  objfw   1.0
>>> SHARED_LIBS +=  objfwrt 1.0
>>> SHARED_LIBS +=  objfwtls    1.0
>> I can't remember how strict we are with these version starting numbers
>> but iirc we start with 0.1 (?) I don't really mind if this isn't
>> changed.
>> The bumpings are the more important ones anyway.
> 0.0.
>
> The key thing is to make sure that changing the versions in SHARED_LIBS
> changes the versions of the produced file, i.e. make sure that ports is
> in control.
 Ok, now I have questions :).

 I was under the impression that the the SHARED_LIBS should match the
 .so name? This would be the case with 1.0, as upstream used 0.0 during
 development when there was no stable ABI/API (and users could have
 installed such a pre-1.0 release manually on OpenBSD). I could find
 https://man.openbsd.org/library-specs.7 which seems to indicate it
 must match the .so name, as well as lining out rules on when and how
 to update the version, which match upstream in this case (I can vouch
 for this, as I am the upstream).

 Given that, wouldn't it be better to have it 1.0 instead of always one
 major version less than upstream?*

 * Very, very early, there was a major version of as high as 8. But
 this was a decade or so ago and I think nobody ever used it. And on
 a version that was very much declared "this WILL break, don't use this
 for anything"
>>> I'm happy to change it to 0.0, of course, but would really like to fully
>>> understand the implications of this. Should every port, when imported to
>>> OpenBSD, change the soname to 0.0?
>> The library version should be 0.0 for a new port and the soname should
>> match the library name.
>
> Ah, OK, so then I was confused by the documentation, which I interpreted
> as it needs to match. Then I see absolutely no reason why it shouldn't
> be set to 0.0 indeed.
>
>> That's how we handle it in ports, with all due
>> respect that's not something that you, as an upstream, should feel
>> concerned about IMO.
>
> Sorry, I didn't mean to question the way you do things in OpenBSD ports,
> I was merely trying to understand if that has any implications for
> soname.
>
>> The version used in ports may stay at 0.0 or move to 0.1 or 1.0, 2.0
>> etc, it depends on how you (upstream) preserve or change API and ABI in
>> the future, but it may also depend on changes in the OpenBSD base system
>> and ports tree.  That's why the port for objfw should have complete
>> control about the version used.
>
> All good then! Should I send another tarball with it set to 0.0, or is
> this small enough for whoever imports it to just do it?

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

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.  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.

Regarding the port, I see two nits:
- Portable -> portable in COMMENT
- maybe include your full name in MAINTAINER
- .SILENT doesn't help understanding what is going on
and I wonder about two things:
- COMPILER + COMPILER_LANGS: is COMPILER_LANGS actually useful here?
- is this framework already used by other applications in the wild?
  Could it be used as a building block for other ports?  Do we have to
  care about some existing ports automatically picking it up?

That's a lot of questions, sorry :)

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



Re: New port: devel/objfw

2023-09-03 Thread Jonathan Schleifer

Am 03.09.23 um 12:55 schrieb Jeremie Courreges-Anglas:


On Sun, Sep 03 2023, Jonathan Schleifer  wrote:

Am 31.08.23 um 09:56 schrieb Jonathan Schleifer:


Am 31.08.23 um 08:26 schrieb Stuart Henderson:

SHARED_LIBS +=  objfw   1.0
SHARED_LIBS +=  objfwrt 1.0
SHARED_LIBS +=  objfwtls    1.0

I can't remember how strict we are with these version starting numbers
but iirc we start with 0.1 (?) I don't really mind if this isn't
changed.
The bumpings are the more important ones anyway.

0.0.

The key thing is to make sure that changing the versions in SHARED_LIBS
changes the versions of the produced file, i.e. make sure that ports is
in control.

Ok, now I have questions :).

I was under the impression that the the SHARED_LIBS should match the
.so name? This would be the case with 1.0, as upstream used 0.0 during
development when there was no stable ABI/API (and users could have
installed such a pre-1.0 release manually on OpenBSD). I could find
https://man.openbsd.org/library-specs.7 which seems to indicate it
must match the .so name, as well as lining out rules on when and how
to update the version, which match upstream in this case (I can vouch
for this, as I am the upstream).

Given that, wouldn't it be better to have it 1.0 instead of always one
major version less than upstream?*

* Very, very early, there was a major version of as high as 8. But
this was a decade or so ago and I think nobody ever used it. And on
a version that was very much declared "this WILL break, don't use this
for anything"

I'm happy to change it to 0.0, of course, but would really like to fully
understand the implications of this. Should every port, when imported to
OpenBSD, change the soname to 0.0?

The library version should be 0.0 for a new port and the soname should
match the library name.


Ah, OK, so then I was confused by the documentation, which I interpreted 
as it needs to match. Then I see absolutely no reason why it shouldn't 
be set to 0.0 indeed.



That's how we handle it in ports, with all due
respect that's not something that you, as an upstream, should feel
concerned about IMO.


Sorry, I didn't mean to question the way you do things in OpenBSD ports, 
I was merely trying to understand if that has any implications for soname.



The version used in ports may stay at 0.0 or move to 0.1 or 1.0, 2.0
etc, it depends on how you (upstream) preserve or change API and ABI in
the future, but it may also depend on changes in the OpenBSD base system
and ports tree.  That's why the port for objfw should have complete
control about the version used.


All good then! Should I send another tarball with it set to 0.0, or is 
this small enough for whoever imports it to just do it?


Thanks again!

--
Jonathan



Re: New port: devel/objfw

2023-09-03 Thread Jeremie Courreges-Anglas
On Sun, Sep 03 2023, Jonathan Schleifer  wrote:
> Am 31.08.23 um 09:56 schrieb Jonathan Schleifer:
>
>> Am 31.08.23 um 08:26 schrieb Stuart Henderson:
> SHARED_LIBS +=  objfw   1.0
> SHARED_LIBS +=  objfwrt 1.0
> SHARED_LIBS +=  objfwtls    1.0
 I can't remember how strict we are with these version starting numbers
 but iirc we start with 0.1 (?) I don't really mind if this isn't
 changed.
 The bumpings are the more important ones anyway.
>>> 0.0.
>>>
>>> The key thing is to make sure that changing the versions in SHARED_LIBS
>>> changes the versions of the produced file, i.e. make sure that ports is
>>> in control.
>>
>> Ok, now I have questions :).
>>
>> I was under the impression that the the SHARED_LIBS should match the
>> .so name? This would be the case with 1.0, as upstream used 0.0 during
>> development when there was no stable ABI/API (and users could have
>> installed such a pre-1.0 release manually on OpenBSD). I could find
>> https://man.openbsd.org/library-specs.7 which seems to indicate it
>> must match the .so name, as well as lining out rules on when and how
>> to update the version, which match upstream in this case (I can vouch
>> for this, as I am the upstream).
>>
>> Given that, wouldn't it be better to have it 1.0 instead of always one
>> major version less than upstream?*
>>
>> * Very, very early, there was a major version of as high as 8. But
>> this was a decade or so ago and I think nobody ever used it. And on
>> a version that was very much declared "this WILL break, don't use this
>> for anything"
>
> I'm happy to change it to 0.0, of course, but would really like to fully
> understand the implications of this. Should every port, when imported to
> OpenBSD, change the soname to 0.0?

The library version should be 0.0 for a new port and the soname should
match the library name.  That's how we handle it in ports, with all due
respect that's not something that you, as an upstream, should feel
concerned about IMO.

Earlier you said:
>> Given that, wouldn't it be better to have it 1.0 instead of always one
>> major version less than upstream?*

The version used in ports may stay at 0.0 or move to 0.1 or 1.0, 2.0
etc, it depends on how you (upstream) preserve or change API and ABI in
the future, but it may also depend on changes in the OpenBSD base system
and ports tree.  That's why the port for objfw should have complete
control about the version used.

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



Re: New port: devel/objfw

2023-09-03 Thread Jonathan Schleifer

Am 31.08.23 um 09:56 schrieb Jonathan Schleifer:


Am 31.08.23 um 08:26 schrieb Stuart Henderson:

SHARED_LIBS +=  objfw   1.0
SHARED_LIBS +=  objfwrt 1.0
SHARED_LIBS +=  objfwtls    1.0

I can't remember how strict we are with these version starting numbers
but iirc we start with 0.1 (?) I don't really mind if this isn't 
changed.

The bumpings are the more important ones anyway.

0.0.

The key thing is to make sure that changing the versions in SHARED_LIBS
changes the versions of the produced file, i.e. make sure that ports is
in control.


Ok, now I have questions :).

I was under the impression that the the SHARED_LIBS should match the 
.so name? This would be the case with 1.0, as upstream used 0.0 during 
development when there was no stable ABI/API (and users could have 
installed such a pre-1.0 release manually on OpenBSD). I could find 
https://man.openbsd.org/library-specs.7 which seems to indicate it 
must match the .so name, as well as lining out rules on when and how 
to update the version, which match upstream in this case (I can vouch 
for this, as I am the upstream).


Given that, wouldn't it be better to have it 1.0 instead of always one 
major version less than upstream?*


* Very, very early, there was a major version of as high as 8. But 
this was a decade or so ago and I think nobody ever used it. And on a 
version that was very much declared "this WILL break, don't use this 
for anything"


I'm happy to change it to 0.0, of course, but would really like to fully 
understand the implications of this. Should every port, when imported to 
OpenBSD, change the soname to 0.0?


--
Jonathan



Re: New port: devel/objfw

2023-08-31 Thread Jonathan Schleifer

Am 31.08.23 um 08:26 schrieb Stuart Henderson:

SHARED_LIBS +=  objfw   1.0
SHARED_LIBS +=  objfwrt 1.0
SHARED_LIBS +=  objfwtls    1.0

I can't remember how strict we are with these version starting numbers
but iirc we start with 0.1 (?) I don't really mind if this isn't changed.
The bumpings are the more important ones anyway.

0.0.

The key thing is to make sure that changing the versions in SHARED_LIBS
changes the versions of the produced file, i.e. make sure that ports is
in control.


Ok, now I have questions :).

I was under the impression that the the SHARED_LIBS should match the .so 
name? This would be the case with 1.0, as upstream used 0.0 during 
development when there was no stable ABI/API (and users could have 
installed such a pre-1.0 release manually on OpenBSD). I could find 
https://man.openbsd.org/library-specs.7 which seems to indicate it must 
match the .so name, as well as lining out rules on when and how to 
update the version, which match upstream in this case (I can vouch for 
this, as I am the upstream).


Given that, wouldn't it be better to have it 1.0 instead of always one 
major version less than upstream?*


* Very, very early, there was a major version of as high as 8. But this 
was a decade or so ago and I think nobody ever used it. And on a version 
that was very much declared "this WILL break, don't use this for anything"


--
Jonathan



Re: New port: devel/objfw

2023-08-31 Thread Stuart Henderson
On 2023/08/30 18:34, A Tammy wrote:
> 
> On 8/30/23 13:55, Jonathan Schleifer wrote:
> > Hi!
> >
> > With ObjFW 1.0 being released yesterday, I thought to package it up
> > for OpenBSD. Please find it attached and if it looks good, it would be
> > great if it could be imported.
> >
> 
> Exciting! Thanks for the port. Built cleanly and all tests passed.
> 
> Upstream doc says
> 
> > It supports all modern Objective-C features when using Clang, but is
> also compatible with GCC ≥ 4.6 to allow maximum portability.
> 
> Unfortunate, our ports gcc doesn't support objcetive-c :(
> 
> > SHARED_LIBS +=  objfw   1.0
> > SHARED_LIBS +=  objfwrt 1.0
> > SHARED_LIBS +=  objfwtls    1.0
> 
> I can't remember how strict we are with these version starting numbers
> but iirc we start with 0.1 (?) I don't really mind if this isn't changed.
> The bumpings are the more important ones anyway.

0.0.

The key thing is to make sure that changing the versions in SHARED_LIBS
changes the versions of the produced file, i.e. make sure that ports is
in control.



Re: New port: devel/objfw

2023-08-30 Thread A Tammy


On 8/30/23 13:55, Jonathan Schleifer wrote:
> Hi!
>
> With ObjFW 1.0 being released yesterday, I thought to package it up
> for OpenBSD. Please find it attached and if it looks good, it would be
> great if it could be imported.
>

Exciting! Thanks for the port. Built cleanly and all tests passed.

Upstream doc says

> It supports all modern Objective-C features when using Clang, but is
also compatible with GCC ≥ 4.6 to allow maximum portability.

Unfortunate, our ports gcc doesn't support objcetive-c :(

> SHARED_LIBS +=  objfw   1.0
> SHARED_LIBS +=  objfwrt 1.0
> SHARED_LIBS +=  objfwtls    1.0

I can't remember how strict we are with these version starting numbers
but iirc we start with 0.1 (?) I don't really mind if this isn't changed.
The bumpings are the more important ones anyway.

OK aisha@ to  import.

Cheers,
Aisha




New port: devel/objfw

2023-08-30 Thread Jonathan Schleifer

Hi!

With ObjFW 1.0 being released yesterday, I thought to package it up for 
OpenBSD. Please find it attached and if it looks good, it would be great 
if it could be imported.


--
Jonathan


objfw.tar.gz
Description: application/gzip