[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: