owncloud / client

🖥️ Desktop Syncing Client for ownCloud
GNU General Public License v2.0
1.39k stars 667 forks source link

Building the Windows Client Issues #1113

Closed poik007 closed 10 years ago

poik007 commented 10 years ago

Hello everyone, I've been trying to build the windows client for a few days now and I'm having some issues doing it. At first, I just want to build it as-is, without making any modification, but I always get stuck. I think that the guide http://doc.owncloud.org/desktop/1.4/building.html has some issues as well, either it's not finished or outdated in some fashion...

I started by adding the repositories for OpenSUSE12.2 (but the step that talks about http://pmbs.links2linux.org/download/mingw:/32/openSUSE_12.1/x86_64/mingw32-cross-nsis-plugin-processes-0-1.1.x86_64.rpm is broken, I had to find the same rpm somewhere else because the link has been dead for a few weeks now)

Then the generic build instructions, when I use mingw32-cmake on ocsync, I get that output:

linux-taib:/home/jtessier/win/ocsync-build # mingw32-cmake -DCMAKE_BUILD_TYPE="Debug" ../ocsync                                                                                       
-- The C compiler identification is GNU 4.8.1                                              
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc                             
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc -- works                    
-- Detecting C compiler ABI info                                                           
-- Detecting C compiler ABI info - done                                                    
-- Performing Test WITH_FPIC                                                               
-- Performing Test WITH_FPIC - Success                                                     
-- Performing Test WITH_STACK_PROTECTOR                                                    
-- Performing Test WITH_STACK_PROTECTOR - Success                                          
-- Found CMocka: /usr/i686-w64-mingw32/sys-root/mingw/bin/libcmocka.dll                    
-- Looking for argp.h                                                                      
-- Looking for argp.h - not found                                                          
-- Looking for nanosleep in rt                                                             
-- Looking for nanosleep in rt - not found                                                 
-- Looking for clock_gettime in rt                                                         
-- Looking for clock_gettime in rt - not found                                             
-- Looking for dlopen in dl                                                                
-- Looking for dlopen in dl - found                                                        
-- Looking for asprintf                                                                    
-- Looking for asprintf - not found                                                        
-- Looking for fnmatch
-- Looking for fnmatch - not found
-- Looking for timegm
-- Looking for timegm - not found
-- Looking for strerror_r
-- Looking for strerror_r - not found
-- Looking for utimes
-- Looking for utimes - not found
-- Looking for lstat
-- Looking for lstat - not found
-- Looking for __mingw_asprintf
-- Looking for __mingw_asprintf - found
-- Copy file from /home/jtessier/win/ocsync/CTestCustom.cmake to /home/jtessier/win/ocsync-build/CTestCustom.cmake
-- The CXX compiler identification is GNU 4.8.1
-- Check for working CXX compiler: /usr/bin/i686-w64-mingw32-g++
-- Check for working CXX compiler: /usr/bin/i686-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PKG_CONFIG: /usr/bin/pkg-config (found version "0.25") 
-- checking for module 'neon'
--   found neon, version 0.30.0
-- Found Neon: /usr/i686-w64-mingw32/sys-root/mingw/lib/libneon.dll.a  
-- neon-config executable: /usr/i686-w64-mingw32/sys-root/mingw/bin/neon-config
-- libneon has been compiled with LFS support
-- checking for module 'sqlite3'
--   found sqlite3, version 3.7.6.2
-- Found SQLite3: /usr/i686-w64-mingw32/sys-root/mingw/lib/libsqlite3.dll.a
-- Found Iniparser: /usr/i686-w64-mingw32/sys-root/mingw/lib/libiniparser.dll.a  
-- neon-config executable: /usr/i686-w64-mingw32/sys-root/mingw/bin/neon-config
-- libneon has been compiled with LFS support
-- Copy file from /home/jtessier/win/ocsync/config/ocsync.conf to /home/jtessier/win/ocsync-build/config/ocsync.conf
-- Copy file from /home/jtessier/win/ocsync/config/ocsync_exclude.conf to /home/jtessier/win/ocsync-build/config/ocsync_exclude.conf
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.1") 
-- latex command LATEX_COMPILER not found but usually required. You will probably get warnings and user inetraction on doxy run.
-- makeindex command MAKEINDEX_COMPILER not found but usually required.
-- dvips command DVIPS_CONVERTER not found but usually required.
-- Generate /home/jtessier/win/ocsync-build/doc/doxy.config from doxy.config.in
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    SHARE_INSTALL_DIR

-- Build files have been written to: /home/jtessier/win/ocsync-build

Then I run make and there's a bunch of text outputting (I won't paste it all because I don't think it's all relevant) and it seems to work (it doesn't fail, at least)

Scanning dependencies of target cstdlib
Linking C static library libcstdlib.a
Scanning dependencies of target ocsync
Linking CXX shared library libocsync.dll
Scanning dependencies of target httpbflib
Linking C static library libhttpbflib.a
Scanning dependencies of target ocsync_dummy
Linking C shared module ocsync_dummy.dll
Scanning dependencies of target ocsync_owncloud
Linking C shared module ocsync_owncloud.dll
Scanning dependencies of target ocsync_client
Linking C executable ocsync.exe

And then I go to build mirall with

mingw32-cmake -DCMAKE_BUILD_TYPE="Debug" ../mirall -DCSYNC_BUILD_PATH=/home/jtessier/win/ocsync-build -DCSYNC_INCLUDE_PATH=/home/jtessier/win/ocsync/src -DCMAKE_TOOLCHAIN_FILE=/home/jtessier/win/mirall/admin/win/Toolchain-mingw32-openSUSE.cmake

And here's the output, there are some warnings here and there but it seems like it worked?

-- The C compiler identification is GNU 4.8.1
-- The CXX compiler identification is GNU 4.8.1                                                                                                                                                                                                                                                                        
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc                                                                                                                                                                                                                                                              
-- Check for working C compiler: /usr/bin/i686-w64-mingw32-gcc -- works                                                                                                                                                                                                                                                     
-- Detecting C compiler ABI info                                                                                                                                                                                                                                                                                            
-- Detecting C compiler ABI info - done                                                                                                                                                                                                                                                                                     
-- Check for working CXX compiler: /usr/bin/i686-w64-mingw32-g++                                                                                                                                                                                                                                                            
-- Check for working CXX compiler: /usr/bin/i686-w64-mingw32-g++ -- works                                                                                                                                                                                                                                                   
-- Detecting CXX compiler ABI info                                                                                                                                                                                                                                                                                          
-- Detecting CXX compiler ABI info - done                                                                                                                                                                                                                                                                                   
-- Could not find Qt5, searching for Qt4 instead...                                                                                                                                                                                                                                                                         
-- Looking for Q_WS_X11                                                                                                                                                                                                                                                                                                     
-- Looking for Q_WS_X11 - not found.                                                                                                                                                                                                                                                                                        
-- Looking for Q_WS_WIN                                                                                                                                                                                                                                                                                                     
-- Looking for Q_WS_WIN - found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found OpenGL: opengl32  
-- Found ZLIB: /usr/i686-w64-mingw32/sys-root/mingw/lib/libz.dll.a (found version "1.2.7") 
-- Found PNG: /usr/i686-w64-mingw32/sys-root/mingw/lib/libpng.dll.a (found version "1.5.11") 
-- Found JPEG: /usr/i686-w64-mingw32/sys-root/mingw/lib/libjpeg.dll.a  
-- Found TIFF: /usr/i686-w64-mingw32/sys-root/mingw/lib/libtiff.dll.a (found version "4.0.2") 
-- Found Qt4: i686-w64-mingw32-qmake (found suitable version "4.8.4", required is "4.7.0") 
-- Found PKG_CONFIG: /usr/bin/pkg-config (found version "0.25") 
-- checking for module 'neon'
--   found neon, version 0.30.0
-- Found Neon: /usr/i686-w64-mingw32/sys-root/mingw/lib/libneon.dll.a  
-- neon-config executable: /usr/i686-w64-mingw32/sys-root/mingw/bin/neon-config
-- libneon has been compiled with LFS support
CMake Warning (dev) at cmake/modules/FindNeon.cmake:67 (SET):
  Cannot set "NEON_WITH_LFS": current scope has no parent.
Call Stack (most recent call first):
  CMakeLists.txt:78 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.
-- Found Csync: /home/jtessier/win/ocsync-build/src/libocsync.dll  
-- Could NOT find INOTIFY (missing:  INOTIFY_INCLUDE_DIR) 
-- Could NOT find Sphinx (missing:  SPHINX_EXECUTABLE) 
-- Could NOT find PdfLatex (missing:  PDFLATEX_EXECUTABLE) 
-- Found QtKeyChain: /usr/i686-w64-mingw32/sys-root/mingw/bin/libqtkeychain.dll  
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:
    BIN_INSTALL_DIR
    INCLUDE_INSTALL_DIR
    LIB_INSTALL_DIR
    SHARE_INSTALL_DIR
    SHARE_INSTALL_PREFIX
-- Build files have been written to: /home/jtessier/win/mirall-build

Then I run make... :(

/home/jtessier/win/mirall/src/mirall/csyncthread.h:36:20: error: 'CSYNC_STATUS' was not declared in this scope
Q_DECLARE_METATYPE(CSYNC_STATUS)
/usr/i686-w64-mingw32/sys-root/mingw/include/QtCore/qmetatype.h:268:25: note: in definition of macro 'Q_DECLARE_METATYPE'
struct QMetaTypeId< TYPE >
/usr/i686-w64-mingw32/sys-root/mingw/include/QtCore/qmetatype.h:268:30: error: template argument 1 is invalid
struct QMetaTypeId< TYPE >
/home/jtessier/win/mirall/src/mirall/csyncthread.h:36:1: note: in expansion of macro 'Q_DECLARE_METATYPE'
Q_DECLARE_METATYPE(CSYNC_STATUS)
In file included from /home/jtessier/win/mirall/src/mirall/folder.h:22:0,
    from /home/jtessier/win/mirall/src/mirall/folderman.h:23,
    from /home/jtessier/win/mirall/src/mirall/folderman.cpp:15:
/home/jtessier/win/mirall/src/mirall/csyncthread.h:59:40: error: 'CSYNC_STATUS' has not been declared
    static QString csyncErrorToString( CSYNC_STATUS);
make[2]: *** [src/CMakeFiles/owncloudsync.dir/mirall/folderman.cpp.obj] Error 1
make[2]: Leaving directory `/home/jtessier/win/mirall-build'
make[1]: *** [src/CMakeFiles/owncloudsync.dir/all] Error 2
make[1]: Leaving directory `/home/jtessier/win/mirall-build'
make: *** [all] Error 2

I'm not used to building stuff with cmake, but I know C++ errors when I see them :-1:

I'm kinda stuck there, I really wanted to play around with the source and see if I could make it do crazy things but being stuck on building the thing is really hindering my progress, thanks in advance :)

kwillems commented 10 years ago

Guess you'd better use the maillist for questions like this, see: https://mail.kde.org/mailman/listinfo/owncloud

Not sure, but intuition tell me you're on the wrong version of ocsync.

ogoffart commented 10 years ago

Is this the first error os is there a csync.h not found error before? But It could very well be the mismatch between the mirall version and the csync version. What are exactly the versions/branches you are building?

Caffe1neAdd1ct commented 10 years ago

I'm getting the same issue on Fedora 19:

[ 7%] Building CXX object src/CMakeFiles/owncloudsync.dir/mirall/folderman.cpp.o In file included from /home/kandrews/owncloud-build/mirall/src/mirall/folder.h:22:0, from /home/kandrews/owncloud-build/mirall/src/mirall/folderman.h:23, from /home/kandrews/owncloud-build/mirall/src/mirall/folderman.cpp:15: /home/kandrews/owncloud-build/mirall/src/mirall/csyncthread.h:57:40: error: ‘CSYNC_STATUS’ has not been declared static QString csyncErrorToString( CSYNC_STATUS); ^ make[2]: * [src/CMakeFiles/owncloudsync.dir/mirall/folderman.cpp.o] Error 1 make[1]: * [src/CMakeFiles/owncloudsync.dir/all] Error 2 make: *\ [all] Error 2

I'm using the following sources: git clone git://git.csync.org/users/freitag/csync.git ocsync git clone git://github.com/owncloud/mirall.git

Both running at master

Might be worth referencing these two issues and commit: https://github.com/owncloud/mirall/issues/1155 https://github.com/owncloud/mirall/commit/84a40dcb59d9c6b02390003cdd7e62d901973405#diff-1ec11ed609725d1ba54113a43d2d6cf0 https://github.com/owncloud/mirall/issues/1115

Also to prove this I can use git checkout v1.4.2 on the mirall directory and it compiles successfully, but still crashes after a few seconds of starting the binary. The crashing issue has been fixed but master can't compile at the moment.

ogoffart commented 10 years ago

You need to use the "ocsync" branch of csync

Caffe1neAdd1ct commented 10 years ago

Sorry on csync I checked out the dav branch as per the generic build guide (http://doc.owncloud.org/desktop/1.2/building.html#generic-build-instructions)

If this is what you mean by the ocsync branch then yes i'm already using it..

lucianoes commented 10 years ago

Same error for me. Any ideas?

guruz commented 10 years ago

csync has been merged into mirall. Could you retry?