diff options
Diffstat (limited to 'util/travis')
-rwxr-xr-x | util/travis/before_install.sh | 29 | ||||
-rw-r--r-- | util/travis/clang-format-whitelist.txt | 499 | ||||
-rwxr-xr-x | util/travis/clangtidy.sh | 28 | ||||
-rw-r--r-- | util/travis/common.sh | 57 | ||||
-rw-r--r-- | util/travis/lint.sh | 43 | ||||
-rwxr-xr-x | util/travis/run-clang-tidy.py | 321 | ||||
-rwxr-xr-x | util/travis/script.sh | 69 | ||||
-rw-r--r-- | util/travis/toolchain_mingw.cmake.in | 18 |
8 files changed, 0 insertions, 1064 deletions
diff --git a/util/travis/before_install.sh b/util/travis/before_install.sh deleted file mode 100755 index 649486dad..000000000 --- a/util/travis/before_install.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -e - -echo "Preparing for $TRAVIS_COMMIT_RANGE" - -. util/travis/common.sh - -if [[ ! -z "${CLANG_FORMAT}" ]]; then - exit 0 -fi - -needs_compile || exit 0 - -if [[ $PLATFORM == "Unix" ]] || [[ ! -z "${CLANG_TIDY}" ]]; then - if [[ $TRAVIS_OS_NAME == "linux" ]] || [[ ! -z "${CLANG_TIDY}" ]]; then - install_linux_deps - else - install_macosx_deps - fi -elif [[ $PLATFORM == "Win32" ]]; then - wget http://minetest.kitsunemimi.pw/mingw-w64-i686_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - # buildwin32.sh detects the installed toolchain automatically - sudo tar -xaf mingw.tar.xz -C /usr -elif [[ $PLATFORM == "Win64" ]]; then - wget http://minetest.kitsunemimi.pw/mingw-w64-x86_64_9.2.0_ubuntu18.04.tar.xz -O mingw.tar.xz - sed -e "s|%PREFIX%|x86_64-w64-mingw32|" \ - -e "s|%ROOTPATH%|/usr/x86_64-w64-mingw32|" \ - < util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw64.cmake - sudo tar -xaf mingw.tar.xz -C /usr -fi diff --git a/util/travis/clang-format-whitelist.txt b/util/travis/clang-format-whitelist.txt deleted file mode 100644 index 02c8b2660..000000000 --- a/util/travis/clang-format-whitelist.txt +++ /dev/null @@ -1,499 +0,0 @@ -src/activeobject.h -src/ban.cpp -src/camera.cpp -src/camera.h -src/chat.cpp -src/chat.h -src/chat_interface.h -src/client/clientlauncher.cpp -src/client/clientlauncher.h -src/client/sound_openal.cpp -src/client.cpp -src/clientenvironment.cpp -src/clientenvironment.h -src/client/gameui.cpp -src/client.h -src/client/hud.cpp -src/client/hud.h -src/clientiface.cpp -src/clientiface.h -src/client/joystick_controller.cpp -src/client/joystick_controller.h -src/clientmap.cpp -src/clientmap.h -src/clientmedia.cpp -src/clientmedia.h -src/clientobject.cpp -src/clientobject.h -src/client/render/core.cpp -src/client/renderingengine.cpp -src/client/render/interlaced.cpp -src/client/render/plain.cpp -src/client/render/sidebyside.cpp -src/client/render/stereo.cpp -src/client/tile.cpp -src/client/tile.h -src/client/fontengine.h -src/client/clientenvironment.cpp -src/client/mapblock_mesh.cpp -src/client/sound_openal.h -src/client/clouds.cpp -src/client/fontengine.cpp -src/client/camera.h -src/client/hud.cpp -src/client/clientmap.cpp -src/client/sound_openal.cpp -src/client/minimap.h -src/client/content_cao.cpp -src/client/localplayer.h -src/client/mapblock_mesh.h -src/client/mesh.cpp -src/client/sound.cpp -src/client/guiscalingfilter.cpp -src/client/content_cso.cpp -src/client/gameui.cpp -src/client/wieldmesh.cpp -src/client/clientmedia.h -src/client/game.cpp -src/client/keys.h -src/client/client.h -src/client/shader.cpp -src/client/clientmap.h -src/client/inputhandler.h -src/client/content_mapblock.h -src/client/game.h -src/client/mesh.h -src/client/camera.cpp -src/client/sky.h -src/client/mesh_generator_thread.cpp -src/client/guiscalingfilter.h -src/client/clientobject.cpp -src/client/tile.cpp -src/client/hud.h -src/client/inputhandler.cpp -src/client/clientevent.h -src/client/gameui.h -src/client/content_cso.h -src/client/sky.cpp -src/client/localplayer.cpp -src/client/content_mapblock.cpp -src/client/clientobject.h -src/client/filecache.cpp -src/client/particles.h -src/client/clientenvironment.h -src/client/imagefilters.h -src/client/renderingengine.cpp -src/client/tile.h -src/client/clientmedia.cpp -src/client/event_manager.h -src/client/joystick_controller.h -src/client/clouds.h -src/client/clientlauncher.h -src/client/content_cao.h -src/client/minimap.cpp -src/client/sound.h -src/client/keycode.cpp -src/client/particles.cpp -src/client/joystick_controller.cpp -src/client/keycode.h -src/client/wieldmesh.h -src/client/filecache.h -src/client/shader.h -src/client/mesh_generator_thread.h -src/client/renderingengine.h -src/client/client.cpp -src/client/imagefilters.cpp -src/client/clientlauncher.cpp -src/clouds.cpp -src/clouds.h -src/collision.cpp -src/collision.h -src/config.h -src/content_cao.cpp -src/content_cao.h -src/content_cso.cpp -src/content_cso.h -src/content_mapblock.cpp -src/content_mapblock.h -src/content_mapnode.cpp -src/content_nodemeta.cpp -src/content_nodemeta.h -src/convert_json.cpp -src/convert_json.h -src/craftdef.cpp -src/craftdef.h -src/database/database.cpp -src/database/database-dummy.cpp -src/database/database-files.cpp -src/database/database-leveldb.cpp -src/database/database-postgresql.cpp -src/database/database-postgresql.h -src/database/database-redis.cpp -src/database/database-sqlite3.cpp -src/database/database-sqlite3.h -src/daynightratio.h -src/debug.cpp -src/debug.h -src/defaultsettings.cpp -src/emerge.cpp -src/emerge.h -src/environment.cpp -src/exceptions.h -src/face_position_cache.cpp -src/face_position_cache.h -src/filecache.cpp -src/filesys.cpp -src/filesys.h -src/fontengine.cpp -src/fontengine.h -src/game.cpp -src/gamedef.h -src/game.h -src/gettext.cpp -src/gettext.h -src/gui/guiAnimatedImage.cpp -src/gui/guiAnimatedImage.h -src/gui/guiBackgroundImage.cpp -src/gui/guiBackgroundImage.h -src/gui/guiBox.cpp -src/gui/guiBox.h -src/gui/guiButton.cpp -src/gui/guiButton.h -src/gui/guiButtonImage.cpp -src/gui/guiButtonImage.h -src/gui/guiButtonItemImage.cpp -src/gui/guiButtonItemImage.h -src/gui/guiChatConsole.cpp -src/gui/guiChatConsole.h -src/gui/guiConfirmRegistration.cpp -src/gui/guiEditBoxWithScrollbar.cpp -src/gui/guiEditBoxWithScrollbar.h -src/gui/guiEngine.cpp -src/gui/guiEngine.h -src/gui/guiFormSpecMenu.cpp -src/gui/guiFormSpecMenu.h -src/gui/guiKeyChangeMenu.cpp -src/gui/guiHyperText.cpp -src/gui/guiHyperText.h -src/gui/guiInventoryList.cpp -src/gui/guiInventoryList.h -src/gui/guiItemImage.cpp -src/gui/guiItemImage.h -src/gui/guiMainMenu.h -src/gui/guiPasswordChange.cpp -src/gui/guiPathSelectMenu.cpp -src/gui/guiPathSelectMenu.h -src/gui/guiScrollBar.cpp -src/gui/guiSkin.cpp -src/gui/guiSkin.h -src/gui/guiTable.cpp -src/gui/guiTable.h -src/gui/guiVolumeChange.cpp -src/gui/guiVolumeChange.h -src/gui/intlGUIEditBox.cpp -src/gui/intlGUIEditBox.h -src/gui/mainmenumanager.h -src/gui/modalMenu.h -src/guiscalingfilter.cpp -src/guiscalingfilter.h -src/gui/StyleSpec.h -src/gui/touchscreengui.cpp -src/httpfetch.cpp -src/hud.cpp -src/hud.h -src/imagefilters.cpp -src/imagefilters.h -src/inventory.cpp -src/inventory.h -src/inventorymanager.cpp -src/inventorymanager.h -src/irrlicht_changes/CGUITTFont.cpp -src/irrlicht_changes/CGUITTFont.h -src/irrlicht_changes/irrUString.h -src/irrlicht_changes/static_text.cpp -src/irrlicht_changes/static_text.h -src/irrlichttypes.h -src/itemdef.cpp -src/itemdef.h -src/itemstackmetadata.cpp -src/keycode.cpp -src/light.cpp -src/localplayer.cpp -src/log.cpp -src/log.h -src/main.cpp -src/mapblock.cpp -src/mapblock.h -src/mapblock_mesh.cpp -src/mapblock_mesh.h -src/map.cpp -src/mapgen/cavegen.cpp -src/mapgen/cavegen.h -src/mapgen/dungeongen.cpp -src/mapgen/dungeongen.h -src/mapgen/mapgen.cpp -src/mapgen/mapgen.h -src/mapgen/mapgen_carpathian.cpp -src/mapgen/mapgen_carpathian.h -src/mapgen/mapgen_flat.cpp -src/mapgen/mapgen_flat.h -src/mapgen/mapgen_fractal.cpp -src/mapgen/mapgen_fractal.h -src/mapgen/mapgen_singlenode.cpp -src/mapgen/mapgen_singlenode.h -src/mapgen/mapgen_v5.cpp -src/mapgen/mapgen_v5.h -src/mapgen/mapgen_v6.cpp -src/mapgen/mapgen_v6.h -src/mapgen/mapgen_v7.cpp -src/mapgen/mapgen_v7.h -src/mapgen/mapgen_valleys.cpp -src/mapgen/mapgen_valleys.h -src/mapgen/mg_biome.cpp -src/mapgen/mg_biome.h -src/mapgen/mg_decoration.cpp -src/mapgen/mg_decoration.h -src/mapgen/mg_ore.cpp -src/mapgen/mg_ore.h -src/mapgen/mg_schematic.cpp -src/mapgen/mg_schematic.h -src/mapgen/treegen.cpp -src/mapgen/treegen.h -src/map.h -src/mapnode.cpp -src/mapnode.h -src/mapsector.cpp -src/mapsector.h -src/map_settings_manager.cpp -src/map_settings_manager.h -src/mesh.cpp -src/mesh_generator_thread.cpp -src/mesh.h -src/metadata.h -src/minimap.cpp -src/minimap.h -src/mods.cpp -src/mods.h -src/network/address.cpp -src/network/clientopcodes.cpp -src/network/clientopcodes.h -src/network/clientpackethandler.cpp -src/network/connection.cpp -src/network/connection.h -src/network/connectionthreads.cpp -src/network/networkpacket.cpp -src/network/networkprotocol.h -src/network/serveropcodes.cpp -src/network/serveropcodes.h -src/network/serverpackethandler.cpp -src/nodedef.cpp -src/nodedef.h -src/nodemetadata.cpp -src/nodemetadata.h -src/nodetimer.cpp -src/nodetimer.h -src/noise.cpp -src/noise.h -src/objdef.cpp -src/objdef.h -src/object_properties.cpp -src/object_properties.h -src/particles.cpp -src/particles.h -src/pathfinder.cpp -src/pathfinder.h -src/player.cpp -src/player.h -src/porting_android.cpp -src/porting_android.h -src/porting.cpp -src/porting.h -src/profiler.h -src/raycast.cpp -src/raycast.h -src/reflowscan.cpp -src/reflowscan.h -src/remoteplayer.cpp -src/rollback.cpp -src/rollback.h -src/rollback_interface.cpp -src/rollback_interface.h -src/script/common/c_content.cpp -src/script/common/c_content.h -src/script/common/c_converter.cpp -src/script/common/c_converter.h -src/script/common/c_internal.cpp -src/script/common/c_internal.h -src/script/common/c_types.cpp -src/script/common/c_types.h -src/script/cpp_api/s_async.cpp -src/script/cpp_api/s_async.h -src/script/cpp_api/s_base.cpp -src/script/cpp_api/s_base.h -src/script/cpp_api/s_client.cpp -src/script/cpp_api/s_entity.cpp -src/script/cpp_api/s_entity.h -src/script/cpp_api/s_env.cpp -src/script/cpp_api/s_env.h -src/script/cpp_api/s_internal.h -src/script/cpp_api/s_inventory.cpp -src/script/cpp_api/s_inventory.h -src/script/cpp_api/s_item.cpp -src/script/cpp_api/s_item.h -src/script/cpp_api/s_mainmenu.h -src/script/cpp_api/s_node.cpp -src/script/cpp_api/s_node.h -src/script/cpp_api/s_nodemeta.cpp -src/script/cpp_api/s_nodemeta.h -src/script/cpp_api/s_player.cpp -src/script/cpp_api/s_player.h -src/script/cpp_api/s_security.cpp -src/script/cpp_api/s_security.h -src/script/cpp_api/s_server.cpp -src/script/cpp_api/s_server.h -src/script/lua_api/l_areastore.cpp -src/script/lua_api/l_base.cpp -src/script/lua_api/l_base.h -src/script/lua_api/l_client.cpp -src/script/lua_api/l_craft.cpp -src/script/lua_api/l_craft.h -src/script/lua_api/l_env.cpp -src/script/lua_api/l_env.h -src/script/lua_api/l_http.cpp -src/script/lua_api/l_http.h -src/script/lua_api/l_internal.h -src/script/lua_api/l_inventory.cpp -src/script/lua_api/l_inventory.h -src/script/lua_api/l_item.cpp -src/script/lua_api/l_item.h -src/script/lua_api/l_itemstackmeta.cpp -src/script/lua_api/l_itemstackmeta.h -src/script/lua_api/l_localplayer.cpp -src/script/lua_api/l_mainmenu.cpp -src/script/lua_api/l_mainmenu.h -src/script/lua_api/l_mapgen.cpp -src/script/lua_api/l_mapgen.h -src/script/lua_api/l_metadata.cpp -src/script/lua_api/l_minimap.cpp -src/script/lua_api/l_nodemeta.cpp -src/script/lua_api/l_nodemeta.h -src/script/lua_api/l_nodetimer.cpp -src/script/lua_api/l_noise.cpp -src/script/lua_api/l_object.cpp -src/script/lua_api/l_object.h -src/script/lua_api/l_particles.cpp -src/script/lua_api/l_particles.h -src/script/lua_api/l_particles_local.cpp -src/script/lua_api/l_rollback.cpp -src/script/lua_api/l_rollback.h -src/script/lua_api/l_server.cpp -src/script/lua_api/l_settings.cpp -src/script/lua_api/l_sound.cpp -src/script/lua_api/l_storage.cpp -src/script/lua_api/l_util.cpp -src/script/lua_api/l_vmanip.cpp -src/script/scripting_client.cpp -src/script/scripting_client.h -src/script/scripting_mainmenu.cpp -src/script/scripting_mainmenu.h -src/script/scripting_server.cpp -src/script/scripting_server.h -src/serialization.cpp -src/serialization.h -src/server.cpp -src/serverenvironment.cpp -src/serverenvironment.h -src/server.h -src/serverlist.cpp -src/serverlist.h -src/server/luaentity_sao.cpp -src/server/player_sao.cpp -src/server/serveractiveobject.cpp -src/server/serveractiveobject.h -src/settings.cpp -src/settings.h -src/settings_translation_file.cpp -src/shader.cpp -src/shader.h -src/sky.cpp -src/sound.cpp -src/staticobject.cpp -src/staticobject.h -src/subgame.cpp -src/subgame.h -src/terminal_chat_console.cpp -src/terminal_chat_console.h -src/texture_override.cpp -src/threading/atomic.h -src/threading/event.cpp -src/threading/mutex_auto_lock.h -src/threading/mutex.cpp -src/threading/mutex.h -src/threading/semaphore.cpp -src/threading/thread.cpp -src/threading/thread.h -src/threads.h -src/tileanimation.cpp -src/tool.cpp -src/tool.h -src/translation.cpp -src/unittest/test_areastore.cpp -src/unittest/test_collision.cpp -src/unittest/test_compression.cpp -src/unittest/test_connection.cpp -src/unittest/test.cpp -src/unittest/test_filepath.cpp -src/unittest/test.h -src/unittest/test_inventory.cpp -src/unittest/test_keycode.cpp -src/unittest/test_map_settings_manager.cpp -src/unittest/test_noderesolver.cpp -src/unittest/test_noise.cpp -src/unittest/test_random.cpp -src/unittest/test_schematic.cpp -src/unittest/test_serialization.cpp -src/unittest/test_settings.cpp -src/unittest/test_socket.cpp -src/unittest/test_threading.cpp -src/unittest/test_utilities.cpp -src/unittest/test_voxelalgorithms.cpp -src/unittest/test_voxelmanipulator.cpp -src/util/areastore.cpp -src/util/areastore.h -src/util/auth.cpp -src/util/auth.h -src/util/base64.cpp -src/util/base64.h -src/util/basic_macros.h -src/util/container.h -src/util/directiontables.cpp -src/util/directiontables.h -src/util/enriched_string.cpp -src/util/enriched_string.h -src/util/md32_common.h -src/util/numeric.cpp -src/util/numeric.h -src/util/pointedthing.cpp -src/util/pointedthing.h -src/util/pointer.h -src/util/quicktune.h -src/util/quicktune_shortcutter.h -src/util/quicktune.cpp -src/util/serialize.cpp -src/util/serialize.h -src/util/sha1.cpp -src/util/srp.cpp -src/util/srp.h -src/util/strfnd.h -src/util/string.cpp -src/util/string.h -src/util/thread.h -src/util/timetaker.cpp -src/util/timetaker.h -src/version.cpp -src/version.h -src/voxelalgorithms.cpp -src/voxelalgorithms.h -src/voxel.cpp -src/voxel.h -src/wieldmesh.cpp diff --git a/util/travis/clangtidy.sh b/util/travis/clangtidy.sh deleted file mode 100755 index ed6523b0b..000000000 --- a/util/travis/clangtidy.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -e -. util/travis/common.sh - -needs_compile || exit 0 - -if [ -z "${CLANG_TIDY}" ]; then - CLANG_TIDY=clang-tidy -fi - -mkdir -p cmakebuild && cd cmakebuild -cmake -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ - -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE \ - -DENABLE_SOUND=FALSE \ - -DBUILD_SERVER=TRUE .. -make GenerateVersion -cd .. - -echo "Performing clang-tidy checks..." -./util/travis/run-clang-tidy.py \ - -clang-tidy-binary=${CLANG_TIDY} -p cmakebuild \ - -quiet -config="$(cat .clang-tidy)" \ - 'src/.*' - -RET=$? -echo "Clang tidy returned $RET" -exit $RET diff --git a/util/travis/common.sh b/util/travis/common.sh deleted file mode 100644 index cf9ce020e..000000000 --- a/util/travis/common.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -e - -set_linux_compiler_env() { - if [[ "${COMPILER}" == "gcc-6" ]]; then - export CC=gcc-6 - export CXX=g++-6 - elif [[ "${COMPILER}" == "gcc-8" ]]; then - export CC=gcc-8 - export CXX=g++-8 - elif [[ "${COMPILER}" == "clang-3.9" ]]; then - export CC=clang-3.9 - export CXX=clang++-3.9 - elif [[ "${COMPILER}" == "clang-9" ]]; then - export CC=clang-9 - export CXX=clang++-9 - fi -} - -# Linux build only -install_linux_deps() { - local pkgs=(libirrlicht-dev cmake libbz2-dev libpng-dev \ - libjpeg-dev libxxf86vm-dev libgl1-mesa-dev libsqlite3-dev \ - libhiredis-dev libogg-dev libgmp-dev libvorbis-dev libopenal-dev \ - gettext libpq-dev postgresql-server-dev-all libleveldb-dev) - # for better coverage, build some jobs with luajit - if [[ "$CC" == "clang"* && -z "$VALGRIND$FREETYPE" ]]; then - pkgs+=(libluajit-5.1-dev) - fi - - sudo apt-get update - sudo apt-get install -y --no-install-recommends ${pkgs[@]} -} - -# Mac OSX build only -install_macosx_deps() { - brew update - brew install freetype gettext hiredis irrlicht leveldb libogg libvorbis luajit - if brew ls | grep -q jpeg; then - brew upgrade jpeg - else - brew install jpeg - fi - #brew upgrade postgresql -} - -# Relative to git-repository root: -TRIGGER_COMPILE_PATHS="src/.*\.(c|cpp|h)|CMakeLists.txt|cmake/Modules/|util/travis/|util/buildbot/" - -needs_compile() { - RANGE="$TRAVIS_COMMIT_RANGE" - if [[ "$(git diff --name-only $RANGE -- 2>/dev/null)" == "" ]]; then - RANGE="$TRAVIS_COMMIT^...$TRAVIS_COMMIT" - echo "Fixed range: $RANGE" - fi - git diff --name-only $RANGE -- | egrep -q "^($TRIGGER_COMPILE_PATHS)" -} - diff --git a/util/travis/lint.sh b/util/travis/lint.sh deleted file mode 100644 index b3027c689..000000000 --- a/util/travis/lint.sh +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/bash -function perform_lint() { - echo "Performing LINT..." - if [ -z "${CLANG_FORMAT}" ]; then - CLANG_FORMAT=clang-format - fi - echo "LINT: Using binary $CLANG_FORMAT" - CLANG_FORMAT_WHITELIST="util/travis/clang-format-whitelist.txt" - - files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')" - - local errorcount=0 - local fail=0 - for f in ${files_to_lint}; do - d=$(diff -u "$f" <(${CLANG_FORMAT} "$f") || true) - - if ! [ -z "$d" ]; then - whitelisted=$(awk '$1 == "'$f'" { print 1 }' "$CLANG_FORMAT_WHITELIST") - - # If file is not whitelisted, mark a failure - if [ -z "${whitelisted}" ]; then - errorcount=$((errorcount+1)) - - printf "The file %s is not compliant with the coding style" "$f" - if [ ${errorcount} -gt 50 ]; then - printf "\nToo many errors encountered previously, this diff is hidden.\n" - else - printf ":\n%s\n" "$d" - fi - - fail=1 - fi - fi - done - - if [ "$fail" = 1 ]; then - echo "LINT reports failure." - exit 1 - fi - - echo "LINT OK" -} - diff --git a/util/travis/run-clang-tidy.py b/util/travis/run-clang-tidy.py deleted file mode 100755 index 6ad0ff24f..000000000 --- a/util/travis/run-clang-tidy.py +++ /dev/null @@ -1,321 +0,0 @@ -#!/usr/bin/env python -# -#===- run-clang-tidy.py - Parallel clang-tidy runner ---------*- python -*--===# -# -# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -# See https://llvm.org/LICENSE.txt for license information. -# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -# -#===------------------------------------------------------------------------===# -# FIXME: Integrate with clang-tidy-diff.py - -""" -Parallel clang-tidy runner -========================== - -Runs clang-tidy over all files in a compilation database. Requires clang-tidy -and clang-apply-replacements in $PATH. - -Example invocations. -- Run clang-tidy on all files in the current working directory with a default - set of checks and show warnings in the cpp files and all project headers. - run-clang-tidy.py $PWD - -- Fix all header guards. - run-clang-tidy.py -fix -checks=-*,llvm-header-guard - -- Fix all header guards included from clang-tidy and header guards - for clang-tidy headers. - run-clang-tidy.py -fix -checks=-*,llvm-header-guard extra/clang-tidy \ - -header-filter=extra/clang-tidy - -Compilation database setup: -http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html -""" - -from __future__ import print_function - -import argparse -import glob -import json -import multiprocessing -import os -import re -import shutil -import subprocess -import sys -import tempfile -import threading -import traceback - -try: - import yaml -except ImportError: - yaml = None - -is_py2 = sys.version[0] == '2' - -if is_py2: - import Queue as queue -else: - import queue as queue - -def find_compilation_database(path): - """Adjusts the directory until a compilation database is found.""" - result = './' - while not os.path.isfile(os.path.join(result, path)): - if os.path.realpath(result) == '/': - print('Error: could not find compilation database.') - sys.exit(1) - result += '../' - return os.path.realpath(result) - - -def make_absolute(f, directory): - if os.path.isabs(f): - return f - return os.path.normpath(os.path.join(directory, f)) - - -def get_tidy_invocation(f, clang_tidy_binary, checks, tmpdir, build_path, - header_filter, extra_arg, extra_arg_before, quiet, - config): - """Gets a command line for clang-tidy.""" - start = [clang_tidy_binary] - if header_filter is not None: - start.append('-header-filter=' + header_filter) - if checks: - start.append('-checks=' + checks) - if tmpdir is not None: - start.append('-export-fixes') - # Get a temporary file. We immediately close the handle so clang-tidy can - # overwrite it. - (handle, name) = tempfile.mkstemp(suffix='.yaml', dir=tmpdir) - os.close(handle) - start.append(name) - for arg in extra_arg: - start.append('-extra-arg=%s' % arg) - for arg in extra_arg_before: - start.append('-extra-arg-before=%s' % arg) - start.append('-p=' + build_path) - if quiet: - start.append('-quiet') - if config: - start.append('-config=' + config) - start.append(f) - return start - - -def merge_replacement_files(tmpdir, mergefile): - """Merge all replacement files in a directory into a single file""" - # The fixes suggested by clang-tidy >= 4.0.0 are given under - # the top level key 'Diagnostics' in the output yaml files - mergekey="Diagnostics" - merged=[] - for replacefile in glob.iglob(os.path.join(tmpdir, '*.yaml')): - content = yaml.safe_load(open(replacefile, 'r')) - if not content: - continue # Skip empty files. - merged.extend(content.get(mergekey, [])) - - if merged: - # MainSourceFile: The key is required by the definition inside - # include/clang/Tooling/ReplacementsYaml.h, but the value - # is actually never used inside clang-apply-replacements, - # so we set it to '' here. - output = { 'MainSourceFile': '', mergekey: merged } - with open(mergefile, 'w') as out: - yaml.safe_dump(output, out) - else: - # Empty the file: - open(mergefile, 'w').close() - - -def check_clang_apply_replacements_binary(args): - """Checks if invoking supplied clang-apply-replacements binary works.""" - try: - subprocess.check_call([args.clang_apply_replacements_binary, '--version']) - except: - print('Unable to run clang-apply-replacements. Is clang-apply-replacements ' - 'binary correctly specified?', file=sys.stderr) - traceback.print_exc() - sys.exit(1) - - -def apply_fixes(args, tmpdir): - """Calls clang-apply-fixes on a given directory.""" - invocation = [args.clang_apply_replacements_binary] - if args.format: - invocation.append('-format') - if args.style: - invocation.append('-style=' + args.style) - invocation.append(tmpdir) - subprocess.call(invocation) - - -def run_tidy(args, tmpdir, build_path, queue, lock, failed_files): - """Takes filenames out of queue and runs clang-tidy on them.""" - while True: - name = queue.get() - invocation = get_tidy_invocation(name, args.clang_tidy_binary, args.checks, - tmpdir, build_path, args.header_filter, - args.extra_arg, args.extra_arg_before, - args.quiet, args.config) - - proc = subprocess.Popen(invocation) - proc.wait() - if proc.returncode != 0: - failed_files.append(name) - queue.task_done() - - -def main(): - parser = argparse.ArgumentParser(description='Runs clang-tidy over all files ' - 'in a compilation database. Requires ' - 'clang-tidy and clang-apply-replacements in ' - '$PATH.') - parser.add_argument('-clang-tidy-binary', metavar='PATH', - default='clang-tidy', - help='path to clang-tidy binary') - parser.add_argument('-clang-apply-replacements-binary', metavar='PATH', - default='clang-apply-replacements', - help='path to clang-apply-replacements binary') - parser.add_argument('-checks', default=None, - help='checks filter, when not specified, use clang-tidy ' - 'default') - parser.add_argument('-config', default=None, - help='Specifies a configuration in YAML/JSON format: ' - ' -config="{Checks: \'*\', ' - ' CheckOptions: [{key: x, ' - ' value: y}]}" ' - 'When the value is empty, clang-tidy will ' - 'attempt to find a file named .clang-tidy for ' - 'each source file in its parent directories.') - parser.add_argument('-header-filter', default=None, - help='regular expression matching the names of the ' - 'headers to output diagnostics from. Diagnostics from ' - 'the main file of each translation unit are always ' - 'displayed.') - if yaml: - parser.add_argument('-export-fixes', metavar='filename', dest='export_fixes', - help='Create a yaml file to store suggested fixes in, ' - 'which can be applied with clang-apply-replacements.') - parser.add_argument('-j', type=int, default=0, - help='number of tidy instances to be run in parallel.') - parser.add_argument('files', nargs='*', default=['.*'], - help='files to be processed (regex on path)') - parser.add_argument('-fix', action='store_true', help='apply fix-its') - parser.add_argument('-format', action='store_true', help='Reformat code ' - 'after applying fixes') - parser.add_argument('-style', default='file', help='The style of reformat ' - 'code after applying fixes') - parser.add_argument('-p', dest='build_path', - help='Path used to read a compile command database.') - parser.add_argument('-extra-arg', dest='extra_arg', - action='append', default=[], - help='Additional argument to append to the compiler ' - 'command line.') - parser.add_argument('-extra-arg-before', dest='extra_arg_before', - action='append', default=[], - help='Additional argument to prepend to the compiler ' - 'command line.') - parser.add_argument('-quiet', action='store_true', - help='Run clang-tidy in quiet mode') - args = parser.parse_args() - - db_path = 'compile_commands.json' - - if args.build_path is not None: - build_path = args.build_path - else: - # Find our database - build_path = find_compilation_database(db_path) - - try: - invocation = [args.clang_tidy_binary, '-list-checks'] - invocation.append('-p=' + build_path) - if args.checks: - invocation.append('-checks=' + args.checks) - invocation.append('-') - if args.quiet: - # Even with -quiet we still want to check if we can call clang-tidy. - with open(os.devnull, 'w') as dev_null: - subprocess.check_call(invocation, stdout=dev_null) - else: - subprocess.check_call(invocation) - except: - print("Unable to run clang-tidy.", file=sys.stderr) - sys.exit(1) - - # Load the database and extract all files. - database = json.load(open(os.path.join(build_path, db_path))) - files = [make_absolute(entry['file'], entry['directory']) - for entry in database] - - max_task = args.j - if max_task == 0: - max_task = multiprocessing.cpu_count() - - tmpdir = None - if args.fix or (yaml and args.export_fixes): - check_clang_apply_replacements_binary(args) - tmpdir = tempfile.mkdtemp() - - # Build up a big regexy filter from all command line arguments. - file_name_re = re.compile('|'.join(args.files)) - - return_code = 0 - try: - # Spin up a bunch of tidy-launching threads. - task_queue = queue.Queue(max_task) - # List of files with a non-zero return code. - failed_files = [] - lock = threading.Lock() - for _ in range(max_task): - t = threading.Thread(target=run_tidy, - args=(args, tmpdir, build_path, task_queue, lock, failed_files)) - t.daemon = True - t.start() - - # Fill the queue with files. - for name in files: - if file_name_re.search(name): - task_queue.put(name) - - # Wait for all threads to be done. - task_queue.join() - if len(failed_files): - return_code = 1 - - except KeyboardInterrupt: - # This is a sad hack. Unfortunately subprocess goes - # bonkers with ctrl-c and we start forking merrily. - print('\nCtrl-C detected, goodbye.') - if tmpdir: - shutil.rmtree(tmpdir) - os.kill(0, 9) - - if yaml and args.export_fixes: - print('Writing fixes to ' + args.export_fixes + ' ...') - try: - merge_replacement_files(tmpdir, args.export_fixes) - except: - print('Error exporting fixes.\n', file=sys.stderr) - traceback.print_exc() - return_code=1 - - if args.fix: - print('Applying fixes ...') - try: - apply_fixes(args, tmpdir) - except: - print('Error applying fixes.\n', file=sys.stderr) - traceback.print_exc() - return_code=1 - - if tmpdir: - shutil.rmtree(tmpdir) - sys.exit(return_code) - -if __name__ == '__main__': - main() diff --git a/util/travis/script.sh b/util/travis/script.sh deleted file mode 100755 index 19aa2fdf7..000000000 --- a/util/travis/script.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -e -. util/travis/common.sh -. util/travis/lint.sh - -needs_compile || exit 0 - -if [[ ! -z "${CLANG_FORMAT}" ]]; then - # Lint and exit CI - perform_lint - exit 0 -fi - -set_linux_compiler_env - -if [[ ${PLATFORM} == "Unix" ]]; then - mkdir -p travisbuild - cd travisbuild || exit 1 - - CMAKE_FLAGS='' - - if [[ ${TRAVIS_OS_NAME} == "osx" ]]; then - CMAKE_FLAGS+=' -DCUSTOM_GETTEXT_PATH=/usr/local/opt/gettext' - fi - - if [[ -n "${FREETYPE}" ]] && [[ "${FREETYPE}" == "0" ]]; then - CMAKE_FLAGS+=' -DENABLE_FREETYPE=0' - fi - - cmake -DCMAKE_BUILD_TYPE=Debug \ - -DRUN_IN_PLACE=TRUE \ - -DENABLE_GETTEXT=TRUE \ - -DBUILD_SERVER=TRUE \ - ${CMAKE_FLAGS} .. - make -j2 - - echo "Running unit tests." - CMD="../bin/minetest --run-unittests" - if [[ "${VALGRIND}" == "1" ]]; then - valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ${CMD} && exit 0 - else - ${CMD} && exit 0 - fi - -elif [[ $PLATFORM == Win* ]]; then - [[ $CC == "clang" ]] && exit 1 # Not supposed to happen - # We need to have our build directory outside of the minetest directory because - # CMake will otherwise get very very confused with symlinks and complain that - # something is not a subdirectory of something even if it actually is. - # e.g.: - # /home/travis/minetest/minetest/travisbuild/minetest - # \/ \/ \/ - # /home/travis/minetest/minetest/travisbuild/minetest/travisbuild/minetest - # \/ \/ \/ - # /home/travis/minetest/minetest/travisbuild/minetest/travisbuild/minetest/travisbuild/minetest - # You get the idea. - OLDDIR=$(pwd) - cd .. - export EXISTING_MINETEST_DIR=$OLDDIR - export NO_MINETEST_GAME=1 - if [[ $PLATFORM == "Win32" ]]; then - "$OLDDIR/util/buildbot/buildwin32.sh" travisbuild && exit 0 - elif [[ $PLATFORM == "Win64" ]]; then - "$OLDDIR/util/buildbot/buildwin64.sh" travisbuild && exit 0 - fi -else - echo "Unknown platform \"${PLATFORM}\"." - exit 1 -fi - diff --git a/util/travis/toolchain_mingw.cmake.in b/util/travis/toolchain_mingw.cmake.in deleted file mode 100644 index 65f67517e..000000000 --- a/util/travis/toolchain_mingw.cmake.in +++ /dev/null @@ -1,18 +0,0 @@ -# Target operating system name -set(CMAKE_SYSTEM_NAME Windows) - -# Compilers to use -set(CMAKE_C_COMPILER %PREFIX%-gcc) -set(CMAKE_CXX_COMPILER %PREFIX%-g++) -set(CMAKE_RC_COMPILER %PREFIX%-windres) - -# Location of the target environment -set(CMAKE_FIND_ROOT_PATH %ROOTPATH%) - -# Adjust the default behaviour of the FIND_XXX() commands: -# search for headers and libraries in the target environment, -# search for programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - |