reproduce-devel
[Top][All Lists]
Advanced

[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/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]