This file is indexed.

/usr/bin/nd_build is in neurodebian-dev 0.37.6.

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
#!/bin/bash

if [ -z "$1" ]; then
cat << EOT
Script to build a source package in one of the available cowbuilders.

Synopsis
--------

  nd_build <family> <codename> [arch] <dsc file> [cowbuilder options]


Examples
--------

Build for a single specific arch:

  nd_build nd+debian lenny i386 someting.dsc


Build for all archs (will just build once for arch 'all'):

  nd_build ubuntu jaunty something.dsc


Build the same way but don't put results in current dir:

  nd_build debian sid something.dsc --buildresult to-upload/

EOT
exit 1
fi

family=$1
dist=$2

set -e

if [ -z "$family" ]; then
  echo "You need to provide a distribution family ('debian', 'ubuntu'); prefix with 'nd+' to enable the NeuroDebian repository."
  exit 1
fi

if [ -z "$dist" ]; then
  echo "You need to provide a distribution codename (e.g. 'lenny', 'squeeze')."
  exit 1
fi

. /etc/neurodebian/cmdsettings.sh

# common options
opts="--distribution $dist --aptcache $aptcache --buildplace $buildplace"

if [ -z "$3" ]; then
  echo "You need to provide a .dsc file"
  exit 1
fi

if [ ! "$3" = "${3%*.dsc}" ]; then
  dscfile=$3
  # must already be the dsc file, hence no arch info given
  if [ "$(grep '^Architecture' $dscfile | awk '{ print $2 }')" = "all" ]; then
    echo "Arch 'all' package detected -- using amd64 system to build it"
    arch="amd64"
  else
    arch="i386 amd64"
  fi
  shift; shift; shift
else
  # must be arch given and dsc as 4th
  arch=$3
  dscfile=$4
  if [ -z "$dscfile" ]; then
    echo "You need to provide a .dsc file"
    exit 1
  fi
  shift; shift; shift; shift
fi

# failed will be set to 1 if any build fails
failed=
for a in $arch; do
  # default
  options="$opts"
  if [ "$a" = "amd64" ]; then
    # only force source into the upload for NeuroDebian
    if [ ! "$family" = "${family#nd+*}" ]; then
      options="$opts --debbuildopts -sa"
    fi
  else
    options="$opts --debbuildopts -B"
  fi

  echo "Building for $family $dist $a ..."
  buildfile="${dscfile%.dsc}_${a}.build"
  tsfile="${buildfile}.timestamp.`date +%s`" # "unique" timestamp file
  /usr/bin/time -f "%E real, %U user, %S sys, %O out" -o "${tsfile}" \
  cowbuilder --build $dscfile \
             --basepath ${cowbuilderroot}/cow/${family}-${dist}-${a}.cow \
             --buildresult . \
             --logfile "${buildfile}" \
             $options \
             "$@" && status='OK' || { status='FAILED'; failed=1; }
  timeinfo=$(tail -n 1 "${tsfile}")
  # Update the summary of builds
  touch summary.build                               # Assure existence
  sed -i -e "s/\(${buildfile}.*out$\)/\1 OLD/g" summary.build  # Mark previous entry as OLD
  echo -e "${buildfile}\t$status\t$timeinfo" >> summary.build  # Add current one
  rm -f "${tsfile}"
done
# Exit with failure status if any built failed
[ -z $failed ] || exit 1