Bug#999756: lintian: False positive bashism in posix shell after "exec"

2021-11-21 Thread Felix Lechner
Hi,

On Mon, Nov 15, 2021 at 10:06 PM Rafael Laboissière  wrote:
>
> This is a false positive

I am not arguing, but wondered why the file did not just read like the
following:

> #!/usr/bin/pltcl
> source x00.tcl
> plinit
> x00
> plend

For posterity, the answer was in the manual pages, starting with pltcl(1):

> It is essentially an extended tclsh

and then continuing in tclsh(1):

> If you create a Tcl script in a file whose first line is
>
>   #!/usr/local/bin/tclsh
>
> then you can invoke the script file directly from your shell if you
> mark the file as executable. This assumes that tclsh has been
> installed in the default location in /usr/local/bin; if it is
> sinstalled somewhere else then you will have to modify the above line
> to match. Many UNIX systems do not allow the #! line to exceed about
> 30 characters in length, so be sure that the tclsh executable can be
> accessed with a short file name.
>
> An even better approach is to start your script files with the following 
> three lines:
>
>  #!/bin/sh
>  # the next line restarts using tclsh \
>  exec tclsh "$0" ${1+"$@"}
>
> This approach has three advantages over the approach in the previous
> paragraph. First, the location of the tclsh binary does not have to be
> hard-wired into the script: it can be anywhere in your shell search
> path. Second, it gets around the 30-character file name limit in the
> previous approach. Third, this approach will work even if tclsh is
> itself a shell script (this is done on some systems in order to handle
> multiple architectures or operating systems: the tclsh script selects
> one of several binaries to run). The three lines cause both sh and
> tclsh to process the script, but the exec is only executed by sh. sh
> processes the script first; it treats the second line as a comment and
> executes the third line. The exec statement cause the shell to stop
> processing and instead to start up tclsh to reprocess the entire
> script. When tclsh starts up, it treats all three lines as comments,
> since the backslash at the end of the second line causes the third
> line to be treated as part of the comment on the second line.

Kind regards
Felix Lechner



Bug#999756: lintian: False positive bashism in posix shell after "exec"

2021-11-20 Thread Rafael Laboissière

Control: tags -1 + patch

* Rafael Laboissière  [2021-11-16 07:03]:

Litian is triggering bash-term-in-posix-shell warnings (use of "source" 
command) for some files of the plplot package, like this one:


   
https://salsa.debian.org/science-team/plplot/-/blob/master/examples/tcl/x00.in

This is a false positive, because this file contains an "exec" command 
and the "source" command is placed after it.  These are the contents of 
the file above, after substitution by the configure script and after 
stripping away comments and blank lines:


   #!/bin/sh
   exec "/usr/bin/pltcl" -f "$0" ${1+"$@"}
   source x00.tcl
   plinit
   x00
   plend

Lintian should stop looking for bashisms after the exec command.


I propose a very straightforward patch to fix the problem, in the 
following merge request at Salsa: 
https://salsa.debian.org/lintian/lintian/-/merge_requests/383


Rafael Laboissière



Bug#999756: lintian: False positive bashism in posix shell after "exec"

2021-11-15 Thread Rafael Laboissière
Package: lintian
Version: 2.112.0
Severity: normal

Dear Maintainer,

Litian is triggering bash-term-in-posix-shell warnings (use of "source" 
command) for some files of the plplot package, like this one:


https://salsa.debian.org/science-team/plplot/-/blob/master/examples/tcl/x00.in

This is a false positive, because this file contains an "exec" command 
and the "source" command is placed after it.  These are the contents of 
the file above, after substitution by the configure script and after 
stripping away comments and blank lines:

#!/bin/sh
exec "/usr/bin/pltcl" -f "$0" ${1+"$@"}
source x00.tcl
plinit
x00
plend

Lintian should stop looking for bashisms after the exec command.

Best,

Rafael Laboissière

 -- System Information:
 Debian Release: bookworm/sid
   APT prefers unstable
   APT policy: (650, 'unstable'), (600, 'experimental'), (550, 'testing'), 
