On Fri, Jan 13, 2023 at 01:22:44PM +0000, Jon Turney via Cygwin-apps wrote: > On 13/01/2023 11:52, Takashi Yano via Cygwin-apps wrote: > > Hi, > > > > Is it allowed to include '-' in version string (e.g. '20230113-stable')? > > I'm asking because mksetupini warns: > > > > mksetupini: file 'xxx.tar.xz' in package yyy contains '-' in version > > > > though it works as expected. > > Short answer: > > It's a bug that this isn't a fatal error. Please don't do it! > > Long answer: > > Package naming in Cygwin has a long and tangled history. This isn't > explicitly precluded by the rules at [1], but probably should be. > > (Fedora, which we generally follow for packaging rules, now doesn't allow > '-' in versions, just digits, letters and '.') > > We need to be able to unambiguously separate a NVR string into the package > name, version and release. > > Underscores are allowed in package names, so the simple approach of > splitting on the rightmost two hyphens would work, if we don't allow > exceptions like this. > > (We can get it right in this case, because we have a piece of extra > information: the directory the package is in, which happens to always be > named N in the current scheme of things, but we might want to change that) > > [1] https://cygwin.com/packaging-package-files.html
I just spotted [0] in the Cygport documentation, and was reminded of this conversation. According to that, the version string is explicitly allowed to include hyphens! I suspect that's fundamentally a documentanion bug these days, and should just be expunged... [0]: https://cygwin.github.io/cygport/syntax_cygpart.html#VERSION Quick patch below; I can submit this properly as a GitHub PR or with `git send-email` or otherwise if that'd be useful... diff --git a/lib/syntax.cygpart b/lib/syntax.cygpart index 4a400a71..6b992031 100644 --- a/lib/syntax.cygpart +++ b/lib/syntax.cygpart @@ -316,7 +316,7 @@ __target_is_embedded() { #****v* Globals/VERSION # DESCRIPTION # The upstream package version number. PV must begin with a digit 0-9, and -# subsequent characters can be a digit, letter, dot, hyphen, or underscore. +# subsequent characters can be a digit, letter, dot, or underscore. #**** #****v* Globals/RELEASE # DESCRIPTION