This file is indexed.

/usr/bin/smpiff is in libsimgrid-dev 3.18+dfsg-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
#! /bin/sh

# Copyright (c) 2012-2017. The SimGrid Team.
# All rights reserved.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the license (GNU LGPL) which comes with this package.

SIMGRID_VERSION="SimGrid version 3.18"
SIMGRID_GITHASH=""

F77=/usr/bin/gfortran

INCLUDEARGS="-I/usr/include -I/usr/include/smpi"
CMAKE_LINKARGS="-L/usr/lib"

#!/bin/sh

# Copyright (c) 2013-2017. The SimGrid Team.
# All rights reserved.

# This program is free software; you can redistribute it and/or modify it
# under the terms of the license (GNU LGPL) which comes with this package.

SAVEIFS="$IFS"
LISTSEP="$(printf '\b')"

# Create a temporary file, with its name of the form $1_XXX$2, where XXX is replaced by an unique string.
# $1: prefix, $2: suffix
mymktemp () {
    tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
    if [ -z "$tmp" ]; then
        # mktemp failed (unsupported --suffix ?), try unsafe mode
        tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
        if [ -z "$tmp" ]; then
            # mktemp failed again (doesn't exist ?), try very unsafe mode
            if [ -z "${mymktemp_seq}" ]; then
                mymktemp_seq=$(date +%d%H%M%S)
            fi
            tmp="$1_$$x${mymktemp_seq}"
            mymktemp_seq=$((mymktemp_seq + 1))
        fi
        tmp="${tmp}$2"
        # create temp file, and exit if it existed before
        sh -C -c "true > \"${tmp}\"" || exit 1
    fi
    echo "${tmp}"
}

# Add a word to the end of a list (words separated by LISTSEP)
# $1: list, $2...: words to add
list_add () {
    local list content newcontent
    list="$1"
    shift
    if [ $# -gt 0 ]; then
        eval content=\"\${$list}\"
        IFS="$LISTSEP"
        newcontent="$*"
        IFS="$SAVEIFS"
        if [ -z "$content" ]; then
            content="$newcontent"
        else
            content="$content${LISTSEP}$newcontent"
        fi
        eval $list=\"\${content}\"
    fi
}

# Like list_add, but only if first word to add ($2) is not empty
list_add_not_empty () {
    if [ -n "$2" ]; then
        list_add "$@"
    fi
}

# Set contents of a list (words separated by LISTSEP)
# $1: list, $2...: words to set
list_set () {
    eval $1=""
    list_add "$@"
}

# Get the content of a list: positional parameters ($1, $2, ...) are set to the content of the list
# $1: list
# usage:  eval $(list_get list)
list_get () {
    printf 'IFS="'\$'LISTSEP"; eval set -- \$%s; IFS="'\$'SAVEIFS"\n' "$1"
}


list_set FFLAGS "-fpic" "-ff2c" "-fno-second-underscore"
list_set LINKARGS "-shared" "-lsimgrid" "-lgfortran" "-lm"
list_set TMPFILES
main_name=main

cleanup () {
    eval $(list_get TMPFILES)
    rm -f "$@"
}
trap 'cleanup' EXIT

filter_and_compile() {
    list_add TMPFILES "${TMPFILE}"
    #replace "program main_name by subroutine user\_main (and the end clause as well)"
    if [ $TRACE_CALL_LOCATION -gt 0 ]; then
      echo "#include \"/usr/include/smpi/smpi_extended_traces_fortran.h\"" > ${TMPFILE}
    echo "#line 1 \"${ARG}\"" >> ${TMPFILE}
    fi
    sed 's/[[:space:]]\{6\}[[:space:]]*\([eE][nN][dD] \)\{0,1\}[pP][rR][oO][gG][rR][aA][mM][[:space:]]*\([a-zA-Z0-9\-\_]*\)/      \1subroutine user_main /g;s/[[:space:]]*[uU][sS][eE][[:space:]]*[mM][pP][iI]/\include \"mpif\.h\" /g' "${ARG}" >> "${TMPFILE}"
    SRCFILE="${TMPFILE}"
    list_add CMDLINE "${SRCFILE}"
}
TRACE_CALL_LOCATION=0
NEEDS_OUTPUT=1

list_set CMDLINE "${F77}"
list_add_not_empty CMDLINE "${FFLAGS}"
while [ $# -gt 0 ]; do
    ARG="$1"
    shift
    case "${ARG}" in
        -c)
            CMAKE_LINKARGS=""
            LINKARGS=""
            list_add CMDLINE "-c"
            ;;
        *.f)
            TMPFILE=$(mymktemp "${ARG}" ".f")
            ORIGFILE="${ARG%.f}"
            filter_and_compile
            ;;
        *.F)
            TMPFILE=$(mymktemp "${ARG}" ".F")
            ORIGFILE="${ARG%.F}"
            filter_and_compile
            ;;
        '-version' | '--version')
            printf '%b\n' "$SIMGRID_VERSION"
            exit 0
            ;;
        "-git-version" | "--git-version")
            printf '%b\n' "$SIMGRID_GITHASH"
            exit 0
            ;;
        '-compiler-version' | '--compiler-version')
            ${F77} --version
            ;;
        '-trace-call-location')
            TRACE_CALL_LOCATION=1
            # This should be list_add FFLAGS but it's not possible
            # anymore: FFLAGS was already moved into CMDLINE above.
            list_add_not_empty CMDLINE "-ffixed-line-length-none" "-cpp"
            ;;
        -o)
            NEEDS_OUTPUT=0
            list_add CMDLINE "-o$1"
            shift
            ;;        
        *)
            list_add CMDLINE "${ARG}"
            ;;
    esac
done

if [ $NEEDS_OUTPUT -ne 0 ]; then
   list_add CMDLINE "-o${ORIGFILE}.o"     
fi

list_add_not_empty CMDLINE ${INCLUDEARGS}
list_add_not_empty CMDLINE ${CMAKE_LINKARGS}
list_add_not_empty CMDLINE "${LINKARGS}"

eval $(list_get CMDLINE)
"$@"