Package manifest documentation

Norman Gray norman.gray at glasgow.ac.uk
Thu Feb 25 19:46:23 UTC 2021


Greetings.

Is there any comprehensive documentation of the format of pkg manifest 
files?

Answer: yes, there does appear to be (see at end), but it's much harder 
to find than I think it should be.  Re which, read on.

The pkg-create(8) manpage mentions some relevant keywords for the file, 
but doesn't say anything about the syntax.

It illustrates the 'desc' keyword with a here-string after an '=' sign, 
but illustrates 'deps' with some JSON-like syntax, complete with quotes 
around keywords.

I see issue [1] from 2015, which is asking the same question.  I could I 
suppose add a +1 to this issue.

Dumping a package manifest with `pkg info -R` I see something I can 
probably imitate, but there are plenty of keywords in there that aren't 
mentioned in pkg-create.  Are these documenting the same file?

Issues such as [2] mention a UCL syntax in passing, but libucl(3) 
mentions only a library for parsing this syntax, not what the syntax is. 
  'UCL' isn't mentioned in pkg-create(8) at all.

Templates elsewhere online (eg [3]) illustrate a 'key: value' syntax, 
which _appears_, from the dumped manifest, to be current.

Also, has the syntax changed?  I have a manifest file which I wrote 
myself some while ago (11.x, I think?), which has a files { hash 
filename ... } entry, which doesn't work with 12.x, and I now see only a 
'file' key mentioned in pkg-create(8).  Looking at a dumped manifest, it 
appears that this should now be files: { file: hash,...}.

The Handbook doesn't mention package creation at all, nor does the 
Developers' Handbook.

In the Porter's Handbook [4] I do see a link to UCL [5] (hooray!), but 
that seems to document four _different_ syntaxes, which is interesting 
but not particularly helpful (since it's three more than I want to learn 
about right now).  This handbook somewhat surprisingly doesn't seem to 
mention pkg-create at all, but does mention pkg-plist (Sect.3.2.2), 
which pkg-create describes as 'legacy'.

I'm getting a picture as follows:

   * the manifest is in a 'UCL' syntax, which is documented only on 
github
   * since this has multiple syntaxes (presumably I can use any of the 
UCL syntaxes in here?), the pkg-create(8) manpage only documents key 
names
   * there are more manifest keywords available than are mentioned in 
pkg-create(8)
   * the syntax for pkg-create manifests has changed significantly in 
recent releases

Is that right?

I also see a FreeBSD bug [6] mentioning the file/files thing I mentioned 
above.  At _this_ point, pointed to from the bugparade, I find 
<https://wiki.freebsd.org/pkgng>, which is about 'pkg', not 'pkgng', and 
which points to the Github page at <https://github.com/freebsd/pkg> as 
the source, which does include an example.

A suggestion: It would be *ahem* really useful if the manpage could lead 
me to this information by a slightly more direct route.  It would 
probably be more efficient, in fact, if the sections on 'manifest file 
details' and 'plist format' were simply deleted from the manpage, and 
replaced by a pointer to GitHub.

Best wishes,

Norman


[1] https://github.com/freebsd/pkg/issues/1331
[2] https://github.com/freebsd/pkg/issues/1933
[3] 
https://github.com/dwcarder/oneoff-pkg-create/blob/master/manifest_template.example
[4] https://docs.freebsd.org/en/books/porters-handbook/#pkg-files
[5] https://github.com/vstakhov/libucl
[6] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=250834


-- 
Norman Gray  :  http://www.astro.gla.ac.uk/users/norman/it/
Research IT Coordinator
SUPA School of Physics and Astronomy, University of Glasgow, UK
Charity number SC004401


More information about the freebsd-questions mailing list