From 222054f5164bb903f0fc4a439e64cd9ce2a6ce8e Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 13 Oct 2022 20:05:39 +0200 Subject: [PATCH 1/6] lang: Handle empty translations wrt --no-warning Do not emit empty translation warnings if --no-warning has been specified. We have a special handler for this case already (--warn-empty). --- lang/lang-check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/lang-check.py b/lang/lang-check.py index cc5310fa4..a1873718d 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -211,7 +211,7 @@ def check_translation(entry, msgids, is_pot, no_warning, no_suggest, warn_empty, return (errors == 0) # Missing translation - if len(translation) == 0 and (known_msgid or warn_empty): + if len(translation) == 0 and (warn_empty or (not no_warning and known_msgid)): errors += 1 if rows == 1: print(yellow("[W]: Empty translation for \"%s\" on line %d" % (source, line))) From 3f9e61e338ee924602a8f8c0bbaa4ea789f12345 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 13 Oct 2022 20:19:19 +0200 Subject: [PATCH 2/6] lang: Add --errors-only to suppress all warnings/suggestions --- lang/lang-check.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lang/lang-check.py b/lang/lang-check.py index a1873718d..618b6b03d 100755 --- a/lang/lang-check.py +++ b/lang/lang-check.py @@ -307,6 +307,9 @@ def main(): parser.add_argument( "--no-suggest", action="store_true", help="Disable suggestions") + parser.add_argument( + "--errors-only", action="store_true", + help="Only check errors") parser.add_argument( "--pot", action="store_true", help="Do not check translations") @@ -331,6 +334,10 @@ def main(): print("{}: file does not exist or is not a regular file".format(args.po), file=stderr) return 1 + if args.errors_only: + args.no_warning = True + args.no_suggest = True + # load the symbol map to supress empty (but unused) translation warnings msgids = None if args.map: From 468f4f8c57222e07d6fc8eaa8998ac2a0d8e6bac Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 13 Oct 2022 20:10:31 +0200 Subject: [PATCH 3/6] cmake: Always check po files for errors during build --- CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be0b24efd..bbaa66112 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -381,12 +381,11 @@ function(fw_add_variant variant_name) add_custom_command( OUTPUT ${LANG_BIN} - #[[ - # Check po file: - #COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lang/lang-check.py --no-warning --map ${LANG_MAP} ${PO_FILE} - #]] + # Check po file for errors _only_ + COMMAND ${CMAKE_SOURCE_DIR}/lang/lang-check.py --errors-only --map ${LANG_MAP} ${PO_FILE} + # Build the catalog COMMAND ${CMAKE_SOURCE_DIR}/lang/lang-build.py ${LANG_MAP} ${PO_FILE} ${LANG_BIN} - # Check bin size: + # Check bin size COMMAND ${CMAKE_COMMAND} -DLANG_MAX_SIZE=${LANG_MAX_SIZE} -DLANG_FILE=${LANG_BIN} -P ${PROJECT_CMAKE_DIR}/Check_lang_size.cmake DEPENDS ${LANG_MAP} ${PO_FILE} From 688542602daf4fa151762d0924deb1f6d07cf274 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 13 Oct 2022 20:11:36 +0200 Subject: [PATCH 4/6] cmake: Add targets for language checking Add the following macro targets to check translations: - check_lang: check all languages for all variants - check_lang_[variant]: check all languages for [variant] - check_lang_[lang]: check all variants against [lang] - check_lang_[variant]_[lang]: check a single variant/language For example: - ninja check_lang: check *everything* - ninja check_de: check German in all variants - ninja check_MK3S-EINSy10a: check all languages in the MK3S - ninja check_MK3S-EINSy10a_de: check German in the MK3S --- CMakeLists.txt | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bbaa66112..5078a20c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,8 +294,7 @@ function(add_base_binary variant_name) target_include_directories( ${variant_name} PRIVATE ${PRUSA_BOARDS_DIR}/cores/prusa_einsy_rambo/ - ${PRUSA_BOARDS_DIR}/variants/prusa_einsy_rambo/ - ${CMAKE_SOURCE_DIR}/Firmware + ${PRUSA_BOARDS_DIR}/variants/prusa_einsy_rambo/ ${CMAKE_SOURCE_DIR}/Firmware ) target_link_libraries(${variant_name} avr_core) @@ -373,12 +372,27 @@ function(fw_add_variant variant_name) COMMENT "Generating ${variant_name} language map" ) + # Base targets for language checks + add_custom_target(check_lang_${variant_name}) + add_dependencies(check_lang check_lang_${variant_name}) + # Build language catalogs set(LANG_BINS "") foreach(LANG IN LISTS SELECTED_LANGUAGES) set(LANG_BIN ${LANG_TMP_DIR}/${variant_name}_${LANG}.bin) set(PO_FILE "${CMAKE_SOURCE_DIR}/lang/po/Firmware_${LANG}.po") + # Full language checks + add_custom_target( + check_lang_${variant_name}_${LANG} + COMMENT "Checking ${variant_name} language ${LANG}" + COMMAND ${CMAKE_SOURCE_DIR}/lang/lang-check.py --map ${LANG_MAP} ${PO_FILE} + DEPENDS ${LANG_MAP} ${PO_FILE} + USES_TERMINAL + ) + add_dependencies(check_lang_${variant_name} check_lang_${variant_name}_${LANG}) + add_dependencies(check_lang_${LANG} check_lang_${variant_name}_${LANG}) + add_custom_command( OUTPUT ${LANG_BIN} # Check po file for errors _only_ @@ -470,6 +484,13 @@ endfunction() if(CMAKE_CROSSCOMPILING) + # Main target for language checks + add_custom_target(check_lang) + foreach(LANG IN LISTS SELECTED_LANGUAGES) + add_custom_target(check_lang_${LANG}) + add_dependencies(check_lang check_lang_${LANG}) + endforeach() + # build a list of all supported variants file( GLOB ALL_VARIANTS From c0b194795ca1589ab026008e131d2b02813b07a2 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 13 Oct 2022 20:28:08 +0200 Subject: [PATCH 5/6] CI: Add a new stage to check languages --- .github/travis/cmake-lang.sh | 10 ++++++++++ .travis.yml | 5 +++++ 2 files changed, 15 insertions(+) create mode 100755 .github/travis/cmake-lang.sh diff --git a/.github/travis/cmake-lang.sh b/.github/travis/cmake-lang.sh new file mode 100755 index 000000000..14a4b5d91 --- /dev/null +++ b/.github/travis/cmake-lang.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -xe +rm -rf build +mkdir build +cd build +cmake .. \ + -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" \ + -DCMAKE_BUILD_TYPE=Release \ + -G Ninja +ninja check_lang diff --git a/.travis.yml b/.travis.yml index c886dce23..b183e53a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,12 @@ jobs: - stage: tests script: ./.github/travis/cmake-test.sh + # language checks + - stage: lang + script: ./.github/travis/cmake-lang.sh + stages: - cmake + - lang - legacy - tests From 9bfe48032005c5bdfb9e86b06fa85e23c5cbbd56 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Thu, 13 Oct 2022 20:33:26 +0200 Subject: [PATCH 6/6] CI: Ignore lang-check errors in lang stage --- .github/travis/cmake-lang.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/travis/cmake-lang.sh b/.github/travis/cmake-lang.sh index 14a4b5d91..38404d53b 100755 --- a/.github/travis/cmake-lang.sh +++ b/.github/travis/cmake-lang.sh @@ -7,4 +7,6 @@ cmake .. \ -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" \ -DCMAKE_BUILD_TYPE=Release \ -G Ninja -ninja check_lang + +# ignore all failures in order to show as much output as possible +ninja -k0 check_lang || true