DH_MAKECLILIBS(1)
π dh_makeclilibs β automatically create clilibs file π
okay bestie, welcome to DH_M...LIBS(1), the manual for the debhelper-for-CLI (Common Language Infrastructure) era. this one's about dh_makeclilibs and it's genuinely iconic, let's get into it π¦
β¨ SYNOPSIS β¨
dh_makeclilibs [debhelper options] [-r] [-V[dependancies]]
[-mminversion] [-lnextincompatible] [-Xitem]
πΈ DESCRIPTION πΈ
So. dh_makeclilibs is a debhelper program, and what it does is literally scan for versioned CIL (.NET) assemblies and then generate a clilibs file for all the libraries it finds. no cap. π
By default, dh_makeclilibs goes through the .dll files sitting in the package directories and writes the compatibility data it discovers β that's major/minor, build, and token, bestie β into clilibs files in the appropriate packages. π
But listen, there's a plot twist: if a file like debian/package.clilibs is found, then that one gets installed and no scanning is performed at all. the vibes are: your file, your rules. β¨
π OPTIONS π
-V,-Vdependancies<br>--version-info,--version-info=dependanciesβ so by default, theclilibsfile this program generates does not make packages depend on any particular version of the package that contains the assembly. but sometimes you do need to add some version dependency info to thatclilibsfile, and that's what this is for. If-Vshows up with no dependency information, the current version of the package gets plugged into a dependency that looks like"packagename (>= packageversion)". And if-Vis specified with parameters, those parameters let you specify the exact dependency information you need β just be sure to include the package name, okay? π«Ά-mminversionβ like-V, except it only specifies the version string, and the package name comes from the package that's actually being processed. This one's more flexible if you're trying to set a range of valid versions for different assembly packages all coming from one source package. π-lnextincompatibleβ specifies the (expected) version of this package for when the compatibility to the current assemblies will break. it's giving "end of an era" energy π-rβ an experimental option that automatically guesses the next incompatible upstream version and inserts them (basically like working with the-land-moptions, see above). Do not expect the guessed values to always be correct β normally, the usually assumed version string has the form generation.major.minor, where versions with changes in"minor"are compatible and"major"versions break compatibility. so like, it's a guess, bestie, treat it like one π-Xitem,--exclude=itemβ exclude files that containitemanywhere in their filename or directory from being treated as shared libraries. bye felicia π«--internal-monoβ uses the Mono runtime in.(this is used for bootstrapping Mono packages). π§
β οΈ beware of using -V without any parameters! it's a conservative setting that always makes sure other packages' shared library dependencies are at least as tight as they need to be, so that if the maintainer screws up then they won't break. the flip side? packages might end up with dependencies that are too tight, which makes them harder to upgrade. pick your poison, queen π
β EXAMPLES β
okay, example time, this is the fun part:
dh_makeclilibs
Assuming this is a package named libfoobar0.9x-cil, this generates a clilibs file that looks something like:
libfoobar 1.0.2345.0_23a12f34 libfoobar0.9x-cil
dh_makeclilibs -V
Assuming the current version of the package is 0.93-3, this generates a clilibs file that looks something like:
libfoobar 1.0.2345.0_23a12f34 libfoobar0.9x-cil (>= 0.93-3)
dh_makeclilibs -V 'libfoobar0.9x-cil (>= 0.92)'
This generates a clilibs file that looks something like:
libfoobar 1.0.2345.0_23a12f34 libfoobar0.9x-cil (>= 0.92)
Now assuming your package creates libfoobar-cil and liblafasel-cil, which are compatible to 0.92 versions, but upstream is going to break compatibility in the next version, 0.94:
dh_makeclilibs -m 0.92 -l 0.94
This generates a clilibs file that looks something like:
libfoobar 1.0.2345.0_23a12f34 libfoobar-cil (>= 0.92), libfoobar-cil (<< 0.94)
and
liblafasel 1.0.2345.0_23a12f34 liblafasel-cil (>= 0.92), liblafasel-cil (<< 0.94)
periodt. π β¨
π₯ SEE ALSO π₯
Also, this program is a part of cli-common-dev. iykyk πΈ
π KNOWN BUGS π
Will possibly not work correctly with DH_COMPAT levels 1 and 2. so like, maybe don't. π
π AUTHOR π
Mirco Bauer <meebey@meebey.net>, Eduard Bloch <blade@debian.org>, inspired by dh_makeshlibs by Joey Hess <joeyh@debian.org> π
and that's the whole page, bestie!! π¦β¨ this one was brought to you by perl v5.40.1, dated 2025-08-16, from the DH_M...LIBS(1) era of the manual β mwah, thanks for reading, slay π
π
π¦ where this page comes from
- ubuntu resolute: cli-common-dev 0.11 Β· GPL
- ubuntu stonking: cli-common-dev 0.11 Β· GPL
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms