public:projects:nervland:notes:0010_nvland_management_project

NervLand: Management project

  • So I need a “Project Management” project… I will can that NervProj and share it on github for once (and also keep a backup on my gitlab of course) 😁!
⇒ The NervProj framework is available at https://github.com/roche-emmanuel/nervproj
  • Checkout the project folder:
    $ git clone git@github.com:roche-emmanuel/nervproj.git NervProj
  • So this project should contain our main “cli”: let's retrieve that from NervLand
  • Note: Installing Python extension in visual studio code is necessary to activate the linter/formatter.
  • Next we need a global access to that cli from cygwin or linux… How could I automate this installation process ? 🤔 hmmm… why not let the pythin script itself handle this ?! 😁
  • Arrf… I was think about adding a command such as nvp home to navigate into our home folder, but I realize now that this will not work since we are calling a python app here and not staying to the cygwin environment… damn it.
  • So instead, we need to setup an script file locally and source that file in bashrc… OK this seems to be working: now we can use the command line entry nvp after installing the cli from inside the project checkout folder:
    ./cli.sh admin install-cli
  • Now we should figure out how to prepare the tools needed to control the sub projects:
    • I need to keep the large packages out of the main nvp git repository.
    • ⇒ So I will share these from files.nervtech.org as a checkoug of the packages gitlab repository
    • Or better: actually I should be able to grant public access to the gitlab project directly, and eventually clone that somewhere else if needed ?
    • Checking out packages repository:
      $ git clone ssh://git@gitlab.nervtech.org:22002/shared/packages.git Packages
  • OK, now for proper support on linux we also need to try tar.xz archives… OK
  • Next we need to add support to point to a given sub-project:
    • We should add the project manually in our config file for now.
    • ⇒ this means we need support for a custom config.user.json that is not stored on the repository: OK
    • Next we want to be able to add a milestone for instance on a gitlab project, so something like:
      nvp -p sc milestone add "my new milestone" --desc "a milestone" --end "22/03/2022"
    • Should use import_module to build a plugin system:
      from importlib import import_module
      
      # String should match the same format you would normally use to import
      my_module = import_module("my_package.my_module")
      
      # Then you can use it as if you did `import my_package.my_module`
      my_module.my_function()
  • Note: we are allowed to modify sys.path during run-time.
  • Typical result we get with auto creating a milestone:
    { 'created_at': '2022-03-20T20:47:49.681Z',
      'description': 'An autogenerated milestone',
      'due_date': '2022-03-25',
      'expired': False,
      'id': 2,
      'iid': 2,
      'project_id': 10,
      'start_date': None,
      'state': 'active',
      'title': 'NervLand v0.1.0b',
      'updated_at': '2022-03-20T20:47:49.681Z',
      'web_url': 'https://gitlab.nervtech.org/nerv/nervland/-/milestones/2'}
  • Next we need to be able to go into a project home with the nvp home proj_name command: OK working just fine.
  • Before I can add more feature I should really build the script to automatically generate the SimCore milestones on neptune:
    • okay, so I need access to the user config file on neptune too. But for now that file is only on my seafile server: ⇒ I need a seafile client running on neptune too.
    • Building the client in a docker container:
    • OK Created seafile client container.
    • Adding symlink in home:
      ln -s /mnt/array1/app_data/seafile_client/libraries seafile
    • OK: we can now use nvp home sc on neptune too.
    • Next we need to have a cron script to execute everyday, to eventually create a milestone. So I'm thinking that's where we should have a project specify plugin mechanism:
    • we could run the command nvp maintenance that would simply run the maintenance for all the available projects,
    • This maintenance action should do nothing for each project by default,
    • But each project may also register actions into the NervProj project itself from a given entry point.
    • Now the problem is, we should have only a single nvp context object: so we need to figure out how to provide that…
    • OK: we now have a single NVPContext object.
    • So we should add support to load the plugins now…
    • But when registering components from plugins we should ensure that those components will not interfere with other components, so we should prefix them with the project name on registration, then when we “get” a component we should give priority to the project specific version if provided. let's see if this can work.
    • OK ⇒ So now storing per project components too when registering plugins.
  • We should restore the support to build dependencies for NervLand for instance.
  • But basically, inside NervProj we should implement the actual support to build the dependencies from sources, and generate the corresponding packages.
  • We need a command line such as: nvp deps build to trigger the build of all registered dependencies
  • ⇒ First restored support to install tools with nvp tools install: OK
  • When calling nvp deps build we should either retrieve all the dependency packages and store them locally, or build the dependencies from sources if needed.
  • Update: I actually renamed the command to use to build the “libraries” to: nvp build libs, as this sounds more appropriate.
  • So the incorrect file change detection from portable git on windows gives us:
    $ git diff
    diff --git a/.vs_env b/.vs_env
    old mode 100755
    new mode 100644
    diff --git a/cli.sh b/cli.sh
    old mode 100755
    new mode 100644
    diff --git a/tools/windows/7zip-9.20/7za.exe b/tools/windows/7zip-9.20/7za.exe
    old mode 100755
    new mode 100644
    
  • ⇒ On that point what we need is to use the same git version to checkout the project and get the status. Ideally we should always use the portable git installation on windows.
  • So we need a mechanism to call git with nvp like: nvp -p sc git status
  • In fact when this is implemented we can then use nvp to clone projects as needed with for instance nvp -p pkg git clone ⇒ This command will clone the 'pkg' (aka. 'Packages') repository in the current folder, in a sub folder with the canonical project name (“Packages”): OK
  • The commmand above will work find for public project already, but now we need to add support for private projects too ⇒ We need to setup correct access to our SSH keys/config. ⇒ hmmm, no: actually this is already working since we setup the “$HOME" env variable in cygwin, and thus git can find our ssh keys in $HOME/.ssh/ folder.
  • Now the remaining question is: how do we “bootstrap” the NervProj project itself, without using either git from cygwin (which would lead to incompatibility then) and without using git for windows, which is an internal tool that should be considered not available yet/not usable ? Interesting question… lol
  • ⇒ So we clone in another folder, and retrieve the .git folder from there, clever enough :-)! let's try that. OK
  • Now that we can bootstrap the project correctly we also have to use the proper git version to get status etc.
  • ⇒ Option 1 is to add support for an explicit status command: nvp git status OK
  • Also added support for diff command: nvp git diff
  • ⇒ I need to add a .gitattributes file!
  • Note to force applying the gitattributes rules to already commited files we use:
    git add --renormalize .
    git status
  • Also just noticed that after installing git we should enforce setting the git username/email in our global config.
  • OK: Now this is working find, but we must keep in mind that the first connection to the server should always be done on the command line (batch of cygwin) otherwise we get an error in visual studio code as long as the host is not authorized as a known host.
  • Now git is working just find from Visual Studio code or from nvp command line, but then using “git” from the cygwin command is not really working as expected anymore and should be avoided.
  • Now I think I should simpl just restart the NervLand project from scratches: the dependencies should not be added there at all in fact.
  • Setting up the common Visual Studio code settings:
    • on windows: in C:/Users/kenshin/AppData/Roaming/Code/User/settings.json ⇒ should use os.getenv('APPDATA')
    • on linux: in /home/kenshin/.config/Code/User/settings.json
  • OK: To intialize a sub project we can now use a command such as nvp -p nvl admin init: this will:
    1. Check the global vscode settings
    2. Check the local vscode settings
    3. Add the .gitignore file if missing
    4. Add the .gitattributes file if missing
    5. Add the .editorconfig file if missing
    6. Generate the local .vs_env file for the current platform
  • I think we are now reaching a state where it is time to provide a first minimal test app into the NervLand project itself. Once we have that test app running as expected, we will use it to start setting up our gitlab CI system 👍!
