Bug 225080 - [tcf] Investigate compiling TCF Agent for Windows CE
Summary: [tcf] Investigate compiling TCF Agent for Windows CE
Status: ASSIGNED
Alias: None
Product: TCF
Classification: Tools
Component: Core (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows CE
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Martin Oberhuber CLA
URL:
Whiteboard:
Keywords: helpwanted, investigate
Depends on:
Blocks:
 
Reported: 2008-04-01 08:43 EDT by Martin Oberhuber CLA
Modified: 2014-11-05 09:13 EST (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Oberhuber CLA 2008-04-01 08:43:07 EDT
We should investigate what parts of the TCF Agent use Windows API that's not available on Windows CE (if any), to get a rough idea about porting effort.
Comment 1 Martin Oberhuber CLA 2008-04-01 08:46:58 EDT
To get the TCF agent out of Subversion, use an SVN client such as
  http://tortoisesvn.net/
or
  http://www.eclipse.org/subversive

The anonymous svn repository access is at
  http://dev.eclipse.org/svnroot/dsdp/org.eclipse.tm.tcf/trunk/agent

There are Microsoft Studio *.dsw and *.dsp files for building the agent. Any community help or hints would be appreciated to see how it goes.
Comment 2 Radoslav Gerganov CLA 2008-04-01 11:04:50 EDT
The main problem to compile TCF for Windows CE is missing header files from the C Runtime Library which is stripped for Windows CE. You can find a reference to the Runtime Library for Windows CE here:
http://msdn2.microsoft.com/en-us/library/ms859613.aspx
The solution for this problem is to use Windows APIs where using the runtime library is not possible (process and file management from what I have seen). Here is a list of the header files which are missing for WinCE:

#include <errno.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/utime.h>
#include <io.h>
#include <fcntl.h>

Regarding the Windows APIs which are used, keep in mind that not all of them are available for Windows CE. They are either not supported or have a different name (usually prefixed with "Ce"). Here is a short list of such APIs used in TCF:

SignalObjectAndWait
GetSystemTimeAsFileTime
SHGetFolderPath
GetFullPathName

Do you have serious intentions about porting TCF for Windows CE? I find this agent interesting and I can help if you want.
Comment 3 Edwin Bruckner CLA 2014-09-10 06:59:15 EDT
We have ported a subset of the TCF agent and got it up and running on Windows CE 5.0.
It is not the full TCF agent, only the parts we need to communicate with our target system running windows CE.

If someone is interested in this, we could contribute that part (please tell us, how). What we have to offer is a local git repo with a branch based on 1.2-LUNA, containing customizings for CE5.
Comment 4 Martin Oberhuber CLA 2014-09-12 02:59:11 EDT
(In reply to Edwin Bruckner from comment #3)
This sounds very interesting, thanks ! - I have 2 questions:

1. How big are the changes, could we get a preview ? (Perhaps exported as 
   "git format-patch" and attached on Bugzilla). This would give us a first
   rough idea of what we are talking about.

2. Assume your changes are merged into TCF mainstream, could you also offer
   some maintenance in the sense of letting us know when something breaks ?
   Eg you run some test automation on your local servers against latest
   TCF and let us know when it breaks on Windows CE. 

   The background here is that I wouldn't want the WinCE port to become stale
   when TCF evolves, nobody actively uses CE and we thus don't notice what breaks.

Thanks! 
Martin
Comment 5 Edwin Bruckner CLA 2014-11-05 04:31:59 EST
(Reply to Edwin Bruckner from comment #4)

We have discussed this in our team, and decided to not contribute at the moment:
We will wait until someone is really interested in a WinCE port.

As long as we are the only ones who are using CE, it seems to make no sense for us.

The changes are mainly some #ifdef __WINDOWS_CE__ within the following files:
org.eclipse.tcf.agent/agent/Makefile.inc
org.eclipse.tcf.agent.cvs_head/agent/Makefile.inc
org.eclipse.tcf.agent/agent/tcf/framework/asyncreq.c
org.eclipse.tcf.agent/agent/tcf/framework/errors.c
org.eclipse.tcf.agent/agent/tcf/framework/mdep-fs.h
org.eclipse.tcf.agent/agent/tcf/framework/mdep.c
org.eclipse.tcf.agent/agent/tcf/framework/mdep.h
org.eclipse.tcf.agent.cvs_head/agent/tcf/framework/asyncreq.c
org.eclipse.tcf.agent.cvs_head/agent/tcf/framework/errors.c
org.eclipse.tcf.agent.cvs_head/agent/tcf/framework/mdep.c
org.eclipse.tcf.agent.cvs_head/agent/tcf/framework/mdep.h
org.eclipse.tcf.agent/agent/system/Windows/tcf/pthreads-win32.c
org.eclipse.tcf.agent.cvs_head/agent/system/Windows/tcf/pthreads-win32.c

Another reason why it is not so easy to contribute is that we are using a POSIX threading library implementation, which is LGPLv2.
Comment 6 Martin Oberhuber CLA 2014-11-05 09:13:25 EST
Hello Edwin,

I think that independent of who else might be using Windows CE, there should be value in your contribution : because for any changes that live in the Open Source repository, you won't have to merge in your changes on your end as the code evolves. It's also kind of a chicken-and-egg problem ... somebody has to start making TCF officially be Windows CE aware in order to spark other adopters' interest.

What about following proposal:
  1. You contribute as many of your #ifdef __WINDOWS_CE__ snippets as you can
     - This means fewer files to merge on your end
  2. You perform automated builds of TCF master against Windows CE (using 
     Open Source PLUS any additional modifications that you cannot contribute)
  3. You let us know (via bug / contribution) in case your build automation
     breaks.

I suspect that this will reduce merge work on your end (much fewer files to
keep private) and enable you to pick up tcf updates more often.

We won't officially announce full Windows CE support as long as it's incomplete.
Still I think there's a win-win situation even with only a partial contribution.
The longer-term goal would be moving the WinCE build automation to Eclipse.org
servers at some point.

Does that make sense to you ?

Regarding the posix threading library, I am wondering why you need that when we have pthreads-win32.c in Open Source under EDL ?