NaturalDocs / NaturalDocs

Natural Docs source code documentation system
http://www.naturaldocs.org
192 stars 33 forks source link

M2 Mac complains about Simple Identifier #86

Closed eminakgun closed 9 months ago

eminakgun commented 1 year ago

Just setup the natural docs and tried run with the default config in a project folder that contains simple ND format in a .txt file,

Natural Docs 2.2
----------------

There are errors in /Users/eminakgun/tools/NaturalDocs/Config/Languages.txt:
   - Line 33: "simple ıdentifier" is not a valid keyword.
   - Line 53: "simple ıdentifier" is not a valid keyword.

Line 33 and Line 53,

Language: C/C++

   Extensions: c cc cpp cxx c++ h hh hpp hxx h++

# ERROR: "simple ıdentifier" is not a valid keyword.
   Simple Identifier: C
   Aliases: C C++
.
.
.
.

Language: C#

   Extension: cs

# ERROR: "simple ıdentifier" is not a valid keyword.
   Simple Identifier: CSharp

I'm not sure if its related to Mac. Any ideas? But errors pointing to the folder downloaded from the official installation guided me to open an issue.

NaturalDocs commented 1 year ago

What language do you have your OS set to? For some reason it's simplifying a capital letter I to Unicode 0130 (Latin Small Letter Dotless I) instead of a lowercase i. You can see it in "simple ıdentifier".

eminakgun commented 1 year ago

Ah, I see. It's Turkish and capital "I" is a valid letter though. What are the steps to reproduce the call-stack or log messages? So that we can find out at which stage the bug is introduced.

I will try to change OS language to EN and retry ASAP.

NaturalDocs commented 1 year ago

I think I know where it is, I just wanted to know so I can try to reproduce it and test for other areas where it may appear. Switching to English should work for now and I'll let you know when there's a version that's fixed.

eminakgun commented 1 year ago

Thanks!

eminakgun commented 12 months ago

Hi @NaturalDocs Switching to EN solved the letter problem but now it crashes as below,

Crash Message:

   libNaturalDocs.Engine.SQLite.Mac64.so assembly:<unknown assembly> type:<unknown type> member:(null)
   (System.DllNotFoundException)

Stack Trace:

  at (wrapper managed-to-native) CodeClear.NaturalDocs.Engine.SQLite.API.sqlite3_initialize()
  at CodeClear.NaturalDocs.Engine.SQLite.API.Initialize () [0x00000] in <5f05040a225e456282ce5ec1092f4c83>:0 
  at CodeClear.NaturalDocs.Engine.CodeDB.Manager.Start (CodeClear.NaturalDocs.Engine.Errors.ErrorList errors) [0x0000c] in <5f05040a225e456282ce5ec1092f4c83>:0 
  at CodeClear.NaturalDocs.Engine.Instance.Start (CodeClear.NaturalDocs.Engine.Errors.ErrorList errors, CodeClear.NaturalDocs.Engine.Config.ProjectConfig commandLineConfig) [0x000f8] in <5f05040a225e456282ce5ec1092f4c83>:0 
  at CodeClear.NaturalDocs.CLI.Application.BuildDocumentation (CodeClear.NaturalDocs.Engine.Errors.ErrorList errorList) [0x0002d] in <b9405812e2f14363914a049832d0edc8>:0 
  at CodeClear.NaturalDocs.CLI.Application.Main (System.String[] commandLine) [0x00141] in <b9405812e2f14363914a049832d0edc8>:0 

Command Line:

   /Users/eminakgun/tools/NaturalDocs/NaturalDocs.exe -i ./ -p cfg -o html out

Versions:

   Natural Docs 2.2
   Unix 22.3.0.0
   Mono 6.12.0.182
   Couldn't get SQLite version

Quick search revealed mac users had similar problems but couldn't find a working solution. Do you know one?

NaturalDocs commented 12 months ago

It's macOS not allowing the SQLite library to be loaded because it's not signed. Try this version:

http://www.naturaldocs.org/download/temp/Natural_Docs_temp9.zip

