[buildout]
extends =
  ../../component/vm-img/debian.cfg
parts =
  debuild-rina-tools
  test-rina
download-cache = download-cache

[vm-run-base]
smp = 4
# estimate the of RAM needed depending on the number CPUs
mem = 2048
apt-sources =
apt-update =
  for x in ${:apt-sources}
  do echo deb [trusted=yes] file:`map $x` ./
  done |sudo sh -c "cat >>/etc/apt/sources.list
  apt-get update"

[debuild-rina-base]
<= vm-run-base
mount.rina = ${irati-stack:location}
cd-source =
  git clone -snc core.sparseCheckout=true /mnt/rina rina
  cd rina
  echo /${:component} > .git/info/sparse-checkout
  git reset --hard
  cd ${:component}
# following lines are for debchange
  export NAME=`git show -s --format=%cn`
  export EMAIL=`git show -s --format=%ce`
  dist=${:suite}
  [ "$dist" ] && dist=`lsb_release -sc`/$dist || dist=UNRELEASED
prepare =
build-deps =
  mk-build-deps -irs sudo -t 'apt-get -y'
build =
  dpkg-buildpackage -uc -b -jauto
finalize =
  df
  cd ..
  mv *.changes *.deb $PARTDIR
  cd $PARTDIR
  dpkg-scanpackages -m . /dev/null |gzip --best >Packages.gz
  r=`apt-ftparchive release .`
  echo "$r" > Release
command =
  ${:apt-update}
  ${:cd-source}
  ( ${:prepare}
    ${:build-deps}
    ${:build}
  ) 2>&1 |tee $PARTDIR/build.log
  ${:finalize}

[debuild-rina-kernel]
<= debuild-rina-base
component = linux
prepare =
  debian/dch-snapshot --force-distribution -D $dist
  sudo apt-get -y install kernel-wedge quilt python-six
  QUILT_PATCHES=$PWD/debian/patches QUILT_PC=.pc quilt push --quiltrc - -a -q --fuzz=0
  debian/rules debian/rules.gen || :
build =
  arch=`dpkg-architecture -qDEB_HOST_ARCH`
  fakeroot make -j${:smp} -f debian/rules.gen binary-arch_$${arch}_none binary-libc-dev_$${arch}
  dpkg-genchanges -b -UBinary -UDescription \
    >../linux_`dpkg-parsechangelog -S Version`_$${arch}.changes

[debuild-librina]
<= debuild-rina-base
component = librina
apt-sources = ${debuild-rina-kernel:location}
prepare =
  debian/rules DIST=$dist

[debuild-rinad]
<= debuild-librina
component = rinad
apt-sources = ${debuild-librina:location}

[rina-tools-deps]
apt-sources = ${debuild-librina:location} ${debuild-rinad:location}

[debuild-rina-tools]
<= debuild-librina
  rina-tools-deps
component = rina-tools
# check that the built packages install
finalize =
  sudo dpkg -i ../*.deb
  ${debuild-librina:finalize}

[test-rina]
<= vm-run-base
  rina-tools-deps
mount.download-cache = ${buildout:download-cache}
mount.rina = ${irati-stack:location}
mount.slapos = ${:_profile_base_location_}/../..
mount.slapos.package = ${slapos.package-repository:location}
commands = install test
install =
  ${:apt-update}
  sudo apt-get -y install librinad-dev rinad
  mkdir software
  cd software
  cat <<EOF >buildout.cfg
  [buildout]
  extends = /mnt/slapos/software/hellorina/software.cfg
  develop = /mnt/slapos
  download-cache = /mnt/download-cache
  [slapos-cookbook-develop]
  recipe =
  setup =
  [irati-stack]
  repository = /mnt/rina
  shared = true
  [versions]
  slapos.cookbook =
  EOF
  python -S /mnt/buildout/bin/buildout bootstrap
  MAKEFLAGS=-j${:smp} bin/buildout

  arch=`dpkg-architecture -qDEB_HOST_ARCH`
  sudo sh -c "/mnt/slapos.package/playbook/roles/rina/gen-ipcm-conf
  systemctl enable ipcm-re6st
  dpkg -i `map ${debuild-rina-kernel:location}`/linux-image-*-$${arch}_*.deb"
  reboot
test = ( set -x
# TODO: more tests
  grep re6st/1// /sys/rina/ipcps/1/name
  ) 2>&1 |tee $PARTDIR/result
