diff --git a/.travis.yml b/.travis.yml index 504f1351268dfbb811c78181622dacb61de2983e..7eee97935e3b4041958ca7d3b95f423321a9d2c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,8 @@ -language: cpp +sudo: required +services: + - docker +language: cpp os: - linux - osx @@ -8,26 +11,92 @@ compiler: - clang - gcc -matrix: - exclude: - - os: osx - compiler: gcc - -addons: - postgresql: "9.1" - -before_install: - - git submodule update --init --recursive +env: + matrix: + - OS=el DIST=6 PACK=rpm + - OS=el DIST=7 PACK=rpm + - OS=fedora DIST=20 PACK=rpm + - OS=fedora DIST=21 PACK=rpm + - OS=fedora DIST=22 PACK=rpm + - OS=fedora DIST=23 PACK=rpm + - OS=ubuntu DIST=trusty PACK=deb + - OS=ubuntu DIST=precise PACK=deb + - OS=ubuntu DIST=vivid PACK=deb + - OS=debian DIST=jessie PACK=deb + - OS=debian DIST=wheezy PACK=deb + - OS=debian DIST=stretch PACK=deb + - PACK=none -before_script: - - export PG='127.0.0.1:5432:tarantool:tarantool:tarantool' - - export MYSQL='127.0.0.1:3306:tarantool:tarantool:tarantool' +matrix: + allow_failures: + - env: OS=el DIST=6 PACK=rpm + - env: OS=el DIST=7 PACK=rpm + - env: OS=fedora DIST=20 PACK=rpm + - env: OS=fedora DIST=21 PACK=rpm + - env: OS=fedora DIST=22 PACK=rpm + - env: OS=fedora DIST=23 PACK=rpm + - env: OS=ubuntu DIST=trusty PACK=deb + - env: OS=ubuntu DIST=precise PACK=deb + - env: OS=ubuntu DIST=vivid PACK=deb + - env: OS=debian DIST=jessie PACK=deb + - env: OS=debian DIST=wheezy PACK=deb + - env: OS=debian DIST=stretch PACK=deb -install: - - sh ./extra/travis/build_$TRAVIS_OS_NAME.sh + exclude: + - env: OS=el DIST=6 PACK=rpm + compiler: clang + - env: OS=el DIST=7 PACK=rpm + compiler: clang + - env: OS=fedora DIST=20 PACK=rpm + compiler: clang + - env: OS=fedora DIST=21 PACK=rpm + compiler: clang + - env: OS=fedora DIST=22 PACK=rpm + compiler: clang + - env: OS=fedora DIST=23 PACK=rpm + compiler: clang + - env: OS=ubuntu DIST=trusty PACK=deb + compiler: clang + - env: OS=ubuntu DIST=precise PACK=deb + compiler: clang + - env: OS=ubuntu DIST=vivid PACK=deb + compiler: clang + - env: OS=debian DIST=jessie PACK=deb + compiler: clang + - env: OS=debian DIST=wheezy PACK=deb + compiler: clang + - env: OS=debian DIST=stretch PACK=deb + compiler: clang + - env: OS=el DIST=6 PACK=rpm + os: osx + - env: OS=el DIST=7 PACK=rpm + os: osx + - env: OS=fedora DIST=20 PACK=rpm + os: osx + - env: OS=fedora DIST=21 PACK=rpm + os: osx + - env: OS=fedora DIST=22 PACK=rpm + os: osx + - env: OS=fedora DIST=23 PACK=rpm + os: osx + - env: OS=ubuntu DIST=trusty PACK=deb + os: osx + - env: OS=ubuntu DIST=precise PACK=deb + os: osx + - env: OS=ubuntu DIST=vivid PACK=deb + os: osx + - env: OS=debian DIST=jessie PACK=deb + os: osx + - env: OS=debian DIST=wheezy PACK=deb + os: osx + - env: OS=debian DIST=stretch PACK=deb + os: osx + - os: osx + compiler: gcc script: - - sh ./extra/travis/test_$TRAVIS_OS_NAME.sh + - git clone https://github.com/tarantool/build.git + - bash build/pack/travis.sh notifications: irc: @@ -35,7 +104,7 @@ notifications: - irc.freenode.net#tarantool on_success: change on_failure: always - email: false + email: true git: depth: 500 diff --git a/cmake/rpm.cmake b/cmake/rpm.cmake index d01a879e8a0f194464cab4dfe1141978968d4817..e16526a8f15cc7cf3555d3418799f164c8399f97 100644 --- a/cmake/rpm.cmake +++ b/cmake/rpm.cmake @@ -23,21 +23,21 @@ if (RPMBUILD) set (RPM_SOURCE_DIRECTORY_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME} CACHE STRING "" FORCE) - set (RPM_PACKAGE_SOURCE_FILE_NAME ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + set (RPM_PACKAGE_SOURCE_FILE_NAME ${VERSION}.tar.gz CACHE STRING "" FORCE) set (RPM_BUILDROOT "${PROJECT_BINARY_DIR}/RPM/BUILDROOT" CACHE STRING "" FORCE) - add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz + add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/${VERSION}.tar.gz WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - COMMAND $(MAKE) package_source) + COMMAND $(MAKE) package_source && mv `ls *.tar.gz | head -n 1` ${VERSION}.tar.gz) add_custom_command(OUTPUT ${RPM_BUILDROOT} COMMAND ${MKDIR} -p ${RPM_BUILDROOT}) add_custom_target(rpm_src - DEPENDS ${PROJECT_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz - COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} --define '_sourcedir ./' --define '_srcrpmdir ./' -bs ${PROJECT_SOURCE_DIR}/extra/rpm/tarantool.rpm.spec + DEPENDS ${PROJECT_BINARY_DIR}/${VERSION}.tar.gz + COMMAND ${RPMBUILD} --buildroot ${RPM_BUILDROOT} --define '_sourcedir ./' --define '_srcrpmdir ./' -bs ${PROJECT_SOURCE_DIR}/rpm/tarantool.spec WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index 44d349ac3f80c7ffff30afc25aa0e51957dba9d9..9f293a2942d8dcfe6b60c1a0aafa678e99f4ed26 100644 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -1,7 +1,5 @@ add_subdirectory(dist) -configure_file(rpm/tarantool.rpm.spec.in rpm/tarantool.rpm.spec @ONLY) - if (TARGET_OS_DARWIN) # NOTE: need add execution 'plutil -lint org.tarantool.tarantool.plist # to check syntax of plist file. diff --git a/extra/travis/build_linux.sh b/extra/travis/build_linux.sh index aa6e01379a3df63f9c08e6ff41b85a1de04e2711..64d251e9c177bde908fd389af6e8051874d60334 100755 --- a/extra/travis/build_linux.sh +++ b/extra/travis/build_linux.sh @@ -1,8 +1,8 @@ sudo apt-get update > /dev/null -sudo apt-get -q install binutils-dev python-daemon python-yaml -sudo apt-get -q install libmysqlclient-dev libpq-dev postgresql-server-dev-all +sudo apt-get -q -y install binutils-dev python-daemon python-yaml +sudo apt-get -q -y install libmysqlclient-dev libpq-dev postgresql-server-dev-all sudo pip install six==1.9.0 sudo pip install gevent sudo pip install geventconnpool -mkdir ./build && cd ./build && cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo +cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo make -j8 diff --git a/extra/travis/test_linux.sh b/extra/travis/test_linux.sh index a46adf39d43621a3f360183547a44e2138040e0a..1303e1f7b385e302d46a96669dd8d7d6c3b8ca5b 100755 --- a/extra/travis/test_linux.sh +++ b/extra/travis/test_linux.sh @@ -1 +1,2 @@ -cd ./build && make test || echo +cd test +/usr/bin/python test-run.py --force diff --git a/extra/rpm/tarantool.rpm.spec.in b/rpm/tarantool.spec similarity index 94% rename from extra/rpm/tarantool.rpm.spec.in rename to rpm/tarantool.spec index 0a056dd9055243f08bd30837bda43156508b73ef..4fe629b93944d81aae3d63b7953f55f356ca6a12 100644 --- a/extra/rpm/tarantool.rpm.spec.in +++ b/rpm/tarantool.spec @@ -13,6 +13,10 @@ %global __debug_install_post %{nil} %global __debug_package %{nil} +%global build_version %(git describe --long | sed "s/[0-9]*\.[0-9]*\.[0-9]*-//" | sed "s/-[a-z 0-9]*//") +%global git_hash %(git describe --long | sed "s/.*-//") +%global prod_version %(git describe --long | sed "s/-[0-9]*-.*//") + %if (0%{?fedora} >= 15 || 0%{?rhel} >= 7) && %{undefined _with_systemd} %global _with_systemd 1 %endif @@ -54,8 +58,8 @@ Requires(preun): initscripts BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Name: %{?scl_prefix}tarantool -Version: @RPM_PACKAGE_VERSION@ -Release: @RPM_PACKAGE_RELEASE@ +Version: %{prod_version} +Release: %{build_version} Group: Applications/Databases Summary: Tarantool - a NoSQL database in a Lua script Vendor: tarantool.org @@ -65,7 +69,7 @@ Provides: %{?scl_prefix}tarantool-debuginfo Provides: %{?scl_prefix}tarantool-debug Requires: %{?scl_prefix}tarantool-common URL: http://tarantool.org -Source0: @RPM_PACKAGE_SOURCE_FILE_NAME@ +Source0: %{version}.tar.gz %description Tarantool is a high performance in-memory NoSQL database. It supports replication, online backup, stored procedures in Lua. @@ -78,7 +82,7 @@ scripts. Summary: Tarantool C connector and header files Vendor: tarantool.org Group: Applications/Databases -Requires: %{?scl_prefix}tarantool = @RPM_PACKAGE_VERSION@-@RPM_PACKAGE_RELEASE@ +Requires: %{?scl_prefix}tarantool = %{version}-%{release} %description dev Tarantool is a high performance in-memory NoSQL database. It supports replication, online backup, stored procedures in Lua. @@ -103,7 +107,7 @@ This package provides common files ################################################################## %prep -%setup -n @RPM_SOURCE_DIRECTORY_NAME@ +%setup -q -c tarantool-%{version} %build # https://fedoraproject.org/wiki/Packaging:RPMMacros diff --git a/test.sh b/test.sh new file mode 100644 index 0000000000000000000000000000000000000000..cc1e827fb5e80f4c22777b570f2d5514971ada69 --- /dev/null +++ b/test.sh @@ -0,0 +1,2 @@ +bash ./extra/travis/build_$TRAVIS_OS_NAME.sh +bash ./extra/travis/test_$TRAVIS_OS_NAME.sh