From 6ee87778ab8a0c493fc0a76d5ac278417fd4336a Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 18 Sep 2017 13:05:48 +0100 Subject: [PATCH] Add travis build config Enable builds on several python versions, and against several versions of libvirt. Ideally we would build all the way back to 0.9.11, since that is the min supported libvirt for python binding. It is not possible to build this old libvirt version on modern distros though, so using 1.2.0 as the oldest for now. Reviewed-by: Martin Kletzander Signed-off-by: Daniel P. Berrange --- .travis.yml | 55 +++++++++++++++++++++++++++++++++++++++++++ requirements-test.txt | 2 ++ setup.py | 15 ++++++------ 3 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 .travis.yml create mode 100644 requirements-test.txt diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f608ca1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,55 @@ +language: python +os: linux + +python: + - 2.6 + - 2.7 + - 3.2 + - 3.6 + +env: + - LIBVIRT=1.2.0 EXT=gz + - LIBVIRT=2.0.0 EXT=xz + - LIBVIRT=3.6.0 EXT=xz + +install: + - sudo apt-get -qqy build-dep libvirt libxml2-dev + - sudo apt-get -qqy install curl + - pip install -r requirements-test.txt + - curl -O -s https://libvirt.org/sources/libvirt-${LIBVIRT}.tar.${EXT} + - tar -xf libvirt-${LIBVIRT}.tar.${EXT} + - pushd libvirt-${LIBVIRT} + - | + ./configure --prefix=`pwd`/../libvirt-vroot \ + --without-libvirtd \ + --without-esx \ + --without-vbox \ + --without-libxl \ + --without-xen \ + --without-qemu \ + --without-lxc \ + --without-hyperv \ + --without-macvtap \ + --disable-werror + - make + - make install + - popd + +script: + - LD_LIBRARY_PATH=`pwd`/libvirt-vroot/lib PKG_CONFIG_PATH=`pwd`/libvirt-vroot/lib/pkgconfig python setup.py build sdist test + +notifications: + irc: + # The channel name "irc.oftc.net#virt" is encrypted against libvirt/libvirt-python + # to prevent IRC notifications from github forks. This was created using: + # $ travis encrypt -r "libvirt/libvirt-python" "irc.oftc.net#virt" + channels: + - secure: "K4JrbRpz4CHtZ1vjthVwseT8K6INJgjtZethP4DN1jOpm1uC5esbe1Q1qJOfB92JbMcdM6DNjrVg5eyTJj35aD9UoGpTUcPMsYrhlTPHZtfAuLv/at2eB2XRmETlhiXHgI6LizX6gTiwGW5ZHYwGChzumWxu141d/L9harNh9R6z8XH9uJpkNdOAIsJcwS56XGZ74CKsrqF5dK6ZYPIyP+i7gPO67gEWo0oD6TiJKR908fw03ZiXarIFmLRlk4MbHywLRF0byfD0gg2Ht/tDX73+59QXjLKo/GvQecwoU8UuuFRJlyhUfvm1JYYydnS+O7fPJvI0FWlYFY7i76aeVqkARHRpHknFueT6kZADOmiyMLuvdr+gWVuyIdX33vVJtDm4T1OtNMG/wy9EUZUU1vEu+gHhaRkf/O0GkMj0Hac4I14BGyd/Wdhto6zWojFiMEG/HRHey6l15MBQu49QyW/YMyWi/LeBWXuCUgwQ/ij5EPgsn36OxCafV9zMz0oXZskwX6rJGQRZsdgdwYvt2hP3muLaJbwVyT0bGlOJDJieOa/LVKOXPcQm26aGfyMuLgm0//E9v++6W1IDKh6+BNsfTKAwTxlAvJyz6Bns3XuUJUxUz2+uQVSS6S3EwEZUJ+yHDd2F4sX5OP1L7TWIOWFbI4vQK90ZZ7/jgiYQbwo=" + on_success: change + on_failure: always + email: + # The list name 'libvirt-ci@redhat.com" is encrypted against libvirt/libvirt-python + # to prevent IRC notifications from github forks. This was created using: + # $ travis encrypt -r "libvirt/libvirt-python" "libvirt-ci@redhat.com" + recipients: + - secure: "l6TTLcEcXdDEldHE2NgSIdt6a0k99ug3hp2W4IlnqJWJfIk/87nysJtLNrA0va20pPApCa3iJfMq4PUmBGiIIimTN0/KgC7tONDraogXhCbgfZp9Ejy/57TXxygSp4oum2kDw/c5uLnfrFV/xcn1fk6hvH6CD3bVcJPOQ/mc5FSKLqN5UzwqNnMpMTtG9qxCwfXJ/Bdm9fbURfezC7djcYRwRfPUe3TSD0L76G2HnQnSy4RqR3KFSjQHFPnSGM5IbsokbOaFKCyp/pHOt7QomQaY7YAPX/K9O+eP+hkkp6DGADkkumHctcgnMoyxpahf7pNKw9S8JYabH2NwREIq8whbp9Mo+R4rYO2ozroLWHaboYs/pBLrs606ivTwOmWGRCpJdCmmKTiZNyo6MRrwiOM6x+2YHUTMOa2kVheRNzaaxMFzHPW2kZ20bujPhfViJsRYj9flo5GJXJLyjluGZK5RjrguNJeIh8VJNBiSHW37uj7drmNBsqMad+65mf/4xtGITBqhz5Spx5R9UMZbuiJvcm8GasJMMdQ+bCfuWYjF2nZvSvFEr54Ii1YrDp6FKQ8YG1aD1/D8Z0/b3pLd/8Pn+M9yIWyO/Sto5TbSUjxBTmTStuDmtYE5uu1miYebvgJH5MovWPBegYgrfI417kPJgCG3q/R0YcZFMKFfQyo=" diff --git a/requirements-test.txt b/requirements-test.txt new file mode 100644 index 0000000..7435c54 --- /dev/null +++ b/requirements-test.txt @@ -0,0 +1,2 @@ +nose +lxml diff --git a/setup.py b/setup.py index f33ff1a..e8c498c 100755 --- a/setup.py +++ b/setup.py @@ -290,15 +290,16 @@ class my_test(Command): 'lib' + plat_specifier) def find_nosetests_path(self): - paths = [ - "/usr/bin/nosetests-%d.%d" % (sys.version_info[0], - sys.version_info[1]), - "/usr/bin/nosetests-%d" % (sys.version_info[0]), - "/usr/bin/nosetests", + binaries = [ + "nosetests-%d.%d" % (sys.version_info[0], + sys.version_info[1]), + "nosetests-%d" % (sys.version_info[0]), + "nosetests", ] - for path in paths: - if os.path.exists(path): + for binary in binaries: + path = distutils.spawn.find_executable(binary) + if path is not None: return path raise Exception("Cannot find any nosetests binary")