chicken-hackers
[Top][All Lists]
Advanced

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

[Chicken-hackers] [PATCH] convert BINARYVERSION to c-string


From: Sebastien Marie
Subject: [Chicken-hackers] [PATCH] convert BINARYVERSION to c-string
Date: Wed, 1 May 2013 12:25:06 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Hi,

This mail has been already send to mario.goulart one week ago, to ask
for a change-request in trac, but I haven't receive any response, so
I try the mailing-list...

Currently, I start to update chicken in OpenBSD ports (the current
version in ports in 2.6) (see
http://www.openbsd.org/cgi-bin/cvsweb/ports/lang/chicken/)

But I have a problem in the manner of library is versioned in chicken:
the library version is same as BINARYVERSION, which is an integer. So
the library has not major+minor version, but only major.

Whereas OpenBSD requires major+minor for any library.

If I set BINARYVERSION to "6.0" for example, this create severals
incompatibilities due to traitment as integer. And tools don't work as
expected (chicken-install -p for example create wrong directory, or
deploy failed (don't found libchicken.so.6 when copy)).

So does it possible to support BINARYVERSION as string instead of
integer ?

This would permit more control for distribution (and reduce use of
number->string which is generally used when chicken manipulate
BINARYVERSION, but it is a very minor improvement).

I think (but you known chicken a lot more than me) that this
modification is not a functional modification (no more or less
functionnality in chicken itself), but it will require a bump of
BINARYVERSION (as the type of BINARYVERSION itself is changed).

The control of library version is necessary, in order to manage ABI
changes caused by a change in the OS itself for example.

The start of discussion in openbsd-ports mailing-list is here:
http://marc.info/?l=openbsd-ports&m=136660615313007&w=2 The problem of
ABI changes is more better explained overthere.

A patch is attached. I try to keep it less intrusive I can when
possible.

Basically it does:
 - export a new symbol chicken-binary-version in setup-api.scm, which is
   a foreign-value of BINARYVERSION.

 - deprecated (##sys#fudge 42) in runtime.c : as binary-version is now
   not an integer. I don't known if it is always possible to return it
   in fudge.

 - adapt chicken-{install,uninstall,status}, scripts/mini-salmonella.scm
   to used new exported symbol chicken-binary-version, instead of
   redefine each time a foreign-variable (or use ##sys#fudge). Theses
   files already imports setup-api.

 - change define-foreign-variable type from int to c-string where
   setup-api is not imported (csc.scm, eval.scm).


Thanks.
-- 
Sébastien Marie



reply via email to

[Prev in Thread] Current Thread [Next in Thread]