OS2
TeLLie opened this issue · 20 comments
Hi
Uodated to latest source i get again a error.
[100%] Linking CXX executable fernanda.exe
weakld: error: Unresolved symbol (UNDEF) '__ZN2Ud3dllB5cxx11Ev'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_archiver_cpp_o_e4763c3ff2516b6c0.obj
Ignoring unresolved externals reported from weak prelinker.
Error! E2028: __ZN2Ud3dllB5cxx11Ev is an undefined reference
file K:/temp\ldconv_archiver_cpp_o_e4763c3ff2516b6c0.obj(G:\fernanda\fernanda\src\archiver.cpp): undefined symbol __ZN2Ud3dllB5cxx11Ev
make[2]: *** [fernanda.exe] Error 1
make[1]: *** [CMakeFiles/fernanda.dir/all] Error 2
make: *** [all] Error 2
Hey!
Thanks for mentioning this. So, turns out I goofed up the preprocessor directives, I believe. I've (hopefully) fixed them now (8cc38f1), so let me know if there are still any issues!
Hi
I updated to latest source
Now i get:
[ 81%] Building CXX object CMakeFiles/fernanda.dir/fernanda/src/editor.cpp.o
In file included from G:/fernanda/fernanda/src/io.h:5,
from G:/fernanda/fernanda/src/archiver.h:8,
from G:/fernanda/fernanda/src/archiver.cpp:3:
G:/fernanda/fernanda/src/path.h: In function 'void Path::copy(std::filesystem::__cxx11::path, std::filesystem::__cxx11::path)':
G:/fernanda/fernanda/src/path.h:46:28: error: no matching function for call to 'QFile::copy(std::filesystem::__cxx11::path&, std::filesystem::__cxx11::path&)'
46 | QFile::copy(fileName, newName);
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
In file included from h:/usr/local1220/include/QtCore/qdir.h:44,
from h:/usr/local1220/include/QtCore/QDir:1,
from G:/fernanda/fernanda/src/path.h:11:
May I ask what Qt version you have currently?
Hello
Qt 6.2.4
Okay, cool. Thanks!
Hopefully, changing this directive will work: https://github.com/fairybow/fernanda/blob/a652ff0c3a730a73adcb751d7188485f481b5670/fernanda/src/path.h#L42
to: #if QT_VERSION > QT_VERSION_CHECK(6, 2, 4)
I had included this line in the hopes that it would ensure your version still worked despite a temporary change back to QFile::copy in (I think) 4 places throughout Fernanda (the solution to the previous issue).
The issue is most likely that they did not overload QFile::copy to take std::filesystem::paths as parameters in one or more places until sometime fairly recently. Changing to std::filesystem::file_copy unfortunately did not actually work with QRC paths
I accidentally guessed the wrong version, though! 😨
Let me know if that happens to work for you. (I'll include the change, too, in the next push, sometime today should be.)
Thanks again!
Hi
Yes change to 6.2.4 worked
But now it ends with........
[ 70%] Linking CXX executable fernanda.exe
weakld: error: Unresolved symbol (UNDEF) '__ZTV10ToolButton'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_bbe63c59c17179180.obj
Ignoring unresolved externals reported from weak prelinker.
Error! E2028: __ZTV10ToolButton is an undefined reference
file K:/temp\ldconv_fernanda_cpp_o_bbe63c59c17179180.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZTV10ToolButton
make[2]: *** [fernanda.exe] Error 1
make[1]: *** [CMakeFiles/fernanda.dir/all] Error 2
make: *** [all] Error
I think this may be a separate issue with the ToolButton class. I don't know that the last push will have fixed this, but when you get a chance could you try to build with the latest and let me know how it goes? Thanks!
Hi
I updated to latest source....
[100%] Linking CXX executable fernanda.exe
weakld: error: Unresolved symbol (UNDEF) '__ZTV10ToolButton'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj
weakld: error: Unresolved symbol (UNDEF) '__ZN10ToolButton15startAwakeTimerEv'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj
weakld: error: Unresolved symbol (UNDEF) '__ZN10ToolButton16staticMetaObjectE'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj
Ignoring unresolved externals reported from weak prelinker.
Error! E2028: __ZN10ToolButton15startAwakeTimerEv is an undefined reference
Error! E2028: __ZTV10ToolButton is an undefined reference
Error! E2028: __ZN10ToolButton16staticMetaObjectE is an undefined reference
file K:/temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZN10ToolButton15startAwakeTimerEv
file K:/temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZTV10ToolButton
file K:/temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZN10ToolButton16staticMetaObjectE
make[2]: *** [fernanda.exe] Error 1
make[1]: *** [CMakeFiles/fernanda.dir/all] Error 2
make: *** [all] Error 2
��������������������[100%] Linking CXX executable fernanda.exe
weakld: error: Unresolved symbol (UNDEF) '__ZTV10ToolButton'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj
weakld: error: Unresolved symbol (UNDEF) '__ZN10ToolButton15startAwakeTimerEv'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj
weakld: error: Unresolved symbol (UNDEF) '__ZN10ToolButton16staticMetaObjectE'.
weakld: info: The symbol is referenced by:
K:\temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj
Ignoring unresolved externals reported from weak prelinker.
Error! E2028: __ZN10ToolButton15startAwakeTimerEv is an undefined reference
Error! E2028: __ZTV10ToolButton is an undefined reference
Error! E2028: __ZN10ToolButton16staticMetaObjectE is an undefined reference
file K:/temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZN10ToolButton15startAwakeTimerEv
file K:/temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZTV10ToolButton
file K:/temp\ldconv_fernanda_cpp_o_90763c5b2171dd310.obj(G:\fernanda\fernanda\src\fernanda.cpp): undefined symbol __ZN10ToolButton16staticMetaObjectE
make[2]: *** [fernanda.exe] Error 1
make[1]: *** [CMakeFiles/fernanda.dir/all] Error 2
make: *** [all] Error 2
🤔 As best as I can tell, I think the issue may be related to the startAwakeTimer()
signal in ToolButton?
You may have better luck narrowing it down and seeing what exactly is causing the error?
If you happen to find a solution, please let me know.
I'll still be trying to figure it out in the meantime (just unsure of how much luck I'll have).
Thanks!
Edit: fixed missing toolbutton.cpp
in CMakeLists
HI
The latest source fixed the toolbar errors :)
Now running the fernanda i see
G:\fernanda\cmake-1220>fernanda.exe
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
Could not create pixmap from none
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
what(): filesystem error: cannot remove: Is a directory [C:/Home/.fernanda/.active_temp]
Is indeed a dir the active_temp
And is there a file to test?? i mean a .story
Thankz so far...
Good news! I was told that the previous error may have been due to the Q_OBJECT macro appearing in a header-only file (which was toolbar.h
, but I've since split it up). That said, it would compile for me and on Arch Linux at that time anyway, so it could also be that and having to do with a lower Qt version (which may be the most recent available for OS2?).
So, I do get those pixmap errors, too, and those should be fine. I believe they're due to replacing QSizeGrip image in qss file with CSS-style url(none)
.
As for the last error, I'm not too sure what's causing that one.
.active_temp
is the folder Fernanda uses while a project is open to store your work. The normal behavior is for it to be created within your user data folder at launch, and then deleted on close. If Fernanda crashes, it will not get deleted, which is maybe what has happened. However, the normal behavior there (at this moment, at least) is that if it exists on startup, it won't get created, and if any temp files happen to remain inside, if you're working on the same project as before the crash, those old temps from before the crash should still populate instead of the unsaved, original text file.
It could be that on OS2 and/or Qt =< 6.2.4 and/or cpp 11 (I'm using 20) that the normal thing above does not happen and it just prevents you from launching, maybe?
I would try deleting the remaining .active_temp
folder (or even the entire user data folder) and starting again.
As for sample projects, you can create one via the Help menu. That should create a file, Candide.story
, in your Documents folder and automatically open it 👻
Hi
As soon i push create it closed fernanda
HAve to find where the cullpit is on OS2, mean why it crashed :(
:(
Well, that's no good, then. My suspicion is (and I'm only guessing), since this compiles for the intended platforms, it might be an issue with Qt's interactions with OS2?
Whenever I would have a similar crash, it was always when attempting to write to a nonexistent path, so I'm thinking, given the context for your crash, that the Documents folder may not exist?
It could possibly be QStandardPaths. (I'm writing with Qt 6.4 in mind.) To check it out, I might first try writing paths from your machine into UserData lines 10-50 to see if it works after that?
(Also, related: in order to properly edit documents, Fernanda needs a working .active_temp
path; otherwise, no changes will persist.)
Here are the 3 folders it uses.
Thanks again for working with this and testing it out! I hope the above helps you get it running soon. Let me know how it goes!
Hi
Just tried to update to latest source and i see this error,
seems update is not usefull for oS2
G:/fernanda/fernanda/src/archiver.cpp: In member function 'void Archiver::add(StdFsPath, StdFsPath, StdFsPath)':
G:/fernanda/fernanda/src/archiver.cpp:65:46: error: 'Update' is not a member of 'bit7z::UpdateMode'
65 | compressor.setUpdateMode(UpdateMode::Update);
| ^~~~~~
G:/fernanda/fernanda/src/archiver.cpp: In member function 'void Archiver::add(StdFsPath, QVectorIo::ArchiveWriteReadPaths)':
G:/fernanda/fernanda/src/archiver.cpp:76:46: error: 'Update' is not a member of 'bit7z::UpdateMode'
76 | compressor.setUpdateMode(UpdateMode::Update);
| ^~~~~~
G:/fernanda/fernanda/src/archiver.cpp: In member function 'void Archiver::add(StdFsPath, Io::ArchiveWrite)':
G:/fernanda/fernanda/src/archiver.cpp:92:46: error: 'Update' is not a member of 'bit7z::UpdateMode'
92 | compressor.setUpdateMode(UpdateMode::Update);
| ^~~~~~
G:/fernanda/fernanda/src/archiver.cpp: In member function 'void Archiver::blanks(StdFsPath, std::map<std::__cxx11::basic_string, Path::Type>)':
G:/fernanda/fernanda/src/archiver.cpp:160:46: error: 'Update' is not a member of 'bit7z::UpdateMode'
160 | compressor.setUpdateMode(UpdateMode::Update);
| ^~~~~~
make[2]: *** [CMakeFiles/fernanda.dir/build.make:204: CMakeFiles/fernanda.dir/fernanda/src/archiver.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:117: CMakeFiles/fernanda.dir/all] Error 2
make: *** [Makefile:149: all] Error 2
Hey!
Long story short: bit7z replaced that enum in the update from v4-beta to v4-release candidate. Did you replace the old bit7z header files in the include directory? Let me know how it goes! (And replace the lib/pdb files for debug/release as well.)
Oops, forget the above. The issue is bit7z release tag in the CMake file. I'll update it shortly. Sorry about that!
Hey, so sorry about the delay in response. I took a short break from developing 😅
Unfortunately, I do not think I'll be of much help with this. I do want to help, though, so if there's any other information you're able to provide me, I'll try my best.
Given what I know, though, the issue highlighted in the error notes you pasted above should in theory have to do with an updated enum in our dependency, Bit7z. Specifically, they removed the UpdateMode::Overwrite
enum and replaced it. (Here are the v4-RC notes.)
If matching the latest Bit7z release tag on the CMake doesn't seem to work, I would recommend maybe just redownloading all of Fernanda if you haven't already? The latest Bit7z public headers and .lib
files are included in this repo. (I'm not sure if that's relevant when working with CMake, though. To be honest, I don't use the CMake file, since I build with Visual Studio, but I do try to keep it up-to-date. There is always the possibility that I've missed something or made an error there, though.)
Beyond that, I'm not sure how best to help, but if there's any more information you can uncover and send to me, I may be able to help then!
Now, for the previous issue (the creation of folders):
Here I am perhaps even less able to help :/
Since the code for the Fernanda pre-release 0.14.0-beta32 (and previous) compiles and runs on its target operating systems (Windows and Arch Linux), I think it might be an issue with OS/2 or (more likely) the port of Qt for OS/2 that you're working with. (Possibly this?)
I do think that the "non-existent directories issue" has to do, somehow, with QStandardPaths and your OS's interactions with that class.
So, I would be very unequipped to handle that, unfortunately. (Not to say that I couldn't offer some insight with a little more info, or, perhaps at the very least offer insight into how the program is intended to function so that you might be able to create your own solutions to certain issues that I'm unable to help with.)
Anyway, I'm terribly sorry I don't have better news to share. But, as I said above, if you're able to share any more information (now or later on), I may be of better help, I hope!
Good luck, and thankyou again for spending time with Fernanda. It means a whole lot to me that anyone would show any interest at all in a program I'm making, and so I hope somehow we can get it working for you.
-jackson