Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move static libs and link files into dev packages #678

Merged
merged 3 commits into from
Jul 15, 2020

Conversation

ilammy
Copy link
Collaborator

@ilammy ilammy commented Jul 14, 2020

Normally the “library” packages on Debian and RHEL contain only shared library files. Headers, static libraries, and shared library links go into the “development” package which is necessary to build software that uses the library (but not run it). On RHEL the static libraries are often moved into their own -static package to avoid bloating the -devel package (as dynamic linkage is customary).

Historically, we've been putting everything into the “library” package but let's follow the conventions from now on.

libthemis:

  • libsoter.so.0 and libthemis.so.0

libthemis-devel:

  • header files
  • pkg-config files
  • libsoter.a and lbthemis.a
  • libsoter.so and libthemis.so symlinks

We already recommend to install “development” packages to develop software that uses Themis. Some language wrappers – dynamic languages like Python and Ruby – will need that as they resolve Themis dynamic library dynamically and need the symlink to be present.

Checklist

  • Change is covered by automated tests (somewhat? on Buildbot? maybe)
  • Changelog is updated

Normally the "library" packages on Debian an RHEL contain only shared
library files. Headers, static libraries, and shared library links go
into the "development" package which is necessary to build software
that uses the library (but not run it). On RHEL the static libraries
are often moved into their own "-static" package to avoid bloating the
"-devel" package (as dynamic linkage is customary).

Historically, we've been putting everything into the "library" package
but let's follow the conventions from now on.

We already recommend to install "development" packages to develop
software that uses Themis. Some language wrappers -- dynamic languages
like Python and Ruby -- will need that as they resolve Themis dynamic
library dynamically and need the symlink to be present.
@ilammy ilammy added core Themis Core written in C, its packages infrastructure Automated building and packaging compatibility Backward and forward compatibility, platform interoperability issues, breaking changes O-Linux 🐧 Operating system: Linux labels Jul 14, 2020
@ilammy ilammy requested a review from Lagovas as a code owner July 14, 2020 09:39
Copy link
Contributor

@vixentael vixentael left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this change affect BuildBot testing? @shadinua

CHANGELOG.md Outdated Show resolved Hide resolved
Copy link
Contributor

@shadinua shadinua left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completely reasonable 👍

@ilammy
Copy link
Collaborator Author

ilammy commented Jul 14, 2020

By the way,

Some language wrappers – dynamic languages like Python and Ruby – will need that as they resolve Themis dynamic library dynamically and need the symlink to be present.

This is not necessarily true. Python docs, for example, suggest that find_library should locate libraries with ABI version suffixes too. However, I remember that we did have issues with finding and loading libraries when the symlink is not present. We stay on the safe side for now, but it may very well be that libthemis is sufficient for Python software to run as well. No idea about Ruby though (they docs are very terse).

@shadinua
Copy link
Contributor

Does this change affect BuildBot testing? @shadinua

Should not. Here we do not change building or installation flow how it looks from user (and CICD) side.

@ilammy ilammy merged commit f431116 into cossacklabs:master Jul 15, 2020
@ilammy ilammy deleted the package-split branch July 15, 2020 08:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compatibility Backward and forward compatibility, platform interoperability issues, breaking changes core Themis Core written in C, its packages infrastructure Automated building and packaging O-Linux 🐧 Operating system: Linux
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants