From ec4c18f09a03de43dff884a4a4f2cce37bbad795 Mon Sep 17 00:00:00 2001 From: joeydelarago Date: Thu, 1 Sep 2022 09:26:25 +0200 Subject: [PATCH] Remove unused CICD CURA-9483 --- CMakeLists.txt | 89 ----------------------------- Jenkinsfile | 74 ------------------------ cmake/CuraPluginInstall.cmake | 92 ------------------------------ cmake/CuraTests.cmake | 77 ------------------------- cmake/mod_bundled_packages_json.py | 73 ------------------------ 5 files changed, 405 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 Jenkinsfile delete mode 100644 cmake/CuraPluginInstall.cmake delete mode 100644 cmake/CuraTests.cmake delete mode 100755 cmake/mod_bundled_packages_json.py diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 9d6e3c709b..0000000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2022 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -# For MSVC flags, will be ignored on non-Windows OS's and this project in general. Only needed for cura-build-environment. -cmake_policy(SET CMP0091 NEW) -project(cura) -cmake_minimum_required(VERSION 3.18) - -include(GNUInstallDirs) - -list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) - -set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE PATH "The location of the Uranium repository") -set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE PATH "The location of the scripts directory of the Uranium repository") - -option(CURA_DEBUGMODE "Enable debug dialog and other debug features" OFF) -if(CURA_DEBUGMODE) - set(_cura_debugmode "ON") -endif() - -option(GENERATE_TRANSLATIONS "Should the translations be generated?" ON) - -set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuration folder") -set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") -set(CURA_VERSION "master" CACHE STRING "Version name of Cura") -set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") -set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root") -set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version") -set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version") -set(CURA_MARKETPLACE_ROOT "" CACHE STRING "Alternative Marketplace location") -set(CURA_DIGITAL_FACTORY_URL "" CACHE STRING "Alternative Digital Factory location") - -configure_file(${CMAKE_SOURCE_DIR}/com.ultimaker.cura.desktop.in ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop @ONLY) - -configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY) - -if(NOT DEFINED Python_VERSION) - set(Python_VERSION - 3.10 - CACHE STRING "Python Version" FORCE) - message(STATUS "Setting Python version to ${Python_VERSION}. Set Python_VERSION if you want to compile against an other version.") -endif() -if(APPLE) - set(Python_FIND_FRAMEWORK NEVER) -endif() -find_package(Python ${Python_VERSION} EXACT REQUIRED COMPONENTS Interpreter) -message(STATUS "Linking and building ${project_name} against Python ${Python_VERSION}") -if(NOT DEFINED Python_SITELIB_LOCAL) - set(Python_SITELIB_LOCAL - "${Python_SITELIB}" - CACHE PATH "Local alternative site-package location to install Cura" FORCE) -endif() - -# Tests -include(CuraTests) - -if(NOT ${URANIUM_DIR} STREQUAL "") - set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake") -endif() -if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") - list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake) - include(UraniumTranslationTools) - # Extract Strings - add_custom_target(extract-messages ${URANIUM_SCRIPTS_DIR}/extract-messages ${CMAKE_SOURCE_DIR} cura) - # Build Translations - if(${GENERATE_TRANSLATIONS}) - CREATE_TRANSLATION_TARGETS() - endif() -endif() - -install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura) - -include(CuraPluginInstall) - -install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -install(DIRECTORY cura DESTINATION "${Python_SITELIB_LOCAL}") -install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION "${Python_SITELIB_LOCAL}/cura/") -if(NOT APPLE AND NOT WIN32) - install(FILES ${CMAKE_BINARY_DIR}/com.ultimaker.cura.desktop - DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) - install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png - DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/) - install(FILES com.ultimaker.cura.appdata.xml - DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) - install(FILES cura.sharedmimeinfo - DESTINATION ${CMAKE_INSTALL_DATADIR}/mime/packages/ - RENAME cura.xml ) -endif() diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index a345ebbd05..0000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,74 +0,0 @@ -parallel_nodes(['linux && cura', 'windows && cura']) -{ - timeout(time: 2, unit: "HOURS") - { - - // Prepare building - stage('Prepare') - { - // Ensure we start with a clean build directory. - step([$class: 'WsCleanup']) - - // Checkout whatever sources are linked to this pipeline. - checkout scm - } - - // If any error occurs during building, we want to catch it and continue with the "finale" stage. - catchError - { - // Building and testing should happen in a subdirectory. - dir('build') - { - // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup. - stage('Build') - { - def branch = env.BRANCH_NAME - if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) - { - branch = "master" - } - - // Ensure CMake is setup. Note that since this is Python code we do not really "build" it. - def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") - cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"") - } - - // Try and run the unit tests. If this stage fails, we consider the build to be "unstable". - stage('Unit Test') - { - if (isUnix()) - { - // For Linux - try { - sh 'make CTEST_OUTPUT_ON_FAILURE=TRUE test' - } catch(e) - { - currentBuild.result = "UNSTABLE" - } - } - else - { - // For Windows - try - { - // This also does code style checks. - bat 'ctest -V' - } catch(e) - { - currentBuild.result = "UNSTABLE" - } - } - } - } - } - - // Perform any post-build actions like notification and publishing of unit tests. - stage('Finalize') - { - // Publish the test results to Jenkins. - junit allowEmptyResults: true, testResults: 'build/junit*.xml' - - notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.']) - } - } -} diff --git a/cmake/CuraPluginInstall.cmake b/cmake/CuraPluginInstall.cmake deleted file mode 100644 index 79b86ebdc6..0000000000 --- a/cmake/CuraPluginInstall.cmake +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2022 Ultimaker B.V. -# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher. - -# -# This module detects all plugins that need to be installed and adds them using the CMake install() command. -# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it. -# -# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the -# form of "a;b;c" or "a,b,c". By default all plugins will be installed. -# - -option(PRINT_PLUGIN_LIST "Should the list of plugins that are installed be printed?" ON) - -# Options or configuration variables -set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.") - -file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json) -list(LENGTH _plugin_json_list _plugin_json_list_len) - -# Sort the lists alphabetically so we can handle cases like this: -# - plugins/my_plugin/plugin.json -# - plugins/my_plugin/my_module/plugin.json -# In this case, only "plugins/my_plugin" should be added via install(). -set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS}) -# Sanitize the string so the comparison will be case-insensitive. -string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list) -string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list) - -# WORKAROUND counterpart of what's in cura-build. -string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}") - -list(LENGTH _no_install_plugin_list _no_install_plugin_list_len) - -if(_no_install_plugin_list_len GREATER 0) - list(SORT _no_install_plugin_list) -endif() -if(_plugin_json_list_len GREATER 0) - list(SORT _plugin_json_list) -endif() - -# Check all plugin directories and add them via install() if needed. -set(_install_plugin_list "") -foreach(_plugin_json_path ${_plugin_json_list}) - get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY) - file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir}) - get_filename_component(_plugin_dir_name ${_plugin_dir} NAME) - - # Make plugin name comparison case-insensitive - string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase) - - # Check if this plugin needs to be skipped for installation - set(_add_plugin ON) # Indicates if this plugin should be added to the build or not. - set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is - # specified in the NO_INSTALL_PLUGINS list. - if(_no_install_plugin_list) - if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list) - set(_add_plugin OFF) - set(_is_no_install_plugin ON) - endif() - endif() - - # Make sure this is not a subdirectory in a plugin that's already in the install list - if(_add_plugin) - foreach(_known_install_plugin_dir ${_install_plugin_list}) - if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+") - set(_add_plugin OFF) - break() - endif() - endforeach() - endif() - - if(_add_plugin) - if(${PRINT_PLUGIN_LIST}) - message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}") - endif() - get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY) - install(DIRECTORY ${_rel_plugin_dir} - DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir} - PATTERN "__pycache__" EXCLUDE - PATTERN "*.qmlc" EXCLUDE - ) - list(APPEND _install_plugin_list ${_plugin_dir}) - elseif(_is_no_install_plugin) - if(${PRINT_PLUGIN_LIST}) - message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}") - endif() - execute_process(COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py - -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages - ${_plugin_dir_name} - RESULT_VARIABLE _mod_json_result) - endif() -endforeach() diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake deleted file mode 100644 index 09e8dadbab..0000000000 --- a/cmake/CuraTests.cmake +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2022 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -include(CTest) -include(CMakeParseArguments) - -add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose) - -function(cura_add_test) - set(_single_args NAME DIRECTORY PYTHONPATH) - cmake_parse_arguments("" "" "${_single_args}" "" ${ARGN}) - - if(NOT _NAME) - message(FATAL_ERROR "cura_add_test requires a test name argument") - endif() - - if(NOT _DIRECTORY) - message(FATAL_ERROR "cura_add_test requires a directory to test") - endif() - - if(NOT _PYTHONPATH) - set(_PYTHONPATH ${_DIRECTORY}) - endif() - - if(WIN32) - string(REPLACE "|" "\\;" _PYTHONPATH ${_PYTHONPATH}) - set(_PYTHONPATH "${_PYTHONPATH}\\;$ENV{PYTHONPATH}") - else() - string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH}) - set(_PYTHONPATH "${_PYTHONPATH}:$ENV{PYTHONPATH}") - endif() - - get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). - if (NOT ${test_exists}) - add_test( - NAME ${_NAME} - COMMAND ${Python_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} - ) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") - else() - message(WARNING "Duplicate test ${_NAME}!") - endif() -endfunction() - - -#Add code style test. -add_test( - NAME "code-style" - COMMAND ${Python_EXECUTABLE} run_mypy.py - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) - -#Add test for import statements which are not compatible with all builds -add_test( - NAME "invalid-imports" - COMMAND ${Python_EXECUTABLE} scripts/check_invalid_imports.py - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) - -cura_add_test(NAME pytest-main DIRECTORY ${CMAKE_SOURCE_DIR}/tests PYTHONPATH "${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") - -file(GLOB_RECURSE _plugins plugins/*/__init__.py) -foreach(_plugin ${_plugins}) - get_filename_component(_plugin_directory ${_plugin} DIRECTORY) - if(EXISTS ${_plugin_directory}/tests) - get_filename_component(_plugin_name ${_plugin_directory} NAME) - cura_add_test(NAME pytest-${_plugin_name} DIRECTORY ${_plugin_directory} PYTHONPATH "${_plugin_directory}|${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") - endif() -endforeach() - -#Add test for whether the shortcut alt-keys are unique in every translation. -add_test( - NAME "shortcut-keys" - COMMAND ${Python_EXECUTABLE} scripts/check_shortcut_keys.py - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) diff --git a/cmake/mod_bundled_packages_json.py b/cmake/mod_bundled_packages_json.py deleted file mode 100755 index e03261b479..0000000000 --- a/cmake/mod_bundled_packages_json.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python3 -# -# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall -# CMake module. -# - -import argparse -import collections -import json -import os -import sys - - -def find_json_files(work_dir: str) -> list: - """Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths. - - :param work_dir: The directory to look for JSON files recursively. - :return: A list of JSON files in absolute paths that are found in the given directory. - """ - - json_file_list = [] - for root, dir_names, file_names in os.walk(work_dir): - for file_name in file_names: - abs_path = os.path.abspath(os.path.join(root, file_name)) - json_file_list.append(abs_path) - return json_file_list - - -def remove_entries_from_json_file(file_path: str, entries: list) -> None: - """Removes the given entries from the given JSON file. The file will modified in-place. - - :param file_path: The JSON file to modify. - :param entries: A list of strings as entries to remove. - :return: None - """ - - try: - with open(file_path, "r", encoding = "utf-8") as f: - package_dict = json.load(f, object_hook = collections.OrderedDict) - except Exception as e: - msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\ - .format(file_path = file_path, e = e) - sys.stderr.write(msg + os.linesep) - return - - for entry in entries: - if entry in package_dict: - del package_dict[entry] - print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry)) - - try: - with open(file_path, "w", encoding = "utf-8", newline = "\n") as f: - json.dump(package_dict, f, indent = 4) - except Exception as e: - msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e) - raise IOError(msg) - - -def main() -> None: - parser = argparse.ArgumentParser("mod_bundled_packages_json") - parser.add_argument("-d", "--dir", dest = "work_dir", - help = "The directory to look for bundled packages JSON files, recursively.") - parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+") - - args = parser.parse_args() - - json_file_list = find_json_files(args.work_dir) - for json_file_path in json_file_list: - remove_entries_from_json_file(json_file_path, args.entries) - - -if __name__ == "__main__": - main()