* Windows and Developer sources
* Fixes the report path to be fully qualified
* Adds the TeamCity report logger to remaining DUnitX automated tests
Fixes: #14197
Build-bot: skip build:windows,developer
Test-bot: skip
Clarifies the confusing builder.inc.sh / build-utils.sh distinction by
giving the scripts more appropriate names. Most build scripts should use
builder-full.inc.sh; some helper scripts can use builder-basic.inc.sh.
Documented in resources/build/README.md.
Renames:
* resources/build/builder.inc.sh to resources/build/builder-full.inc.sh
* resources/build/build-utils.sh to resources/build/builder-basic.inc.sh
Other changes:
* Moves Android-specific functions out of builder-basic.inc.sh and into
android/build.sh.
* Renames functions in builder-basic.inc.sh
More functions may be moved from builder-basic.inc.sh into utils.inc.sh
or other scripts in the future.
Fixes: #14065
Build-bot: build all
Test-bot: skip
This is a bit of an omnibus commit, apologies for that. This commit
moves Keyman Developer to a proper multi-process model, where editing
files from multiple projects is handled much more cleanly, with each
project loaded in a separate process.
Files that are edited outside of a project structure are loaded into a
'temporary project' in a single process, which provides a pathway for
existing users who may have legacy files outside the normal Keyman
Developer project model.
There are several components to this:
1. Inter-process communication (Multiprocess, CopyDataHelper units and
multiprocess test project). These modules establish a method of
enumerating running Keyman Developer instances (with EnumWindow),
recording relevant metadata for each instance (by thread id) in the
registry (registry used because it manages contention without
additional effort from us), and communicating between processes with
WM_COPYDATA.
2. Command-line parsing (TikeCommandLine). Determines project ownership
(ProjectOwningFile) for each filename passed on the command-line, and
passes these over to existing instances of Keyman Developer that have
that project loaded, or starts new instances as needed.
3. Temporary project management. Mostly in ProjectUI.
Also, moved GlobalProjectStateWnd management out of ProjectFile.pas and
into Project.pas, alongside other global project variables.
A follow-up will add functionality to determine if a file opened within
the Keyman Developer UI should open in the same instance or in a
separate instance (see TfrmKeymanDeveloper.OpenFileInProject). This will
use the same methodology as TikeCommandLine does now, so may involve
further refactoring.
This commit establishes the idea of 'keyman.kpj' as a future default
filename for Keyman Developer projects, but does not enable it, in
ProjectOwningFile. It is planned to introduce this fixed filename in
version 18.0 (see #10113).
Fixes#9923.
These are no longer used because we now use kmc for builds. This also
means that the kmcomp-x64-structures test is no longer required, because
that was used to keep the Delphi and C++ structures in sync.
There are some minor details around error message identifiers that are
still present in a handful of places, but they are work for another
time.
Several unit tests were not running as they were not referenced in
developer/src/test/auto/Makefile. This meant that some tests were
outdated:
* two keyboard fixtures needed recompiling with kmcomp in order to match
* some interfaces had changed slightly, necessitating updates to
corresponding unit tests.
Removes kmcomp.dpr, related source, compilekeymanweb.pas, and related
unit tests.
Cleans up a couple of bits and pieces around kmc in order to help tests
to pass, and updates some tests that had legacy code in them
(particularly missing &TARGETS stores).
* fixes CheckFilenameConsistency to use Windows functions on Windows,
to check case differences, and only test for file existence on other
platforms which are already case sensitive.
* fixes memory leaks in usage of `wstrtostr2`, and eliminated the
function altogether.
* avoided use of u16sprintf for error messages, as it seems not to be
working correctly (long term, eliminate altogether, use C++ string
formatting).
* fix memory leak and overwrite of token in compiler error message.
* remove debug logging and namespace from filesystem.cpp
Unrelated to kmcmplib:
* improved logs in kmcomp tests (these tests are running on kmcmplib),
so it is easier to diagnose failing tests.
* get keymans version
Merge branch 'master' of https://github.com/keymanapp/keyman into refactor/developer/6026-kmcompx-compiler-cross-platform-part-2-NEW_VERSION
# Conflicts:
# common/core/desktop/src/kmx/kmx_context.h
# common/core/desktop/src/kmx/kmx_processor.cpp
# common/windows/cpp/include/keymanversion.h
# common/windows/cpp/include/kkmnkbd/Compfile.h
# common/windows/cpp/include/kmtip_guids.h
# common/windows/cpp/src/kmtip_guids.cpp
# core/src/kmx/kmx_conversion.cpp
# core/src/kmx/kmx_conversion.h
# core/src/kmx/kmx_file.cpp
# core/src/kmx/kmx_processevent.cpp
# core/src/kmx/kmx_processor.hpp
# core/src/kmx/kmx_xstring.cpp
# developer/js/.gitignore
# developer/js/package-lock.json
# developer/js/tests/tsconfig.json
# developer/src/kmcmpdll/CasedKeys.cpp
# developer/src/kmcmpdll/CheckFilenameConsistency.cpp
# developer/src/kmcmpdll/CheckFilenameConsistency.h
# developer/src/kmcmpdll/CheckForDuplicates.cpp
# developer/src/kmcmpdll/CheckForDuplicates.h
# developer/src/kmcmpdll/CheckNCapsConsistency.cpp
# developer/src/kmcmpdll/CheckNCapsConsistency.h
# developer/src/kmcmpdll/Compiler.cpp
# developer/src/kmcmpdll/DeprecationChecks.cpp
# developer/src/kmcmpdll/NamedCodeConstants.cpp
# developer/src/kmcmpdll/UnreachableRules.cpp
# developer/src/kmcmpdll/UnreachableRules.h
# developer/src/kmcmpdll/compfile.h
# developer/src/kmcmpdll/kcframe/kcframe.cpp
# developer/src/kmcmpdll/kcframe/kcframe.vcxproj
# developer/src/kmcmpdll/kcframe/kcframe.vcxproj.filters
# developer/src/kmcmpdll/kmcmpdll.vcxproj
# developer/src/kmcmpdll/kmcmpdll.vcxproj.filters
# developer/src/kmcmpdll/version.rc
# developer/src/kmcmpdll/versioning.cpp
# developer/src/kmlmc/bundle.sh
# developer/src/kmlmc/tests/test-join-word-breaker.ts
# developer/src/kmlmc/tests/test-override-script-defaults.ts
# developer/src/server/tsconfig.json
# windows/src/developer/kmcmpdll/Makefile
# windows/src/developer/kmcmpdll/vkeys.h
# windows/src/engine/keyman32/keymanengine.h
# windows/src/global/inc/Vkeys.h
# windows/src/global/inc/rc4.h
# windows/src/global/vc/rc4.cpp
* changes in meson + include-paths of several files
* chore: remove common/core
* chore: remove unnecessary files
* chore: move headers and refs
* refactor(developer): fixup path to tests
* refactor(developer): fixup path to tests
tidied up +removed unnecessary files
checked contents of files+included a few new functions needed for myVersion
changed datatypes in CheckForDuplicates
tidy up more paths
CheckFileConsistency: not able to fully adapt for use of char16_t on non windows p.
-> used char16_t + commented out some AddWarning().
* sorted out some #includes
renamed some functions to reduce ambiguity
* fix(developer): solved linker errors
* chore(developer): remove some comments
* chore(developer): introduced KMX_UCHAR
* chore(developer): restored whitespace, comments
* chore(developer): tidied up vkeys.H / .cpp
* chore(developer): remove keyboardprocessor...
* chore(common): refactor shared types into km_types.h
* chore(core): remove duplicate types
* chore(core): move kmx_file.h to common
* chore(developper): removed typedefs of kmcompcx.h
* chore(developer): removed kmcompx/include/kmx_file.h
* chore(developer): chanched include of pch.h
* chore(developer): removed files from kmcompx/include/
* chore(developer): removed commented sections ( ** old **) if files
* chore(developer): removed doubled/overwritten functions
* chore(developer): removed doubled/overwritten functions
* chore(developer): changed #includes ".." -> <..>
* chore(developer): changed #includes ".." -> <..>
* chore(developer): enable tests for keyboards repo for kmcompx
* chore(developer): new functions e.g. string_from_wstring...
* chore(developer): changed printf->u16sprintf
* chore(developer): fopen
* chore(developer): fixed errors on running kmcompxtest
* chore(developer): changef u16fmt
* chore(developer): fixup u16ncat
* chore(developer): added return Msgs for different types of errors while compiling
* chore(developer): tests using RTL run Ok ( changed RTu->RTL)
* chore(developer): replaced u16ncmp with u16nicmp at most places
* chore(developer): changed Version number for tests 16.046 to 15.0265
* chore(developer): mostly whitespace changes
* chore(developer): tidied up code (not finished yet)
* chore(developer): removed #pragma once from wrong places, edited #includes
* chore(developer): removed #pragma once from wrong places, edited #includes
* chore(developer): CheckFileNameConsistency changed to take KMX_WCHART const* (= wchar_t* const); used in compiler.cpp now
* chore(developer): excluded some tests from kmcompxtest (use get_test_source_exclude_some_kmn.bat now)
* chore(developer): Win-functions in FileNameConsistency
* chore(developer): Win-functions in FileNameConsistency
* chore(developer): CheckFNConsuistency: called u16printf with f´different par.
* chore(developer): tidied up code
* chore(developer): tidied up code
* chore(developer): tiedied up code (compiler.cpp)
* chore(developer): tiedied up code
* chore(developer): tidied up code
* chore(developer): removed all commentaries _S2
* chore(developer): tidied up code
* chore(developer): tidied up code
* chore(developer): tidied up code
* chore(developer): removed several Windows-specific functions
* chore(developer): removed unused datatype typedefs
* chore(developer): new GetCompilerErrorString() used in AddCompileMessage()
* chore(developer): new GetCompilerErrorString() used in AddCompileMessage()
* chore(developer): removed CWARN/CHINT out of CompMsg
* chore(developer): adapted kmcompxtest to test kmn-files that have errors included
* chore(developer): changed gitignore
* chore(developer): changed gitignore
* chore(developer): changed Version Number fot Tests 15.0.265.0 -> 15.0.270.0
* chore(developer): added tests for kmcompx
* chore(developer): move tests (for ErrorMessages) to common/test/keyboards
* chore(developer): move CERR-tests into test/keyboards/invalid
* chore(developer): change mostly whitespace changes
* chore(developer): change mostly whitespace changes
* chore(developer): delete files of keyboards/kmcompx_tests
* chore(developer): include check for correct Filename + rename var + change whitespace changes
* chore(developer): revert changes in AddCompileMessage, tidy up CreateTempFile
* chore(developer): remove python from meson.build
* chore(developer): change ErrExtra, change CompileMsg, change _finddata in FileExists
* chore(developer): check for '_' after Errornumber in Filename
* chore(developer): re-include AddCompilerVersionStore in Compiler.cpp
* chore(developer): add Message CERR_InvalidCharacter to UTF16TempFromUTF8() ; change #include <> -> ""
* chore(developer): add some more keyboardtests
* chore(developer): add some more keyboardtests
* chore(developer): change remaining old datatype-names to new names ( e.g. char -> KMX_CHAR )
* chore(developer): edit + add CERR_tests
* chore(developer): edit + add CERR_tests
* chore(developer): use char16_t in CheckFileNameConsistency
* chore(developer): comments: converting functions in kmx_u16
* chore: reorganize
* chore: commit kmcompx-files
* chore: use ifdef for vkeys
* chore: copy files back
* chore: more cleanup
* chore: meson build for kmcmplib
* chore: tweak unit test, error messages, and paths
* chore(developer): make kmcmplib a static library
* chore(developer): start kmcmpdll link to kmcmplib
* chore(developer): add build.sh for kmcmplib
* chore(developer): link kmcmpdll to kmcmplib
* chore(common): avoid building 'invalid' shared keyboards
* chore(developer): include BEGIN_LINE (repeated Begin)
* chore(developer): add more CERR_tests and move some to other folder, edit readme
* chore(developer): addCompilerMsg for RepeatedBegin
* chore(developer):repeatedBEgin plus rename functions to prevent same names in kmcmpdll and kmcmplib
* chore(developer): add flag flag_use_kmcompx as switch to use old code (kmcmpdll) or new code kmcmplib
* chore(developer): introduce namespace kmcmp instead of different filenames
* chore(developer): more changes for using namespaces
* chore(developer): solve merge conflicts in namespaces
* chore(developer): use namespaces in kmcmplib (except for in dllexport-functions)
* chore(developer): remove some unnecessary CERR_ tests
* chore(developer): remove CERR_CallIsProfessionalFeature, CERR_IncludeCodesIsProfessionalFeature, CERR_MnemonicLayoutIsProfessionalFeature
* chore(developer): note about func.call_js; change all "VESION x.y " to "VESION x.y or higher" ; rename flag for kmcompx to flag_use_new_kmcomp
* chore(developer): use PKMX_DWORD/PKMX_WCHAR instead of LPKMX_DWORD/LPKMX_WCHAR; use PKMX_STR instead of char* in CompilerMessageProc
* chore(developer): remove kmx-file; NamedCodeConstants: rename variables, set const variables for buf sizes, brackets in for-loops
* chore(developer): change include paths ../
* chore(developer): get rid of reopened namespaces of kmcmp
* chore(developer): restored kmcompxtest
* chore(developer): change #include paths ../ ; excange km_kbp_cp with KMX_WCHAR; change some variable names
* chore(developer): use environment var KEYMAN_ROOT in path for tests; remove try-catch from json-validation.cpp
* chore(developer): use environment var KEYMAN_ROOT in path for tests; remove try-catch from json-validation.cpp
* chore(developer): revert change in NamedCodeConstants
* chore(developer): restored kmcompxtest, adapted readme
* chore(developer): use res-fils/version.rc for kmcmplib
* chore(developer): rename some functions/variables
* chore(developer): typos, comments, add function u16rchr()
* chore(developer): typos, comments, add function u16rchr()
* chore(developer): rename Functions, version rc-files
* chore(developer): rename Functions, version rc-files, set flag_use_new_kmcomp to use (old) kmcmpdll
* chore(developer): add BeginLine in kmcmpdll/Compiler.cpp; fread() in kmcmp_CompileKeyboardFileToBuffer
* chore(developer): set flag_use_new_kmcomp to only use kmcmpdll
* chore(developer): set flag_use_new_kmcomp to only use kmcmpdll...and back to kmcmplib
* (chore(developer): set flag_use_new_kmcomp to only use kmcmpdll...and back
* (chore(developer): changes in NamedCodeConstants::reindex() to run hieroglyphic.kmn properly
* chore(developer): changes in UnrechableRules::VerifyUnreachableRules() to run test_6440_unreachable_code..kmn
* chore(developer): remove unneccessary files, get ErrorMsg for INCLUDECODES, VISUALKEYBOARD, UnreachableRules, ErrExrta
* chore(developer): remove unneccessary files, get ErrorMsg for INCLUDECODES, VISUALKEYBOARD, UnreachableRules, ErrExrta, CWARN_ OK
* chore(developer): after stash:remove unneccessary files, get ErrorMsg for INCLUDECODES, VISUALKEYBOARD, UnreachableRules, ErrExrta, CWARN_ OK
* chore(developer): replace some #include <> with "" ; rename ErrExtra -> ErrExtraW
* chore(developer): replace some #include <> with "" ; rename ErrExtra -> ErrExtraW
* chore(developer): new converting function convert_pchar16T_To_pwcharT in kmx_u16
* chore(developer): CheckFilenameConsistency added fclose()
* chore(developer): --
* chore(developer): removed printf (---> started in... / °°-> changed to...)
* chore(developer): AddDeprecatedCode to get CWARN when in kmcomp.exe -s-w is set
* chore(developer): change MakeHashKeyFromFileKey16() to get correct behaviour of CHINT
* chore(developer): change MakeHashKeyFromFileKey16() to get correct behaviour of CHINT
* chore(developer): move converting function to kmx_u16
* chore(developer): add more CERR_ tests
* chore(developer): Not ready yet: changes in CheckFilenameConsistency to use on non-windows
* chore(developer): Not ready yet: changes in CheckFilenameConsistency to use on non-windows
* chore(developer): copied contents of 3 files of commit fcfc6c698a to here to achieve state of fcfc6c698a
* chore(developer): copied contents of 3 files of commit fcfc6c698a to here to achieve state of fcfc6c698a
* chore(developer): move/rename converting functions
* chore(developer) : update .gitignore, remove converting function
* chore(developer) : update gitignore; sort code in CheckFilenameConsistency::CheckFilenameConsistency()
* chore(developer) : change Version number 15.0.270 -> 17.0.51
* chore(developer): change #includes, path in meson.build
* chore(developer): new function Open_File() to open files on windows and non-windows platforms
* chore(developer): create Function to replace fopen/_wfsopen
* chore(developer): exclude kmx, kvk from git
* chore(developer): exclude kmx, kvk from git
* chore(developer): change #includes to include from kmcmplib
* chore(developer): remove stray fopen
* chore(developer): include Open_File() (as comment for now)
* chore(developer): include Open_File() (as comment for now)
* chore(developer): remove path to kmcmpdll in include_directories
* chore(developer): use functin Open_File()
* chore(developer): remove #ifdef for '\\' and '/' in both IsRelativePath; remove Function Open_File again
* chore(developer): new fun u16rchr_LinWin, strrchr_LinWin to exchange #ifndef for '\\' and '/'
* chore(developer): implement u16rchr_LinWin and strrchr_LinWin
* chore(developer): implement Open_File()
* chore(developer): new MakeHashKeyFromFileKey, remove comments for Open_File, & *LinWin-functions, delete 1 converting function
* chore(developer): tidy up comments
---------
Co-authored-by: Marc Durdin <marc@durdin.net>
Fixes#7237.
Full clean, configure and build will be required for Core, Developer
after this change.
kmc is much less unwieldy a name than kmldmlc, and becomes our platform
for future compiler integration. Start of implementation for #5283 also.
Note this also drags TextFileFormat.pas and KMDActionInterfaces.pas into
the package so have moved those into general and components folders
respectively, alongside KMDActions.pas and updated corresponding
project includes.