Bug#1120310: What are the gir1.2 package naming conventions?
Seyed Mohamad Amin Modaresi <[email protected]> Thu, 11 Dec 2025 03:13:21 +0000
| Newsgroups | gmane.linux.debian.devel.bugs.general,gmane.linux.debian.devel.mentors,gmane.linux.debian.devel.gtk-gnome |
|---|---|
| Message-ID | <Y4FJSGo-KYsopTgPpbA_D3__AI0rdm27yhUBBVhGNGPUATg284qMcO1p2UR3rerxXWAZVCsKlWq0Xj4yRwdgenHg0tcYU_B0_89tajDJmrs=@proton.me> |
There are two types of ABI changes: ones that are backward-compatible and o= nes that are not. An ABI change is backward-compatible if any reasonable pr= ogram or library that was linked with the previous version of the shared li= brary will still work correctly with the new version of the shared library.= 15 Adding new symbols to the shared library is a backward-compatible chang= e. Removing symbols from the shared library is not. Changing the behavior o= f a symbol may or may not be backward-compatible depending on the change; f= or example, changing a function to accept a new enum constant not previousl= y used by the library is generally backward-compatible, but changing the me= mbers of a struct that is passed into library functions is generally not un= less the library takes special precautions to accept old versions of the da= ta structure. ABI changes that are not backward-compatible normally require changing the = SONAME of the library and therefore the shared library package name, which = forces rebuilding all packages using that shared library to update their de= pendencies and allow them to use the new version of the shared library. For= more information, see Run-time shared libraries. ---- The run-time shared library must be placed in a package whose name changes = whenever the SONAME of the shared library changes. This allows several vers= ions of the shared library to be installed at the same time, allowing insta= llation of the new version of the shared library without immediately breaki= ng binaries that depend on the old version. 2 Normally, the run-time shared library and its SONAME symlink should be plac= ed in a package named librarynamesoversion, where soversion is the version = number in the SONAME of the shared library. Alternatively, if it would be c= onfusing to directly append soversion to libraryname (if, for example, libr= aryname itself ends in a number), you should use libraryname-soversion inst= ead. 3 https://www.debian.org/doc/debian-policy/ch-sharedlibs.html