⇒ Installing the shell-format, cmake-format and clang-format extensions in Visual Studio Code
  • For cmake_format we must install the required python package cmake_format in our python environment,
  • Next we add the “cmake-format” tool in our list,
  • And we setup that tool correctly in our global vscode settings file: OK: cmake files formatting now working.
  • Next we need support to build with cmake from nvp.
  • And so we need to run the cmake command at some point… I could write a “build.bat” file as I did before to load the visual studio environment details, but I feel I should first give it another try a study the vsvarsall.bat file to check if I can extract the relevant environment variables from there directly…
  • I think the key element in that file are these:
    • We set the VCVARSALL_VSDEVCMD_ARGS var to ”-arch=x64 -host_arch=x64“*
    • we set VSCMD_VCVARSALL_INIT=1
    • Then we call ..\..\..\Common7\Tools\vsdevcmd.bat with those args.
    • ⇒ checking vsdevcmd.bat:
    • Hmmm, okay, this is going too far: the script calls many other scripts, so I don't want to handle these manually.
  • But maybe there is a way to execute multiple commands in a python subprocess without first writting a .bat file ?
  • ⇒ Maybe we can do that using simply Popen ? We can write to stdin indeed, btu then it is not clear when we shoudl read from stdout, and when we can write again to stdin, etc.
  • So for now, we will keep it simple and write our build.bat file on disk when building a project for msvc64
  • ⇒ We need to add the JOM tool on windows
  • Or maybe I should use ninja instead ? checking how to build ninja from sources…
  • ⇒ Simply using pre-built ninja app from https://github.com/ninja-build/ninja/releases
  • Arrf… wonderfull… and now I have a problem with linking to the boost libraries I built:
    LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'libboost_unit_test_framework-vc143-mt-x64-1_78.lib'
  • As far as I understand this is because I'm trying to link to the runtime dynamically, while I only built static runtime-link support hmmm…
  • Okay, so I could keep fighting further to force everything in this project to use static linking and eventually build a giant single monolithic app, but, that doesn't sound like a battle that is really worth it: instead, let's just rebuild boost with dynamic runtime-link!:
    $ nvp build libs boost --rebuild
  • eventually (and very soon) I will need LLVM, so let's just compile it right now.
  • On windows using the tar.gz file doesn't work as expected ⇒ so using the zip sources.
  • But then on linux the zip file doesn't work well and 7zip produces errors such as:
    ERROR: Dangerous symbolic link path was ignored : llvm-project-llvmorg-14.0.0/clang/test/Driver/Inputs/multilib_32bit_linux_tree/usr/i386-unknown-linux/bin/as : ../../bin/i386-unknown-linux-gnu-as
  • ⇒ So I need different source urls depending on the current platform. OK
  • Now I can build clang from sources correctly on windows and linux. Which leads u to the next concern: we should be able to select the compiler we want to use when building a library or a project.
  • ⇒ Actually this should replace the concept of “flavor” in the NervProj project: compiler should be specified as for instance msvc2022 or clang13 or gcc8
  • Default compiler should be selected depending on the platform.
  • So let's see what we can do about this…
  • Now that I have clang built correctly from sources on both windows and linux, and also need to update a bit how I selected the “best compiler” available: we should take into account the potential library folder from the supported compilers if available.
  • ⇒ And also, on linux we should prefer compressing packages with tar.xz : this might help reducing large package size using symlinks internally (which 7z doesn't seem to support): OK
  • Note: SDL2 compilation on windows with clang 14 takes 133 seconds, with msvc it takes 65 seconds… ⇒ Maybe I should not rebuild clang with clang first 😅
  • Hmmm… 🤔 Interesting… now just realized that our clang compiler actually requires linking to “libcmt.lib” which comes from the MSVC tools folder in Visual Studio installation… ⇒ So basically we need Visual Studio installed to use that clang compiler ? Wonderfull…
  • Okay, anyway: continuing our journey with the compilation of bosot with clang on windows now:
    $ nvp build -c clang libs boost
  • OK working on windows, but now broken on linux if we get to select the “clang-14” compiler that we manually built :-):
    $ nvp build libs boost --rebuild
    2022/04/01 09:18:15 [nvp.nvp_compiler] INFO: Found clang-14.0.0
    2022/04/01 09:18:15 [nvp.nvp_compiler] INFO: Found clang-13.0.1
    2022/04/01 09:18:15 [build] INFO: Selecting compiler clang-14.0.0
    2022/04/01 09:18:15 [build] INFO: List of settings: {'verbose': False, 'project': 'none', 'l0_cmd': 'build', 'l1_cmd': 'libs', 'compiler_type': None, 'lib_names': 'boost', 'rebuild': True, 'keep_build': False}
    2022/04/01 09:18:15 [build] INFO: Removing previous build for boost-1.78.0
    2022/04/01 09:18:17 [build] INFO: Removing previous source folder /mnt/array1/dev/projects/NervProj/libraries/build/boost-1.78.0
    2022/04/01 09:18:17 [tools] INFO: Extracting /mnt/array1/dev/projects/NervProj/libraries/build/boost_1_78_0.7z...
    2022/04/01 09:18:21 [boost] INFO: Building boost library...
    2022/04/01 09:18:21 [boost] INFO: Building B2 command: ['/mnt/array1/dev/projects/NervProj/libraries/build/boost-1.78.0/./tools/build/src/engine/build.sh', 'clang', '--cxx=/mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/bin/clang++', '--cxxflags=-stdlib=libc++ -w']
    
    A C++11 capable compiler is required for building the B2 engine.
    Toolset 'clang' does not appear to support C++11.
    
    > /mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/bin/clang++ -x c++ -std=c++11 -stdlib=libc++ -w check_cxx11.cpp
    /mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/bin/clang++: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory
  • This seems to be related to the LD_LIBRAR_PATH… 🤔 checking that.
  • OOoops…. our LD_LIBRARY_PATH is correct:
    'LD_LIBRARY_PATH': '/mnt/array1/dev/projects/NervProj/libraries/linux_clang/LLVM-14.0.0/lib'
  • … but we don't have any libc++.so.1 file in that folder 😒. So I guess I missed something when building LLVM. Let's get back to that.
  • Note: same state on windows actually: we don't have a c++ library generated there either.
  • ⇒ Could be I need to specify DLLVM_ENABLE_RUNTIMES=“libcxx;libcxxabi” ⇒ or better: LLVM_ENABLE_RUNTIMES=all
  • Now trying to rebuild llvm on linux:
    $ nvp build libs llvm --rebuild
  • hmmm… LLVM won't build if I pass LLVM_ENABLE_RUNTIMES=all to the config…
  • So now trying with a different list of projects.
  • Argghh… still an error when building “compiler-rt” ⇒ let's discard that runtime for now: I don't even know when it is.
  • Oh my… 😖 Still not working: this time another error when building the libc runtime… I'm thinking this might come from the cxxflags/linkflags I'm providing by default on the clang-13 compiler environment (?). So let's change that and try to build again…
  • Found this page: https://libcxx.llvm.org/BuildingLibcxx.html ⇒ clarifying what's the deal with the build of those runtimes: but I still think my issue could be with the CXXFLAGS containing ”-stdlib=libc++“ by default with my config.
  • OK! eventually got the runtimes to compile, and installed in the correct folder
  • Note: Just updated the .gitattributes in the NervProj project on neptune, and now realized that I need to install git-lfs to fully support that config:
    sudo apt-get update
    sudo apt-get install git-lfs
  • Tried to use LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF, but this did not work: still seeing the “x86_64-unknown-linux-gnu”
  • So we need to add the path specification per runtime library:
        def get_cmake_flags(self, prefix):
            """Retrive the applicable cmake flags for the build"""
    
            return self.common_flags + [f"-DLIBCXX_INSTALL_LIBRARY_DIR={prefix}/lib", 
                                        f"-DLIBCXX_INSTALL_INCLUDE_DIR={prefix}/include/c++/v1",
                                        f"-DLIBCXX_INSTALL_INCLUDE_TARGET_DIR={prefix}/include/c++/v1",
                                        f"-DLIBCXXABI_INSTALL_LIBRARY_DIR={prefix}/lib",
                                        f"-DLIBUNWIND_INSTALL_INCLUDE_DIR={prefix}/include/c++/v1",
                                        f"-DLIBUNWIND_INSTALL_LIBRARY_DIR={prefix}/lib"]
  • Update: Checking the cmake files, I now think that LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF is needed to install libllvmlibc in the desired folder.
  • Now trying to rebuild LLVM with runtimes on windows with MSVC compiler but we get an error about missing libxml2 library now:
      MT: command
      "D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build\bin\llvm-mt.exe
      /nologo /manifest CMakeFiles\cmTC_80d49.dir/intermediate.manifest
      /out:CMakeFiles\cmTC_80d49.dir/embed.manifest /notify_update" failed (exit
      code 0x1) with the following output:
    
      llvm-mt: error: no libxml2
    
      llvm-mt: ignoring unsupported 'notify_update' option
    
      ninja: build stopped: subcommand failed.
    
    
    
    Call Stack (most recent call first):
      D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/CMakeLists.txt:87 (include)
  • ⇒ I guess this means we need to provide libxml2 at compile time somehow ? 🤔
  • Found in the build log:
    -- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR) 
    -- Could NOT find LibXml2 (missing: LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) 
  • Note: On linux libxml2 is not found either (but not sure this is a problem there ?):
    -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11") 
    -- Looking for compress2
    -- Looking for compress2 - found
    -- Could NOT find LibXml2 (missing: LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) 
  • So let's add support to build zlib and libxml2 from sources…
  • ⇒ All OK and easy for zlib.
  • But for libxml2 we get an error due to dependency on missing iconv library:
    CMake Error at D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
      Could NOT find Iconv (missing: Iconv_LIBRARY Iconv_INCLUDE_DIR)
    Call Stack (most recent call first):
      D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
      D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindIconv.cmake:165 (find_package_handle_standard_args)
      CMakeLists.txt:67 (find_package)
    
    
    -- Configuring incomplete, errors occurred!
  • So let's build iconv first…
  • Holy crap… 😳 building libiconv on windows seems to be a mess 😭 Stay calm Manu, stay calm… and think.
  • Okay for now simply using a pre-build version of libiconv on windows.
  • And of course, next issue now: we also need LZMA to build libxml2:
    CMake Error at D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (messa
    ge):
      Could NOT find LibLZMA (missing: LIBLZMA_LIBRARY LIBLZMA_INCLUDE_DIR
      LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET)
    Call Stack (most recent call first):
      D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MES
    SAGE)
      D:/Projects/NervProj/tools/windows/cmake-3.22.3/share/cmake-3.22/Modules/FindLibLZMA.cmake:89 (find_package_handle_standard_args)
      CMakeLists.txt:75 (find_package)
    
    
    -- Configuring incomplete, errors occurred!
  • Checking how to build the LZMA library then… Damn it another one that you cannot build on windows easily… stupid primitive libraries…
  • But there is no .lib in that package, only a .a library file 😕
  • ⇒ So for now building libxml2 without liblzma support.
  • Also disabled python usage and added zlib dependency, but now I have a link issue with libiconv:
       Création de la bibliothèque libxml2.lib et de l'objet libxml2.exp
    encoding.c.obj : error LNK2019: symbole externe non résolu _ _imp_libiconv_open référencé dans la fonction xmlFindCharEncodingHandler
    encoding.c.obj : error LNK2019: symbole externe non résolu _ _imp_libiconv référencé dans la fonction xmlByteConsumed
    encoding.c.obj : error LNK2019: symbole externe non résolu _ _imp_libiconv_close référencé dans la fonction xmlCharEncCloseFunc
    D:\Projects\NervProj\libraries\windows_msvc\libiconv-1.9.2\lib\libiconv.lib : warning LNK4272: type d'ordinateur bibliothèque 'x86' en
     conflit avec le type d'ordinateur cible 'x64'
  • Crap… this means the library I have is for x86 target I'm sure 😅
  • Back to our initial error now on llvm-mt: error: no libxml2:
  • Event with libxml2 properly made available I still get the error when building the runtimes on windows.
  • ⇒ Checking the file llvm/lib/WindowsManifest/WindowsManifestMerger.cpp: the error is behind the preprocessor entry LLVM_ENABLE_LIBXML2
  • But that entry doesn't seem to be defined during the compilation ?
  • Hmmm… interesting: in my build/include/llvm/Config/config.h file this LIBXML2 entry is not set:
    /* Define if libxml2 is supported on this platform. */
    /* #undef LLVM_ENABLE_LIBXML2 */
  • So, something not right during the LLVM build configuration ?
  • The build LLVMConfig.cmake is generated from LLVMConfig.cmake.in
  • The later using “LLVM_ENABLE_LIBXML2” to set the flag: so maybe this is not set correct at config time ? let's try to enforce it.
  • And now we rebuild again:
    $ nvp build libs llvm --rebuild 2>&1 | tee llvm_build.log
  • Nope: this is still not working.
  • I also just updated the setup required to use git for windows correctly in visual studio code, installing the required ssh keys and initializing the known_hosts file with the simple command nvp git setup :
    2022/04/08 23:11:07 [git] INFO: Validating git setup in home dir 'D:\Softs\Cygwin\home\ultim'
    2022/04/08 23:11:07 [git] INFO: Validating git setup in home dir 'C:\Users\ultim'
    2022/04/08 23:11:07 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_default
    2022/04/08 23:11:07 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_github.com_git
    2022/04/08 23:11:07 [git] INFO: Adding github.com to known_hosts...
    2022/04/08 23:11:07 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@github.com', '-p', '22']
    Hi roche-emmanuel! You've successfully authenticated, but GitHub does not provide shell access.
    2022/04/08 23:11:08 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.eumetsat.int_git
    2022/04/08 23:11:08 [git] INFO: Adding gitlab.eumetsat.int to known_hosts...
    2022/04/08 23:11:08 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.eumetsat.int', '-p', '22']
    Welcome to GitLab, @eroche!
    2022/04/08 23:11:09 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.gmv-insyen.com_git
    2022/04/08 23:11:09 [git] INFO: Adding gitlab.gmv-insyen.com to known_hosts...
    2022/04/08 23:11:09 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.gmv-insyen.com', '-p', '22']
    Welcome to GitLab, @manu!
    2022/04/08 23:11:10 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.insyen.com_git
    2022/04/08 23:11:10 [git] INFO: Adding gitlab.insyen.com to known_hosts...
    2022/04/08 23:11:10 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.insyen.com', '-p', '22']
    Welcome to GitLab, @manu!
    2022/04/08 23:11:11 [git] INFO: Installing ssh private key C:\Users\ultim\.ssh\id_rsa_gitlab.nervtech.org_git
    2022/04/08 23:11:11 [git] INFO: Adding gitlab.nervtech.org to known_hosts...
    2022/04/08 23:11:11 [git] INFO: Executing command ['D:\\Projects\\NervProj\\tools\\windows\\git-2.35.1\\usr\\bin\\ssh.exe', '-q', '-o', 'StrictHostKeyChecking=no', 'git@gitlab.nervtech.org', '-p', '22002']
    Welcome to GitLab, @manu!
    
  • Trying to setup the build process of LLVM to build the runtimes separately, but this is still producing just garbage.
  • ⇒ We really need to figure out how to had support for libxml2 in llvm-mt.exe during the compiler compilation.
  • Hmmmm, finally making some progress by fixing the LLVM Config/config.h after cmake configuration.
  • But now we have missing windows libraries detected, which is of course absolutely fine:
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __WSAFDIsSet referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_closesocket referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_closesocket
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_connect referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_connect
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_ioctlsocket referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_getsockopt referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_htonl referenced in function WspiapiLegacyGetAddrInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_htons referenced in function WspiapiLegacyGetAddrInfo
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_htons
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_inet_addr referenced in function WspiapiLegacyGetAddrInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_inet_ntoa referenced in function WspiapiLegacyGetAddrInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_ntohs referenced in function WspiapiLegacyGetNameInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_recv referenced in function xmlNanoHTTPFetchContent
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_recv
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_select referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_select
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_send referenced in function xmlNanoHTTPSend
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_send
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_socket referenced in function xmlNanoHTTPConnectAttempt
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_socket
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_gethostbyaddr referenced in function WspiapiLegacyGetNameInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_gethostbyname referenced in function WspiapiLookupNode
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_gethostbyname
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_getservbyport referenced in function WspiapiLegacyGetNameInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_getservbyname referenced in function WspiapiLegacyGetAddrInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSAStartup referenced in function xmlNanoHTTPInit
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_WSAStartup
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSACleanup referenced in function xmlNanoHTTPCleanup
    libxml2s.lib(nanoftp.c.obj) : error LNK2001: unresolved external symbol __imp_WSACleanup
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSASetLastError referenced in function WspiapiGetAddrInfo
    libxml2s.lib(nanohttp.c.obj) : error LNK2019: unresolved external symbol __imp_WSAGetLastError referenced in function WspiapiLegacyGetNameInfo
    libxml2s.lib(nanoftp.c.obj) : error LNK2019: unresolved external symbol __imp_bind referenced in function xmlNanoFTPGetConnection
    libxml2s.lib(nanoftp.c.obj) : error LNK2019: unresolved external symbol __imp_getsockname referenced in function xmlNanoFTPGetConnection
    libxml2s.lib(nanoftp.c.obj) : error LNK2019: unresolved external symbol __imp_listen referenced in function xmlNanoFTPGetConnection

    /

  • ⇒ I think all those symbols come from teh socket library.
  • Failure when trying to build libc:
    -- Found Python3: D:/Projects/NervProj/tools/windows/python-3.10.1/python.exe (found version "3.10.1") found components: Interpreter
    CMake Deprecation Warning at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/CMakeLists.txt:5 (cmake_policy):
      The OLD behavior for policy CMP0076 will be removed from a future version
      of CMake.
    
      The cmake-policies(7) manual explains that the OLD behaviors of all
      policies are deprecated and that a policy should be set to OLD only under
      specific short-term circumstances.  Projects should be ported to the NEW
      behavior and not rely on setting a policy to OLD.
    
    
    clang-cl: warning: unknown argument ignored in clang-cl: '--print-resource-dir' [-Wunknown-argument]
    clang-cl: error: no input files
    -- COMPILER_RESOURCE_DIR not set
                      --print-resource-dir not supported by host compiler
    CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/cmake/modules/LLVMLibCCheckCpuFeatures.cmake:83 (message):
      Failed to run: Access violation
    Call Stack (most recent call first):
      D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libc/CMakeLists.txt:87 (include)
    
    
    -- Configuring incomplete, errors occurred!
    See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeOutput.log".
    See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeError.log".
  • next error observed is on the linunwind project:
    -- Performing Test LIBUNWIND_SUPPORTS_FNO_RTTI_FLAG - Failed
    CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/CMakeLists.txt:99 (message):
      Compiler doesn't support generation of unwind tables if exception support
      is disabled.  Building libunwind DSO with runtime dependency on C++ ABI
      library is not supported.
    
    
    -- Configuring incomplete, errors occurred!
    See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeOutput.log".
    See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeError.log".
  • ⇒ So we need to enable exceptions handling ? Hmmm this is already active, but the problem here is that clang-cl doesn't accept the command line argument:
    clang-cl: warning: unknown argument ignored in clang-cl: '-fno-exceptions' [-Wunknown-argument]
    [2/2] Linking CXX executable cmTC_a5896.exe
  • ⇒ Maybe we can try to just use clang.exe instead then ? ⇒ OK, seems better.
  • next error is on openmp:
    -- Performing Test LIBOMP_HAVE_PSAPI - Success
    CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/openmp/runtime/src/CMakeLists.txt:351 (string):
      string sub-command REGEX, mode MATCH needs at least 5 arguments total to
      command.
    
    
    -- Looking for sqrt in m
    -- Looking for sqrt in m - not found
    -- Looking for __atomic_load_1
    -- Looking for __atomic_load_1 - not found
    -- Looking for __atomic_load_1 in atomic
    -- Looking for __atomic_load_1 in atomic - not found
    -- check-libomp does nothing.
    -- check-ompt does nothing.
    -- check-openmp does nothing.
    -- Configuring incomplete, errors occurred!
    See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeOutput.log".
    See also "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/CMakeFiles/CMakeError.log".
  • ⇒ let's just not compile openmp for now.
  • Only crap! And now problem with the build script 😭:
    -- Build files have been written to: D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2
    ninja: error: build.ninja:7988: multiple rules generate lib/c++abi.lib [-w dupbuild=err]
  • my my my… So, let's try again with a single unified build pass ? Naay… not a good idea I think.
  • For now let's just disable the static build of libc++abi to see if this helps (with ”-DLIBCXXABI_ENABLE_STATIC=OFF“)
  • okay, so this leads to another requirement:
    CMake Error at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx/test/CMakeLists.txt:47 (message):
      LIBCXX_LINK_TESTS_WITH_SHARED_LIBCXXABI being OFF requires
      LIBCXXABI_ENABLE_STATIC to be ON
  • next, same issue with libunwind 🤣
  • So we disable the static build too with ”-DLIBUNWIND_ENABLE_STATIC=OFF“
  • Damn it… next libunwind will produce compilation errors:
    In file included from D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/libunwind.cpp:30:
    In file included from D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/AddressSpace.hpp:23:
    In file included from D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/EHHeaderParser.hpp:17:
    D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/DwarfParser.hpp:556:37: error: use of undeclared identifier '_malloca'
                (PrologInfoStackEntry *)_LIBUNWIND_REMEMBER_ALLOC(
                                        ^
    D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/config.h:130:42: note: expanded from macro '_LIBUNWIND_REMEMBER_ALLOC'
    #define _LIBUNWIND_REMEMBER_ALLOC(_size) _malloca(_size)
                                             ^
    D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/DwarfInstructions.hpp:179:24: note: in instantiation of member function 'libunwind::CFI_Parser<libunwind::LocalAddressSpace>::parseFDEInstructions' requested here
        if (CFI_Parser<A>::parseFDEInstructions(addressSpace, fdeInfo, cieInfo, pc,
                           ^
    D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libunwind/src/UnwindCursor.hpp:966:37: note: in instantiation of member function 'libunwind::DwarfInstructions<libunwind::LocalAddressSpace, libunwind::Registers_x86_64>::stepWithDwarf' requested here
        return DwarfInstructions<A, R>::stepWithDwarf(_addressSpace,
  • So… let's try to disable building of libunwind then ?
  • Naaaa… still errors everywhere in libcxxabi with for instance stuff like that:
    D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxxabi\src\stdlib_typeinfo.cpp(16,12): error: cannot define or redeclare '~type_info' here because namespace 'std' does not enclose namespace 'type_info'
    type_info::~type_info()
    ~~~~~~~~~~~^
    D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxxabi\src\stdlib_typeinfo.cpp(22,22): warning: noexcept specifications are incompatible with C++98 [-Wc++98-compat]
    bad_cast::bad_cast() noexcept
                         ^
    D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxxabi\src\stdlib_typeinfo.cpp(22,11): error: redefinition of 'bad_cast'
    bad_cast::bad_cast() noexcept
              ^
    D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\include\vcruntime_typeinfo.h(135,5): note: previous definition is here
        bad_cast() noexcept
        ^
  • ⇒ So this cannot possibly be an appropriate way to build the runtimes. So I'm really thinking now that we actually cannot build those runtimes on windows with version 14.0.0 yet ? Sounds extremely weird but I don't see another explanation… except if I'm becoming completely crazy or stupid of course 😂
  • ⇒ So let's just take a step back for a while, and not try to build any runtime yet: maybe in fact I'm just supposed to use the runtimes from visual studio itself ?!
  • Or… as indicated on this page: https://libcxx.llvm.org/BuildingLibcxx.html#cmake-ninja-msvc maybe the only thing I'm supposed to build on windows is the libc++ target actually ?! 😳 let's have a last try lol.
  • okay! Indeed, trying to build only libcxx will bring us a bit further: and I'm now on the library check section, but unfortunately I have a failure in those tests at some point:
    llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:158: note: Linking against the C++ Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib
    llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:159: note: Running against the C++ Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib
    llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:160: note: Linking against the ABI Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib
    llvm-lit.py: D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\utils\libcxx\test\config.py:161: note: Running against the ABI Library at D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib
    -- Testing: 7624 tests, 16 workers --
    FAIL: libc++ :: std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.volatile.pass.cpp (3292 of 7624)
    ******************** TEST 'libc++ :: std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.volatile.pass.cpp' FAILED ********************
    Script:
    --
    : 'COMPILED WITH';  D:/Projects/NervProj/libraries/windows_msvc/LLVM-14.0.0/bin\clang++.EXE D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\pointer.volatile.pass.cpp -v --target=x86_64-pc-windows-msvc -nostdinc++ -ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1 -ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\include\c++build -ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\test/support -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_STDIO_ISO_WIDE_SPECIFIERS -DNOMINMAX -std=c++2b -Werror -Wall -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wno-atomic-alignment -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -D_LIBCPP_DISABLE_AVAILABILITY -fcoroutines-ts -Werror=thread-safety -Wuser-defined-warnings -D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -Wno-macro-redefined -D_LIBCPP_ABI_VERSION=1 -Wno-macro-redefined -D_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY -Wno-macro-redefined -D_LIBCPP_HAS_NO_INCOMPLETE_FORMAT -Wno-macro-redefined -D_LIBCPP_HAS_NO_INCOMPLETE_RANGES  -L D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\ATLMFC\lib\x64 -L D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\lib\x64 -L "C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" -L "C:\Program Files (x86)\Windows Kits\10\\lib\10.0.19041.0\\um\x64" -LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -nodefaultlibs -nostdlib -lc++ -lvcruntime -lucrt -lmsvcrt -lmsvcprt -loldnames -o D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe
    : 'EXECUTED AS';  "D:/Projects/NervProj/tools/windows/python-3.10.1/python.exe" D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx/test/../utils/run.py --execdir D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir --codesign_identity "" --env PATH="D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib;D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib" --  D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe
    --
    Exit Code: 1120
    
    Command Output (stdout):
    --
    $ ":" "COMPILED WITH"
    $ "D:/Projects/NervProj/libraries/windows_msvc/LLVM-14.0.0/bin\clang++.EXE" "D:\Projects\NervProj\libraries\build\LLVM-14.0.0\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\pointer.volatile.pass.cpp" "-v" "--target=x86_64-pc-windows-msvc" "-nostdinc++" "-ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1" "-ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\include\c++build" "-ID:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\test/support" "-D_CRT_SECURE_NO_WARNINGS" "-D_CRT_NONSTDC_NO_WARNINGS" "-D_CRT_STDIO_ISO_WIDE_SPECIFIERS" "-DNOMINMAX" "-std=c++2b" "-Werror" "-Wall" "-Wextra" "-Wshadow" "-Wundef" "-Wno-unused-command-line-argument" "-Wno-attributes" "-Wno-pessimizing-move" "-Wno-c++11-extensions" "-Wno-user-defined-literals" "-Wno-noexcept-type" "-Wno-atomic-alignment" "-Wsign-compare" "-Wunused-variable" "-Wunused-parameter" "-Wunreachable-code" "-Wno-unused-local-typedef" "-D_LIBCPP_DISABLE_AVAILABILITY" "-fcoroutines-ts" "-Werror=thread-safety" "-Wuser-defined-warnings" "-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER" "-Wno-macro-redefined" "-D_LIBCPP_ABI_VERSION=1" "-Wno-macro-redefined" "-D_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY" "-Wno-macro-redefined" "-D_LIBCPP_HAS_NO_INCOMPLETE_FORMAT" "-Wno-macro-redefined" "-D_LIBCPP_HAS_NO_INCOMPLETE_RANGES" "-L" "D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\ATLMFC\lib\x64" "-L" "D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\lib\x64" "-L" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64" "-L" "C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x64" "-LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib" "-LD:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib" "-nodefaultlibs" "-nostdlib" "-lc++" "-lvcruntime" "-lucrt" "-lmsvcrt" "-lmsvcprt" "-loldnames" "-o" "D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe"
    # command output:
    pointer-adda5e.o : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::__1::basic_ostream<char,struct std::__1::char_traits<char> > & __cdecl std::__1::basic_ostream<char,struct std::__1::char_traits<char> >::operator<<(void const volatile *)" (__imp_??6?$basic_ostream@DU?$char_traits@D@__1@std@@@__1@std@@QEAAAEAV012@PEDX@Z) referenced in function main
      Hint on symbols that are defined and could potentially match:
        "__declspec(dllimport) public: class std::__1::basic_ostream<char,struct std::__1::char_traits<char> > & __cdecl std::__1::basic_ostream<char,struct std::__1::char_traits<char> >::operator<<(void const *)" (__imp_??6?$basic_ostream@DU?$char_traits@D@__1@std@@@__1@std@@QEAAAEAV012@PEBX@Z)
    D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test\std\input.output\iostream.format\output.streams\ostream.formatted\ostream.inserters.arithmetic\Output\pointer.volatile.pass.cpp.dir\t.tmp.exe : fatal error LNK1120: 1 unresolved externals
    
    # command stderr:
    clang version 14.0.0
    Target: x86_64-pc-windows-msvc
    Thread model: posix
    InstalledDir: D:\Projects\NervProj\libraries\windows_msvc\LLVM-14.0.0\bin
     "d:\\projects\\nervproj\\libraries\\windows_msvc\\llvm-14.0.0\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.31.31106 -emit-obj -mrelax-all -mincremental-linker-compatible --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name pointer.volatile.pass.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -mllvm -treat-scalable-fixed-error-as-warning -v "-fcoverage-compilation-dir=D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\build2\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic" -nostdinc++ -resource-dir "d:\\projects\\nervproj\\libraries\\windows_msvc\\llvm-14.0.0\\lib\\clang\\14.0.0" -I D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1 -I "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\\include\\c++build" -I "D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\\test/support" -D _CRT_SECURE_NO_WARNINGS -D _CRT_NONSTDC_NO_WARNINGS -D _CRT_STDIO_ISO_WIDE_SPECIFIERS -D NOMINMAX -D _LIBCPP_DISABLE_AVAILABILITY -D _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -D _LIBCPP_ABI_VERSION=1 -D _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY -D _LIBCPP_HAS_NO_INCOMPLETE_FORMAT -D _LIBCPP_HAS_NO_INCOMPLETE_RANGES -internal-isystem "d:\\projects\\nervproj\\libraries\\windows_msvc\\llvm-14.0.0\\lib\\clang\\14.0.0\\include" -internal-isystem "D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\ATLMFC\\include" -internal-isystem "D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\\\include\\10.0.19041.0\\\\cppwinrt" -Werror -Wall -Wextra -Wshadow -Wundef -Wno-unused-command-line-argument -Wno-attributes -Wno-pessimizing-move -Wno-c++11-extensions -Wno-user-defined-literals -Wno-noexcept-type -Wno-atomic-alignment -Wsign-compare -Wunused-variable -Wunused-parameter -Wunreachable-code -Wno-unused-local-typedef -Werror=thread-safety -Wuser-defined-warnings -Wno-macro-redefined -Wno-macro-redefined -Wno-macro-redefined -Wno-macro-redefined -std=c++2b -fdeprecated-macro "-fdebug-compilation-dir=D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\build2\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic" -ferror-limit 19 -fcoroutines-ts -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.31.31106 -fdelayed-template-parsing -fcxx-exceptions -fexceptions -faddrsig -o "D:\\Softs\\Cygwin\\tmp\\lit-tmp-9uuxp_qg\\pointer-adda5e.o" -x c++ "D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic\\pointer.volatile.pass.cpp"
    clang -cc1 version 14.0.0 based upon LLVM 14.0.0 default target x86_64-pc-windows-msvc
    #include "..." search starts here:
    #include <...> search starts here:
     D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/include/c++/v1
     D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx\include\c++build
     D:/Projects/NervProj/libraries/build/LLVM-14.0.0/libcxx\test/support
     d:\projects\nervproj\libraries\windows_msvc\llvm-14.0.0\lib\clang\14.0.0\include
     D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\ATLMFC\include
     D:\Softs\VisualStudio\VS2022\VC\Tools\MSVC\14.31.31103\include
     C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt
     C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\shared
     C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\um
     C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\winrt
     C:\Program Files (x86)\Windows Kits\10\\include\10.0.19041.0\\cppwinrt
    End of search list.
     "D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\bin\\Hostx64\\x64\\link.exe" "-out:D:\\Projects\\NervProj\\libraries\\build\\LLVM-14.0.0\\build2\\libcxx\\test\\std\\input.output\\iostream.format\\output.streams\\ostream.formatted\\ostream.inserters.arithmetic\\Output\\pointer.volatile.pass.cpp.dir\\t.tmp.exe" "-libpath:D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\ATLMFC\\lib\\x64" "-libpath:D:\\Softs\\VisualStudio\\VS2022\\VC\\Tools\\MSVC\\14.31.31103\\lib\\x64" "-libpath:C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\ucrt\\x64" "-libpath:C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\um\\x64" -libpath:D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -libpath:D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/lib -nologo "D:\\Softs\\Cygwin\\tmp\\lit-tmp-9uuxp_qg\\pointer-adda5e.o" c++.lib vcruntime.lib ucrt.lib msvcrt.lib msvcprt.lib oldnames.lib
    clang++: error: linker command failed with exit code 1120 (use -v to see invocation)
    
    error: command failed with exit status: 1120
  • Anyway… for now, let's just ignore those tests results and bypass the tests: I definitely don't have the time to look inot LLVM specific errors for now!
  • Note then I got a couple of additional test failure and the final report:
    ********************
    Failed Tests (3):
      libc++ :: std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.volatile.pass.cpp
      libc++ :: std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/eval.pass.cpp
      libc++ :: std/numerics/rand/rand.dis/rand.dist.uni/rand.dist.uni.int/int128.pass.cpp
    
    
    Testing Time: 771.91s
      Unsupported      : 1195
      Passed           : 6315
      Expectedly Failed:  111
      Failed           :    3
    FAILED: libcxx/test/CMakeFiles/check-cxx D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx/test/CMakeFiles/check-cxx
    cmd.exe /C "cd /D D:\Projects\NervProj\libraries\build\LLVM-14.0.0\build2\libcxx\test && D:\Projects\NervProj\tools\windows\python-3.10.1\python.exe D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/bin/llvm-lit.py -sv --show-xfail --show-unsupported --no-progress-bar D:/Projects/NervProj/libraries/build/LLVM-14.0.0/build2/libcxx/test"
    ninja: build stopped: subcommand failed.
  • public/projects/nervland/notes/0010_nvland_management_project.txt
  • Last modified: 2022/04/22 06:20
  • by 127.0.0.1