[sword-devel] Win32 FileMgr Subclass

Greg Hellings greg.hellings at gmail.com
Mon Jul 27 01:57:20 EDT 2020


If you're missing dependencies you should be able to do, "dnf builddep
mingw-sword".

--Greg

On Mon, Jul 27, 2020 at 1:33 AM Greg Hellings <greg.hellings at gmail.com>
wrote:

>
>
> On Sun, Jul 26, 2020 at 4:56 PM Tobias Klein <contact at tklein.info> wrote:
>
>> Hi Troy,
>>
>> The latest version builds successfully.
>>
>> I created a new intermediate release of sword-build-win32 for further
>> testing on Windows:
>>
> It's still failing for me trying to do a cross-compile with MinGW:
>
> [  6%] Building CXX object CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
> /usr/bin/i686-w64-mingw32-g++ -DCLUCENE2 -DCURLAVAILABLE
> -DCURLSFTPAVAILABLE -DEXCLUDEBZIP2 -DEXCLUDEXZ
> -DGLOBCONFPATH=\"/usr/i686-w64-mingw32/sys-root/mingw/etc/sword.conf\"
> -DUSEICUREGEX -DUSELUCENE -DU_USING_ICU_NAMESPACE -D_FTPLIB_NO_COMPAT
> -D_ICU_ -Dsword_EXPORTS @CMakeFiles/sword.dir/includes_CXX.rsp -D_ICUSWORD_
> -g3 -Wall -O0 -D_ICUSWORD_ -o CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
> -c /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static member
> function 'static int sword::FileMgr::createParent(const char*)':
> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:439:5: error:
> '_wmkdir' was not declared in this scope; did you mean 'mkdir'?
>   439 |     _wmkdir((const wchar_t *)utf8ToWChar(buf).getRawData());
>       |     ^~~~~~~
>       |     mkdir
> make[2]: *** [CMakeFiles/sword.dir/build.make:282:
> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj] Error 1
> make[2]: Leaving directory
> '/builddir/build/BUILD/sword-1.8.900/build_win32'
> make[1]: Leaving directory
> '/builddir/build/BUILD/sword-1.8.900/build_win32'
> make[1]: *** [CMakeFiles/Makefile2:277: CMakeFiles/sword.dir/all] Error 2
> make: *** [Makefile:152: all] Error 2
> make: Leaving directory '/builddir/build/BUILD/sword-1.8.900/build_win32'
>
> Commands to do the build, from Fedora 32, include this lovely invocation
> of CMake from within a subfolder of the source (build_win32 for the above):
> /usr/bin/cmake
> -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw32.cmake
> -DBUILD_SHARED_LIBS:BOOL=ON
> -DSYSCONF_INSTALL_DIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/etc
> -DSHARE_INSTALL_PREFIX:PATH=/usr/i686-w64-mingw32/sys-root/mingw/share
> -DCMAKE_INSTALL_PREFIX:PATH=/usr/i686-w64-mingw32/sys-root/mingw
> -DCMAKE_INSTALL_LIBDIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/lib
> -DICU_CONFIG_BIN_PATH=/usr/i686-w64-mingw32/sys-root/mingw/bin
> -DINCLUDE_INSTALL_DIR:PATH=/usr/i686-w64-mingw32/sys-root/mingw/include
> -DCMAKE_VERBOSE_MAKEFILE=ON -DLIBSWORD_LIBRARY_TYPE=Shared
> -DSWORD_BUILD_EXAMPLES=Yes -DCMAKE_BUILD_TYPE=Debug
> -DICU_CONFIG_OPTS=--noverify -DCROSS_COMPILE_MINGW32=TRUE ..
>
> Followed by
>
> make
>
> --Greg
>
>>
>> https://github.com/tobias-klein/sword-build-win32/releases/tag/v1.8.900-2020-07-26
>>
>> Best regards,
>> Tobias
>> On 7/26/20 8:37 PM, Troy A. Griffitts wrote:
>>
>> Thanks Tobias,
>>
>> I've made these updates and should have fixed the error in filemgr.cpp on
>> line 410. I appreciate the feedback.  Please update and try this out and
>> let me know.  Thanks for testing your compiler.
>>
>> Troy
>>
>>
>> On 7/26/20 8:25 PM, Tobias Klein wrote:
>>
>> To address the errors below I had to add the include for <windows.h> both
>> in *src/mgr/filemgr.cpp* and in *src/modules/commons/zipmgr.cpp*.
>>
>> After that I'm getting the next error:
>>
>> 1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410):
>> error C2664: 'BOOL FindNextFileA(HANDLE,LPWIN32_FIND_DATAA)': cannot
>> convert argument 2 from 'WIN32_FIND_DATAW *' to 'LPWIN32_FIND_DATAA'
>> 1>C:\Users\tobi\Dev\sword-build-win32\sword\src\mgr\filemgr.cpp(410):
>> note: Types pointed to are unrelated; conversion requires reinterpret_cast,
>> C-style cast or function-style cast
>>
>> Best regards,
>> Tobias
>> On 7/26/20 4:44 PM, Troy A. Griffitts wrote:
>>
>> Can one of you guys try simply including <windows.h> at the top of
>> filemgr.cpp and see if this fixes it for you?
>>
>>
>> On 7/26/20 4:01 PM, Tobias Klein wrote:
>>
>> I'm getting similar error messages with Visual Studio 2019. Note that I'm
>> also generating the make files via CMake.
>>
>> First couple of error messages:
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,2):
>> error C2065: 'WIN32_FIND_DATAW': undeclared identifier
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19):
>> error C2146: syntax error: missing ';' before identifier 'fileData'
>>
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(395,19):
>> error C2065: 'fileData': undeclared identifier
>>
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,2):
>> error C2065: 'HANDLE': undeclared identifier
>>
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9):
>> error C2146: syntax error: missing ';' before identifier 'findIterator'
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,9):
>> error C2065: 'findIterator': undeclared identifier
>> 2>D:\a\sword-build-win32\sword-build-win32\sword\src\mgr\filemgr.cpp(398,51):
>> error C2065: 'fileData': undeclared identifier
>>
>>
>> Best regards,
>> Tobias
>>
>> On 7/26/20 3:00 PM, Greg Hellings wrote:
>>
>>
>>
>> On Sun, Jul 26, 2020 at 6:42 AM Troy A. Griffitts <scribe at crosswire.org>
>> wrote:
>>
>>> I've just committed the last bit for fixing the WIN32 Unicode issues.
>>> If anyone can try compiling and running Xiphos without the Xiphos patch or
>>> any other projects for Windows, and let me know if things work for them in
>>> folders which include Unicode character, I would appreciate it.  I've
>>> tested BibleCS and it now works with a SWORD_PATH defined to /books/χαρις.
>>> I've tested using and installing modules in this configuration and believe
>>> all the bugs are squashed, but I would love confirmation from other
>>> projects.
>>>
>>> Thanks for any feedback,
>>>
>>> Troy
>>>
>> During cross-compile I'm getting the following errors:
>>
>> [  6%] Building CXX object CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj
>> /usr/bin/i686-w64-mingw32-g++  -DCLUCENE2 -DCURLAVAILABLE
>> -DCURLSFTPAVAILABLE -DEXCLUDEBZIP2 -DEXCLUDEXZ
>> -DGLOBCONFPATH=\"/usr/i686-w64-mingw32/sys-root/mingw/etc/sword.conf\"
>> -DUSEICUREGEX -DUSELUCENE -DU_USING_ICU_NAMESPACE -D_FTPLIB_NO_COMPAT
>> -D_ICU_ -Dsword_EXPORTS @CMakeFiles/sword.dir/includes_CXX.rsp -D_ICUSWORD_
>> -g3 -Wall -O0 -D_ICUSWORD_   -o
>> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj -c
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static member
>> function 'static std::vector<sword::DirEntry>
>> sword::FileMgr::getDirList(const char*, bool, bool)':
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:395:2: error:
>> 'WIN32_FIND_DATAW' was not declared in this scope
>>   395 |  WIN32_FIND_DATAW fileData;
>>       |  ^~~~~~~~~~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:398:2: error:
>> 'HANDLE' was not declared in this scope
>>   398 |  HANDLE findIterator = FindFirstFileW(wcharPath, &fileData);
>>       |  ^~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:6: error:
>> 'findIterator' was not declared in this scope
>>   399 |  if (findIterator != INVALID_HANDLE_VALUE) {
>>       |      ^~~~~~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:399:22: error:
>> 'INVALID_HANDLE_VALUE' was not declared in this scope
>>   399 |  if (findIterator != INVALID_HANDLE_VALUE) {
>>       |                      ^~~~~~~~~~~~~~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:401:35: error:
>> 'fileData' was not declared in this scope
>>   401 |    SWBuf dirEntName = wcharToUTF8(fileData.cFileName);
>>       |                                   ^~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:405:49: error:
>> 'FILE_ATTRIBUTE_DIRECTORY' was not declared in this scope
>>   405 |     i.isDirectory = fileData.dwFileAttributes &
>> FILE_ATTRIBUTE_DIRECTORY;
>>       |
>> ^~~~~~~~~~~~~~~~~~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:40: error:
>> 'fileData' was not declared in this scope
>>   409 |   } while (FindNextFile(findIterator, &fileData) != 0);
>>       |                                        ^~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:409:12: error:
>> 'FindNextFile' was not declared in this scope
>>   409 |   } while (FindNextFile(findIterator, &fileData) != 0);
>>       |            ^~~~~~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:410:3: error:
>> 'FindClose' was not declared in this scope; did you mean '_findclose'?
>>   410 |   FindClose(findIterator);
>>       |   ^~~~~~~~~
>>       |   _findclose
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:397:17: warning:
>> unused variable 'wcharPath' [-Wunused-variable]
>>   397 |  const wchar_t *wcharPath = (const wchar_t
>> *)wcharBuf.getRawData();
>>       |                 ^~~~~~~~~
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp: In static member
>> function 'static int sword::FileMgr::createParent(const char*)':
>> /builddir/build/BUILD/sword-1.8.900/src/mgr/filemgr.cpp:436:5: error:
>> '_wmkdir' was not declared in this scope; did you mean 'mkdir'?
>>   436 |     _wmkdir((const wchar_t *)utf8ToWChar(buf).getRawData());
>>       |     ^~~~~~~
>>       |     mkdir
>> make[2]: *** [CMakeFiles/sword.dir/build.make:283:
>> CMakeFiles/sword.dir/src/mgr/filemgr.cpp.obj] Error 1
>>
>> I'm assuming there's a new package or macro I need to define? On my
>> system the WIN32_FIND_DATAW struct is defined in both minwinbase.h and
>> shtypes.h. I'm building with MinGW which might have a different header
>> structure than your compilers, if you're using Borland?
>>
>> --Greg
>>
>>>
>>> On 7/20/20 7:18 PM, Greg Hellings wrote:
>>>
>>> Sorry for the previous blank email - user error when I tried to reply:
>>>
>>> On Sun, Jul 19, 2020 at 2:40 PM Tobias Klein <contact at tklein.info>
>>> wrote:
>>>
>>>> Thanks for giving me the background on this, Karl! I appreciate it!
>>>>
>>>> Is Xiphos the only frontend that has been patching Sword for this
>>>> purpose? Then I suppose all other frontends suffer from this issue, huh?
>>>>
>>>
>>> When I first encountered this patch in Xiphos I tested with BibleTime
>>> and The Sword Project for Windows and both of them do crash under these
>>> circumstances.
>>>
>>> Yes, other toolkits such as Qt do have wrappers for this shortcoming
>>> already, but none of the other front ends I've worked with have bothered to
>>> put in the effort to produce a patched version of Sword to fix the crash.
>>>
>>> --Greg
>>>
>>> _______________________________________________
>>> sword-devel mailing list: sword-devel at crosswire.orghttp://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>>
>>> _______________________________________________
>>> sword-devel mailing list: sword-devel at crosswire.org
>>> http://www.crosswire.org/mailman/listinfo/sword-devel
>>> Instructions to unsubscribe/change your settings at above page
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.orghttp://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.orghttp://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.orghttp://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.orghttp://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.orghttp://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20200727/181c2fbf/attachment-0001.html>


More information about the sword-devel mailing list