You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							183 lines
						
					
					
						
							7.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							183 lines
						
					
					
						
							7.5 KiB
						
					
					
				| # Generate .travis.yml automatically | |
| 
 | |
| # Configuration for Linux | |
| configs_linux = [ | |
|     # OS, compiler, build type | |
|     ("debian-9", "gcc", "DefaultDebug"), | |
|     ("debian-9", "gcc", "DefaultRelease"), | |
|     ("ubuntu-17.10", "gcc", "DefaultDebugTravis"), | |
|     ("ubuntu-17.10", "gcc", "DefaultReleaseTravis"), | |
|     ("ubuntu-18.04", "gcc", "DefaultDebug"), | |
|     ("ubuntu-18.04", "gcc", "DefaultRelease"), | |
| ] | |
| 
 | |
| # Configurations for Mac | |
| configs_mac = [ | |
|     # OS, compiler, build type | |
| #    ("osx", "clang", "DefaultDebug"), | |
| #    ("osx", "clang", "DefaultRelease"), | |
| ] | |
| 
 | |
| # Stages in travis | |
| stages = [ | |
|     ("Build (1st run)", "Build1"), | |
|     ("Build (2nd run)", "Build2"), | |
|     ("Build (3rd run)", "Build3"), | |
|     ("Build (4th run)", "BuildLast"), | |
|     ("Test all", "TestAll"), | |
| ] | |
| 
 | |
| 
 | |
| if __name__ == "__main__": | |
|     allow_failures = [] | |
| 
 | |
|     s = "" | |
|     # Initial config | |
|     s += "#\n" | |
|     s += "# General config\n" | |
|     s += "#\n" | |
|     s += "branches:\n" | |
|     s += "  only:\n" | |
|     s += "  - master\n" | |
|     s += "  - stable\n" | |
|     s += "sudo: required\n" | |
|     s += "dist: trusty\n" | |
|     s += "language: cpp\n" | |
|     s += "\n" | |
|     s += "git:\n" | |
|     s += "  depth: false\n" | |
|     s += "\n" | |
|     s += "# Enable caching\n" | |
|     s += "cache:\n" | |
|     s += "  timeout: 1000\n" | |
|     s += "  directories:\n" | |
|     s += "  - build\n" | |
|     s += "  - travis/mtime_cache\n" | |
|     s += "\n" | |
|     s += "# Enable docker support\n" | |
|     s += "services:\n" | |
|     s += "- docker\n" | |
|     s += "\n" | |
| 
 | |
|     s += "notifications:\n" | |
|     s += "  email:\n" | |
|     s += "    on_failure: always\n" | |
|     s += "    on_success: change\n" | |
|     s += "    recipients:\n" | |
|     s += '    - secure: "VWnsiQkt1xjgRo1hfNiNQqvLSr0fshFmLV7jJlUixhCr094mgD0U2bNKdUfebm28Byg9UyDYPbOFDC0sx7KydKiL1q7FKKXkyZH0k04wUu8XiNw+fYkDpmPnQs7G2n8oJ/GFJnr1Wp/1KI3qX5LX3xot4cJfx1I5iFC2O+p+ng6v/oSX+pewlMv4i7KL16ftHHHMo80N694v3g4B2NByn4GU2/bjVQcqlBp/TiVaUa5Nqu9DxZi/n9CJqGEaRHOblWyMO3EyTZsn45BNSWeQ3DtnMwZ73rlIr9CaEgCeuArc6RGghUAVqRI5ao+N5apekIaILwTgL6AJn+Lw/+NRPa8xclgd0rKqUQJMJCDZKjKz2lmIs3bxfELOizxJ3FJQ5R95FAxeAZ6rb/j40YqVVTw2IMBDnEE0J5ZmpUYNUtPti/Adf6GD9Fb2y8sLo0XDJzkI8OxYhfgjSy5KYmRj8O5MXcP2MAE8LQauNO3MaFnL9VMVOTZePJrPozQUgM021uyahf960+QNI06Uqlmg+PwWkSdllQlxHHplOgW7zClFhtSUpnJxcsUBzgg4kVg80gXUwAQkaDi7A9Wh2bs+TvMlmHzBwg+2SaAfWDgjeJIeOaipDkF1uSGzC+EHAiiKYMLd4Aahoi8SuelJUucoyJyLAq00WdUFQIh/izVhM4Y="\n' | |
|     s += "\n" | |
|     s += "#\n" | |
|     s += "# Configurations\n" | |
|     s += "#\n" | |
|     s += "jobs:\n" | |
|     s += "  include:\n" | |
| 
 | |
