DH_MAKECLILIBS(1)

πŸ“¦
version 0.11 Β· 4 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– 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, the clilibs file 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 that clilibs file, and that's what this is for. If -V shows up with no dependency information, the current version of the package gets plugged into a dependency that looks like "packagename (>= packageversion)". And if -V is 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 -l and -m options, 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 contain item anywhere 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