svn commit: r53113 - head/en_US.ISO8859-1/books/porters-handbook/pkg-files
Mathieu Arnold
mat at FreeBSD.org
Thu Jun 6 11:26:56 UTC 2019
Author: mat
Date: Thu Jun 6 11:26:55 2019
New Revision: 53113
URL: https://svnweb.freebsd.org/changeset/doc/53113
Log:
Document using UCL in pkg-message.
Reviewed by: bapt, bcr
Differential Revision: https://reviews.freebsd.org/D20512
Modified:
head/en_US.ISO8859-1/books/porters-handbook/pkg-files/chapter.xml
Modified: head/en_US.ISO8859-1/books/porters-handbook/pkg-files/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/porters-handbook/pkg-files/chapter.xml Thu Jun 6 02:39:50 2019 (r53112)
+++ head/en_US.ISO8859-1/books/porters-handbook/pkg-files/chapter.xml Thu Jun 6 11:26:55 2019 (r53113)
@@ -24,26 +24,232 @@
steps to be taken after a <command>pkg install</command> or to
display licensing information.</para>
- <para>When some lines about the build-time knobs or warnings
- have to be displayed, use <varname>ECHO_MSG</varname>.
- <filename>pkg-message</filename> is only for
- post-installation steps. Likewise, the distinction between
- <varname>ECHO_MSG</varname> is for printing
- informational text to the screen and <varname>ECHO_CMD</varname>
- is for
- command pipelining:</para>
+ <para>pkg-message supports two formats:</para>
- <programlisting>update-etc-shells:
- @${ECHO_MSG} "updating /etc/shells"
- @${CP} /etc/shells /etc/shells.bak
- @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \
- ${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells
- @${RM} /etc/shells.bak</programlisting>
+ <variablelist>
+ <varlistentry>
+ <term>raw</term>
+ <listitem>
+ <para>A regular plain text file. Its message is always
+ displayed, on install, and on upgrade.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><acronym>UCL</acronym></term>
+
+ <listitem>
+ <para>If the file starts with
+ <quote><literal>[</literal></quote> then it is considered
+ to be a <acronym>UCL</acronym> file. The
+ <acronym>UCL</acronym> format is
+ described on <link
+ xlink:href="https://github.com/vstakhov/libucl">libucl's
+ GitHub page</link>.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
<note>
<para>Do not add an entry for <filename>pkg-message</filename>
in <filename>pkg-plist</filename>.</para>
</note>
+
+ <sect2 xml:id="porting-message-ucl">
+ <title><acronym>UCL</acronym> in
+ <filename>pkg-message</filename></title>
+
+ <para>The format is the following. It should be an array of
+ objects. The objects themselves can have these
+ keywords:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>message</literal></term>
+
+ <listitem>
+ <para>The actual message to be displayed. This keyword is
+ mandatory.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>type</literal></term>
+
+ <listitem>
+ <para>When the message should be displayed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>maximum_version</literal></term>
+
+ <listitem>
+ <para>Only if <literal>type</literal> is
+ <literal>upgrade</literal>. Display if upgrading from a
+ version strictly lower than the version
+ specified.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>minimum_version</literal></term>
+
+ <listitem>
+ <para>Only if <literal>type</literal> is
+ <literal>upgrade</literal>. Display if upgrading from a
+ version stictly greater than the version
+ specified.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>The <literal>maximum_version</literal> and
+ <literal>minimum_version</literal> keywords can be
+ combined.</para>
+
+ <para>The <literal>type</literal> keyword can have four
+ values:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>(no type specified)</term>
+
+ <listitem>
+ <para>The message is always displayed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>install</literal></term>
+
+ <listitem>
+ <para>The message should only be displayed when the
+ package is installed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>remove</literal></term>
+
+ <listitem>
+ <para>The message should only be displayed when the
+ package is removed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>upgrade</literal></term>
+
+ <listitem>
+ <para>the message should only be displayed during an
+ upgrade of the package..</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <tip>
+ <para>UCL allows for two kind of strings, either delimited
+ by double quotes
+ <literal>"<replaceable>foo</replaceable>"</literal>, or as a
+ here document. These two
+ are equivalent:</para>
+
+ <programlisting>[
+{ message: "Always displayed"
+}
+]</programlisting>
+
+ <programlisting>[
+{ message: <<EOM
+Always displayed
+EOM
+}
+]</programlisting>
+ </tip>
+
+ <warning>
+ <para>To preserve the compatibility with non
+ <acronym>UCL</acronym> <filename>pkg-message</filename>
+ files, the first line of a <acronym>UCL</acronym>
+ <filename>pkg-message</filename> <emphasis>MUST
+ be</emphasis> a single
+ <quote><literal>[</literal></quote>, and the last line
+ <emphasis>MUST be</emphasis> a single
+ <quote><literal>]</literal></quote>.</para>
+ </warning>
+
+ <example xml:id="porting-message-ucl-ex1">
+ <title>Always Display a Message</title>
+
+ <para>If a port has a <filename>pkg-message</filename>
+ containing simple text, it can be transformed into
+ <acronym>UCL</acronym> easily. Given this
+ <filename>pkg-message</filename>:</para>
+
+ <programlisting>* BIND requires configuration of rndc, including a "secret" key. *
+* The easiest, and most secure way to configure rndc is to run *
+* 'rndc-confgen -a' to generate the proper conf file, with a new *
+* random key, and appropriate file permissions. *</programlisting>
+
+ <programlisting>[
+{
+ message: <<EOD
+* BIND requires configuration of rndc, including a "secret" key. *
+* The easiest, and most secure way to configure rndc is to run *
+* 'rndc-confgen -a' to generate the proper conf file, with a new *
+* random key, and appropriate file permissions. *
+EOD
+}
+]</programlisting>
+ </example>
+
+ <example xml:id="porting-message-ucl-ex2">
+ <title>Display a Message on Install/Deinstall</title>
+
+ <para>When a message only needs to be displayed on
+ installation or uninstallation, set the type:</para>
+
+ <programlisting>[
+{
+ message: "package being removed."
+ type: remove
+}
+{ message: "package being installed.", type: install }
+]</programlisting>
+ </example>
+
+ <example xml:id="porting-message-ucl-ex3">
+ <title>Display a Message on Upgrade</title>
+
+ <para>When a port is upgraded, the message displayed can be
+ even more tailored to the port's needs.</para>
+
+ <programlisting>[
+{
+ message: "Package is being upgraded."
+ type: upgrade
+}
+{
+ message: "Upgrading from before 1.0 need to do this."
+ maximum_version: "1.0"
+ type: upgrade
+}
+{
+ message: "Upgrading from after 1.0 should do that."
+ minimum_version: "1.0"
+ type: upgrade
+}
+{
+ message: "Upgrading from > 1.0 and < 3.0 remove that file."
+ maximum_version: "3.0"
+ minimum_version: "1.0"
+ type: upgrade
+}
+]</programlisting>
+ </example>
+ </sect2>
</sect1>
<sect1 xml:id="pkg-install">
More information about the svn-doc-all
mailing list