Fr0sT.Brutal 900 Posted August 26, 2020 (edited) 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 August 26, 2020 by Fr0sT.Brutal Share this post Link to post
FPiette 383 Posted August 26, 2020 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. Share this post Link to post
Angus Robertson 574 Posted August 26, 2020 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
Fr0sT.Brutal 900 Posted August 26, 2020 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
Angus Robertson 574 Posted August 26, 2020 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
Fr0sT.Brutal 900 Posted August 26, 2020 (edited) 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 August 26, 2020 by Fr0sT.Brutal Share this post Link to post
Angus Robertson 574 Posted August 26, 2020 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
Fr0sT.Brutal 900 Posted August 26, 2020 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
Lars Fosdal 1792 Posted August 26, 2020 An cleaner alternative to GetTickCount, but perhaps a little more costly is System.TimeSpan and System.Diagnostics.TStopWatch? Share this post Link to post
Angus Robertson 574 Posted August 26, 2020 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
Fr0sT.Brutal 900 Posted August 26, 2020 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
Lars Fosdal 1792 Posted August 26, 2020 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
FredS 138 Posted August 26, 2020 (edited) 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 August 26, 2020 by FredS Share this post Link to post
Angus Robertson 574 Posted August 26, 2020 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
Fr0sT.Brutal 900 Posted August 26, 2020 (edited) Changed all Mac stuff in Posix.Messages to stubs (result is attached as well), fixed some more things (Longint etc). So far 52 ICS units could be built and 54 couldn't 0001-some-more-changes-to-build-for-Linux.patch Ics.Posix.Messages.pas Edited August 26, 2020 by Fr0sT.Brutal Share this post Link to post
Angus Robertson 574 Posted September 7, 2020 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
FPiette 383 Posted September 7, 2020 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
Angus Robertson 574 Posted September 7, 2020 This error is building the package under windows, it can not find RTL, Angus Share this post Link to post
Fr0sT.Brutal 900 Posted April 20, 2021 (edited) 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 April 20, 2021 by Fr0sT.Brutal Share this post Link to post
Angus Robertson 574 Posted April 20, 2021 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
Fr0sT.Brutal 900 Posted April 21, 2021 Ok, I got your point. Full source files, fine Share this post Link to post
FearDC 1 Posted January 24 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
Angus Robertson 574 Posted January 24 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
FearDC 1 Posted January 24 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
FPiette 383 Posted January 25 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