gnucash maint: Eliminate redundant mo files

Geert Janssens gjanssens at code.gnucash.org
Tue Mar 23 10:41:17 EDT 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/09ff2e54 (commit)
	from  https://github.com/Gnucash/gnucash/commit/2be07b3e (commit)



commit 09ff2e5483cfd0672a52af2be78adb73c53a8a22
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Tue Mar 23 15:25:08 2021 +0100

    Eliminate redundant mo files
    
    They were generated fist in builddir/po to then be copied
    to builddir/share/locale/...
    The intermediate in builddir/po is redundant.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 03b955e7d..a478b98d7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -788,6 +788,7 @@ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/common/config.h.cmake.in ${CONFIG_H}
 add_subdirectory (borrowed)
 add_subdirectory (data)
 add_subdirectory (doc)
+# Note: po should be processed before gnucash - it provides LINGUAS, used to generate desktop and appdata files
 add_subdirectory (po)
 add_subdirectory (common)
 add_subdirectory (libgnucash)
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index ec91d4403..1d72c9f4f 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -10,52 +10,36 @@ set (GC_LINGUAS ar as az bg brx de doi el en_GB es es_NI et fi fr gu he hi hr hu
 set (NEW_LINGUAS)
 
 set (ALL_LINGUAS ${TP_LINGUAS} ${GC_LINGUAS} ${NEW_LINGUAS})
-
-file (WRITE LINGUAS "${ALL_LINGUAS}")
+# LINGUAS is used to create localized destkop and appdata files
+string(REPLACE ";" " " LINGUAS "${ALL_LINGUAS}")
+file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS "${LINGUAS}")
 
 set (CATALOGS "")
-set (BUILD_CATALOGS "")
+set (po_SOURCES "")
 
-set(po_SOURCES "")
-file (WRITE LINGUAS "")
-foreach(lingua ${ALL_LINGUAS})
-  list(APPEND po_SOURCES ${lingua}.po)
-  file (APPEND LINGUAS "${lingua} ")
-endforeach()
+foreach (lingua ${ALL_LINGUAS})
+  list (APPEND po_SOURCES ${lingua}.po)
 
-set_local_dist(po_DIST_local ${po_SOURCES} CMakeLists.txt Makevars
-  POTFILES.in POTFILES.skip README gnucash-pot.cmake)
-set(po_DIST ${po_DIST_local} ${po_glossary_DIST} PARENT_SCOPE)
+  set (_LOCALE_DIR ${DATADIR_BUILD}/locale/${lingua}/LC_MESSAGES)
+  set (_MO_FILE ${_LOCALE_DIR}/gnucash.mo)
+  list (APPEND CATALOGS ${_MO_FILE})
 
-foreach(lingua ${ALL_LINGUAS})
-  set(_OUTPUT_FILE ${lingua}.mo)
-  list(APPEND CATALOGS ${_OUTPUT_FILE})
   add_custom_command(
-      OUTPUT ${_OUTPUT_FILE}
+      OUTPUT ${_MO_FILE}
       COMMAND ${CMAKE_COMMAND} -E env
         ${GETTEXT_MSGFMT_EXECUTABLE}
-            -o ${_OUTPUT_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
+            -o ${_MO_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
       DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
   )
-  set(_BUILD_FILE_DIR ${DATADIR_BUILD}/locale/${lingua}/LC_MESSAGES)
-  make_directory(${_BUILD_FILE_DIR})
-  set(_BUILD_FILE ${_BUILD_FILE_DIR}/gnucash.mo)
-  list(APPEND BUILD_CATALOGS ${_BUILD_FILE})
-  add_custom_command(
-    OUTPUT ${_BUILD_FILE}
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.mo ${_BUILD_FILE}
-    DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT_FILE}
-    #APPEND
-    )
-endforeach(lingua)
 
-add_custom_target(po-gmo ALL DEPENDS ${CATALOGS})
-add_custom_target(po-gmo-build ALL DEPENDS ${BUILD_CATALOGS})
+  install (FILES ${_MO_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/locale/${lingua}/LC_MESSAGES)
+endforeach (lingua)
 
+add_custom_target(po-gmo ALL DEPENDS ${CATALOGS})
 
-foreach(lingua ${ALL_LINGUAS})
-  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.mo RENAME gnucash.mo DESTINATION ${CMAKE_INSTALL_DATADIR}/locale/${lingua}/LC_MESSAGES)
-endforeach(lingua)
+set_local_dist(po_DIST_local ${po_SOURCES} CMakeLists.txt Makevars
+  POTFILES.in POTFILES.skip README gnucash-pot.cmake)
+set(po_DIST ${po_DIST_local} ${po_glossary_DIST} PARENT_SCOPE)
 
 function(read_file_removing_comments OUTPUT PATH)
   set(RESULT "")



Summary of changes:
 CMakeLists.txt    |  1 +
 po/CMakeLists.txt | 50 +++++++++++++++++---------------------------------
 2 files changed, 18 insertions(+), 33 deletions(-)



More information about the gnucash-changes mailing list