sudo: required dist: trusty language: cpp compiler: - gcc - clang before_script: - git describe --always --dirty=+ ### setup travis environment ### - sudo sysctl net.ipv6.conf.lo.disable_ipv6=0 - export POSIXLY_CORRECT=1 - export CFLAGS=-O0 - export CXXFLAGS=-O0 - export OPTFLAGS=-O0 - sudo apt-get -qq update ### build requirements ### # global build requirements - sudo apt-get -qq --no-install-recommends install libboost-all-dev liblua5.1-dev libedit-dev - cd .. - wget http://ppa.launchpad.net/kalon33/gamesgiroll/ubuntu/pool/main/libs/libsodium/libsodium-dev_1.0.3-1~ppa14.04+1_amd64.deb - wget http://ppa.launchpad.net/kalon33/gamesgiroll/ubuntu/pool/main/libs/libsodium/libsodium13_1.0.3-1~ppa14.04+1_amd64.deb - sudo dpkg -i libsodium-dev_1.0.3-1~ppa14.04+1_amd64.deb libsodium13_1.0.3-1~ppa14.04+1_amd64.deb - cd pdns # pkcs11 build requirements - sudo apt-get -qq --no-install-recommends install libp11-kit-dev # geoip-backend - sudo apt-get -qq --no-install-recommends install libgeoip-dev libyaml-cpp-dev # ldap-backend - sudo apt-get -qq --no-install-recommends install libldap-dev # opendbx-backend - sudo apt-get -qq --no-install-recommends install libopendbx1-dev libopendbx1-sqlite3 # remote-backend build requirements - sudo apt-get -qq --no-install-recommends install libzmq3-dev ### documentation requirements - sudo apt-get -qq --no-install-recommends install pandoc xmlto ### test requirements ### # authoritative test requirements / setup - sudo apt-get -qq --no-install-recommends install bind9utils ldnsutils libnet-dns-perl moreutils unbound-host validns default-jre jq - cd .. - wget http://www.verisignlabs.com/dnssec-tools/packages/jdnssec-tools-0.12.tar.gz - sudo tar xfz jdnssec-tools-0.12.tar.gz --strip-components=1 -C / - cd pdns # pkcs11 test requirements / setup - sudo apt-get -qq --no-install-recommends install p11-kit softhsm - sudo mkdir -p /etc/pkcs11/modules/ - sudo cp -f regression-tests/softhsm.mod /etc/pkcs11/modules/softhsm.module - sudo cp -f regression-tests/softhsm.conf /etc/softhsm/softhsm.conf - sudo chmod 0755 /etc/softhsm/ - sudo chmod 0644 /etc/softhsm/softhsm.conf - sudo chmod 0777 /var/lib/softhsm - p11-kit -l # ensure it's ok # bind-backend tests requirements - sudo apt-get -qq --no-install-recommends install alien - cd .. - wget ftp://ftp.nominum.com/pub/nominum/dnsperf/2.0.0.0/dnsperf-2.0.0.0-1-rhel-6-x86_64.tar.gz - tar xzvf dnsperf-2.0.0.0-1-rhel-6-x86_64.tar.gz - fakeroot alien --to-deb dnsperf-2.0.0.0-1/dnsperf-2.0.0.0-1.el6.x86_64.rpm - sudo dpkg -i dnsperf_2.0.0.0-2_amd64.deb - cd pdns # geoip-backend test requirements / setup - sudo apt-get -qq --no-install-recommends install geoip-database - export geoipregion=oc geoipregionip=1.2.3.4 # gmysql-backend test requirements - sudo apt-get -qq --no-install-recommends install mysql-server # godbc-backend test setup - echo -e "[pdns-sqlite3-1]\nDriver = SQLite3\nDatabase = ${PWD}/regression-tests/pdns.sqlite3\n\n[pdns-sqlite3-2]\nDriver = SQLite3\nDatabase = ${PWD}/regression-tests/pdns.sqlite32\n" > ${HOME}/.odbc.ini - export GODBC_SQLITE3_DSN=pdns-sqlite3-1 # ldap-backend test setup - sudo apt-get -qq --no-install-recommends install slapd ldap-utils - mkdir /tmp/ldap-dns - pushd /tmp/ldap-dns - for schema in /etc/ldap/schema/{core,cosine}.schema ${TRAVIS_BUILD_DIR}/modules/ldapbackend/{dnsdomain2,pdns-domaininfo}.schema ; do echo include $schema ; done > ldap.conf - mkdir slapd.d - slaptest -f ldap.conf -F slapd.d - sudo cp slapd.d/cn=config/cn=schema/cn={*dns*.ldif /etc/ldap/slapd.d/cn=config/cn=schema/ - sudo chown -R openldap:openldap /etc/ldap/slapd.d/ - sudo service slapd restart - popd - sudo -u openldap mkdir -p /var/lib/ldap/powerdns - sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ./modules/ldapbackend/testfiles/add.ldif # remote-backend tests requirements - sudo apt-get -qq --no-install-recommends install ruby-json rubygems-integration socat - gem install bundler --no-rdoc --no-ri - cd modules/remotebackend - ruby -S bundle install - cd ../.. # tinydns - sudo apt-get -qq --no-install-recommends install libcdb-dev # documentation test requirements - virtualenv $HOME/.venv - source $HOME/.venv/bin/activate - pip install -q pandocfilters==1.2.3 mkdocs==0.14 linkchecker==9.3 click==5.1 # recursor test requirements / setup - sudo apt-get -qq --no-install-recommends install authbind daemontools - cd .. - wget http://s3.amazonaws.com/alexa-static/top-1m.csv.zip - unzip top-1m.csv.zip -d ./pdns/regression-tests - cd pdns - 'for suffix in {1..40}; do sudo /sbin/ip addr add 10.0.3.$suffix/32 dev lo; done' - sudo touch /etc/authbind/byport/53 - sudo chmod 755 /etc/authbind/byport/53 # no-backend tests - sudo apt-get -qq --no-install-recommends install faketime script: - ./bootstrap # Build without --enable-botan1.10 option, Botan/SoftHSM conflict #2496 - source $HOME/.venv/bin/activate - CFLAGS='-O1' CXXFLAGS='-O1' ./configure --with-dynmodules='bind gmysql geoip gpgsql gsqlite3 ldap lua mydns opendbx pipe random remote tinydns' --with-modules='' --with-sqlite3 --enable-libsodium --enable-experimental-pkcs11 --enable-remotebackend-zeromq --enable-tools --enable-unit-tests --enable-backend-unit-tests --disable-dependency-tracking - deactivate - make -k dist - make -k -j3 - cd docs - source $HOME/.venv/bin/activate - make check-links - deactivate - cd .. - make -k install DESTDIR=/tmp/pdns-install-dir - find /tmp/pdns-install-dir -ls - make -j3 check - test -f pdns/test-suite.log && cat pdns/test-suite.log || true - test -f modules/remotebackend/test-suite.log && cat modules/remotebackend/test-suite.log || true #DNSName - make -k -j3 -C pdns $(grep '(EXEEXT):' pdns/Makefile | cut -f1 -d\$ | grep -E -v 'dnsdist|calidns') - make -k -j3 -C pdns $(grep '(EXEEXT):' pdns/Makefile | cut -f1 -d\$ | grep -E -v 'dnspcap2protobuf|dnsdist|calidns|speedtest') - cd pdns - ./pdnsutil test-algorithms - cd .. - cd regression-tests - ./timestamp ./start-test-stop 5300 ldap-tree - ./timestamp ./start-test-stop 5300 ldap-simple - ./timestamp ./start-test-stop 5300 ldap-strict - ./timestamp ./start-test-stop 5300 bind-both - ./timestamp ./start-test-stop 5300 bind-dnssec-both - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-both - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-optout-both - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-narrow - ./timestamp ./start-test-stop 5300 bind-hybrid-nsec3 #ecdsa - ./timestamp ./start-test-stop 5300 bind-dnssec-pkcs11 - ./timestamp ./start-test-stop 5300 geoip - ./timestamp ./start-test-stop 5300 geoip-nsec3-narrow - ./timestamp ./start-test-stop 5300 gmysql-nodnssec-both - ./timestamp ./start-test-stop 5300 gmysql-both - ./timestamp ./start-test-stop 5300 gmysql-nsec3-both - ./timestamp ./start-test-stop 5300 gmysql-nsec3-optout-both - ./timestamp ./start-test-stop 5300 gmysql-nsec3-narrow # - ./timestamp ./start-test-stop 5300 godbc_sqlite3-nsec3 - ./timestamp ./start-test-stop 5300 gpgsql-nodnssec-both - ./timestamp ./start-test-stop 5300 gpgsql-both - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-both - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-optout-both - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-narrow - ./timestamp ./start-test-stop 5300 gsqlite3-nodnssec-both - ./timestamp ./start-test-stop 5300 gsqlite3-both - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-both - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-optout-both - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-narrow - ./timestamp ./start-test-stop 5300 mydns - ./timestamp ./start-test-stop 5300 opendbx-sqlite3 - ./timestamp ./start-test-stop 5300 remotebackend-pipe - ./timestamp ./start-test-stop 5300 remotebackend-pipe-dnssec - ./timestamp ./start-test-stop 5300 remotebackend-unix - ./timestamp ./start-test-stop 5300 remotebackend-unix-dnssec - ./timestamp ./start-test-stop 5300 remotebackend-http - ./timestamp ./start-test-stop 5300 remotebackend-http-dnssec - ./timestamp ./start-test-stop 5300 remotebackend-zeromq - ./timestamp ./start-test-stop 5300 remotebackend-zeromq-dnssec - ./timestamp ./start-test-stop 5300 tinydns - cd .. - cd regression-tests.rootzone - ./timestamp ./start-test-stop 5300 bind-both #FIXME 400, NSEC record synthesis for root zones is broken # - ./timestamp ./start-test-stop 5300 bind-dnssec-both - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-both #FIXME 400, NSEC record synthesis for root zones is broken # - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-optout-both - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-narrow - ./timestamp ./start-test-stop 5300 bind-hybrid-nsec3 - ./timestamp ./start-test-stop 5300 gmysql-nodnssec-both - ./timestamp ./start-test-stop 5300 gmysql-both - ./timestamp ./start-test-stop 5300 gmysql-nsec3-both - ./timestamp ./start-test-stop 5300 gmysql-nsec3-optout-both - ./timestamp ./start-test-stop 5300 gmysql-nsec3-narrow - ./timestamp ./start-test-stop 5300 gpgsql-nodnssec-both - ./timestamp ./start-test-stop 5300 gpgsql-both - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-both - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-optout-both - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-narrow - ./timestamp ./start-test-stop 5300 gsqlite3-nodnssec-both - ./timestamp ./start-test-stop 5300 gsqlite3-both - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-both - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-optout-both - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-narrow - cd .. ### recursor ### # distribution build - ./build-scripts/dist-recursor - cd pdns/recursordist - tar xf pdns-recursor-*.tar.bz2 - rm -f pdns-recursor-*.tar.bz2 - cd pdns-recursor-* - ./configure - make -k -j3 - cd ../ - ln -s pdns-recursor*/pdns_recursor . - cd ../.. # regression-tests - cd regression-tests.recursor - cp vars.sample vars - ./config.sh - ./start.sh - sleep 3 - svstat configs/* - ./runtests - test ! -s ./failed_tests - ./stop.sh - sleep 3 - ./clean.sh - cd .. # bulktest - cd regression-tests - THRESHOLD=90 TRACE=no ./timestamp ./recursor-test 5300 25000 - cd .. ### dnsdist ### # distribution build - ./build-scripts/dist-dnsdist - cd pdns/dnsdistdist - tar xf dnsdist*.tar.bz2 - cd dnsdist-* - ./configure --enable-unit-tests --enable-libsodium --enable-dnscrypt - make -k -j3 - ./testrunner - cp ./dnsdist ../../../regression-tests.dnsdist/ - cd ../../../regression-tests.dnsdist - DNSDISTBIN=./dnsdist ./runtests -v - rm -f ./dnsdist - rm -f ./DNSCryptResolver.cert ./DNSCryptResolver.key - cd .. - rm -rf pdns/dnsdistdist/dnsdist-*/ ### api ### - cd regression-tests.api - ./runtests authoritative - ./runtests recursor - cd .. ### no backend tests ### - cd regression-tests.nobackend/ - ./runtests - test ! -s ./failed_tests - cd .. - rm -f regression-tests/zones/*-slave.* #FIXME - git status - git status | grep -q clean notifications: irc: channels: - "irc.oftc.net#powerdns-dev" template: - "%{author} @ %{repository} / %{branch} - Build:#%{build_number} : %{message} - Changes: %{compare_url} - Build details: %{build_url}" use_notice: true skip_join: true