Windows Installation Issue

I am rather new to the Fortran environment in Windows and have encountered some trouble during installation. Even though I have followed the instructions provided on the Website for Windows (https://cambridge-iccs.github.io/FTorch/page/troubleshooting.html), the following error consistently shows up when running the "cmake --build ." command:

“fatal error LNK1181: cannot open input file ‘mkl_blacs_ilp64.lib’” (see attached screenshot) . Apparently I am not the only person with this issue (https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Intel-oneAPI-Base-Toolkit-v-2024-1-Error-mkl-blacs-ilp64-lib/m-p/1587668#M3636), but also changing the environment variables didn’t do the job for me. For your understanding I have attached the full command lines that I have used for installation as txt to this E-Mail. I have removed this error with a very messy cleanup by copying and renaming that specific dll file in the intel compiler to test the further workflow, where I received more different errors (see 2.).
When I try to run the Simplenet example the following errors show up: unresolved external symbol FTORCH_mp_TORCH_TENSOR_FROM_ARRAY_REAL32_1D referenced in function MAIN__
(and additional functions see second image attached). Is this error related to the first? Where is this variable defined?

The following changes to the installation have also been tried out but were not successful:

running
cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release-DCMAKE_PREFIX_PATH="C:\Users\vbalmer\Anaconda3\envs\Py-F-02\Lib\site-packages\torch" -DCMAKE_INSTALL_PREFIX="C:\Users\vbalmer\AppData\Local\FTorch"
--> doesn't successfully run cmake command
including the old Fortran compiler ifort instead of ifx --> leads to same error as outlined above

Thank you very much for your help in advance!

BuildInstructions_Clean.txt

Hi @vbalmer
Thanks for bringing this to our attention and trying those simple suggestions.
I have now spun up a Windows VM and successfully replicated the problem you are having (and also found an opportunity to improve some of our documentation in #123) which is the first step.
I'll work on finding a solution and get back to you once we have more news.
If you make any progress in the meantime please do let us know!

Adding notes:
It seems to be that there is an issue locating mkl correctly (math kernel library used for mathematical operations).
This source suggests that it could be because calling the setvars.bat sets a number of environment variables, including CMAKE_PREFIX_PATH required for linking, but we are perhaps the overwriting this when we set -DCMAKE_PREFIX_PATH in the cmake command.
To check this I have tried running CMake with -DTorch_DIR=<path> instead of -DCMAKE_PREFIX_PATH=<path>, but still get the same error.
I tried setting the MKL_ROOT environment variable, but no luck as @vbalmer suggested above:
set MKL_ROOT="C:/Program Files (x86)/Intel/oneAPI/mkl/latest"

I also tried setting it to C:/Program Files (x86)/Intel/oneAPI/mkl which is the actual location on my machine. Still no luck.
Interestingly, however CMake does output a warning saying it is ignoring this variable for compatibility with policy CMP0074:
CMake Warning (dev) at C:/Users/Test/Downloads/libtorch-win-shared-with-deps-2.3.0+cpu/libtorch/share/cmake/Caffe2/public/mkl.cmake:1 (find_package):
  Policy CMP0074 is not set: find_package uses <PackageName>_ROOT variables.
  Run "cmake --help-policy CMP0074" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  Environment variable MKL_ROOT is set to:

    "C:/Program Files (x86)/Intel/oneAPI/mkl"

  For compatibility, CMake is ignoring the variable.

It seems that despite setting CMake is ignoring the location to link from, so next steps might be to try hadr-coding to see if we can force a link for success at all.
I am running cmake with the --trace flag for more output, but this is a bit too much.
Running cmake build with verbose is helpful, however:
cmake --build . --verbose

@jwallwork23 these may be useful as a starting point if you get chance to look.

Related issue on the PyTorch repo: https://github.com/pytorch/pytorch/issues/24334
Some suggest that itr is an issue with the FindMKL file supplied with pytorch/cmake/
Modules/FindMKL.cmake
Tried with the nightly build of libtorch to see if there has been a recent fix, but still the same issue.
Tried setting [-DCMAKE_FIND_PACKAGE_PREFER_CONFIG](https://cmake.org/cmake/help/latest/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.html#variable:CMAKE_FIND_PACKAGE) variable to try and force CMake to use the native FindMKL.cmake file rather than the one provided by PyTorch but the issue persists.
It may be that we consider opening an issue on the PyTorch repository as this seems to perhaps be an issue with libtorch.

Have currently the same issues with MKL
It is set to :
C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows for INTEL_COMPILER_DIR
C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl for INTEL_MKL_DIR
C:/Program Files (x86)/IntelSWTools/compilers_and_libraries/windows/mkl for INTEL_OMP_DIR
By default I'm not sure what to set exactly I mean there is MKL which get downloaded from the helper files. You also get MAGMA from it someone was so nice to precompile it and uploaded it but a lot of the batch file is strange. Anyway those default values are wrong
I can only start a guessing game
INTEL_COMPILER_DIR= C:\Program Files (x86)\Intel\oneAPI\compiler\latest  ? bin or not bin
INTEL_MKL_DIR = C:\Program Files (x86)\Intel\oneAPI\mkl\latest ? the downloads from the batch files.
INTEL_OMP_DIR Okay what I found out it based of Fortran which then the HPC toolkit which also became part of OneAPI but the only thing I can find is the integration with Visual Studio

Hi Jack,
thank you very much for looking into this problem in more detail. Until now I have not managed to fix the bug even with trying out different ways of setting the environment variables. I also have to admit that this is a bit out of my familiar programming zone...
Have you opened an issue on the PyTorch repository yet or found anything else? I would be eager to also follow the progress on the pytorch issue if you open one.
Thank you for your help!

Hi @vbalmer I'm afraid not - I was away presenting at a conference for the last 3 days, and am now on leave.
I will look to do it once I am back however.
I want to get this sorted, but in the meantime, are you bound to building your code using Windows, or is there an option for you to build on a linux system, or using the Windows Subsystem for Linux?

OK @vbalmer, I've opened something here: https://github.com/pytorch/pytorch/issues/125871 as you can see linked above.
Let's see what they say.
In the meantime I would still encourage WSL or a Linux build if possible.
Are you able to tell us what the code you are trying to add FTorch to is, or point us to some source?

Hi Jack,
similar for me, I was also at a conference the last three days and will be on vacation next week. Still I would like to answer your questions:

I'm afraid the windows system is a hard boundary condition, so if it does not work I will maybe have to find a workaround without FTorch, which would be very sad though...
For the code that I am trying to use FTorch with, I will send you an e-mail with more detailed information as there is no repository that would be publically available yet.
Thank you very much for setting up the issue on pytorch and for continuing to help me with this!

@vbalmer PyTorch have provided a solution to the first part of your problem on the issue here: https://github.com/pytorch/pytorch/issues/125871#issuecomment-2117490457. It requires changing line 9 of the following file in your libtorch installation <path-to-libtorch>\libtorch\share\cmake\Caffe2\public\mkl.cmake to:
target_link_libraries(caffe2::mkl INTERFACE MKL::MKL)

Please let me know if this works in allowing you to build and install FTorch and I will let them know (I have checked and it fixes the problem for me).
There is a follow on issue when I try to build the first example whereby it seems unable to match the type of the tensor_layout argument.
Running the example 'as-is' results in:
C:\Users\Test\Documents\FTorch\examples\1_SimpleNet\simplenet_infer_fortran.f90(40): error #6284: There is no matching specific function for this generic function reference.   [TORCH_TENSOR_FROM_ARRAY]
   in_tensors(1) = torch_tensor_from_array(in_data, tensor_layout, torch_kCPU, -1, .false.)
-------------------^
C:\Users\Test\Documents\FTorch\examples\1_SimpleNet\simplenet_infer_fortran.f90(41): error #6284: There is no matching specific function for this generic function reference.   [TORCH_TENSOR_FROM_ARRAY]
   out_tensor = torch_tensor_from_array(out_data, tensor_layout, torch_kCPU, -1, .false.)
----------------^
compilation aborted for C:\Users\Test\Documents\FTorch\examples\1_SimpleNet\simplenet_infer_fortran.f90 (code 1)
NMAKE : fatal error U1077: 'C:\PROGRA~2\Intel\oneAPI\compiler\latest\bin\ifort.exe @C:\Users\Test\AppData\Local\Temp\nm3C0A.tmp' : return code '0x1'
Stop.

However, if I change the function call in resnet_infer_simplenet.f90 to explicitly target torch_tensor_from_array_real32_1d() rather than the interface I get:
C:\Users\Test\Documents\FTorch\examples\1_SimpleNet\simplenet_infer_fortran.f90(40): error #6633: The type of the actual argument differs from the type of the dummy argument.   [TENSOR_LAYOUT]
   in_tensors(1) = torch_tensor_from_array_real32_1d(in_data, tensor_layout, torch_kCPU, -1, .false.)
--------------------------------------------------------------^
C:\Users\Test\Documents\FTorch\examples\1_SimpleNet\simplenet_infer_fortran.f90(41): error #6633: The type of the actual argument differs from the type of the dummy argument.   [TENSOR_LAYOUT]
   out_tensor = torch_tensor_from_array_real32_1d(out_data, tensor_layout, torch_kCPU, -1, .false.)
------------------------------------------------------------^
compilation aborted for C:\Users\Test\Documents\FTorch\examples\1_SimpleNet\simplenet_infer_fortran.f90 (code 1)
NMAKE : fatal error U1077: 'C:\PROGRA~2\Intel\oneAPI\compiler\latest\bin\ifort.exe @C:\Users\Test\AppData\Local\Temp\nm45A.tmp' : return code '0x1'
Stop.

Which implies a type mismatch between the integer-array type used in the example and what it is looking to bind to.
It is odd that this only occurs on Windows (I have just checked and it runs fine on unix-based OSX).
Please could you take a look @TomMelt as it initially shows up as a complaint in the interface which you will know best.
I did note that there are a number of warnings when compiling FTorch against libtorch regarding conversion from 'size_t' to 'int' which are likely related. I have asked for advice on the issue we have open on PyTorch as this only seems to occur on Windows systems.
C:\Users\Test\Documents\FTorch\src\build_latest>cmake --build .
[ 33%] Building Fortran object CMakeFiles/ftorch.dir/ftorch.f90.obj
[ 66%] Building CXX object CMakeFiles/ftorch.dir/ctorch.cpp.obj
ctorch.cpp
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\optional(82): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\optional(82): note: the template instantiation context (the oldest one first) is
C:\Users\Test\Downloads\libtorch-win-shared-with-deps-latest\libtorch\include\ATen/core/function_schema.h(437): note: see reference to function template instantiation 'std::optional<int32_t>::optional<const I,0>(_Ty2 &&) noexcept' being compiled
        with
        [
            I=unsigned __int64,
            _Ty2=unsigned __int64
        ]
C:\Users\Test\Downloads\libtorch-win-shared-with-deps-latest\libtorch\include\ATen/core/function_schema.h(437): note: see the first reference to 'std::optional<int32_t>::optional' in 'c10::FunctionSchema::argumentIndexWithName'
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\optional(248): note: see reference to function template instantiation 'std::_Optional_construct_base<_Ty>::_Optional_construct_base<const unsigned __int64>(std::in_place_t,const unsigned __int64 &&)' being compiled
        with
        [
            _Ty=int32_t
        ]
C:\Users\Test\Documents\FTorch\src\ctorch.cpp(262): note: see reference to function template instantiation 'std::_Optional_destruct_base<_Ty,true>::_Optional_destruct_base<const unsigned __int64>(std::in_place_t,const unsigned __int64 &&) noexcept' being compiled
        with
        [
            _Ty=int32_t
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\xutility(255): warning C4267: 'initializing': conversion from 'size_t' to '_Ty', possible loss of data
        with
        [
            _Ty=int
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\xutility(255): note: the template instantiation context (the oldest one first) is
C:\Users\Test\Downloads\libtorch-win-shared-with-deps-latest\libtorch\include\torch/csrc/dynamo/compiled_autograd.h(439): note: see reference to function template instantiation '_Ty &std::vector<_Ty,std::allocator<_Ty>>::emplace_back<size_t&>(size_t &)' being compiled
        with
        [
            _Ty=int32_t
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(862): note: see reference to function template instantiation '_Ty &std::vector<_Ty,std::allocator<_Ty>>::_Emplace_one_at_back<size_t&>(size_t &)' being compiled
        with
        [
            _Ty=int32_t
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(780): note: see reference to function template instantiation '_Ty &std::vector<_Ty,std::allocator<_Ty>>::_Emplace_back_with_unused_capacity<size_t&>(size_t &)' being compiled
        with
        [
            _Ty=int32_t
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(795): note: see reference to function template instantiation 'void std::_Construct_in_place<int,size_t&>(_Ty &,size_t &) noexcept' being compiled
        with
        [
            _Ty=int
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\xmemory(727): warning C4267: 'initializing': conversion from 'size_t' to '_Objty', possible loss of data
        with
        [
            _Objty=int
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\xmemory(727): note: the template instantiation context (the oldest one first) is
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(783): note: see reference to function template instantiation 'int *std::vector<int32_t,std::allocator<int>>::_Emplace_reallocate<size_t&>(int *const ,size_t &)' being compiled
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(834): note: see reference to function template instantiation 'void std::_Default_allocator_traits<_Alloc>::construct<_Ty,size_t&>(_Alloc &,_Objty *const ,size_t &)' being compiled
        with
        [
            _Alloc=std::allocator<int>,
            _Ty=int,
            _Objty=int
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\utility(250): warning C4267: 'initializing': conversion from 'size_t' to '_Ty1', possible loss of data
        with
        [
            _Ty1=int
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\utility(250): note: the template instantiation context (the oldest one first) is
C:\Users\Test\Downloads\libtorch-win-shared-with-deps-latest\libtorch\include\torch/csrc/dynamo/compiled_autograd.h(433): note: see reference to function template instantiation '_Ty &std::vector<_Ty,std::allocator<_Ty>>::emplace_back<size_t&,int&>(size_t &,int &)' being compiled
        with
        [
            _Ty=std::pair<int,int>
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(862): note: see reference to function template instantiation '_Ty &std::vector<_Ty,std::allocator<_Ty>>::_Emplace_one_at_back<size_t&,int&>(size_t &,int &)' being compiled
        with
        [
            _Ty=std::pair<int,int>
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(780): note: see reference to function template instantiation '_Ty &std::vector<_Ty,std::allocator<_Ty>>::_Emplace_back_with_unused_capacity<size_t&,int&>(size_t &,int &)' being compiled
        with
        [
            _Ty=std::pair<int,int>
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\vector(795): note: see reference to function template instantiation 'void std::_Construct_in_place<std::pair<int,int>,size_t&,int&>(_Ty &,size_t &,int &) noexcept' being compiled
        with
        [
            _Ty=std::pair<int,int>
        ]
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\xutility(255): note: see reference to function template instantiation 'std::pair<int,int>::pair<size_t&,int&,0>(_Other1,_Other2) noexcept' being compiled
        with
        [
            _Other1=size_t &,
            _Other2=int &
        ]
[100%] Linking CXX shared library ftorch.dll
[100%] Built target ftorch

Hi @jatkinson1000
since I have not heard back from you in a while, I was wondering whether you have already figured out a solution to this problem? I would still be highly interested in figuring out a way to make this work. Thanks for getting back to me!

I was on leave last week but am back now (though will be at PASC in Zurich next week).
One suggestion based on your comments would be to try the 2023 release of OneAPI to see if the process is smoother.
If so, then we can definitely update the Windows installation guidance to direct people to use this version.
The other thing, which may or may not help would be to try using the ifort compiler rather than ifx.
We have tested against gfortran and ifort, but not the ifx generation (though we would hope to have it working with that as well).
As for improving guidance for Windows this is certainly welcome and please do feel free to open a pull request with changes.
I had already started something in #123 based on this discussion, so either there or as a separate contribution is more than welcome!

Hi @jatkinson1000
thanks for your fast reply!

Okay, I will give it a try with the ifort compiler (although I am afraid I have already tried this at a different stage of the problem before and it did not work). I will keep you posted on whether it works.
After a quick google about downloading an older oneAPI version, it seems that this option is no longer available: https://community.intel.com/t5/oneAPI-Registration-Download/2023-1-version-of-oneAPI-Base-and-HPC-Toolkit/m-p/1532647#M6201

It would be great to know if once you are back from vacation / conferences, you plan on having a look at this problem again, if there still is no fix for the issue yet. Thanks again a lot in advance for helping!

@vbalmer Yes, I would very much like to see this fixed and working on Windows, and used in more projects.
I and my colleagues have been looking for a solution, but it takes some time as Windows is not our main development environment.
Your help in this issue pointing us in the right direction is very much appreciated, and as I say contributions are always welcome to improve the experience for future users.
I would also note that the maintenance of FTorch is done in addition to/above our full-time work so sometimes these things can take some time, especially when they are unfamiliar. I very much hope we can work something out. My colleagues are also looking at this when they can and I will do my best to push this forward on my return.

@jatkinson1000 Okay, perfect that is good to hear! Let me know if you want to meet up at ETH on Monday when you're at PASC. And in the mean time I will for sure give an update if I find something noteworthy!

Hi @jatkinson1000
as a quick update, sadly I receive the same error as already shown above when I try with ifort:
cd C:\Users\vbalmer\OneDrive\Dokumente\GitHub\research_vera\02_Computations\05_PipelineTesting\02_ts2F\Trial_SimpleNet
mkdir build
cd build
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
cmake .. -G "NMake Makefiles" -DCMAKE_Fortran_COMPILER="C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\ifort.exe" -DCMAKE_PREFIX_PATH="C:\Users\vbalmer\AppData\Local\FTorch" -DCMAKE_BUILD_TYPE=Release

leads to
[ 50%] Building Fortran object CMakeFiles/simplenet_infer_fortran.dir/simplenet_infer_fortran.f90.obj
ifort: remark #10448: Intel(R) Fortran Compiler Classic (ifort) is now deprecated and will be discontinued late 2024. Intel recommends that customers transition now to using the LLVM-based Intel(R) Fortran Compiler (ifx) for continued Windows* and Linux* support, new language support, new language features, and optimizations. Use '/Qdiag-disable:10448' to disable this message.
[100%] Linking Fortran executable simplenet_infer_fortran.exe
LINK: command "C:\PROGRA~2\Intel\oneAPI\compiler\latest\bin\xilink.exe /nologo @CMakeFiles\simplenet_infer_fortran.dir\objects1.rsp /out:simplenet_infer_fortran.exe /implib:simplenet_infer_fortran.lib /pdb:C:\Users\vbalmer\OneDrive\Dokumente\GitHub\research_vera\02_Computations\05_PipelineTesting\02_ts2F\Trial_SimpleNet\build\simplenet_infer_fortran.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console C:\Users\vbalmer\AppData\Local\FTorch\lib\ftorch.lib user32.lib /MANIFEST:EMBED,ID=1" failed (exit code 1120) with the following output:
simplenet_infer_fortran.f90.obj : error LNK2019: unresolved external symbol FTORCH_mp_TORCH_TENSOR_FROM_ARRAY_REAL32_1D referenced in function MAIN__
simplenet_infer_fortran.f90.obj : error LNK2019: unresolved external symbol FTORCH_mp_TORCH_MODULE_LOAD referenced in function MAIN__
simplenet_infer_fortran.f90.obj : error LNK2019: unresolved external symbol FTORCH_mp_TORCH_MODULE_FORWARD referenced in function MAIN__
simplenet_infer_fortran.f90.obj : error LNK2019: unresolved external symbol FTORCH_mp_TORCH_MODULE_DELETE referenced in function MAIN__
simplenet_infer_fortran.f90.obj : error LNK2019: unresolved external symbol FTORCH_mp_TORCH_TENSOR_DELETE referenced in function MAIN__
simplenet_infer_fortran.exe : fatal error LNK1120: 5 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\simplenet_infer_fortran.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\Intel\oneAPI\compiler\latest\bin\xilink.exe /nologo @CMakeFiles\simplenet_infer_fortran.dir\objects1.rsp @C:\Users\vbalmer\AppData\Local\Temp\nmF642.tmp' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\bin\HostX64\x64\nmake.exe" -s -f CMakeFiles\simplenet_infer_fortran.dir\build.make /nologo -SL                 CMakeFiles\simplenet_infer_fortran.dir\build' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\bin\HostX64\x64\nmake.exe" -s -f CMakeFiles\Makefile2 /nologo -LS                 all' : return code '0x2'
Stop.

I have started to google for possible solutions to this and came across this potential solve: Would one of these point us in the right direction?

Not linking the library (properly) https://stackoverflow.com/questions/66855252/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix/66860223#66860223
https://learn.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-error-lnk2019?view=msvc-170
https://stackoverflow.com/questions/6847360/error-lnk2019-unresolved-external-symbol-main-referenced-in-function-tmainc#comment49558763_6847847
(however the last two refer more to c++ code)

Ah, that is interesting.
I am currently in PASC sessions so limited resources, but I wonder if it is failing to link at runtime.
Sometimes on linux you need to add the location of the shared library to the LD_LIBRARY_PATH environment variable to allow it to be found at runtime.
As a first diagnosis could you try updating the CMake lists in the example to explicitly require FTorch and then try re-running cmake to check it is definitely finding FTorch?
That will require changing this line: https://github.com/Cambridge-ICCS/FTorch/blob/b40b03d4c39f607de754d34991a92703ccc36eb3/examples/1_SimpleNet/CMakeLists.txt#L14
to:
find_package(FTorch REQUIRED)`

and re-running
I'm not experienced with the equivalent to LD_LIBRARY_PATH on Windows, but this answer here suggests it is the PATH variable.
In theory building with CMake and setting CMAKE_PREFIX_PATH should handle this.
An alternative way to investigate what is happening might be adapting the Makefile here: https://github.com/Cambridge-ICCS/FTorch/blob/main/examples/1_SimpleNet/Makefile to build in a more traditional sense and see what is going wrong.
Part of this would be appending the path to the ftorch .dll library to PATH and before trying to link.

Hi @jatkinson1000,
here a summary of what I tried out:

adjusting line 14 (as you suggested in your post) --> results in same error as above
adjusting the Makefile (https://github.com/Cambridge-ICCS/FTorch/blob/main/examples/1_SimpleNet/Makefile) by setting the compiler to FC = ifort (line 3, as it had previously been set to gfortran) --> results in same error as above
additionally adjusting the Makefile by setting LDFLAGS = -L</path/to/installation>/bin/ -lftorch (line 9, instead of LDFLAGS = -L</path/to/installation>/lib/ -lftorch), because the dll file lies in the bin folder, not the lib folder --> results in same error as above
adding the full path to the dll file in the Makefile:  LDFLAGS = -L"C:\Users\vbalmer\AppData\Local\FTorch\bin" -lftorch (line 9) --> results in same error as above
in addition to the previous point, also adjusting line 6 by placing the full path there: FCFLAGS = -O3 -I"C:\Users\vbalmer\AppData\Local\include\ftorch" --> results in same error as above
keeping all the above changes and adding the path C:\Users\vbalmer\AppData\Local\FTorch or C:\Users\vbalmer\AppData\Local\FTorch to the Path variable in my windows system variables (according to this description: https://www.java.com/en/download/help/path.html)  --> results in same error as above
Restarting laptop and trying again with all above things implemented --> results in same error as above

Some thoughts / next ideas that I have:

I have a feeling that maybe setting the environment variables for using the oneAPI compilers ("C:\Program Files (x86)\Intel\oneAPI\setvars.bat") might change some path variables such that it cannot find the Path variables anymore, but don't know how to change this. Maybe with a config file? (https://www.intel.com/content/www/us/en/docs/oneapi/programming-guide/2024-1/use-a-config-file-for-setvars-bat-on-windows.html#GUID-CB900E87-1831-4CBB-8254-47FD80FF1233)
According to this link (https://stackoverflow.com/questions/7148036/what-is-ld-library-path-and-how-to-use-it/7148086#7148086), LD_LIBRARY_PATH is specific to Linux. This line of code may therefore need to be adjusted in the Makefile? But I would not know to what it would need to be changed.
Finally, I have taken a look into the CMakeCache.txt File that is created when running the command cmake.. -G "NMake[...] (see txt-file attached). It seems to look for a folder CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/SimpleNetExample, which does not exist on my system. Might this be an issue?
Next to the  CMakeCache.txt, the command cmake.. -G "NMake[...] also creates a new Makefile, which I have also attached, so you might have a look at what happens there.

Thanks again for your help and sorry for not having any better news... :/
CMakeCache.txt
Makefile.txt

Hi @vbalmer , I have been able to reproduce the errors with ifort and ifx. I am looking into it, but I also don't use windows.
I think there might be an issue with using NMake as the backend. We might have to go down the visual studio route, which is even worse for me 😳 ... I will update if I find a solution.

Hi @TomMelt
thank you very much for the update!
Another thing that crossed my mind recently but I have not tested yet is the use of gfortran instead of ifort or ifx... On FTorch's Website the Download of the Intel OneAPI Base Toolkit is suggested (https://cambridge-iccs.github.io/FTorch/page/troubleshooting.html), however I am not quite sure why. Have you tried with a gfortran compiler already?
Thanks for keeping me updated, I am looking forward to hearing from you again!

hi @vbalmer . I think I have finally fixed it :sweat_smile:
Can you try these instructions (adjusting for paths etc.)
checkout my test branch
In git bash (or otherwise)
go to the FTorch dir and switch to my test branch
git pull
git switch melt-windows-fix

add patch for libtorch
Make change suggested here to libtorch's cmake file
build ftorch lib
** NOTE ** if you have pre-existing builds please delete them with something like rd /s /q build
** NOTE ** the following instructions are for cmd prompt running in administrator mode
E:\Intel\oneAPI\setvars.bat
cd /d E:\FTorch\src
cmake -Bbuild -G "NMake Makefiles" -DCMAKE_PREFIX_PATH="C:\Users\melt\Downloads\libtorch-win-shared-with-deps-2.3.0+cpu\libtorch" -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER=ifx -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icx
cmake --build build
cmake --install build

build example 1
cd /d E:\FTorch\examples\1_SimpleNet
cmake -Bbuild -G "NMake Makefiles" -DCMAKE_PREFIX_PATH="C:/Program Files (x86)/FTorch/lib" -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER=ifx
cmake --build build
cmake --install build

set PATH=C:\Users\melt\Downloads\libtorch-win-shared-with-deps-2.3.0+cpu\libtorch\lib;%PATH%
set PATH=C:\Program Files (x86)\FTorch\bin;%PATH%
set PATH=E:\FTorch\examples\1_SimpleNet\venv\Library\bin;%PATH%

run example 1
** NOTE ** you will need to have already generated saved_simplenet_model_cpu.pt as per instructions in README.md
cd build
simplenet_infer_fortran.exe ..\saved_simplenet_model_cpu.pt

You should get output:
E:\FTorch\examples\1_SimpleNet\build>simplenet_infer_fortran.exe ..\saved_simplenet_model_cpu.pt
  0.0000000E+00   2.000000       4.000000       6.000000       8.000000

Hi @TomMelt, these are fantastic news, I will try it out asap and let you know whether it works.

Hi @TomMelt
almost everything is working now, thank you so much!! 😍
TL;DR
Everything works except for the final running of the example:
simplenet_infer_fortran.exe ..\saved_simplenet_model_cpu.pt
It throws an error about not finding two lib-torch dll files c10.dll and torch_cpu.dll, even though I can find them in C:\Users\vbalmer\libtorch-win-shared-with-deps-2.2.2+cpu\libtorch\lib
Details
[Working] Steps on Windows for Installation
Step 1:
goto cmd in admin mode

Step 2:
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"

Step 3:
cd C:\Users\vbalmer\Documents\GitHub\FTorch\src
[Note: did not create build directory]

Step 4:
cmake -Bbuild -G "NMake Makefiles" -DCMAKE_PREFIX_PATH="C:\Users\vbalmer\libtorch-win-shared-with-deps-2.2.2+cpu\libtorch" -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER="C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\ifx.exe" -DCMAKE_C_COMPILER="C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\icx.exe" -DCMAKE_CXX_COMPILER="C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\icx.exe"

Output:
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- Configuring done (1.3s)
-- Generating done (0.3s)
-- Build files have been written to: C:/Users/vbalmer/Documents/GitHub/FTorch/src/build

Step 5:
cmake --build build

Output:
[ 33%] Building Fortran object CMakeFiles/ftorch.dir/ftorch.f90.obj
[ 66%] Building CXX object CMakeFiles/ftorch.dir/ctorch.cpp.obj
[100%] Linking CXX shared library ftorch.dll
[100%] Built target ftorch

Step 6:
cmake --install build

Output:
-- Install configuration: "Release"
-- Installing: C:/Users/vbalmer/AppData/Local/FTorch/lib/ftorch.lib
-- Installing: C:/Users/vbalmer/AppData/Local/FTorch/bin/ftorch.dll
-- Installing: C:/Users/vbalmer/AppData/Local/FTorch/include/ctorch.h
-- Installing: C:/Users/vbalmer/AppData/Local/FTorch/lib/cmake/FTorch/FTorchConfig.cmake
-- Installing: C:/Users/vbalmer/AppData/Local/FTorch/lib/cmake/FTorch/FTorchConfig-release.cmake
-- Installing: C:/Users/vbalmer/AppData/Local/FTorch/include/ftorch/ftorch.mod`

Changes made: Paths, especially the full paths to the compilers
[Working] Steps on Windows for Build
Step 1:
goto cmd in admin mode

Step 2:
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"

Step 3:
cd C:\Users\vbalmer\Documents\GitHub\FTorch\examples\1_SimpleNet

Step 4:
cmake -Bbuild -G "NMake Makefiles" -DCMAKE_PREFIX_PATH="C:\Users\vbalmer\AppData\Local\FTorch\lib" -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER="C:\Program Files (x86)\Intel\oneAPI\compiler\latest\bin\ifx.exe"

Output:
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- The Fortran compiler identification is IntelLLVM 2024.1.0 with MSVC-like command-line
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Check for working Fortran compiler: C:/Program Files (x86)/Intel/oneAPI/compiler/latest/bin/ifx.exe - skipped
-- Building with Fortran PyTorch coupling
-- Configuring done (2.8s)
-- Generating done (0.0s)
-- Build files have been written to: C:/Users/vbalmer/Documents/GitHub/FTorch/examples/1_SimpleNet/build

Step 5:
cmake --build build

Output:
[ 50%] Building Fortran object CMakeFiles/simplenet_infer_fortran.dir/simplenet_infer_fortran.f90.obj
[100%] Linking Fortran executable simplenet_infer_fortran.exe
[100%] Built target simplenet_infer_fortran

Step 6:
cmake --install build

Output:
-- Install configuration: "Release"

Step 7:
set PATH="C:\Users\vbalmer\libtorch-win-shared-with-deps-2.2.2+cpu\libtorch";%PATH%
set PATH="C:\Users\vbalmer\AppData\Local\FTorch\bin";%PATH%

[no Output]

Step 8:
run the python parts:
cd C:\Users\vbalmer\Documents\GitHub\FTorch\examples\1_SimpleNet\venv
python3 -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
python3 simplenet.py
python3 pt2ts.py
deactivate

Output:
[Installation of python packages, tensor as described on the README]

Step 9:
set PATH="C:\Users\vbalmer\Documents\GitHub\FTorch\examples\1_SimpleNet\venv";%PATH%

[no Output]

Changes made:

activation of virtual environment for python is different than in Linux
adjusted all paths
FTorch was installed here: C:\Users\vbalmer\AppData\Local\FTorch, not here: C:\Program Files (x86)\FTorch

[Not working] Running the code
simplenet_infer_fortran.exe ..\saved_simplenet_model_cpu.pt

Throws errors, see screenshots:
The code execution cannot proceed because c10.dll was not found. Reinstalling the program may fix this problem.
The code execution cannot proceed because torch_cpu.dll was not found. Reinstalling the program may fix this problem.
The code execution cannot proceed because libifcoremd.dll was not found. Reinstalling the program may fix this problem

I have tried so far:

checked, that these files exist on my laptop, they do, namely the first two under C:\Users\vbalmer\libtorch-win-shared-with-deps-2.2.2+cpu\libtorch\lib and the third under C:\Users\vbalmer\Anaconda3\pkgs\icc_rt-2019.0.0-h0cc432a_1\Library\bin
used echo %PATH% to check that all set paths are indeed there
added the three paths to the environment variables like here (https://www.java.com/en/download/help/path.html)
restarted laptop
which has all not worked out...

I will try after lunch:

to reinstall libtorch and reinstall FTorch again (including all couplings required (as shown above)
to link the library C:\Users\vbalmer\libtorch-win-shared-with-deps-2.2.2+cpu\libtorch\lib instead of C:\Users\vbalmer\libtorch-win-shared-with-deps-2.2.2+cpu\libtorch
to link the path C:\Users\vbalmer\Anaconda3\pkgs\icc_rt-2019.0.0-h0cc432a_1\Library\bin

This is great news.
The following may be useful:

https://pytorch.org/docs/stable/notes/windows.html#import-error
https://discuss.pytorch.org/t/filenotfounderror-could-not-find-module-c10-dll/88422

Both suggest you need the VS redistributable installer: https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
Though I confess I don't know in detail what this is beyond reading the above pages.
The alternative solution seems to be to place those .dll files in your local directory, but it would be preferable if there was a general solution using the above.
Let me know if this helps and we can update the guidance over in #123

Hi @TomMelt  and @jatkinson1000
I have tried many things which all did not work:

installing VS redistributable
reinstalling ftorch (which then got installed in C:\Program Files (x86)\FTorch, don't know why)
reinstalling libtorch (now newest version 2.3.1, again adjusting for this)
adjusting environment variables on Windows to the new libtorch and FTorch

Finally what worked to fix the above error was manually moving the dll-flies to the build folder from where I'm running the code. This however gives a new error:
INTEL MKL ERROR: The specified module could not be found. mkl_avx512.1.dll
Intel MKL FATAL ERROR: Cannot load mkl_avx512.1.dll or mkl_def.1.dll

I am looking into it. Thanks again for your help with this process! It is amazing that the build has already worked and I am determined to solve this (hopefully last) hurdle for running the code.

Hi @vbalmer , I had a similar issue. I must admit I am not a windows user so I don't fully understand but it seems Windows has an issue finding dlls depending on the order of the %PATH% variables.
Essentially:

the mkl dlls should be in the venv path
c10.dll and torch_cpu.dll should be in the torchlib path
and libifcoremd.dll I think comes from intel compiler path

My only suggestion (other than manually copying the dlls would be to try changing the order of the %PATH% vars.
Sorry I can't offer more support because I don't understand how Windows locates dlls :sweat:
But, I am really glad it now works (with workarounds) :tada:
If switching the order of %PATH% works let me know. But don't worry if not.
I will tidy up the bugfix PR #137 and merge it into main. When this is merged we will close this issue as solved.

@vbalmer , I also just wanted to say thanks for all your help spotting the issue in the first place and helping us to debug it. Our software is now in a better place because of it. Thanks :+1:

Hi @TomMelt
thank you very much as well for your help. I really hope I get this to work in the simulation environment I would like to use it in too now in the future :) I have also updated the README to your branch melt-windows-fix to include some instructions for windows users (following the steps above, see here: https://github.com/Cambridge-ICCS/FTorch/pull/141, not entirely sure whether I did this correctly with the request...).
As for the dlls, the order of the path was also going to be my next suspicion, so I will have a look at this when I have time and let you know here.
Otherwise I also think that the issue can be closed. Thank you again.
PS. What was it actually in your new git repository that then made everything work? Using the -Bbuild -G "NMake Makefiles" instead of just NMake seems the most obvious change but was there more to it?

hi @vbalmer ,
The main change that "fixed" it was the following change to src/CMakeLists.txt.
https://github.com/Cambridge-ICCS/FTorch/blob/e9db293561d42c440e513ad6c5d2b297189b695e/src/CMakeLists.txt#L6-L9
Now CMake correctly builds FTorch so that it can be linked against by the example program.
The change of instructions were mostly just my preference to make it less typing. E.g.,
cmake -Bbuild

instead of
mkdir build
cd build
cmake ..

Then, once I fixed the build issue the %PATH% stuff fixes missing dll issues.

Thanks for the explanation! That makes sense :)

@vbalmer Following up on the issue of the .dll files it seems that the official advice is in fact to copy them over to your code.
See the information here: https://pytorch.org/cppdocs/installing.html
They provide the functionality as part of a CMakeLists file assuming you build your code using CMake, but if you are not doing this you will need to copy them across manually. It looks like any .dll file in ${TORCH_INSTALL_PREFIX}/lib/ is needed.
We have a summer school this week and next, but will aim to improve the documentation around this after that.

Hi @jatkinson1000 thank you for the update!
This makes sense. It is also interesting to see that there isn't a better solution for this, not even by pytorch...!
Thanks for updating the documentation. You're really putting a lot of effort into it - it's highly appreciated.

The folks over at PyTorch have provided an update at https://github.com/pytorch/pytorch/issues/125871
If we can test that at some point (anyone have a windows setup handy?) and update the docs as required it would be great top update them so they can close the issue and we can close this one.
Potentially @TomMelt or @jwallwork23 ?

Hi @vbalmer , sorry for the delay. I have now setup windows CI to build automatically, so we should be able to ensure that windows users can compile the code as well.
If you are interested please see #168 and a related fix #191 which are currently under review and should be merged into main soon 🤞
Going forwards, you should be able to "just use" main when using FTorch on windows.
How did you get on with FTorch in the end?
(This issue will soon be closed by #137, #168 and #191 )

Hi @TomMelt
Thanks very much for the follow-up! So far I tried to get around it by using different programs altogether (making all of it less efficient though). So good to hear that it is working - I will gladly try it out and hope to get it running. Thanks!


Retaliate game not working properly in v0.8

There are a couple of issues when running Retaliate:

Ship and Shield are not showing the color
Collision detection not working

Tested with 0.7.2 and it works until that version.

Reverted boxing implementation that caused this issue:
https://github.com/lvcabral/brs-emu/commit/c279946408cd8b92f62ed3ebff5c27c806a2d6e2


Just a question about line drawing in the docs

Hello, sorry for asking in the issue section, I just wondering, is this line drawing created manually or generated using tools? if it using tools can you give me the tools name?

Hi, this has been drawn in Sketch if I remember correctly.
But any vector graphics editor that supports SVG export works, like Figma or Illustrator for example.

Hi, this has been drawn in Sketch if I remember correctly.
But any vector graphics editor that supports SVG export works, like Figma or Illustrator for example.

oke, thanks.


METRON-716 site-book README.md

Initial draft of a readme for site-book documentation.
Questions:  should we list the tools used more explicitly?

+1 (non-binding) by inspection.  Thanks for putting this together Otto, good catch.
On a related note, it looks like Travis is either backed up or having an issue.  Another PR which is a couple of hours old also hasn't started yet.

@mattf-horton are you ok on this after the revisions?

+1 More than okay!  This is great, thanks for doing it.


System.Net.Sockets.SocketException: 'The I/O operation has been aborted because of either a thread exit or an application request'

in socketConnection.cs:
    public async ReusableTask ConnectAsync ()
    {
        var tcs = new ReusableTaskCompletionSource<int> ();
        SocketAsyncEventArgs args = GetSocketAsyncEventArgs (null);
        args.RemoteEndPoint = EndPoint;
        args.UserToken = tcs;

        if (!Socket.ConnectAsync (args))
            tcs.SetResult (0);

        await tcs.Task;
    }

this line:
        await tcs.Task;

gives an exception:
{"The I/O operation has been aborted because of either a thread exit or an application request"}
Data: {System.Collections.ListDictionaryInternal}
ErrorCode: 995
HResult: -2147467259
HelpLink: null
IPForWatsonBuckets: 0x0ee1cbc9
InnerException: null
IsTransient: false
Message: "The I/O operation has been aborted because of either a thread exit or an application request"
NativeErrorCode: 995
RemoteStackTrace: null
SocketErrorCode: OperationAborted
Source: "ReusableTasks"
StackTrace: "   at System.Runtime.CompilerServices.ReusableTaskAwaiter`1.GetResult()\r\n   at MonoTorrent.Client.Connections.SocketConnection.d__35.MoveNext() in C:\Users\tm\Downloads\monotorrent-master\monotorrent-master\src\MonoTorrent\MonoTorrent.Client.Connections\SocketConnection.cs:line 176"
TargetSite: {T GetResult()}
WatsonBuckets: null
_HResult: -2147467259
_className: null
_data: {System.Collections.ListDictionaryInternal}
_dynamicMethods: null
_exceptionMethod: null
_exceptionMethodString: null
_helpURL: null
_innerException: null
_ipForWatsonBuckets: 0x0ee1cbc9
_message: "The I/O operation has been aborted because of either a thread exit or an application request"
_remoteStackIndex: 0
_remoteStackTraceString: null
_safeSerializationManager: {System.Runtime.Serialization.SafeSerializationManager}
_source: "ReusableTasks"
_stackTrace: {sbyte[48]}
_stackTraceString: null
_watsonBuckets: null
_xcode: -532462766
_xptrs: 0x00000000
m_EndPoint: null
nativeErrorCode: 995

If you discovered this by running the code with the visual studio debugger attached, then this is normal and expected behaviour. The .NET framework uses exceptions for error propagation and this is one scenario where exceptions might be raised.
I'll close this as there's no indication that this is anything out of the ordinary :)
Thanks for reporting though!


fix: validate requested scope on authorize request

Without validating the scope of a authorize request, a client could get access to unauthorized scopes.

 Any insights into a timeline for this PR/in general for maintaining this repo?


Does this work for iOS < 8?

Hi!
Thanks for an awesome lib! I was wondering how the heck I was supposed to solve this problem within a few days and then stumbled upon this awesomeness! Thanks!
While checking out my inlined video at Browserstack I noticed that it autoplays on iOS10-8 but not below iOS 8. I'd very much like it to work as far back as possible, but I don't know if it's an error on my end or if the lib doesn't support inlined autoplay that far back.
So my question is: how far back does this lib work?

It works in iOS 8 and iOS 9. iOS 7 I think doesn't support the mechanism I'm using and also it errors because IIV tries to override video.play and fails.


Provide appenv as separate script with symlinks

Looking at the confusion between batou and appenv I suggest we implement a new scheme where appenv becomes its own script and the actual (managed) utilities are symlinks (so that appenv determines which script to run by looking at the argv[0]) by which it was called. This removes the need for a "meta" argument parser:
ctheune@fourteen-3 /tmp/asdf $ ls -lah
total 0
drwxr-xr-x    4 ctheune  wheel   128B Feb 23 06:54 .
drwxrwxrwt  494 root     wheel    15K Feb 23 06:54 ..
-rw-r--r--    1 ctheune  wheel     0B Feb 23 06:54 appenv
lrwxr-xr-x    1 ctheune  wheel     6B Feb 23 06:54 batou -> appenv

This also means we can easily add more symlinks, think harder about updating appenv itself and maybe providing it as a real, versioned package instead of just a curl'ed file.

If we want to make it flexible what the name of appenv is, we can determine whether we're talking to appenv vs. using appenv by simply checking whether arvg0 is a symlink instead of a real file.


Dynamic Surroundings 1.12.2 <IP_ADDRESS> crashing immediately after clicking play.

DynamicSurroundings-1.12.2-<IP_ADDRESS>.jar
Minecraft 1.12.2 Forge <IP_ADDRESS>55
Client Log: https://pastebin.com/A0wExHYt
Crash Log: https://pastebin.com/UiGpNq8q
The game fails to start with an  error that says its an "unknown" mod causing the error. But I have found that after you run the game for the first time after updating to Dynamic Surroundings <IP_ADDRESS>, there is a jar file added called _MixinBootstrap-1.1.0.jar and if I remove this mod and run the game it works flawlessly. Is this file required? or maybe a leftover dev file? Thanks :)

The Mixin story for 1.12.2 has been painful to say the least.  Starting with Forge 1.16.5 Mixin is "included" so these issues would not happen.  However, we are dealing with 1.12.2 and Forge never looks back.
I just made a oneoff build of Dynamic Surroundings that I think will address the issue.  Just drop in your mod folder.  Also, you shouldn't need Mixinboostrap.  https://github.com/OreCruncher/DynamicSurroundings/releases/tag/<IP_ADDRESS>BETA
Let me know if it works for you.

I'm still having the same issue even when I remove all of my previous mods to see if its incompatible with anything

Ok will do pal, thank you for your hard work! :)

Pushed 3.6.3 to CurseForge.


Add Release Drafter for automating releases notes

Add release-drafter.yml for automating release notes

on:
  push:
    branches:
      - main

jobs:
  update_release_draft:
    runs-on: ubuntu-latest
    steps:
      - uses: release-drafter/release-drafter@v5
        with:
          config-name: release-draft-template.yml
        env:
          GITHUB_TOKEN: ${{ secrets.RELEASE_DRAFTER_TOKEN }}```

Release-drafter template:
name-template: 'Pieces TypeScript SDK v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
  - title: '🚀 Features'
    labels:
      - 'kind/feature'
      - 'kind/enhancement'
  - title: '🐛 Bug Fixes'
    labels:
      - 'kind/fix'
      - 'kind/bugfix'
      - 'kind/bug'
  - title: '🧰 Maintenance'
    labels:
      - 'kind/chore'
      - 'area/ci'
      - 'area/tests'
  - title: 📖 Documentation
    label: area/docs
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: |
  ## What's New
  ## 🔤 General
  $CHANGES

  ## 👨🏽💻 Contributors

  Thank you to our contributors for making this release possible:
  $CONTRIBUTORS

looks good lets get this in!

do we need to do anything here with the secrets? i generated and added a key that is named as follows:

on the open source parent repo. let me know what you think about this approach, that way we can pipe updates through the parent repo for other updates. if this is all looking solid i should be able to test this today
@shivay-at-pieces let me know what you see here - can always update a secret/add a new secret to this public repo individually for now as well.

Sure I think we can test this approach with the secret being in the parent repo @jordan-pieces

going to update the secrets name, but we should test this and see if it works properly. also i am not sure how much we need to use keys since both repos are public, unless i am missing something there. but let me know.

@shivay-at-pieces is this functioning as desired currently? or are there some steps that need tested ?

Hey @mason-at-pieces, can I work on this while you're still working on docs migration?

@shivay-at-pieces what is the status of this issue? Was it essentially put on hold about a month ago?

Hi @mason-at-pieces we are yet to test this out at the moment. But @CBID2 if you are interested in also contributing, let us know. Also @mason-at-pieces will touch base with you regarding Release drafter in general for our SDK docs internally.

Hi @mason-at-pieces we are yet to test this out at the moment. But @CBID2 if you are interested in also contributing, let us know. Also @mason-at-pieces will touch base with you regarding Release drafter in general for our SDK docs internally.

I want to contribute to this @shivay-at-pieces


Fix subdimension thickness

Owing the inconsistency in how the thickness of subdimensions is defined (see #1183) a subdomain defined as, e.g.,
class sd0(SubDomain):
    name = 'sd0'
    def define(self, dimensions):
        x, y = dimensions
        return {x: x, y: ('right', 10)}

on a grid with shape (N, 10) doesn't currently work. This PR fixes that. Note that it doesn't fix the underlying issue raised in #1183.

So empty subdomain are allowed now?

Are you referring to the y: ('right', 10)? If so, no, I think this is the api being confusing again - that's saying that the dimension spans the entire y dimension i.e. equivalent to y: y.

i.e. equivalent to y: y.

right my bad, brain not very great today :D


Issue-Merge pull request #4 from chazmcgrill/redesign
Design Overhaul

Automated Review Comments

I got it.


regression in regexp / regexprep on Octave development branch

Some of the regular expressions in doctest have started failing on Octave's development branch.
$ docker run --volume $PWD:/doctest mtmiller/octave:devel make -C /doctest test
...
error: regexprep: nothing to repeat at position 16 of expression
make: *** [test] Error 1
Makefile:112: recipe for target 'test' failed
make: Leaving directory '/doctest'

$ docker run --volume $PWD:/doctest mtmiller/octave:devel octave --path /doctest/inst --eval "doctest slash"
...
error: regexp: unrecognized character after (? or (?- at position 13 of expression

$ docker run --volume $PWD:/doctest mtmiller/octave:devel octave --path /doctest/inst --eval "doctest doctest"
...
doctest/
  inst/
error: regexprep: nothing to repeat at position 16 of expression

I suspect this regression is caused by this upstream commit.
I've also commented on Octave#35910 about this new error.

This is resolved with the latest updates to mtmiller/octave:devel.


How to make it work outside of the U.S.

Hi,
Great work here, But I would like to enjoy it elsewhere than USA, is there a simple solution, or do you need to make an international version? Or maybe didn't I understand how to set this up..
Thanks

Not right now, unfortunately. NOAA's National Weather Service was the only option I could find that was free and had no limits on usage.

From: fredfred41<EMAIL_ADDRESS>Sent: Saturday, September 29, 2018 8:17:16 PM
To: ianmartinez/Chameleon
Cc: Subscribed
Subject: [ianmartinez/Chameleon] How to make it work outside of the U.S. (#2)
Hi,
Great work here, But I would like to enjoy it elsewhere than USA, is there a simple solution, or do you need to make an international version? Or maybe didn't I understand how to set this up..
Thanks
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/ianmartinez/Chameleon/issues/2, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AIA-xHL7FFyiblbg_S-sCDHmM4v7JmQjks5ugBucgaJpZM4XAwXP.

I m in France mostly, but sometimes in Belgium too...

I'd love to see this as well. Living in the UK.

You could use openweathermap.org which does have limits on the free-tier, but with 60/min or 1,000,000/month no normal user should hit that limit. Not like weather is changing THAT much in 2.5 seconds in most places.
rePaper (https://github.com/rocksdanister/rePaper/) uses it for their wallpaper-weather effects, which I wanted to combine it with. Sadly, I do not know Pascal or Unity so I'm out of my water here to contribute, but maybe this helps.


Replicated all to all and test

Add support for replicated all to all, plus test of output, grads, and update

I've inlined everything into replicatedalltoall.cpp. It's far from being the longest .cpp in this repo!


Bug: Required parameters are missing

Version: "outhebox/laravel-translations": "^0.1.2"

I've installed the package out of the box and ran /translations to get this error.
I saw this issue as closed where you commented to upgrade it to the latest version which I am already on and still I see this issue.

Can you please help me with this?

Same issue here. I have the 0.1.2 version.

Try this:

Open file on line vendor/outhebox/laravel-translations/src/Livewire/PhraseForm.php:70
Change the line to this: if (! str_contains($this->phrase->source->value, ":$parameter")) {

Originally it was: $this->phrase->value, however it returns null

thank you, this worked, waiting for this to be updated in the package itself so I can use it on production as well

Hi @raonikhil,
Just wanted to let you know that a significant update is on the way, and it will address all the issues, also with many new features as well.
Thanks a lot for your patience!

Kindly upgrade to the newest version and carefully review the installation instructions, as this release involves completely different versions.


Add comment count badges to survey listing page

Issue #:
https://github.com/bcgov/met-public/issues/1418
Description of changes:

Add comment count badges to survey listing page

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the met-public license (Apache 2.0).

Codecov Report

Merging #1460 (0cc3797) into main (291c6d8) will increase coverage by 0.09%.
The diff coverage is 87.50%.

@@            Coverage Diff             @@
##             main    #1460      +/-   ##
==========================================
+ Coverage   71.46%   71.55%   +0.09%
==========================================
  Files         328      329       +1
  Lines        9630     9675      +45
  Branches      691      698       +7
==========================================
+ Hits         6882     6923      +41
- Misses       2630     2634       +4
  Partials      118      118

Flag
Coverage Δ

metapi
78.23% <100.00%> (+0.09%)
:arrow_up:

metweb
65.60% <86.66%> (+0.09%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

met-web/src/models/survey.ts
100.00% <ø> (ø)

met-web/src/components/survey/listing/index.tsx
86.86% <86.66%> (-0.97%)
:arrow_down:

met-api/src/met_api/schemas/survey.py
100.00% <100.00%> (ø)

... and 9 files with indirect coverage changes


Path planning / Additional sim features

Changes

Integrated prior path following code to work with Dan's refactored path planning.
Added Gaussian sensor noise
Added option to perfectly follow velocity and curvature commands

Testing
No official test cases yet (see future section).
Any manual testing can be done via the main sim launch file:
roslaunch rktl_launch rocket_league_sim.launch

For path planning, use rqt or command line to call the reset_planner service.
Testing the sim features can be done via roslaunch arguments.
simulate_car_effort determines whether the car perfectly follows commands (true for realistic, false for perfect).
simulate_filter determines whether noisy sensor data is published. (true for publishing noisy data to sync_pose, false for publishing perfect data to odom)
Future
Few more things I would like to do either in this PR or future PR:

Added a few baseline test cases for path planning / following
Ensure sim and planner packages conform to a standard style (maybe create a rktl style guide?)
Fix a few bugs with path planning / following
Continue tuning path planning / following

@hmccarty Can you add a README for rktl_planner? It should at the very least have a basic description of the nodes you've made and what they do, and commands on how to tell the agent to score a goal after running roslaunch rktl_launch rocket_league_sim.launch sim_mode:=ideal. For this PR, I do not want to worry about issues with the controller or bugs that happen when realistic. We can fix those in the upcoming controls PR. We can also make "ghost mode" ground truths in a new PR as well.

Also, the tests definitely need to be fixed before merging.

leaving the branch b/c I assume you're using it to improve the path planning algos


How to access param from a callback?

Given the following signature when adding a new command:
bool commandLineInterface::add( cli::command &cmd, char *textCommand, cli::commandCallback_t cFcn, cli::options_t cmdOpt, void *param )

param seems to be stored inside in the cmd itself.
As far as I understood, there is no way to access that variable. It is private and there is no getter.
Am I missing something?

hi @fermuch , no, you are not missing something, i forgot to add the getter for that parameter
now (on release 1.2.8) you should be able to acces the command parameter by using something like this:
cli::response CMD_Callback( cli::handler_t h ) {
    void *param = h.getCommand().getParam();
    /*do something with param...*/
    return cli::response::NO_RESPONSE;
}

let me know how it goes


issue: Animations are not playing.

While continuing to try to implement the ripple effect from Material Design (which I mentioned in #767), I came across the fact that animations.start() doesn't seem to do anything. Obviously, this has something to do with the info variable and probably the pointerdown closure. However, I have not found out the exact reason why this is happening.
Branch: fix/element-rendering-rethink
It is quite difficult for me to provide the minimum code to reproduce the problem, so below will be all the code I am currently using:
use freya::prelude::*;

const INITIAL_ORIGIN_SCALE: f32 = 0.2;
const PADDING: f32 = 10.0;
const SOFT_EDGE_MINIMUM_SIZE: f32 = 75.0;
const SOFT_EDGE_CONTAINER_RATIO: f32 = 0.35;

fn main() {
    launch(app);
}

fn app() -> Element {
    rsx! {
        rect {
            height: "100%",
            width: "100%",
            main_align: "center",
            cross_align: "center",

            rect {
                height: "192",
                width: "192",
                background: "blue",
                corner_radius: "12",
                main_align: "center",
                cross_align: "center",
                overflow: "clip",

                Ripple { }
            }
        }
    }
}

#[derive(Default, PartialEq, Clone)]
struct RipplePosition {
    start: Point2D,
    end: Point2D,
}

impl RipplePosition {
    fn new(cursor: Point2D, size: f32, (height, width): (f32, f32)) -> Self {
        Self {
            start: Point2D::new(cursor.x - size / 2.0, cursor.y - size / 2.0),
            end: Point2D::new((width - size) / 2.0, (height - size) / 2.0),
        }
    }
}

#[derive(Default, PartialEq, Clone)]
struct RippleInfo {
    position: RipplePosition,
    radius: f32,
    scale: f32,
}

impl RippleInfo {
    fn new(cursor: Point2D, area: Rect<f32, Measure>) -> Self {
        let (size, origin) = ((area.height(), area.width()), area.origin);
        let (radius, scale) = Self::get_size(size);
        let position = RipplePosition::new((cursor - origin).to_point(), radius, size);

        Self {
            position,
            radius,
            scale,
        }
    }

    fn get_size((height, width): (f32, f32)) -> (f32, f32) {
        let max_dim = height.max(width);
        let soft_edge_size = SOFT_EDGE_MINIMUM_SIZE.max(SOFT_EDGE_CONTAINER_RATIO * max_dim);

        let initial_size = (max_dim * INITIAL_ORIGIN_SCALE).floor();
        let hypotenuse = (width.powi(2) + height.powi(2)).sqrt();
        let max_radius = hypotenuse + PADDING;

        (initial_size, (max_radius + soft_edge_size) / initial_size)
    }
}

#[component]
pub fn Ripple() -> Element {
    let (node_ref, size) = use_node_signal();

    let mut info = use_signal(RippleInfo::default);

    let animations = use_animation(move |ctx| {
        let info = info();

        (
            ctx.with(AnimNum::new(0.0, 1.0).time(450)),
            ctx.with(AnimNum::new(info.radius, info.radius * info.scale).time(450)),
            ctx.with(AnimNum::new(info.position.start.x, info.position.end.x).time(450)),
            ctx.with(AnimNum::new(info.position.start.y, info.position.end.y).time(450)),
        )
    });

    let (opacity, radius, x, y) = animations.get();

    let pointerdown = move |event: PointerEvent| {
        info.set(RippleInfo::new(
            event.get_screen_coordinates().to_f32(),
            size.read().area,
        ));

        animations.start(); // Nothing happens
    };

    rsx! {
        rect {
            background: "rgb(255, 0, 0, 0.5)",
            width: "100%",
            height: "100%",
            overflow: "clip",

            onpointerdown: pointerdown,

            reference: node_ref,

            rect {
                background: "rgb(255, 255, 255, 0.5)",
                width: "{radius.read().as_f32()}",
                height: "{radius.read().as_f32()}",
                opacity: "{opacity.read().as_f32()}",
                position: "absolute",
                position_left: "{x.read().as_f32()}",
                position_top: "{y.read().as_f32()}",
                corner_radius: "{radius.read().as_f32() / 2.0}",
            }
        }
    }
}

Hey, by just looking at the code I would say that the animation is not starting because the same signal it depends (info) has a new value at the same time you are starting it. This seems like a common case so I'll see what I can do about it.

I fixed it using use_effect (also added RippleState).

However, now there is one problem and one question.
Problem: for some reason, the mouseleave (or pointerleave) event is not emitted.
Question: Is there a way to track when the animation ends and then do something?

Problem: for some reason, the mouseleave (or pointerleave) event is not emitted.

For the leave events to be emitted you need to also register a mouseenter or pointerenter event, you can leave it empty but it's how currently freya detects that an element is interested in the "leave" event. I plan to improve this at some point

Question: Is there a way to track when the animation ends and then do something?

You can use a use_effect or use_memo, call !animations.is_running() && animations.has_run_yet()

Thanks!


[incubator-kie-drools#5679] New DRL parser : Test failure : RHS end w…

…ithout preceding white-space
Issue: https://github.com/apache/incubator-kie-drools/issues/5679

For drools-model-codegen tests,
Before the fix
[ERROR] Tests run: 2433, Failures: 592, Errors: 16, Skipped: 9

After the fix
[ERROR] Tests run: 2433, Failures: 435, Errors: 14, Skipped: 9

@mariofusco @yurloc Please review, thanks!

LGTM!

There were 557 failed tests.


feat(EU): TripReports

General:

I developed with Visual Studio Code on Windows 10 with pylint and flake8 enabled and black formatting at save of file
For touched files, added as first line a # pylint:disable warnings, so I could concentrate on the real warnings
Some warnings I did solve
Maybe something in the future to solve pylint/flake8 warnings or ignore at place where it occurs?
Feel free to remove the first lines with # pylint:disable
Sometimes black reformatted some lines

README.rst:

added usage information of the trip info methods/fields

ApiImpl.py:

line 13: removed unused imports
added methods update_month_trip_info and update_day_trip_info

KiaUvoApiEU.py:

added imports for new dataclasses
line 207: ex1 was not used, so removed
line 218 and 221: token_type not used, so replaced with _
line 920: added response parameter, I did not understand this code was working?
added methods _get_trip_info, update_month_trip_info and update_day_trip_info
line 1186: removed unused payload and headers code
line 1190, 1202: resonse not used, so replaced with _

Vehicle.py:

import dataclass and field
added trip info dataclasses
added Europe only comments

VehicleManager.py:

added methods update_month_trip_info and update_day_trip_info

utils.py:

see general

I did follow the steps of:
https://github.com/Hyundai-Kia-Connect/hyundai_kia_connect_api/blob/master/CONTRIBUTING.rst
Apparently some of the checks go wrong due to:
INPUT_PUSH_OPTIONS:
remote: Permission to ZuinigeRijder/hyundai_kia_connect_api.git denied to github-actions[bot].
Did I do something wrong?

INPUT_PUSH_OPTIONS:
remote: Permission to ZuinigeRijder/hyundai_kia_connect_api.git denied to github-actions[bot].

Did I do something wrong?

Maybe your repo is configured to prevent access to the pipeline
Try this: https://github.com/ad-m/github-push-action/issues/96#issuecomment-889984928

INPUT_PUSH_OPTIONS:
remote: Permission to ZuinigeRijder/hyundai_kia_connect_api.git denied to github-actions[bot].

Did I do something wrong?

It looks like the pipeline has done some automatic formatting and is trying to push it to your branch, which is hosted on your own repository (fork of the original lib)
Maybe your repo is configured by default to prevent modifications by the pipeline Try this: ad-m/github-push-action#96 (comment)

Ok, I have given also Write permission for the Workflow permissions.
Settings -> Actions -> General -> Workflow permissions -> Read and Write permissions
Can I rerun the checks without commit?
Probably this should be added to this page??
https://github.com/Hyundai-Kia-Connect/hyundai_kia_connect_api/blob/master/CONTRIBUTING.rst

Can I rerun the checks without commit?

It is possible to re-run the pipeline by going to the repo's Actions tab > select the failed workflow > click "Re-run jobs".
I don't know if all contributors have permissions for that, I just re-ran it for you.
It's throwing the same error unfortunately. Can you confirme you changed the setting for the correct repository (https://github.com/ZuinigeRijder/hyundai_kia_connect_api) ?

Can I rerun the checks without commit?

It is possible to re-run the pipeline by going to the repo's Actions tab > select the failed workflow > click "Re-run jobs". I don't know if all contributors have permissions for that, I just re-ran it for you. It's throwing the same error unfortunately. Can you confirme you changed the setting for the correct repository (https://github.com/ZuinigeRijder/hyundai_kia_connect_api) ?

I am not sure that I saved the Workflow Permission. I did now explicitly save the setting. However, I do not see an option to reun the black action job, maybe I do not have the right permissions or I overlooked the option "Re-run jobs".

I ran it again, but it's still failing. Maybe it needs additional permissions, but I'm not very familiar with github workflows. I don't know why it fails for you and not other contributors. I found recent changes in the .github/workflows directory but nothing that seems related to this error.

The GitHub action doesn't have permissions to correct the errors.     That will make it pass.

The GitHub action doesn't have permissions to correct the errors.  That will make it pass.

Strangely enough in Visual Studio Code trailing whitespace is removed at file save.
And also I have configured a black action, but maybe the settings are different then in Github?

Remark: I've seen screenshots of the "trip info" view on Bluelink, so I think it would also work on Bluelink EU. But I understand if you don't want to add it in one more API implementation.

Yes, I am using this with Bluelink EU, I have an IONIQ 5 as car. I assume you mean the screenshots of My Trips in this feature request: https://github.com/Hyundai-Kia-Connect/hyundai_kia_connect_api/issues/248
With the proposed API changed, this UI can be made. You start with asking the month_trip_info for the current month. Thereafter you have access to the days with trips and how many trips per day and show theat in the calendar.
When you select a day (or the current day) you can ask for the trips for that day. You can select another day in the calendar and get those values. Or select another month and get the trip info for that month.
As far as I can see, you can only go back 3 months. I implemented this already in my tool: hyundai_kia_connect_monitor. I just collect the trips and add not yet retrieved trip info to a file. So I will have history longer than 3 months.
See a sneak preview here.

The GitHub action doesn't have permissions to correct the errors.  That will make it pass.

Strangely enough in Visual Studio Code trailing whitespace is removed at file save.
And also I have configured a black action, but maybe the settings are different then in Github?
And I cannot see what is tried to change by black or trailing whitespace, because the job fails before on permission?

It shows in the job just a few steps up.   It is showing it's the readme which may be why not caught in vs code. Since not really important on a trailing white space.

The GitHub action doesn't have permissions to correct the errors.  That will make it pass.

Strangely enough in Visual Studio Code trailing whitespace is removed at file save.
And also I have configured a black action, but maybe the settings are different then in Github?
And I cannot see what is tried to change by black or trailing whitespace, because the job fails before on permission?

It shows in the job just a few steps up. It is showing it's the readme which may be why not caught in vs code. Since not really important on a trailing white space.

I fixed the README.srt, but for Black this keeps failing of course. Do you have different settings for BLACK or another version, so Visual Studio Code and GITHUB differ?

Bluelink EU, I have an IONIQ

Oh, I did not realize the "KiaUvoApiEU" implementation worked for Bluelink EU too. Even though I assumed the Kia Connect (ex UVO) and Bluelink apps probably used the same backend for EU cars. Maybe we should rename this class to something more generic at some point, for clarity.
About this Black issue. I'll try making a PR myself, see if the pipeline passes. If it does, we can narrow it down to your repo permissions.

OK, I'm able to reproduce the permission issue with my own repository.
In repo settings > Actions > General, I have:

"Allow all actions" (default)
"Read and write permissions" (default)

So I don't know what's up. Bug in this workflow maybe?

OK, I'm able to reproduce the permission issue with my own repository. In repo settings > Actions > General, I have:
* "Allow all actions" (default)

* "Read and write permissions" (default)

So I don't know what's up. Bug in this workflow maybe?

Anyway, I have been able to workaround the problem by configuring Black to have the default line length of 88 in Visual Studio Code. So I can submit black proof code, so the workflow does not need to update files.

@cdnninja I'll go ahead and merge this :)

I am not sure if I am posting in the right place.
Is there a way to pull more than ~30 days driving info data?
I am using hyundai_kia_connect_monitor
and can only get ~30days of daily stats
https://github.com/ZuinigeRijder/hyundai_kia_connect_monitor/issues/67

@teodorch85 I think you can better add this to Discussions, otherwise it will not be seen by many people.


add an scm rockspec

This adds a rockspec that can build from the master branch of the source repository. In this convention we check this rockspec in because it can be used universally. Generally versioned rockspecs you don't check in.
This will enable someone to build and install the latest version via LuaRocks with a command like:
luarocks install https://raw.githubusercontent.com/lgi-devs/lgi/master/lgi-scm-1.rockspec

After this change is accepted, we can also upload the scm rockspec to luarocks.org so we can use the "dev" manifest to also install the development version of this module

It doesn't seem that the scm rockspec is the same that is uploaded to the luarocks.org/dev server, is this intentional?
@psychon

Dunno what you mean exactly, but according to https://luarocks.org/modules/pavouk/lgi, pavouk last uploaded something 6 years ago, but this PR is only one year old, so obviously newer than that.

Oh, I just realized there is no dev upload for lgi in general, could that be considered? It would allow the latest source release of lgi to be installed with luarocks install --server=https://luarocks.org/dev lgi

Well, feel free to do that. You are in a better position to do that than I am since you apparently use luarocks and understand how it works. According to https://github.com/pavouk?tab=overview&from=2015-11-01&to=2023-11-18, pavouk was last active eight years ago, so I wouldn't expect that he uploads something there.


Document/make it easier how to exit the program

The current way to exit is with F1, which isn't very intuitive and isn't documented anywhere. This means you have to just close the terminal completely, which is useless

I think pressing escape would be ideal to quit. In addition, the 'q' button should work. There is no need to get confirmation to quit, it should just quit.


Do you all get stuck when Creating ramdisk？

Enviroment：Ubuntu18.04+python3.9
root@ubuntu:~/py/downr1n# ./downr1n.sh --downgrade 13.3
[*] Command ran: sudo ./downr1n.sh --downgrade
[+] pyimg4 version 0.8 is already installed.
[+] pylzss version 0.3.4 is already installed.
[-] No version specified for pyliblzfse. Installing the latest version.
usbmuxd: invalid option -- 'p'
WARNING: The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo's -H flag.
Requirement already satisfied: pyliblzfse in /usr/local/lib/python3.9/site-packages (0.4.1)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
downr1n | Version 3.0
Created by edwin, thanks palera1n, and all people creator of path file boot

[*] Waiting for devices
[*] Detected DFU mode device
[*] Waiting for devices
[*] Detected DFU mode device
[*] Getting device info...
Detected cpid, your cpid is 0x8000
Detected model, your model is n69uap
Detected deviceid, your deviceid is iPhone8,4
[-] we found ipsw/iPhone_4.0_64bit_13.3_17C54_Restore.ipsw, do you want to use it ? please write, yes or no
yes
ipsw/iPhone_4.0_64bit_13.3_17C54_Restore.ipsw
[*] Checking if the ipsw is for your device
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
[/] it looks like this ipsw file is wrong, please check your ipsw
this are the ipsw devices support:
and your device iPhone8,4 is not in the list
want to continue ? click enter ...
[*] Checking ipsw version
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
ipsw version is , and you specify 13.3
wrong ipsw version detected, click ENTER to continue or just ctrl + c to exit
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
/home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/ubuntu/py/downr1n/binaries/Linux/PlistBuddy)
[*] Extracting ipsw, hang on please ...
[*] Got extract the IPSW successfully
[*] Creating ramdisk

my cpu is intel

if you are using type c usb please use normal ones lightning ones, and also fix your linux glibc problems

if you are using type c usb please use normal ones lightning ones, and also fix your linux glibc problems

I followed your instructions and changed the environment to Ubuntu 22.04, but it seems to have no effect.
root@ubuntu-virtual-machine:/home/ubuntu/py/downr1n# ./downr1n.sh
[*] Command ran: sudo ./downr1n.sh
[22:21:09.242][3] usbmuxd v1.1.1 starting up
[22:21:09.242][3] Using libusb 1.0.25
[22:21:09.244][3] Initialization complete
[+] pyimg4 version 0.8 is already installed.
[+] pylzss version 0.3.4 is already installed.
[-] No version specified for pyliblzfse. Installing the latest version.
Requirement already satisfied: pyliblzfse in /usr/local/lib/python3.9/dist-packages (0.4.1)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
downr1n | Version 3.0
Created by edwin, thanks palera1n, and all people creator of path file boot

[*] Waiting for devices
[*] Detected recovery mode device
[*] Waiting for devices
[*] Detected recovery mode device
[*] Getting device info...
Detected cpid, your cpid is 0x8000
Detected model, your model is n69uap
Detected deviceid, your deviceid is iPhone8,4
[*] To get into DFU mode, you will be guided through 2 steps:
[*] Press any key when ready for DFU mode
Get ready (0)
Release power button, but keep holding home button (9)
Release power button, but keep holding home button (0)
[-] Device did not enter DFU mode, try again
[*] Waiting for devices
[*] Detected DFU mode device
[*] Device already on dfu mode
Choose an IPSW by entering its number:
1. ipsw/iPhone_4.0_64bit_13.3_17C54_Restore.ipsw
Enter your choice: 1
[*] We are gonna use ipsw/iPhone_4.0_64bit_13.3_17C54_Restore.ipsw
[*] Creating ramdisk

And I use VMware

And I use VMware

it doesn't work for VMware sadly

and it won't work because the exploit will fails, and for that reason it stuck on creating ramdisk


Is the filter "pinyin" supported in Custom normalizer  filter？

hi medcl:
Is the filter "pinyin" supported in Custom normalizer  filter？
Offical site says, "Custom normalizers take a list of character filters and a list of token filters." But when I try to customize  a normalizer with the filter "pinyin" provided from elasticsearch-analysis-pinyin with the following json，error is returned.
  老哥，我看官网说正规器可以使用分析器里用到的那些filter，但是，我用下面的json串设置字段映射时，报错了，内容如下。是不是项目里提供的pinyin  filter不支持用在normalizer 里的filter啊？

# filters defiend in setings  ====================
"filter": {
				"english_stop": {
					"type": "stop",
					"stopwords": "_english_"
				},
				"pinyin_filter": {
					"type": "pinyin",
					"keep_separate_first_letter": false,
					"keep_full_pinyin": true,
					"keep_original": true,
					"limit_first_letter_length": 16,
					"lowercase": true,
					"remove_duplicated_term": true
				}
			},
			"normalizer": {
				"pinyin_normalizer": {
					"type": "custom",
					"char_filter": [],
					"filter": ["pinyin_filter"]
				}
			}

#    mapping   ==================================

	{
				"string_keyword_fields": {
					"match": "*",
					"unmatch": "*_html_",
					"match_mapping_type": "string",
					"mapping": {
						"type": "keyword",
						"normalizer": "pinyin_normalizer"
					}
				}
			}

# response =====================
{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Custom normalizer [pinyin_normalizer] may not use filter [pinyin_filter]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Custom normalizer [pinyin_normalizer] may not use filter [pinyin_filter]"
    },
    "status": 400
}

After reviewing the office site again, I got this:
The current list of filters that can be used in a normalizer is following: arabic_normalization, asciifolding, bengali_normalization, cjk_width, decimal_digit, elision, german_normalization, hindi_normalization, indic_normalization, lowercase, persian_normalization, scandinavian_folding, serbian_normalization, sorani_normalization, uppercase.
So it menans filters that can be used in custom normalizer are just in the list above and that is why es returns "Custom normalizer [pinyin_normalizer] may not use filter [pinyin_filter]".
Thx


⚠ Quirk Club Argentina (API endpoint) has degraded performance

In 83a2c9e, Quirk Club Argentina (API endpoint) (https://us-central1-quirkclub-dev.cloudfunctions.net/api/check/api) experienced degraded performance:

HTTP code: 200
Response time: 9300 ms

Resolved: Quirk Club Argentina (API endpoint) performance has improved in 603863f.


Brazilian Portuguese translation locale added

Brazilian Portuguese is added to Streamus language support.
Let me know if there are messages that need to be adjusted.

+1

Thank you! Will try to review more when I have a chance. Sorry for the delay.


fix(debug): make debug a runtime dependency

Fixes https://github.com/stardust-ui/react/issues/301. Ideally we could get rid of this dependency if in production environments, but this seems to be a fine solution in the meantime.

Yep, in SUIR we strip debug statements in the prod build.  This is part of the reason we'll integrate babel back into Stardust soon.


Fix a variable access issue when velocity is not enabled(velocity=0)

I don't know how to add this pull request to the last one (if it's possible) so I created a new one.
Thanks,

This issue is still persisting, can you please accept this pull request ? It happens when you run a project with VELOCITY=0

We just ran into this exact same issue, is there an ETA on when this might be pulled in so we can update?

@rissem +1

Thank you @rissem

Can you push this to atmosphere please?

+1 @rissem, doesn't seem it was updated on Atmosphere.

@rissem, can you update the version of this package from 0.6.5 to 0.6.6 to let us get the fix ?

Published to atmosphere now. Thanks for letting me know it was unpublished.

Thanks a bunch @serut and @rissem, this seems to have solved my problem!


Make the code DRY-er

Just to demonstrate and idea for my understanding

No longer needed as the suggestion was applied here.


adding 2 code snippets - one for SQS Event handler with batch item handling and one for SNS Event handler in .NET

Issue #, if available:
Description of changes:
Adding SQS Event handler
The lambda function retrieves a batch of SQS messages from the event parameter that it receives. The function logs the content of each message and return a collection of BatchItemFailure with message id for unprocessed messages
Adding SNS handler for .NET
The Lambda function retrieves an SNS messages from the event parameter that it receives. The function logs the content of each message
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice

There's also another PR that has a .NET example.

Think SQS is already done? https://serverlessland.com/snippets/lambda-function-sqs-report-batch-item-failures
Can you split the pull request, and add SNS as a separate merge request?
Will close this one for now


Add SAP Build Prototyping tool

SAP Build is a complete set of cloud‑based tools to design and build your enterprise app.

Create clickable mockups of your application from your sketches. Then turn them into refined prototypes and bring them to life by dragging and dropping real SAP UI5 elements.
Understand your users’ needs. Collect informal feedback or easily create remote usability studies on each iteration of your design. SAP Build makes it easy to bring users into the design process.

A video of the product is available here: https://vimeo.com/182832619
https://www.build.me/
Checklist

[x] I made something good today 💐.
[x] I put links in the correct format: [Tool](link) — description.
[x] My description starts with the lower-case letter and ends with the full stop.
[x] I put the tool in the alphabetical order.

Optional

[x] I added the appropriate labels: free, open-source or mac.
[x] I put the tool only to one category.
[x] I followed Contribution Guidelines.

@cgrail thanks for the contribution!


When Metalink item fails and gets retried, "name" attribute is ignored

I'm using AriaNg Native and I don't know if this issue belongs to AriaNg, AriaNg Native or aria2.
If an item in a Metalink file fails, the GUI provides a button to retry it. However using that button causes the download destination to be completely ignored.
Sample Metalink:
<?xml version="1.0" encoding="UTF-8"?>
<metalink version="3.0" xmlns="http://www.metalinker.org/" xmlns:a0="http://www.downthemall.net/properties#" >
    <files>
        <file name="lorem/ipsum.zip" >
            <resources>
                <url type="http" >https://download.gimp.org/pub/gimp/v2.10/windows/gimp-2.10.36-setup.exe</url>
            </resources>
        </file>
    </files>
</metalink>

If the download succeeds at first try, then the file successfully get saved as "lorem/ipsum.zip" (mind the subfolder). However if it fails and then I "retry", <file name="lorem/ipsum.zip" > becomes completely ignored as if I manually added a new URL.

When you retry a task, AriaNg would submit the download url and all original task options (including the file name set by user) to aria2. So it is very useful when retrying the task which downloads http url.
But the metalink file can also contain a custom filename, which aria2 neither put it as a task option nor can AriaNg get it through the RPC interface. Although AriaNg can get the full absolute file path of old task, if AriaNg submits this path to aria2, aria2 may consider the file already exists and cause a new failure.
Therefore, the current solution is a compromise for retry metalink task.

So "retrying" feature for Metalink is not a first class citizen in aria2. Maybe we can 1. get old task's info 2. delete old task 3. submit new task with the same info?

Or should I open an issue in aria2 repo?
If you think there is no robust solution to this usecase, you can close the issue.

So "retrying" feature for Metalink is not a first class citizen in aria2. Maybe we can 1. get old task's info 2. delete old task 3. submit new task with the same info?

aria2 itself does not support "retrying task". The "retrying task" feature of AriaNg is based on the existing api of aria2. I think you can ask aria2 why the download path specified in the metalink file is not set to the task options of aria2, but I think aria2 may not make the adjustment.


Resign first responder before executing custom return key action

If TextEditorConfiguration.continuouslyUpdatesValue is set to false (the default), the form value will not be updated until after the text editor finishes editing. In the case where the return key executed a custom action, the action was being executed before the text editor resigned its first responder status, causing the changes to not be committed. This fixes that bug by having the text editor resign first responder before executing the action.

LGTM (tricky bug!)


[BUILD][OSD] Support version qualifier

Description
Support version qualifier builds for OpenSearch Dashboards and
OpenSearch Dashboards Plugins.
This will create a zip for plugins with the OpenSearch Dashboards
version + qualifier. But the version of the plugin will remain the
same whilst opensearchDashboardsVersion in the opensearch_dashboards.json
will be the OpenSearch Dashboards version, eg, 1.3.0-alpha1. This is why
the version check needed to be modified a little to ensure that it can
get the version + qualifier and the default version of the plugin.
Updated for plugins as well.
Was able to successfully build and connect OSD 1.3.0-alpha1 to
the release version of OS 1.3.0.
Signed-off-by: Kawika Avilla<EMAIL_ADDRESS>Issues Resolved
https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1340
Issue partially resolved:
https://github.com/opensearch-project/opensearch-build/issues/1632
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #1836 (b9b58ae) into main (6a06d7d) will increase coverage by 5.46%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##               main     #1836      +/-   ##
=============================================
+ Coverage     94.53%   100.00%   +5.46%
=============================================
  Files           176         6     -170
  Lines          3622       105    -3517
  Branches         27        19       -8
=============================================
- Hits           3424       105    -3319
+ Misses          194         0     -194
+ Partials          4         0       -4

Impacted Files
Coverage Δ

src/build_workflow/build_target.py

..._workflow/opensearch/build_artifact_check_maven.py

...ensearch_dashboards/build_artifact_check_plugin.py

src/build_workflow/builders.py

src/jenkins/InputManifest.groovy

src/system/thread_safe_counter.py

...rkflow/integ_test/service_opensearch_dashboards.py

src/ci_workflow/ci_input_manifest.py

src/git/git_repository.py

.../assemble_workflow/bundle_opensearch_dashboards.py

... and 160 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6a06d7d...b9b58ae. Read the comment docs.

Created an "alpha" version of 1.3 OSD (with all the plugins). It was able to connect successfully to release OS 1.3
Created an "alpha" of 2.0 OSD was able to successfully connect to alpha 2.0 OS.
Created a 1.3 OSD with no qualifier (with all the plugins). It was able to connect successfully to release OS 1.3

Something feels fishy. Are you saying that an OpenSearch Dashboards version will be different from OpenSearch? Same question for plugins. Do you have an example of what that looks like?

I'm sorry I not sure what you are referring to. Can you expand on this?

Something feels fishy. Are you saying that an OpenSearch Dashboards version will be different from OpenSearch? Same question for plugins. Do you have an example of what that looks like?

I'm sorry I'm not sure what you are referring to. Can you expand on this?

Why is compatible_opensearch_dashboards_component_versions needed, meaning why is that set different from OpenSearch component versions?

Something feels fishy. Are you saying that an OpenSearch Dashboards version will be different from OpenSearch? Same question for plugins. Do you have an example of what that looks like?

I'm sorry I'm not sure what you are referring to. Can you expand on this?

Why is compatible_opensearch_dashboards_component_versions needed, meaning why is that set different from OpenSearch component versions?

Got it I was going to bring this up so thanks for mentioning. With this change this makes it so plugins can install to specific version of OpenSearch Dashboards without doing the update manually. For example, https://github.com/opensearch-project/alerting-dashboards-plugin/blob/main/opensearch_dashboards.json#L3 can remain "version": "<IP_ADDRESS>", but this command will update "opensearchDashboardsVersion": "1.3.0", to be the version that is passed in the parameter so for example if building 2.0.0-alpha1 this plugin would look like:
{
  "id": "alertingDashboards",
  "version": "<IP_ADDRESS>",
  "opensearchDashboardsVersion": "2.0.0-alpha1",
  "configPath": ["opensearch_alerting"],
  "requiredPlugins": [],
  "server": true,
  "ui": true
}

But with the current condition check it will expect that version to be <IP_ADDRESS>-alpha1 and the only way to change this is if plugins manually update the version for every qualifier. But since that is just used internally with the plugin (as far as I know not sure if plugins do some special check but they don't need to) it shouldn't require that to be change for every qualifier release. So as like as we tell that this plugin is for a specific version it build successfully and run successfully.

Not sure why the manifest for OpenSearch 2.0.0 keeps failing but should be good to go.

@kavilla Why should it be possible to install a 2.0.0 plugin on top of 2.0.0-alpha dashboards? That seems broken by design.

Not sure why the manifest for OpenSearch 2.0.0 keeps failing but should be good to go.

@gaiksaya is going to add qualifier support for ci workflow soon.

Not sure if I have the bandwidth but if anyone has please feel free to pick up this issue #1839


Restore files that were temporarily deleted

Changes
In the release process, we delete namespaced build strategies to exclude them from the sample-strategies.yaml. This deletion caused the readme pr creation to pick up those deletions. I am changing the release script to restore those files.
Submitter Checklist

[ ] Includes tests if functionality changed/was added
[ ] Includes docs if changes are user-facing
[x] Set a kind label on this PR
[x] Release notes block has been filled in, or marked NONE

Release Notes
NONE

/lgtm

/approve