Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix permissive #65

Merged
merged 3 commits into from
Jan 20, 2023
Merged

Fix permissive #65

merged 3 commits into from
Jan 20, 2023

Conversation

S-Dafarra
Copy link
Member

Fixes #64

@S-Dafarra
Copy link
Member Author

The conda-forge worflow was disabled. Trying to close the PR and open it again to trigger it

@S-Dafarra S-Dafarra closed this Jan 20, 2023
@S-Dafarra S-Dafarra reopened this Jan 20, 2023
@S-Dafarra
Copy link
Member Author

For some reason the

cmake -G"Visual Studio 16 2019" -DBUILD_TESTING:BOOL=ON -DCMAKE_CXX_FLAGS_RELEASE="/permissive-" -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ..
causes the error

c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\matioCpp.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\matioCpp.vcxproj]
  Variable.cpp
  ConversionUtilities.cpp
  MatvarHandler.cpp
  SharedMatvar.cpp
  WeakMatvar.cpp
  CellArray.cpp
  File.cpp
  Struct.cpp
  StructArray.cpp
  ExogenousConversions.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_fully_visitable.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_fully_visitable.vcxproj]
  test_fully_visitable.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct.vcxproj]
  test_visit_struct.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct_intrusive.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct_intrusive.vcxproj]
  test_visit_struct_intrusive.cpp
  Generating Code...

as if /permissive- gets interpreted as a file

@S-Dafarra
Copy link
Member Author

cc @xaltmiles

@xaltmiles
Copy link

Looks good!

@traversaro
Copy link
Collaborator

traversaro commented Jan 20, 2023

For some reason the

cmake -G"Visual Studio 16 2019" -DBUILD_TESTING:BOOL=ON -DCMAKE_CXX_FLAGS_RELEASE="/permissive-" -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ..

causes the error

c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\matioCpp.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\matioCpp.vcxproj]
  Variable.cpp
  ConversionUtilities.cpp
  MatvarHandler.cpp
  SharedMatvar.cpp
  WeakMatvar.cpp
  CellArray.cpp
  File.cpp
  Struct.cpp
  StructArray.cpp
  ExogenousConversions.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_fully_visitable.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_fully_visitable.vcxproj]
  test_fully_visitable.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct.vcxproj]
  test_visit_struct.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct_intrusive.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct_intrusive.vcxproj]
  test_visit_struct_intrusive.cpp
  Generating Code...

as if /permissive- gets interpreted as a file

That is because the CMake command is running under Git Bash. In Git Bash, whenever a starting / is seen, Git Bash does strange substitution rules to change it to C:\Program Files\Git (see bmatzelle/gow#196 for example) . For example see the following snipped that you can run on Git Bash:

STraversaro@IITICUBLAP257 MINGW64 ~
$ export TESTVAR=/permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ echo $TESTVAR
/permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ cmd
Microsoft Windows [Version 10.0.22000.1335]
(c) Microsoft Corporation. All rights reserved.

C:\Users\STraversaro>echo %TESTVAR%
C:/Program Files/Git/permissive-

An alternative solution could be either to pass the permissive options as //permissive-:

STraversaro@IITICUBLAP257 MINGW64 ~
$ export TESTVAR=//permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ echo $TESTVAR
//permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ cmd
Microsoft Windows [Version 10.0.22000.1335]
(c) Microsoft Corporation. All rights reserved.

C:\Users\STraversaro>echo %TESTVAR%
/permissive-

or run the configuration in cmd or pwsh , by changing the argument in

to cmd /C CALL {0} or pwsh, see https://github.com/marketplace/actions/setup-miniconda#example-2-other-shells .

@S-Dafarra
Copy link
Member Author

For some reason the

cmake -G"Visual Studio 16 2019" -DBUILD_TESTING:BOOL=ON -DCMAKE_CXX_FLAGS_RELEASE="/permissive-" -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ..

causes the error

c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\matioCpp.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\matioCpp.vcxproj]
  Variable.cpp
  ConversionUtilities.cpp
  MatvarHandler.cpp
  SharedMatvar.cpp
  WeakMatvar.cpp
  CellArray.cpp
  File.cpp
  Struct.cpp
  StructArray.cpp
  ExogenousConversions.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_fully_visitable.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_fully_visitable.vcxproj]
  test_fully_visitable.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct.vcxproj]
  test_visit_struct.cpp
  Generating Code...
  Building Custom Rule D:/a/matio-cpp/matio-cpp/build/_deps/visit_struct-src/CMakeLists.txt
  Program
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct_intrusive.vcxproj]
  permissive-
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/permissive-': No such file or directory [D:\a\matio-cpp\matio-cpp\build\_deps\visit_struct-build\test_visit_struct_intrusive.vcxproj]
  test_visit_struct_intrusive.cpp
  Generating Code...

as if /permissive- gets interpreted as a file

That is because the CMake command is running under Git Bash. In Git Bash, whenever a starting / is seen, Git Bash does strange substitution rules to change it to C:\Program Files\Git (see bmatzelle/gow#196 for example) . For example see the following snipped that you can run on Git Bash:

STraversaro@IITICUBLAP257 MINGW64 ~
$ export TESTVAR=/permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ echo $TESTVAR
/permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ cmd
Microsoft Windows [Version 10.0.22000.1335]
(c) Microsoft Corporation. All rights reserved.

C:\Users\STraversaro>echo %TESTVAR%
C:/Program Files/Git/permissive-

An alternative solution could be either to pass the permissive options as //permissive-:

STraversaro@IITICUBLAP257 MINGW64 ~
$ export TESTVAR=//permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ echo $TESTVAR
//permissive-

STraversaro@IITICUBLAP257 MINGW64 ~
$ cmd
Microsoft Windows [Version 10.0.22000.1335]
(c) Microsoft Corporation. All rights reserved.

C:\Users\STraversaro>echo %TESTVAR%
/permissive-

or run the configuration in cmd or pwsh , by changing the argument in

to cmd /C CALL {0} or pwsh, see https://github.com/marketplace/actions/setup-miniconda#example-2-other-shells .

Ah, good to know, thanks a lot!

I am tempted to change it back, but I guess it can be useful to have the option I added as a check in the future. Merging as is.

@S-Dafarra S-Dafarra merged commit 86769a7 into master Jan 20, 2023
@S-Dafarra S-Dafarra deleted the fix-permissive branch April 15, 2023 15:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Build errors with MSVC /permissive- flag
3 participants