If that doesn't work there's instructions in here about how to make macOS allow it anyway: https://github.com/NaturalDocs/NaturalDocs/issues/85

Let me know if the temp9 version works for you so I can verify that I did it right.

eminakgun commented 12 months ago

temp9 failed as before

NaturalDocs commented 11 months ago

I was able to reproduce the "simple ıdentifier" issue and fix it. See if this version works while macOS is still on Turkish:

https://www.naturaldocs.org/download/temp/Natural_Docs_temp10.zip

Show me the crash message if it still can't access SQLite. The version should be "Natural Docs 2.3 (Development Release 07-06-2023)" and it should be attempting to load "libSQLite.Mac.x64.so". If it doesn't say those things you may still be running the old version.

eminakgun commented 11 months ago

Simple Identifier issue is resolved by the version you attached, but still can't find the SQLite dll,


Generated on 9.07.2023 14:25:01

Crash Message:

   libSQLite.Mac.x64.so assembly:<unknown assembly> type:<unknown type> member:(null)
   (System.DllNotFoundException)

Stack Trace:

  at (wrapper managed-to-native) CodeClear.NaturalDocs.Engine.SQLite.DLLImport.x64.sqlite3_initialize()
  at CodeClear.NaturalDocs.Engine.SQLite.API.Initialize () [0x00007] in <0db50aa7ded44765bcd2c7c139c82432>:0 
  at CodeClear.NaturalDocs.Engine.CodeDB.Manager.Start (CodeClear.NaturalDocs.Engine.Errors.ErrorList errors) [0x0000c] in <0db50aa7ded44765bcd2c7c139c82432>:0 
  at CodeClear.NaturalDocs.Engine.Instance.Start (CodeClear.NaturalDocs.Engine.Errors.ErrorList errors, CodeClear.NaturalDocs.Engine.Config.ProjectConfig commandLineConfig) [0x000f8] in <0db50aa7ded44765bcd2c7c139c82432>:0 
  at CodeClear.NaturalDocs.CLI.Application.BuildDocumentation (CodeClear.NaturalDocs.Engine.Errors.ErrorList errorList) [0x0002d] in <47a2c294aaec4849ac32c885f7510dd8>:0 
  at CodeClear.NaturalDocs.CLI.Application.Main (System.String[] commandLine) [0x00141] in <47a2c294aaec4849ac32c885f7510dd8>:0 

Command Line:

   /Users/eminakgun/Downloads/NaturalDocs3/NaturalDocs.exe -i /Users/eminakgun/dev/mistletoe/test/test_contrib/nd -p /Users/eminakgun/dev/mistletoe/test/test_contrib/nd/cfg -o html /Users/eminakgun/dev/mistletoe/test/test_contrib/nd/out

Versions:

   Natural Docs 2.3 (Development Release 07-06-2023)
   Unix 22.3.0.0
   Mono 6.12.0.182
   Couldn't get SQLite version
NaturalDocs commented 11 months ago

I'm not quite sure what it is then. That's the most recent version of Mono, and that version of libSQLite.Mac.x64.so is signed so it shouldn't cause any security errors. It runs fine on my M1 Mac Mini.

So first the stupid obvious question: there is a file libSQLite.Mac.x64.so in the same folder as NaturalDocs.exe right?

Also, its file permissions allow it to be read by whatever account you're running Natural Docs with? It doesn't seem to need execute permissions because my M1 Mac shows it as "-rw-r--r--" in ls -l and it runs.

Is there any anti-virus or security software that would prevent it from loading that file? For whatever reason it either isn't finding it or macOS isn't allowing it to be used.

I know M1 and M2 Macs are ARM-based instead of x86/x64, but Mono doesn't emit ARM code yet. It just emits x64 and Rosetta converts it to ARM. I planned to build an ARM version of SQLite but Mono wouldn't use it so it's not necessary yet.

NaturalDocs commented 9 months ago

It's been a couple of months without a response so I'm closing this. Please reopen if you still want to work on this.

Also, Natural Docs 2.3 was released and includes the signed macOS SQLite binaries so you don't need to use the temp versions anymore.