Indy with Lazarus

From Lazarus wiki
Revision as of 18:56, 27 December 2005 by Marcov (talk | contribs) (Initial version)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Indy for Lazarus

A new attempt at converting Indy is being undertaken by Marco van de Voort.

Currently a lot of Indy is working, but the trouble is that it needs a lot of Lazarus and FPC experience to set up everything correctly, and to solve encountered problems. End-user packaging of Indy is in its infancy.

This page is a first attempt at initial documenting for these issues for experienced users.

Hint: I'm not very interested in support the Kylix side of Indy. (anything that uses unit libc). I ported it only as step up to native Unix RTL using Indy apps.

Requirements

Currently, FPC 2.0.2 is very close to being able to use indy in all its facets. However patches are required to get servers working for Indy10, and also one for Indy9.

For Indy10, the tthread.destroy of Unix targets should look like this:

destructor TThread.Destroy;
begin
 if (FThreadID = GetCurrentThreadID) and not(FFreeOnTerminate)
     and not ffinished then    // if exited via threadfunc, this is probably ok. In case some idiotic tthread
                               // descendant modifies freeonterminate in a destroy method.
   raise EThreadDestroyCalled.Create('A thread cannot destroy itself except by setting FreeOnTerminate and leaving!');

Note the "and not ffinished" part.

For indy9, remove the overriding of tmemorystream.setsize method (Marcov: ???) to get telnet components working.

What works, what not

Indy9:

  • Windows should largely work. Lots of demoes ported.
  • Linux not or barely. No hope at non Linux/x86 (non-Kylix) targets.

Indy10: (Indy10ForFPC branch)

  • Windows and Unix: clients work, servers sometimes have problems. Haven't found a pattern in that yet.
  • The main work for native Unix RTL done. Clients seem to work with FreeBSD.

All: secure versions not tested yet.

Short term plans

  • Convert demoes to demonstrate/test workings.
  • Fix bugs and enter them back into FPC or Indy RCS.

problems

  • Indy9 and Indy10 are mutually exclusive.
    • Indy9 is more used and proven in the industry.
    • Indy10 is more portable, and better long term. However uptake seems to be low.
  • How to deploy? Parts belong to Lazarus, parts to FPC.
  • Lot of pkgs and demoes have paths in them. How to centrally fix them so that unexperienced users can build them?