(500, 'oldoldstable'), (500, 'stable')
 Architecture: amd64 (x86_64)

 Kernel: Linux 5.10.0-8-amd64 (SMP w/2 CPU threads)
 Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, 
TAINT_UNSIGNED_MODULE
 Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), 
LANGUAGE=en_US.utf8
 Shell: /bin/sh linked to /bin/bash
 Init: systemd (via /run/systemd/system)
 LSM: AppArmor: enabled

 Versions of packages lintian depends on:
 ii  binutils2.37-7
 ii  bzip2   1.0.8-4
 ii  diffstat1.64-1
 ii  dpkg1.20.9
 ii  dpkg-dev1.20.9
 ii  file1:5.39-3
 ii  gettext 0.21-4
 ii  gpg 2.2.27-2
 ii  intltool-debian 0.35.0+20060710.5
 ii  libapt-pkg-perl 0.1.40
 ii  libarchive-zip-perl 1.68-1
 ii  libcapture-tiny-perl0.48-1
 ii  libclass-xsaccessor-perl1.19-3+b7
 ii  libclone-perl   0.45-1+b1
 ii  libconfig-tiny-perl 2.27-1
 ii  libconst-fast-perl  0.014-1.1
 ii  libcpanel-json-xs-perl  4.27-1
 ii  libdata-dpath-perl  0.58-1
 ii  libdata-validate-domain-perl0.10-1.1
 ii  libdata-validate-uri-perl   0.07-1
 ii  libdevel-size-perl  0.83-1+b2
 pn  libdigest-sha-perl  
 ii  libdpkg-perl1.20.9
 ii  libemail-address-xs-perl1.04-1+b3
 ii  libfile-basedir-perl0.09-1
 ii  libfile-find-rule-perl  0.34-1
 ii  libfont-ttf-perl1.06-1.1
 ii  libhtml-html5-entities-perl 0.004-1.1
 ii  libio-interactive-perl  1.023-1
 ii  libio-prompt-tiny-perl  0.003-1
 ii  libipc-run3-perl0.048-2
 ii  libjson-maybexs-perl1.004003-1
 ii  liblist-compare-perl0.55-1
 ii  liblist-someutils-perl  0.58-1
 ii  liblist-utilsby-perl0.11-1
 ii  libmoo-perl 2.005004-2
 ii  libmoox-aliases-perl0.001006-1.1
 ii  libnamespace-clean-perl 0.27-1
 ii  libpath-tiny-perl   0.118-1
 ii  libperlio-gzip-perl 0.19-1+b7
 ii  libperlio-utf8-strict-perl  0.008-1+b1
 ii  libproc-processtable-perl   0.634-1
 ii  libsereal-decoder-perl  4.018+ds-1+b1
 ii  libsereal-encoder-perl  4.018+ds-1+b1
 ii  libsort-versions-perl   1.62-1
 ii  libsyntax-keyword-try-perl  0.26-1
 ii  libterm-readkey-perl2.38-1+b2
 ii  libtext-glob-perl   0.11-1
 ii  libtext-levenshteinxs-perl  0.03-4+b8
 ii  libtext-markdown-discount-perl  0.13-1
 ii  libtext-xslate-perl 3.5.8-1+b1
 ii  libtime-duration-perl   1.21-1
 ii  libtime-moment-perl 0.44-1+b3
 ii  libtimedate-perl2.3300-2
 ii  libtry-tiny-perl0.30-1
 ii  libtype-tiny-perl   1.012004-1
 ii  libunicode-utf8-perl0.62-1+b2
 ii  liburi-perl 5.08-1
 ii  libxml-libxml-perl  2.0134+dfsg-2+b1
 ii  libyaml-libyaml-perl0.83+ds-1
 ii  lzip1.22-4
 ii  lzop1.04-2
 ii  man-db  2.9.4-2
 ii  patchutils  0.4.2-1
 ii  perl [libencode-perl]   5.32.1-6
 ii  t1utils 1.41-4
 ii  unzip   6.0-26
 ii  xz-utils5.2.5-2

 lintian recommends no packages.

 Versions of packages lintian suggests:
 ii  binutils-multiarch 2.37-7
 ii  libtext-template-perl  1.60-1

 -- no debconf information