<> == Introduction == [[http://nim-lang.org/|Nim]] is a fast, statically typed language that compiles to C (and other languages). The language is a recent development and was consequently only recently introduced to Debian. Most (almost all) common libraries are still missing. This page collects/archives all the thoughts to help nim libraries to have a coherent representation in Debian and likely also its derivative distributions. Disclaimer: Everything collected on this page is new to Debian. If something does not suit your needs, contact the [[https://tracker.debian.org/teams/nim/|nim-team]]. === References === * '''Main (upstream) Nim homepage''': ''http://nim-lang.org/'' * '''!GitHub repository''': ''https://github.com/nim-lang/Nim'' * '''wikipedia''': ''https://en.wikipedia.org/wiki/Nim_%28programming_language%29'' * '''IRC channel''': ''#nim'' on Libera Chat == Nim in Debian == The DebianPts:nim compiler is packaged. == Packaging Nim projects == See the packaging guide: https://nim-lang.github.io/Nim/packaging.html Nim-specific packaging helpers are not yet available in the distribution. See https://salsa.debian.org/nim-team/dh-make-nim to get inspired. Add the "nim" package to Build-Depends. You likely want to specify a minimum and/or maximum version of Nim as the compiler is always evolving. === Get involved with the packaging === * <> ''Get in touch with us on IRC'' * <><> ''Report bugs and suggest new packages'' * <><><> ''Contribute to packaging, bug fixing and testing'' === Packaging best practices === Host your packaging using Git on Salsa under [[https://salsa.debian.org/groups/nim-team|nim-team]]. This will allow people to comaintain the packages or even take over easily. Use `Maintainer: Debian Nim Team ` - see [[https://tracker.debian.org/teams/nim/|Debian Nim Team]] Build using git-buildpackage Create packages using [[https://salsa.debian.org/nim-team/dh-make-nim|dh-make-nim]] - it will provide reasonable default settings - Warning: while usable, it is not yet perfect. Do not package experimental software. If an upstream project does not have a version number you can use 0.0_gitYYYYMMDD-x as a version number. (x is the Debian version number) Libraries are packaged to allow building other Nim libraries and applications. End users will not install them. Build-Depends and Depends lines: The dependencies need to be available at build time to run the tests (if any) and at installation time so that other packages can be built. === libraries === The source package name should be "nim-". (nim- prevents naming collisions with other projects) The generated package should be "nim--dev" (because it's a development library used only at build time) If the library also generates a shared object that can be used by other languages it should be "lib" === Impure libraries === See above. Also make sure to specify the Depends: to the right shared library and version. === Applications === The source and binary package name does not need to start with "nim-". E.g. vim, nmap, firefox === Javascript libraries/applications === Nim can generate JavaScript "binaries". The binary package name should be "libjs-" or "libjs--dev". dh_nim will detect the name and run Nim with a JS target. (Not implemented yet) === TODO === * Create a dh-make-nim helper * Improve the library/application packaging docs (this page) * Package more stuff :)