Sébastien Marie <semarie-open...@latrappe.fr> writes:

> Hi,
>
> I start to look at lang/chicken in ports. Currently it is near 6 years
> old.
>
> But I encourter the following problem: chicken generate and use a shared
> lib with only a major number for the version (lib/libchicken.so.6 from
> upstream). It is the "BINARYVERSION=6" in defaults.make file.  It is
> also used in directory name for extensions (some are provided by
> default): lib/chicken/6 .
>
> According to the ports guide, porters should rewrites the library
> version to correctly keep track of ABI changes.
>
> My problem is chicken expects BINARYVERSION to be an integer, and use it
> as integer for:
>  - found the library when deploying application (copy the file in a
>    target directory)
>  - use it in extensions-directory-name (lib/chicken/6/...) when managing
>    extensions (install an extension as unprivilegied user).
>
> But 2.0 casted to integer is 2... so I couldn't satisfy OpenBSD
> requirement (major+minor) without patching chicken to do the program use
> a string instead of an integer. Am I right, here ?
>
> *But*, patching chicken is patching scheme source. And need
> first bootstrapping chicken... The upstream tarball contains scheme
> source + compiled-c-files, and offer the possibility to bootstrap the
> compiler first.
>
> But if I patch scheme files before building chicken-boot (the
> bootstrapping compiler), the makefile wants to regenerate C file
> (whereas the bootstrapping compiler is not yet here).
>
> So how to achieve this ?
>  - have another port lang/chicken-boot (only used in BUILD_DEPENDS of
>    lang/chiken) ? (or hierarchy like lang/chicken/boot for bootstrap and
>    lang/chiken/stable for stable release ?)
>  
>  - does exist a possibility in ports to first build something before
>    patching ?
>
>  - does it possible to keep BINARYVERSION as integer ? According to the
>    chicken wiki, they take care to do the right thing with version
>    number: "Changes that break C-level compatibility (for example by
>    modifying the signature of an exported C routine) will require
>    bumping up the "binary compatibility version" (BINARYVERSION in
>    defaults.make).")
>
>    But SHARED_LIBS doesn't seems support major only version
>    (make update-plist isn't agreed) .
>
>  - another solution ?
>
>
> I join my current diff of the ports.
>
> And a other question: the chicken Makefile contains a check for OpenBSD
> to remove a gcc option: "OpenBSD base still uses GCC 3.3.5 which does
> not support -fwrapv".  Does OpenBSD still have somes archs with GCC
> 3.3.5 (or that don't support -fwrapv option) ?
>
> Thanks.

Hi,

I've had WIP port of chicken in the openbsd-wip tree for a while:
https://github.com/jasperla/openbsd-wip/tree/master/lang/chicken

I haven't yet found a way to properly address the shared library version.
The installed version number is correct in the port but the deployment doesn't
work. It still uses the old binary version. If I modify csc.scm copy-libraries
function to use ".6.0" then the build fails. I didn't notice anything else wrong
in my port.

Timo

Reply via email to