|     # Start with prebuilding carl for docker | |
|     s += "\n" | |
|     s += "    ###\n" | |
|     s += "    # Stage: Build Carl\n" | |
|     s += "    ###\n" | |
|     s += "\n" | |
|     for config in configs_linux: | |
|         linux = config[0] | |
|         compiler = config[1] | |
|         build_type = config[2] | |
|         if "Travis" in build_type: | |
|             s += "    # {} - {}\n".format(linux, build_type) | |
|             buildConfig = "" | |
|             buildConfig += "    - stage: Build Carl\n" | |
|             buildConfig += "      os: linux\n" | |
|             buildConfig += "      compiler: {}\n".format(compiler) | |
|             buildConfig += "      env: CONFIG={} LINUX={} COMPILER={}\n".format(build_type, linux, compiler) | |
|             buildConfig += "      install:\n" | |
|             buildConfig += "        - travis/install_linux.sh\n" | |
|             buildConfig += "      script:\n" | |
|             buildConfig += "        - travis/build_carl.sh\n" | |
|             # Upload to DockerHub | |
|             buildConfig += "      after_success:\n" | |
|             buildConfig += '        - docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";\n' | |
|             if "Debug" in build_type: | |
|                 buildConfig += "        - docker commit carl movesrwth/carl:travis-debug;\n" | |
|                 buildConfig += "        - docker push movesrwth/carl:travis-debug;\n" | |
|             elif "Release" in build_type: | |
|                 buildConfig += "        - docker commit carl movesrwth/carl:travis;\n" | |
|                 buildConfig += "        - docker push movesrwth/carl:travis;\n" | |
|             else: | |
|                 assert False | |
|             s += buildConfig | |
| 
 | |
|     # Generate all configurations | |
|     for stage in stages: | |
|         s += "\n" | |
|         s += "    ###\n" | |
|         s += "    # Stage: {}\n".format(stage[0]) | |
|         s += "    ###\n" | |
|         s += "\n" | |
|         # Mac OS X | |
|         for config in configs_mac: | |
|             osx = config[0] | |
|             compiler = config[1] | |
|             build_type = config[2] | |
|             s += "    # {} - {}\n".format(osx, build_type) | |
|             buildConfig = "" | |
|             buildConfig += "    - stage: {}\n".format(stage[0]) | |
|             buildConfig += "      os: osx\n" | |
|             buildConfig += "      osx_image: xcode9.1\n" | |
|             buildConfig += "      compiler: {}\n".format(compiler) | |
|             buildConfig += "      env: CONFIG={} COMPILER={} STL=libc++\n".format(build_type, compiler) | |
|             buildConfig += "      install:\n" | |
|             if stage[1] == "Build1": | |
|                 buildConfig += "        - rm -rf build\n" | |
|             buildConfig += "        - travis/install_osx.sh\n" | |
|             buildConfig += "      script:\n" | |
|             buildConfig += "        - travis/build.sh {}\n".format(stage[1]) | |
|             buildConfig += "      after_failure:\n" | |
|             buildConfig += "        - find build -iname '*err*.log' -type f -print -exec cat {} \;\n" | |
|             s += buildConfig | |
| 
 | |
|         # Linux via Docker | |
|         for config in configs_linux: | |
|             allow_fail = "" | |
|             linux = config[0] | |
|             compiler = config[1] | |
|             build_type = config[2] | |
|             s += "    # {} - {}\n".format(linux, build_type) | |
|             buildConfig = "" | |
|             buildConfig += "    - stage: {}\n".format(stage[0]) | |
|             allow_fail += "    - stage: {}\n".format(stage[0]) | |
|             buildConfig += "      os: linux\n" | |
|             allow_fail += "      os: linux\n" | |
|             buildConfig += "      compiler: {}\n".format(compiler) | |
|             buildConfig += "      env: CONFIG={} LINUX={} COMPILER={}\n".format(build_type, linux, compiler) | |
|             allow_fail += "      env: CONFIG={} LINUX={} COMPILER={}\n".format(build_type, linux, compiler) | |
|             buildConfig += "      install:\n" | |
|             if stage[1] == "Build1": | |
|                 buildConfig += "        - rm -rf build\n" | |
|             buildConfig += "        - travis/install_linux.sh\n" | |
|             buildConfig += "      script:\n" | |
|             buildConfig += "        - travis/build.sh {}\n".format(stage[1]) | |
|             buildConfig += "      before_cache:\n" | |
|             buildConfig += "        - docker cp storm:/opt/storm/. .\n" | |
|             buildConfig += "      after_failure:\n" | |
|             buildConfig += "        - find build -iname '*err*.log' -type f -print -exec cat {} \;\n" | |
|             # Upload to DockerHub | |
|             if stage[1] == "TestAll" and "Travis" in build_type: | |
|                 buildConfig += "      after_success:\n" | |
|                 buildConfig += '        - docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD";\n' | |
|                 if "Debug" in build_type: | |
|                     buildConfig += "        - docker commit storm movesrwth/storm:travis-debug;\n" | |
|                     buildConfig += "        - docker push movesrwth/storm:travis-debug;\n" | |
|                 elif "Release" in build_type: | |
|                     buildConfig += "        - docker commit storm movesrwth/storm:travis;\n" | |
|                     buildConfig += "        - docker push movesrwth/storm:travis;\n" | |
|                 else: | |
|                     assert False | |
|             s += buildConfig | |
|             if "Travis" in build_type and "Release" in build_type: | |
|                 allow_failures.append(allow_fail) | |
| 
 | |
|     if len(allow_failures) > 0: | |
|         s += "  allow_failures:\n" | |
|         for fail in allow_failures: | |
|             s += fail | |
|     print(s)
 |