[Scons-dev] Tutorial for Linux versioned libraries

anatoly techtonik techtonik at gmail.com
Mon May 18 07:49:58 EDT 2015


On Fri, May 15, 2015 at 5:58 PM, Bill Deegan <bill at baddogconsulting.com> wrote:
> Anatoly,
>
> This message would have been better sent to the users mailing list.

Not really. Here the recent thread in this list that says that mentions
http://scons.tigris.org/issues/show_bug.cgi?id=2869 and says that it is
nowhere near fixed.

https://www.mail-archive.com/scons-dev@scons.org/msg02303.html


So, the questions are:
1. What is the matter with shared libraries in layman terms?
2. What is the system logic to handle them?
3. What is the compiler toolchain logic to produce them?
4. What is the currently implemented SCons logic?
5. Why it is wrong?

This is important to be able to fix this stuff. But also important for me
to fix this RHVoice issue.

> I'm taking a look at it now.
>
> I'm fairly certain this issue is handled (at least in default branch and
> 2.3.4).

If it is fixed in 2.3.4 then http://scons.tigris.org/issues/show_bug.cgi?id=2869
should mention what exactly was fixed and where it is documented, because
the comment says that it was fixed in 2.2.0 and the was about recent
version as I see it.

> The main SConstruct set's the soname and doesn't use the SCons logic to do
> the shared library versioning:

Right. And I unable to understand what should be the idea behind.

> src/SConstruct  (line 165)
>>    if sys.platform.startswith("linux"):
>>
>> env.Append(SHLINKFLAGS="-Wl,-soname,${TARGET.file}.${libversion.split('.')[0]}")
>
>
> If I comment out those lines (taking shared library versioning out of the
> picture) I get the following error:
> python src/nvda-synthDriver/RHVoice.py -o say.wav "say something"
> RHVoice 0.5.1
> RHVoice_tts_engine_struct: No language resources are available
> Traceback (most recent call last):
>   File "src/nvda-synthDriver/RHVoice.py", line 285, in <module>
>     main()
>   File "src/nvda-synthDriver/RHVoice.py", line 235, in main
>     raise RuntimeError("RHVoice: engine initialization error")
> RuntimeError: RHVoice: engine initialization error

"RHVoice 0.5.1" string means the .so is loaded ok.

> I've sent a pull request with the changes:
> https://github.com/techtonik/RHVoice/pull/1

Thanks. I need to understand the issue better before merging it.
1. If RHVoice needs those version numbers at all?
2. Why it tries to load so.0 when there is .0.0.0?


More information about the Scons-dev mailing list