Jump to content

Recommended Posts

Hmm, tried building ICS nightly, compiler complains about overloaded functions not marked with directive in impl section though they're marked such in decl section. Very weird. D10.3

 

upd Got it, some forgotten directives

Edited by Fr0sT.Brutal

Share this post


Link to post
4 hours ago, Angus Robertson said:

Issues with xRDP and Ubuntu 18.04.2

I wonder why you need xRDP. Didn't you install the GUI for Ubuntu? I have a full Ubuntu desktop that I can see as a window on my Windows 10 and I can do anything in the Linux OS. I also have network shares between Windows and Linux, both directions to easy access to files.

On the attached screen dump, you see VMWare workstation running Ubuntu and showing Ubuntu GUI. You can also see part of Delphi IDE.

Capture.thumb.JPG.e3a422b2dd5578cf0a923ecade748115.JPG

Share this post


Link to post

The overloaded functions error is almost certainly down to our using variously RawByteString, UnicodeString, AnsiString, PWideChar and UTF8String for overloaded functions, and maybe more, two of which may be the same in the Linux compiler, but I've really not looked yet. 

 

Angus

 

Share this post


Link to post
1 minute ago, Angus Robertson said:

The overloaded functions error is almost certainly down to our using variously RawByteString, UnicodeString, AnsiString, PWideChar and UTF8String for overloaded functions, and maybe more, two of which may be the same in the Linux compiler, but I've really not looked yet. 

 

Angus

 

No I figured it out already. There was missing IFDEF.

The main problem is Ics.Posix.Messages as it uses plenty of Macos types and functions.

Share this post


Link to post

As I understand it. RDP is how Hyper-V displays the VM window, no different to using RDP separately, the VMs the  Quick Create don't support any other means of access, no open ports for a terminal or anything. 

 

Angus

 

Share this post


Link to post

Fixes to current SVN trunk to build under Linux

1) Change "stream.Seek(N, soFromBeginning)" to "stream.Position := N"; add some typecasts to Longint to avoid ambiguous overload call

2) Some fixes to build - commented out fragments still must be implemented! (I haven't found where 'tms' and 'times' are declared).

0001-Change-stream.Seek-N-soFromBeginning-to-stream.Posit.patch

0002-Some-fixes-to-build-under-Linux-still-must-be-implem.patch

 

Posix.Messages still seems the biggest task

Edited by Fr0sT.Brutal

Share this post


Link to post

The simple fix for tms/times is to replace the line with something more modern:

 

Result := System.Classes.TThread.GetTickCount;

 

Angus

 

 

 

Share this post


Link to post
3 minutes ago, Angus Robertson said:

The simple fix for tms/times is to replace the line with something more modern:

Result := System.Classes.TThread.GetTickCount;

Or to copypaste its contents to avoid including whole Classes for this only purpose

Share this post


Link to post

An cleaner alternative to GetTickCount, but perhaps a little more costly is System.TimeSpan and System.Diagnostics.TStopWatch?

Share this post


Link to post

If the latest RTL implements GetTickCount on all supported platforms, and hopefully new ones, why would an alternative be better? 

 

Not sure which Delphi version implemented it, but MacOS-32 seems to be out of support now so ICS really only needs to support Posix/Mac for 10.3.2 and later.

 

Angus

Share this post


Link to post
Just now, Angus Robertson said:

If the latest RTL implements GetTickCount on all supported platforms, and hopefully new ones, why would an alternative be better?

In 10.3 they implemented it twice - in System (as private) and in Classes as TThread's static method. I'm not sure which one of these is the most stupid *facepalm*

Share this post


Link to post
2 minutes ago, Angus Robertson said:

If the latest RTL implements GetTickCount on all supported platforms, and hopefully new ones, why would an alternative be better? 

 

Not sure which Delphi version implemented it, but MacOS-32 seems to be out of support now so ICS really only needs to support Posix/Mac for 10.3.2 and later.

 

Angus

TimeSpan allows you to measure in milliseconds without having to think about the underlying details.

Share this post


Link to post
1 hour ago, Angus Robertson said:

Quick Create don't support any other means of access

- Quick installed Ubuntu 20.04

- ran: `sudo apt-get install openssh-server`

- connected via WSL from Host:

fred@PUTER:~$ sudo ssh fred@172.17.134.53
fred@172.17.134.53's password:
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)

 

