README.win 5.46 KB
Newer Older
1 2 3 4 5 6 7
----------------------------------------
Windows port of the freedesktop.org D-Bus
----------------------------------------

Requirements 
------------
- cmake version >= 2.4.4 see http://www.cmake.org 
8
- installed libxml2 or libexpat from http://82.149.170.66/kde-windows/win32libs
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Build
-----

unix
1. install cmake and libxml or libexpat 
2. get dbus sources 
3. mkdir dbus-build 
4. cd dbus-build 
5. cmake <dbus-src-root>/cmake or cmake -DDBUS_USE_EXPAT=on <dbus-src-root>/cmake in case libexpat should de used
5. make 
6. make install

win32
1. Install your prefered compiler
	- Mingw from www.mingw.org 
	- Visual C++ 2005 Express/Studio
26 27 28 29 30 31 32
	
2. Install libxml2 or libexpat packages from 
     http://82.149.170.66/kde-windows/win32libs
   into a subdir win32libs in your program installation eg 
     - german  => "c:\Programme\win32libs"
     - english => "c:\Program Files\win32libs" 
     
33
3. download and install the most recent CMake version from http://www.cmake.org/files/
34

35
4. apply dbus-win.patch: 'patch -p0 -i dbus-win.patch'
36

37 38 39 40 41 42
5. open command shell and run in the created build folder which resides side by side 
   to the D-Bus sources:
   	- for mingw: 
		cmake -G "MinGW Makefiles" <options> ..\<dbus-source-root>\cmake
	- for Visual C++
		cmake ..\<dbus-source-root>\cmake
43

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
7. build


Tests
-----
(when build with the Visual C++ IDE the *.exe files are 
in the bin/Debug and bin/Release folder)

 - dbus library check 
		bin\dbus-test.exe .\test\data
	
 - bus daemon check 
		bin\bus-test.exe .\test\data

 - check available names 
		bin\test_names.exe 

 - check if dbus-daemon is accessable 
		bin\dbus-send.exe --session --type=method_call --print-reply --dest=org.freedesktop.DBus / org.freedesktop.DBus.ListNames method return sender=org.freedesktop.DBus -> dest=:1.4 array [ 	      string "org.freedesktop.DBus"string ":1.4"] 
		
 - start dbus-daemon
		* set DBUS_VERBOSE=0  (=1 for getting debug infos)
		* start bin\dbus-daemon --session
		* bin\dbus-send.exe  --dest=org.freedesktop.DBus --print-reply --type=method_call / org.freedesktop.DBus.StartServiceByName string:org.freedesktop.DBus.TestSuiteEchoService  uint32:455 method return sender=org.freedesktop.DBus -> dest=:1.8 uint32 2



Some build options
-------------
    key                        description                            default value
    ---                        -----------                            -------------
DBUS_USE_EXPAT              "Use expat (== ON) or libxml2 (==OFF)         OFF
DBUS_DISABLE_ASSERTS        "Disable assertion checking"                  OFF
DBUS_BUILD_TESTS            "enable unit test code"                       ON
DBUS_ENABLE_ANSI            "enable -ansi -pedantic gcc flags"            OFF
DBUS_ENABLE_GCOV            "compile with coverage profiling 
                             instrumentation (gcc only)"                  OFF
DBUS_ENABLE_VERBOSE_MODE    "support verbose debug mode"                  ON
DBUS_DISABLE_CHECKS         "Disable public API sanity checking"          OFF
DBUS_INSTALL_SYSTEM_LIBS    "install required system libraries 
                             (mingw: libxml2, libiconv, mingw10)"         OFF
CMAKE_BUILD_TYPE            "build type (== debug) or (== release)        release



Developers
----------

Running the tests in Visual Studio:

 To successfully run the tests by the IDE you must add
 the FULL patch to test\data in your build directory
 (e.g. c:\dbus\build\test\data)  
 in something like 
  -> Project Settings
    -> Debugging
       -> Command line arguments
    
    
       
FAQ
---

- How much work remains till DBUS win32 can be merged with the main project?

There are some patches outstanding and the most effort is required in
discussions with the main dbus team how to implement some parts. One of
the main dbus team estimated the open work to one fulltime week.
http://lists.freedesktop.org/archives/dbus/2006-November/006264.html

I assume they will answer ALL your questions, and they are very
interested in fully supporting win32.

- How far is WinDBus from being usable for production ?
dbus comes with a test suite which is used on unix to guarantate
production quality and this test suite runs mostly. There are some 
test not running and we need help to get them running.

In the pratice I and some other people are using dbus for at least more
than a half year in conjunction with kde on windows without any problems.


- On UNIX D-Bus uses UNIX sockets to communicate (correct me if I'm wrong). 
  What is used on Windows ?
  
tcp sockets, there are some efforts to get named pipe running, but some
design problems of the win32 api, we are not able to solve without
bigger changes to the dbus code base let us stop this effort.


- Do you have any clue if dbus-win32 can run in a Windows CE environment?

I was told that windows ce does not have posix function
open/close/select/... and dbus code uses such function in some area.


- Do you know if the C++ binding made by OpenWengo will be easily portable to Windows?

We have already ported the OpenWengo dbus-c++ binding, see in WinDBus svn  (http://sf.net/projects/windbus)
The related test applicationa are running well.


TODO
----

February 2007:

- all changes of dbus-win.patch should become part of the official D-Bus code
  
- all code currently disabled by DBUS_WIN_FIXME should work
  
- clean up:
    * bus/bus-service-win.c
    * bus/dir-watch.c
    * dbus/dbus-spawn-win.c
    * dbus/dbus-sysdeps-util-win.c
    * dbus/dbus-sysdeps-win.c


see also:
http://lists.freedesktop.org/archives/dbus/2006-July/005076.html