Bug#864615: please update version of posix standard for scripts (section 10.4)
Hello Simon,
On Thu, Jun 14 2018, Simon McVittie wrote:
> http://pubs.opengroup.org/onlinepubs/9699919799/ has now been replaced
> (see #900882, for which I'm preparing a patch) with POSIX.1-2017, which
> is variously labelled as:
>
> * POSIX.1-2017
> * IEEE Std 1003.1-2017
> * The Open Group Technical Standard Base Specifications, Issue 7
> * The Open Group Base Specifications Issue 7, 2018 Edition
>
> and no longer has visible "Single Unix Specification" branding at all.
> However, the downloadable tarballs at
> http://pubs.opengroup.org/onlinepubs/9699919799/download/
> have basename susv4-2018. According to Wikipedia it "incorporates Singles
> UNIX Specification TC1 and TC2, and is technically identical to the
> 2016 edition."
>
> I'd suggest replacing SUSv3 with POSIX.1-2017 or SUSv4 2018 edition
> instead,
Thank you for this.
Let's use POSIX.1-2017 rather than relying on the download filenames.
Please find a revised patch below; hopefully Gunnar will renew his
second, and perhaps you'll second too, Simon. Again, all that the patch
does is:
- replace the string "SUSv3" with "POSIX.1-2017" wherever it appears
- update the footnote which gives the download URI for the standard
> or perhaps replacing SUSv3 with POSIX and clarifying that we use POSIX
> to refer to the latest version of the POSIX.1 standard.
This is an interesting suggestion. So far as I can see the only
advantage to this is that we don't need Policy bugs to bump the version
of the standard we target. That does not strike me as a large enough
advantage to justify giving up explicit control over the version of the
standard that applies to Debian -- do you see other advantages?
Patch:
> diff --git a/policy/ch-files.rst b/policy/ch-files.rst
> index 90ae58a..f31a3b4 100644
> --- a/policy/ch-files.rst
> +++ b/policy/ch-files.rst
> @@ -203,9 +203,9 @@ may instead be easier to check the exit status of commands directly. See
> Every script should use ``set -e`` or check the exit status of *every*
> command.
>
> -Scripts may assume that ``/bin/sh`` implements the SUSv3 Shell Command
> +Scripts may assume that ``/bin/sh`` implements the POSIX.1-2017 Shell Command
> Language [#]_ plus the following additional features not mandated by
> -SUSv3.. [#]_
> +POSIX.1-2017.. [#]_
>
> - ``echo -n``, if implemented as a shell built-in, must not generate a
> newline.
> @@ -238,13 +238,13 @@ SUSv3.. [#]_
> which are the same as for ``kill`` above, 13 (SIGPIPE) must be
> allowed.
>
> -If a shell script requires non-SUSv3 features from the shell interpreter
> +If a shell script requires non-POSIX.1-2017 features from the shell interpreter
> other than those listed above, the appropriate shell must be specified
> in the first line of the script (e.g., ``#!/bin/bash``) and the package
> must depend on the package providing the shell (unless the shell package
> is marked "Essential", as in the case of ``bash``).
>
> -You may wish to restrict your script to SUSv3 features plus the above
> +You may wish to restrict your script to POSIX.1-2017 features plus the above
> set when possible so that it may use ``/bin/sh`` as its interpreter.
> Checking your script with ``checkbashisms`` from the devscripts package
> or running your script with an alternate shell such as ``posh`` may help
> @@ -762,10 +762,10 @@ restricted to ASCII when it is possible to do so.
> complicated and difficult to manage.
>
> .. [#]
> - Single UNIX Specification, version 3, which is also IEEE 1003.1-2004
> - (POSIX), and is available on the World Wide Web from `The Open
> - Group <http://www.unix.org/version3/online.html>`_ after free
> - registration.
> + The Open Group Base Specifications Issue 7, 2018 Edition, which is
> + also known as POSIX.1-2017 and as IEEE Std 1003.1-2017 and is
> + available on the World Wide Web from `The Open Group
> + <http://pubs.opengroup.org/onlinepubs/9699919799/download/>`_.
>
> .. [#]
> These features are in widespread use in the Linux community and are
> diff --git a/policy/ch-opersys.rst b/policy/ch-opersys.rst
> index 7d85c00..32619e8 100644
> --- a/policy/ch-opersys.rst
> +++ b/policy/ch-opersys.rst
> @@ -479,7 +479,7 @@ configurable values should not be placed directly in the script.
> Instead, they should be placed in a file in ``/etc/default``, which
> typically will have the same base name as the ``init.d`` script. This
> extra file should be sourced by the script when the script runs. It must
> -contain only variable settings and comments in SUSv3 ``sh`` format. It
> +contain only variable settings and comments in POSIX.1-2017 ``sh`` format. It
> may either be a ``conffile`` or a configuration file maintained by the
> package maintainer scripts. See :ref:`s-config-files` for
> more details.
--
Sean Whitton
Reply to: