[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[task #15682] maneage-lint: check for host system shebang lines in execu
From: |
Mohammad Akhlaghi |
Subject: |
[task #15682] maneage-lint: check for host system shebang lines in executable scripts |
Date: |
Mon, 8 Jun 2020 22:16:50 -0400 (EDT) |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0 |
Follow-up Comment #1, task #15682 (project reproduce):
This is indeed an important point! Thanks for bringing it up ;-)!
I just tried it (changing '.build/software/installed' to '.local') and indeed
found many such scripts!
$ for i in $(file .local/bin/*|grep script |awk '{print $1}' |tr -d ':'); do
printf "${i} ::: " ; head -n1 $i ; done
.local/bin/astscript-sort-by-night ::: #!/bin/sh
.local/bin/autopoint ::: #! /bin/sh
.local/bin/bashbug ::: #!/bin/sh -
.local/bin/bzdiff ::: #!/bin/sh
.local/bin/bzgrep ::: #!/bin/sh
.local/bin/bzmore ::: #!/bin/sh
.local/bin/c_rehash ::: #!/usr/bin/env perl
.local/bin/curl-config ::: #! /bin/sh
.local/bin/dvipdf ::: #!/bin/sh
.local/bin/egrep ::: #!/my/build/directory/software/installed/bin/bash
.local/bin/eps2eps ::: #!/bin/sh
.local/bin/fgrep ::: #!/my/build/directory/software/installed/bin/bash
.local/bin/gettextize ::: #! /bin/sh
.local/bin/gettext.sh ::: #! /bin/sh
.local/bin/git-cvsserver ::: #!/usr/bin/perl
.local/bin/glibtool ::: #! /bin/bash
.local/bin/glibtoolize ::: #! /bin/sh
.local/bin/gsbj ::: #!/bin/sh
.local/bin/gsdj ::: #!/bin/sh
.local/bin/gsdj500 ::: #!/bin/sh
.local/bin/gsl-config ::: #! /bin/sh
.local/bin/gslj ::: #!/bin/sh
.local/bin/gslp ::: #!/bin/sh
.local/bin/gsnd ::: #!/bin/sh
.local/bin/gunzip ::: #!/bin/bash
.local/bin/gzexe ::: #!/bin/bash
.local/bin/libpng16-config ::: #! /bin/sh
.local/bin/lprsetup.sh ::: #!/bin/sh
.local/bin/ncursesw6-config ::: #!/bin/bash
.local/bin/pdf2dsc ::: #! /bin/sh
.local/bin/pdf2ps ::: #!/bin/sh
.local/bin/pdftexi2dvi ::: #!/bin/sh
.local/bin/pf2afm ::: #!/bin/sh
.local/bin/pfbtopfa ::: #!/bin/sh
.local/bin/pod2texi ::: #! /my/build/directory/software/installed/bin/perl
.local/bin/pphs ::: #!/bin/sh
.local/bin/printafm ::: #!/bin/sh
.local/bin/ps2ascii ::: #!/bin/sh
.local/bin/ps2epsi ::: #!/bin/sh
.local/bin/ps2pdf ::: #!/bin/sh
.local/bin/ps2pdf12 ::: #!/bin/sh
.local/bin/ps2pdf13 ::: #!/bin/sh
.local/bin/ps2pdf14 ::: #!/bin/sh
.local/bin/ps2pdfwr ::: #!/bin/sh
.local/bin/ps2ps ::: #!/bin/sh
.local/bin/ps2ps2 ::: #!/bin/sh
.local/bin/texi2any ::: #! /my/build/directory/software/installed/bin/perl
.local/bin/texi2dvi ::: #! /bin/sh
.local/bin/texi2pdf ::: #!/bin/sh
.local/bin/texindex ::: #!/bin/sh
.local/bin/uncompress ::: #!/bin/bash
.local/bin/unix-lpr.sh ::: #!/bin/sh
.local/bin/updatedb ::: #! /bin/sh
.local/bin/xml2-config ::: #! /bin/sh
.local/bin/xzdiff ::: #!/bin/bash
.local/bin/xzgrep ::: #!/bin/bash
.local/bin/xzless ::: #!/bin/bash
.local/bin/xzmore ::: #!/bin/bash
.local/bin/zcat ::: #!/bin/bash
.local/bin/zcmp ::: #!/bin/bash
.local/bin/zdiff ::: #!/bin/bash
.local/bin/zegrep ::: #!/bin/bash
.local/bin/zfgrep ::: #!/bin/bash
.local/bin/zforce ::: #!/bin/bash
.local/bin/zgrep ::: #!/bin/bash
.local/bin/zipgrep ::: #!/bin/sh
.local/bin/zless ::: #!/bin/bash
.local/bin/zmore ::: #!/bin/bash
.local/bin/znew ::: #!/bin/bash
Its interesting how some of them have already been so well written, such that
they use the given 'SHELL' environment variable in their shebangs and have
already accounted for this (some Texinfo and grep scripts, not all!).
I noticed that Gnuastro's 'astscript-sort-by-night' script also has this
problem, I tried implementing a fix to it, but in the middle, I had
second-thoughts: for example the "SHELL" environment variable my be set
temporarily to some temporarily-built file. So if we use it in a permanently
installed file, the program will crash. So I am not too sure now about its
usefulness for individual programs. Its a higher-level decision for systems
like Maneage.
We can add such a step in the 'reproduce/software/shell/configure.sh' script,
after the building of software has finished.
We should just use our own installed programs in the loop (as we do in all the
steps of 'configure.sh' after installing programs). For example
'.local/bin/file' and etc, like this:
for i in $(.local/bin/file .local/bin/* | .local/bin/grep script |
.local/bin/awk '{print $1}' | .local/bin/tr -d ':'); do .local/bin/printf
"${i} ::: " ; .local/bin/head -n1 $i ; done
_______________________________________________________
Reply to this item at:
<https://savannah.nongnu.org/task/?15682>
_______________________________________________
Message sent via Savannah
https://savannah.nongnu.org/