[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
- [Chicken-hackers] [PATCH] convert BINARYVERSION to c-string,
Sebastien Marie <=