summaryrefslogtreecommitdiffstats
path: root/test/ext
diff options
context:
space:
mode:
authorMarco Varlese <marco.varlese@suse.com>2017-10-10 16:43:14 +0200
committerDave Wallace <dwallacelf@gmail.com>2017-10-12 15:08:04 +0000
commit5f1231c5c2ba8483d1b723762d7001ee48956205 (patch)
treeee727cdefa3acb78b27a5effae1896a5d07852de /test/ext
parent9a6fcef43c3263d6acb95aaca2dcd2eb86169a75 (diff)
Remove libsubunit 'dependency' for openSUSE and fix NASM
This patch addresses the unrequired dependency on libsubunit for opensuse; it also adds the required new dependency on check (add check-devel to the top-level Makefile). It adds some extra logic to install the correct NASM version to support AESNI. Change-Id: Ie368dd8f8485a67ab125e735fd12cbe25b9b588f Signed-off-by: Marco Varlese <marco.varlese@suse.com>
Diffstat (limited to 'test/ext')
-rw-r--r--test/ext/Makefile5
1 files changed, 4 insertions, 1 deletions
diff --git a/test/ext/Makefile b/test/ext/Makefile
index 6436302f731..1bd035daa13 100644
--- a/test/ext/Makefile
+++ b/test/ext/Makefile
@@ -6,7 +6,10 @@ ifeq ($(filter centos,$(OS_ID)),$(OS_ID))
CPPBIN=
endif
-LIBS = -L$(VPP_TEST_BUILD_DIR)/vpp/.libs/ -L$(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/ -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lsubunit -lrt -lm -lvapiclient
+LIBS = -L$(VPP_TEST_BUILD_DIR)/vpp/.libs/ -L$(VPP_TEST_BUILD_DIR)/vpp/vpp-api/vapi/.libs/ -lvppinfra -lvlibmemoryclient -lsvm -lpthread -lcheck -lrt -lm -lvapiclient
+ifneq ($(filter opensuse,$(OS_ID)),$(OS_ID))
+LIBS += -lsubunit
+endif
CFLAGS = -std=gnu99 -g -Wall -pthread -I$(WS_ROOT)/src -I$(VPP_TEST_INSTALL_PATH)/vpp/include -I$(BINDIR)
CPPFLAGS = -std=c++11 -g -Wall -pthread -I$(WS_ROOT)/src -I$(VPP_TEST_INSTALL_PATH)/vpp/include -I$(BINDIR)
'>194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
#!/bin/bash

# Copyright (c) 2015 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This aptly-named script verifies and fixes time ordering
# problems with Makefile.{am,in} aclocal.m4 configure* files.

set -eu
#set -vx

touch=""
commit=""
comma_v=""
aclocal=""
optimize=""

# The old autowank scheme used "touch <foo> ; sleep 1"
# to ensure differentiable, ordered timestamps. Worked, but
# took N seconds given N files to fix. We have an example
# which wastes multiple minutes given the old scheme.
#
# This version generates a sequence of timestamps 
# starting an hour ago. That gives us
# lots to play with, in case some obnoxious program feels the need
# to complain about timestamps in the future.

# If we're in UTC+N land, generate UTC+(N+1) 
# If we're in UTC-N land, generate UTC-(N-1)

my_tz=`date +%z`
sign=`echo $my_tz | sed -n -e 's/^\(.\{1\}\).*$/\1/p'`
t=`echo $my_tz | sed -n -e 's/^\(.\{1\}\)//p'`
tz_hour=`echo $t | sed -n -e 's/^\(.\{2\}\).*$/\1/p'`
tz_hour=`echo $tz_hour | sed 's/^0//'`

if [ $sign = "-" ] ; then
    sign="+"
    let tz_hour=$tz_hour+1
    if [[ $tz_hour -ge "24" ]] ; then
        tz_hour=0
    fi
else
    sign="-"
    let tz_hour=$tz_hour-1 || true
    if [[ $tz_hour -lt "0" ]] ; then
        tz_hour=23
    fi
fi

# Timestamp, an hour ago:
ts_begin=`TZ=UTC${sign}${tz_hour} date +%Y%m%d%H%M.%S`

# break into constituent parts
year=`echo $ts_begin | sed -n -e 's/^\(.\{4\}\).*$/\1/p'`
t=`echo $ts_begin | sed -n -e 's/^\(.\{4\}\)//p'`
month=`echo $t | sed -n -e 's/^\(.\{2\}\).*$/\1/p'`
t=`echo $t | sed -n -e 's/^\(.\{2\}\)//p'`
day=`echo $t | sed -n -e 's/^\(.\{2\}\).*$/\1/p'`
t=`echo $t | sed -n -e 's/^\(.\{2\}\)//p'`
hour=`echo $t | sed -n -e 's/^\(.\{2\}\).*$/\1/p'`
t=`echo $t | sed -n -e 's/^\(.\{2\}\)//p'`
min=`echo $t | sed -n -e 's/^\(.\{2\}\).*$/\1/p'`
t=`echo $t | sed -n -e 's/^\(.\{2\}\)//p'`
sec=`echo $t | sed -n -e 's/\.//p'`

# How many days in the current month?
# Good until someone changes the calendar rules
days_in_current_month() {
    if [[ $month -eq 9 || $month -eq 4 \
        || $month -eq 6 || $month -eq 11 ]] ; then
	return 30;
    fi
    if [[ $month -eq 2 ]] ; then
	let t=($year/400)*400
	if [[ $t -eq $year ]] ; then
	    return 29;
	fi
	let t=($year/100)*100
	if [[ $t -eq $year ]] ; then
	    return 28;
	fi
	let t=($year/4)*4
	if [[ $t -eq $year ]] ; then
	    return 29;
	fi
	return 28;
    fi
    return 31;
}

# The next timestamp to issue via touch
# A real hemorrhoid because bash isnt easily convinced
# that 08 is a decimal number
next_ts() {
    sec=`echo $sec | sed 's/^0//'`
    let sec=$sec+1
    if [[ "$sec" -lt "60" ]] ; then
        if [[ "$sec" -lt "10" ]] ; then
            sec=0$sec
        fi
	return 0;
    fi
    sec="00"
    min=`echo $min | sed 's/^0//'`
    let min=$min+1
    if [[ "$min" -lt "60" ]] ; then
        if [[ "$min" -lt "10" ]] ; then
            min=0$min
        fi
	return 0;
    fi
    min="00"
    hour=`echo $hour | sed 's/^0//'`
    let hour=$hour+1
    if [[ "$hour" -lt "24" ]] ; then
        if [[ "$hour" -lt "10" ]] ; then
            hour=0$hour
        fi
	return 0;
    fi
    hour="00"
    days_in_current_month
    days_in_month=$?
    if [[ "$day" -lt "$days_in_month" ]] ; then
        day=`echo $day | sed 's/^0//'`
	let day=$day+1
        if [[ "$day" -lt "10" ]] ; then
            day=0$day
        fi
	return 0;
    fi
    day="01"
    month=`echo $month | sed 's/^0//'`
    let month=$month+1
    if [[ "$month" -lt "13" ]] ; then
        if [[ "$month" -lt "10" ]] ; then
            month=0$month
        fi
	return 0;
    fi
    month="01"
    let year=$year+1
    return 0;
}

while [ $# != 0 ] ; do
  case "$1" in
    (--commav) comma_v=",v" ;;
    (--touch) touch=yes ;;
    (--aclocal) aclocal=yes ;;
    (--nooptimize) optimize="" ;;
    (--commit=*) commit="$1" ;;
    (*) echo "$0: usage [--touch|--commit|]" > /dev/stderr
        exit 17 ;;
  esac
  shift
done

if [ "${aclocal}" != "" ] ; then
    if [ -f aclocal.m4 ] ; then
        echo touching aclocal.m4
        sleep 1
        touch aclocal.m4
    else
        echo aclocal.m4 not found
    fi
fi

if [ "${comma_v}" != "" -a "${commit}" != "" ] ; then
  echo "No, you may NOT molest ,v files directly.  Go away." > /dev/stderr
  exit 1
fi

function touchme ()
{
  local victim="${1}"
  shift
  local touchmebaby=""
  local sein="is"
  local newer="no"
  local older="no"

  if [ ! -r "$victim" ] ; then
    return
  fi

  while [ $# != 0 ] ; do
    if [ "${1}" -nt "${victim}" ] ; then
        newer="yes"
    fi
    if [ "${1}" -ot "${victim}" ] ; then
        older="yes"
    fi
    if [ "${newer}" = "no" -a "${older}" = "no" ] ; then
        newer="yes"
    fi

    if [ "${newer}" = "yes" ] ; then
      if [ "${touchmebaby}" = "" ] ; then
        touchmebaby="${1}"
      else
        sein="are"
        touchmebaby="${touchmebaby} ${1}"
      fi
    fi
    shift
  done
  if [ -n "${touchmebaby}" ] ; then
    echo "*** ${touchmebaby} ${sein} newer than ${victim}  "
    if [ -n "${touch}" ] ; then
      # 
      # This is the old version, in case something backfires...
      if [ "${optimize}" != "yes" ] ; then 
          echo "Fixing " ;touch -c "$victim" ; sleep 1
      else
          echo "Fixing "
      # echo touch -c -t $year$month$day$hour$min.$sec "$victim"
          touch -c -t $year$month$day$hour$min.$sec "$victim"
          next_ts
      fi
    fi
  fi
}

makefileins="`/usr/bin/find . -name Attic -prune -o -name Makefile.in${comma_v}`"

# aclocal.m4 depends on ***/Makefile.am, configure.ac, acinclude.m4, *.m4 crap
touchme aclocal.m4${comma_v} \
        `/usr/bin/find . -name Attic -prune -o -name Makefile.am${comma_v}` \
        "configure.in${comma_v}" "configure.ac${comma_v}" \
        "acinclude.m4${comma_v}"

# Makefile.in must be newer than Makefile.am
for f in $makefileins ; do
  d="`dirname ${f}`"
  touchme "${d}/Makefile.in${comma_v}" "${d}/Makefile.am${comma_v}"
done

# Makefile.in depends on aclocal.m4
for f in $makefileins ; do
  d="`dirname $f`"
  touchme "${d}/Makefile.in${comma_v}" "aclocal.m4${comma_v}"
done

# config.in must be newer than aclocal.m4 and configure.ac
if [ -f "config.in${comma_v}" ] ; then
  touchme "config.in${comma_v}" "aclocal.m4${comma_v}" \
                                "configure.ac${comma_v}" \
                                "configure.in${comma_v}"
fi

# config.h.in (or More Thoroughly Modern configh.in)
# must be newer than aclocal.m4 and (obsolete) acconfig.h
for c_h_in in config.h.in configh.in ; do
  if [ -f "${c_h_in}${comma_v}" ]; then
    touchme "${c_h_in}${comma_v}" "aclocal.m4${comma_v}" "acconfig.h${comma_v}"
    #>>>> WTF?  Why?  This is nonsensical
    ## ***/Makefile.in must be newer than config.h.in
    #for f in $makefileins ; do
    #  touchme "$f" "${c_h_in}${comma_v}"
    #done
  fi
done

# configure must be newer than everything
# touchme configure $makefileins -- why would this be needed?
touchme "configure${comma_v}" "aclocal.m4${comma_v}" "acconfig.h${comma_v}" \
                              "config.in${comma_v}" "config.h.in${comma_v}" \
                              "configh.in${comma_v}"

if [ -n "${commit}" ] ; then
  commit="${commit:9}" # strip off "--commit="
  # First ***/Makefile.am,
  # configure.in, configure.ac,
  # ***/*.m4
  # acconfig.h
  cvs commit -m "${commit}" \
             `for f in ${makefileins} ; do \
                [ -f "$${f%.in}.am" ] && echo "$${f%.in}.am" ; \
              done` \
             `[ -f configure.in ] && echo configure.in` \
             `[ -f configure.ac ] && echo configure.ac` \
             `[ -f acconfig.h ] && echo acconfig.h` \
             `/usr/bin/find . -name '*.m4' -mindepth 2`

  # Next aclocal.m4
  [ -f "aclocal.m4" ] && cvs commit -m "${commit}" aclocal.m4

  # Next config.in, config.h.in, configh.in
  [ -f "config.in" ] && cvs commit -m "${commit}" config.in
  [ -f "config.h.in" ] && cvs commit -m "${commit}" config.h.in
  [ -f "configh.in" ] && cvs commit -m "${commit}" configh.in

  # Last ***/Makefile.in, configure
  cvs commit -m "${commit}" ${makefileins} configure
fi