Edited by FredS

Share this post


Link to post

Sure it's fine once you get a terminal window to install new components, but my problem was not getting past the login screen with an xorg session that needs RDP, and other methods like console and xvnc not working because they were not installed by default. 

 

Angus

 

Share this post


Link to post

After updating to 10.4.1, installing FMXLinux, updating PAServer to the latest, and recreating my Linux Profile, I can now build and run the FMXLinux sample, so it does all work on UBUNTU 20.04.

 

However, when building the new ICS Linux package (which is in SVN) I now get: E2597 ld-linux.exe: error: cannot find bplrtl270.so despite adding binlinux64 to the system path. Also 79 FMX units mplicitly imported into the package.  

 

Still ned to fix the message pump, but getting closer.

 

Angus
 

Share this post


Link to post
51 minutes ago, Angus Robertson said:

bplrtl270.so

Are you building using run time packages and you didn't deployed it on Linux?

Share this post


Link to post

Trying to build latest "ICS V8.67 - Part 2" for Debian. Besides several "stream.Seek"'s that I fixed the most serious issue is that "kqueue" is used for message loop which is only available at *BSD. This topic recommends using epoll instead or some 3rd-party lib.

Edited by Fr0sT.Brutal

Share this post


Link to post

I thought I fixed all the incompatibilities with Linux, I was certainly able to build packages for V8.65. 

 

But I am not planning any further work to actually test it or make ICS work in Linux, unless someone pays me, I have no plans to write any Linux applications myself. 

 

So it's up to those that actually want to use ICS with Linux to make it work, I will then update SVN (with complete source files, not patches). 

 

Angus

 

Share this post


Link to post
On 4/20/2021 at 5:56 PM, Fr0sT.Brutal said:

Trying to build latest "ICS V8.67 - Part 2" for Debian. Besides several "stream.Seek"'s that I fixed the most serious issue is that "kqueue" is used for message loop which is only available at *BSD. This topic recommends using epoll instead or some 3rd-party lib.

@Fr0sT.Brutal Did you find a workaround for this? I'm on Ubuntu, tried installing libkqueue-dev, event.h is present. ICS 9.0, Delphi 12, OverbyteICSWSocket.

Share this post


Link to post

ICS V9.0/V9.1 (soon) should support MacOS, but do not support Linux.  There are some conditionals to make ICS ready for Linux and Android, and packages for both, I built them yesterday, will be in SVN later this week, but these are only to allow future Linux compatibility. 

 

ICS V10 will include full support for Linux, a very early version is at https://svn.overbyte.be/svn/icsv10/  but only has a couple of simple socket samples, it is Delphi 10.4 and later only.  But there are hundreds of existing units that need converting to V10, which I plan to do later this year. 

 

Angus

Share this post


Link to post

So you mean that it is not possible to just install kqueue library + headers on my Linux distro? It has rather be a part of Linux kernel, like on BSD or MacOS?

 

If yes, then what if we conditionally replace kqueue with epoll, like you already started implementing in ICS10, will it work? With other words - is kqueue the last thing that can't get past compilation in ICS, or are there more similar cases?

 

Regards.

Share this post


Link to post
10 hours ago, FearDC said:

So you mean that it is not possible to just install kqueue library + headers on my Linux distro? It has rather be a part of Linux kernel, like on BSD or MacOS?

 

If yes, then what if we conditionally replace kqueue with epoll, like you already started implementing in ICS10, will it work? With other words - is kqueue the last thing that can't get past compilation in ICS, or are there more similar cases?

 

Regards.

When I created ICS V10, the goal was to use only libraries that are installed in my Ubuntu 20.04 distribution. And it TWSocket is working now.. I started to plus OpenSSL into the code a few months ago but stopped because I had other work to do.

You are really welcome to work on ICS V10, but please start with what I already done. I can make the current state available (SVN is not up-to-date because I don't like to push not working code). Let me know.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×