Complete BigTask
Sync changed files to Google Drive / sync (push) Successful in 3m0s

This commit is contained in:
admin_d committed 2026-09-15 16:07:24 +05:00
1 parent 7fb9935770
commit 741a56552e
8 files changed
+397 -1

No files matched your search

@@ -0,0 +1,27 @@
{
"schema": "kam-android-build/2",
"build_id": "20260915T073140Z-ae91dd89",
"status": "FAIL",
"cpu": "aarch64",
"abi": "arm64-v8a",
"application": {
"name": "kam_mobile",
"caption": "KaM Remake Mobile",
"package": "org.kammobile.kamremake",
"version": "0.4.0",
"version_code": 30,
"game_unit": "GameInitialize"
},
"upstream_commit": "962fb850324b79bbe5480e1c2087d98f83a60917",
"resource_count": 1,
"compile": {
"status": "FAIL",
"exit_code": 1
},
"package": {
"status": "NOT_RUN",
"exit_code": null
},
"package_metadata": null,
"error": "/work/vendor/kam_remake/src/utils/io/KM_IoXML.pas(11,5) Fatal: Can't find unit laz2_DOM used by KM_IoXML"
}
@@ -0,0 +1,5 @@
$ adb version
Android Debug Bridge version 1.0.41
Version 35.0.0-11411520
Installed as /usr/lib/android-sdk/platform-tools/adb
Running on Linux 6.8.0-139-generic (x86_64)
@@ -0,0 +1,4 @@
project service: diagnostic_report_export
source: /work/build/20260915T073140Z-ae91dd89/application/android_services/diagnostic_report_export
castle destination: /usr/local/castle-engine/tools/build-tool/data/android/services/diagnostic_report_export
status: staged
@@ -0,0 +1,40 @@
$ castle-engine --os=android --cpu=aarch64 --compiler=fpc --mode=debug compile
Compiling project "kam_mobile" for OS / CPU "android / aarch64" in mode "debug".
FPC executing...
Free Pascal Compiler version 3.2.2 [2026/08/04] for aarch64
Copyright (c) 1993-2021 by Florian Klaempfl and others
/work/vendor/kam_remake/src/common/KM_CommonTypes.pas(79,57) Note: Values in enumeration types have to be ascending
/work/port-source/kam_remake/src/common/KM_CommonClasses.pas(601,3) Note: Local variable "Encoding" not used
/work/port-source/kam_remake/src/common/KM_CommonClasses.pas(1519,22) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/port-source/kam_remake/src/common/KM_CommonClasses.pas(1528,42) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/port-source/kam_remake/src/common/KM_CommonClasses.pas(1654,49) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/port-source/kam_remake/src/common/KM_CommonClasses.pas(1680,33) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/port-source/kam_remake/src/common/KM_CommonClasses.pas(1690,18) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(81,30) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(131,32) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(403,3) Note: Local variable "ErrorStr" not used
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(447,46) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "RawByteString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(461,49) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(462,73) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(463,52) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(527,3) Note: Local variable "sl" not used
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(556,44) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(564,10) Warning: Function result does not seem to be set
/work/port-source/kam_remake/src/utils/io/KM_FileIO.pas(594,10) Warning: Function result does not seem to be set
/work/vendor/kam_remake/src/KM_Log.pas(146,42) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "RawByteString"
/work/vendor/kam_remake/src/KM_Log.pas(148,45) Warning: Implicit string type conversion from "RawByteString" to "UnicodeString"
/work/vendor/kam_remake/src/KM_Log.pas(151,45) Warning: Implicit string type conversion from "RawByteString" to "UnicodeString"
/work/vendor/kam_remake/src/KM_Log.pas(151,50) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/vendor/kam_remake/src/KM_Log.pas(305,30) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/vendor/kam_remake/src/KM_Log.pas(305,76) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/vendor/kam_remake/src/KM_Log.pas(358,3) Note: Local variable "txt" is assigned but never used
/work/vendor/kam_remake/src/KM_Log.pas(480,27) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/vendor/kam_remake/src/KM_Log.pas(480,35) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/vendor/kam_remake/src/KM_Log.pas(602,66) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
/work/vendor/kam_remake/src/common/KM_Lists.pas(87,46) Warning: Implicit string type conversion with potential data loss from "WideString" to "AnsiString"
/work/vendor/kam_remake/src/common/KM_Lists.pas(105,22) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
/work/vendor/kam_remake/src/utils/io/KM_IoXML.pas(11,5) Fatal: Can't find unit laz2_DOM used by KM_IoXML
Fatal: Compilation aborted
Error: /usr/local/fpclazarus/3.2.2/fpc/bin/ppcrossa64 returned an error exitcode
Exception "Exception":
Failed to compile
@@ -0,0 +1,4 @@
$ java -version
openjdk version "21.0.12" 2026-07-21
OpenJDK Runtime Environment (build 21.0.12+8-1-24.04-Ubuntu)
OpenJDK 64-Bit Server VM (build 21.0.12+8-1-24.04-Ubuntu, mixed mode, sharing)
@@ -0,0 +1,38 @@
{
"castle": {
"status": "NOT_INSTALLED"
},
"fpc": {
"status": "NOT_INSTALLED"
},
"java": {
"status": "PASS",
"exit_code": 0,
"seconds": 0.065,
"command": [
"java",
"-version"
],
"log": "build/20260915T073140Z-ae91dd89/logs/java-version.log",
"output": "$ java -version\nopenjdk version \"21.0.12\" 2026-07-21\nOpenJDK Runtime Environment (build 21.0.12+8-1-24.04-Ubuntu)\nOpenJDK 64-Bit Server VM (build 21.0.12+8-1-24.04-Ubuntu, mixed mode, sharing)\n"
},
"adb": {
"status": "PASS",
"exit_code": 0,
"seconds": 0.004,
"command": [
"adb",
"version"
],
"log": "build/20260915T073140Z-ae91dd89/logs/adb-version.log",
"output": "$ adb version\nAndroid Debug Bridge version 1.0.41\nVersion 35.0.0-11411520\nInstalled as /usr/lib/android-sdk/platform-tools/adb\nRunning on Linux 6.8.0-139-generic (x86_64)\n"
},
"paths": {},
"docker_image_lock": {
"image": "kambi/castle-engine-cloud-builds-tools@sha256:1a67fad233fe7a2e81ed5f750b548c9ef136ed7d36ec061ff96b2e5eb6eaa218",
"image_id": "sha256:1a67fad233fe7a2e81ed5f750b548c9ef136ed7d36ec061ff96b2e5eb6eaa218",
"resolved_from": "kambi/castle-engine-cloud-builds-tools:cge-unstable",
"locked_at": "20260908T161942Z",
"note": "Subsequent runs use this digest, never silently advance the tag."
}
}
+2 -1
View File
@@ -3,7 +3,8 @@
"adaptations": [ "adaptations": [
"src/utils/io/KM_FileIO.pas", "src/utils/io/KM_FileIO.pas",
"src/common/KM_CommonClasses.pas", "src/common/KM_CommonClasses.pas",
"src/settings/KM_GameSettings.pas" "src/settings/KM_GameSettings.pas",
"src/utils/io/KM_IoXML.pas"
], ],
"source_paths": [ "source_paths": [
"code/resource" "code/resource"
@@ -0,0 +1,277 @@
unit KM_IoXML;
{$I KaM_Remake.inc}
interface
uses
Classes, SysUtils,
DOM, XMLRead, XMLWrite;
type
TKMXmlDomDocument = TXMLDocument;
TKMXmlNode = class;
TKMSimpleVariant = record
private
// Internal representation is always a string
fValue: string;
public
class operator Implicit(const A: Boolean): TKMSimpleVariant;
class operator Implicit(const A: Cardinal): TKMSimpleVariant;
class operator Implicit(const A: Integer): TKMSimpleVariant;
class operator Implicit(const A: Single): TKMSimpleVariant;
class operator Implicit(const A: string): TKMSimpleVariant;
class operator Implicit(const A: TDateTime): TKMSimpleVariant;
function AsBoolean: Boolean; overload;
function AsBoolean(aDefault: Boolean): Boolean; overload;
function AsCardinal: Cardinal; overload;
function AsCardinal(aDefault: Cardinal): Cardinal; overload;
function AsDateTime: TDateTime;
function AsFloat: Single; overload;
function AsFloat(aDefault: Single): Single; overload;
function AsInteger: Integer; overload;
function AsInteger(aDefault: Integer): Integer; overload;
function AsString: string; overload;
function AsString(aDefault: string): string; overload;
end;
TKMXmlDocument = class
private
fDocument: TKMXmlDomDocument;
fRoot: TKMXmlNode;
function GetText: String;
procedure SetText(const aText: string);
procedure ApplyDefaultSettings;
class constructor Create;
public
class var FDateFormat: TFormatSettings;
constructor Create(const aRoot: string = 'Root');
destructor Destroy; override;
property Root: TKMXmlNode read fRoot;
procedure LoadFromFile(const aFilename: string; aRoot: string = 'Root'; aReadOnly: Boolean = True);
procedure SaveToFile(const aFilename: string; aCompressed: Boolean = False);
property Text: string read GetText write SetText;
end;
TKMXmlNode = class(TDOMElement)
protected
function GetAttrib(const AttrName: String): TKMSimpleVariant;
procedure SetAttrib(const AttrName: String; const AttrValue: TKMSimpleVariant);
function GetChildsCount: Integer;
function GetChild(const aIndex: Integer): TKMXmlNode;
public
function AddChild(const Name: String): TKMXmlNode;
function FindNode(const Name: String): TKMXmlNode; reintroduce;
function AddOrFindChild(const aChildNodeName: string): TKMXmlNode;
function HasAttribute(const AttrName: String): Boolean;
function HasChild(const Name: String): Boolean;
property Attributes[const AttrName: String]: TKMSimpleVariant read GetAttrib write SetAttrib;
property ChildsCount: Integer read GetChildsCount;
property Childs[const aIndex: Integer]: TKMXmlNode read GetChild;
end;
implementation
uses
Variants, DateUtils, StrUtils;
class constructor TKMXmlDocument.Create;
begin
inherited;
end;
constructor TKMXmlDocument.Create(const aRoot: string = 'Root');
begin
inherited Create;
fDocument := TKMXmlDomDocument.Create;
ApplyDefaultSettings;
if aRoot <> '' then
begin
fRoot := TKMXmlNode(fDocument.CreateElement(aRoot));
fDocument.AppendChild(fRoot);
end;
end;
destructor TKMXmlDocument.Destroy;
begin
fDocument.Free;
inherited;
end;
procedure TKMXmlDocument.ApplyDefaultSettings;
begin
fDocument.XMLVersion := '1.0';
end;
procedure TKMXmlDocument.LoadFromFile(const aFilename: string; aRoot: string = 'Root'; aReadOnly: Boolean = True);
begin
if FileExists(aFilename) then
ReadXMLFile(fDocument, aFilename);
ApplyDefaultSettings;
fRoot := TKMXmlNode(fDocument.DocumentElement.FindNode(aRoot));
if fRoot = nil then
begin
fRoot := TKMXmlNode(fDocument.CreateElement(aRoot));
fDocument.AppendChild(fRoot);
end;
end;
procedure TKMXmlDocument.SaveToFile(const aFilename: string; aCompressed: Boolean = False);
begin
ForceDirectories(ExtractFilePath(ExpandFileName(aFilename)));
WriteXMLFile(fDocument, aFilename);
end;
function TKMXmlDocument.GetText: String;
begin
// Not implemented
end;
procedure TKMXmlDocument.SetText(const aText: string);
begin
// Not implemented
end;
function TKMXmlNode.AddChild(const Name: String): TKMXmlNode;
begin
end;
function TKMXmlNode.FindNode(const Name: String): TKMXmlNode;
begin
end;
function TKMXmlNode.AddOrFindChild(const aChildNodeName: string): TKMXmlNode;
begin
if not HasChild(aChildNodeName) then
Result := AddChild(aChildNodeName)
else
Result := FindNode(aChildNodeName);
end;
function TKMXmlNode.HasAttribute(const AttrName: String): Boolean;
begin
end;
function TKMXmlNode.HasChild(const Name: String): Boolean;
begin
end;
function TKMXmlNode.GetAttrib(const AttrName: String): TKMSimpleVariant;
begin
end;
procedure TKMXmlNode.SetAttrib(const AttrName: String; const AttrValue: TKMSimpleVariant);
begin
end;
function TKMXmlNode.GetChildsCount: Integer;
begin
end;
function TKMXmlNode.GetChild(const aIndex: Integer): TKMXmlNode;
begin
end;
function TKMSimpleVariant.AsBoolean: Boolean;
begin
Result := StrToBool(fValue);
end;
function TKMSimpleVariant.AsBoolean(aDefault: Boolean): Boolean;
begin
Result := StrToBoolDef(fValue, aDefault);
end;
function TKMSimpleVariant.AsCardinal: Cardinal;
begin
Result := StrToInt64(fValue);
end;
function TKMSimpleVariant.AsCardinal(aDefault: Cardinal): Cardinal;
begin
Result := StrToInt64Def(fValue, aDefault);
end;
function TKMSimpleVariant.AsDateTime: TDateTime;
begin
Result := StrToDateTimeDef(fValue, 0, TKMXmlDocument.FDateFormat);
end;
function TKMSimpleVariant.AsFloat: Single;
var
str: string;
begin
str := StringReplace(fValue, '.', FormatSettings.DecimalSeparator, [rfReplaceAll]);
str := StringReplace(str, ',', FormatSettings.DecimalSeparator, [rfReplaceAll]);
Result := StrToFloat(str);
end;
function TKMSimpleVariant.AsFloat(aDefault: Single): Single;
var
str: string;
begin
str := StringReplace(fValue, '.', FormatSettings.DecimalSeparator, [rfReplaceAll]);
str := StringReplace(str, ',', FormatSettings.DecimalSeparator, [rfReplaceAll]);
Result := StrToFloatDef(str, aDefault);
end;
function TKMSimpleVariant.AsInteger: Integer;
begin
Result := StrToInt(fValue);
end;
function TKMSimpleVariant.AsInteger(aDefault: Integer): Integer;
begin
Result := StrToIntDef(fValue, aDefault);
end;
function TKMSimpleVariant.AsString: string;
begin
Result := fValue;
end;
function TKMSimpleVariant.AsString(aDefault: string): string;
begin
if fValue <> '' then
Result := fValue
else
Result := aDefault;
end;
class operator TKMSimpleVariant.Implicit(const A: Boolean): TKMSimpleVariant;
const
BOOL_STR: array [Boolean] of string = ('False', 'True');
begin
Result.fValue := BOOL_STR[A];
end;
class operator TKMSimpleVariant.Implicit(const A: Cardinal): TKMSimpleVariant;
begin
Result.fValue := '$' + IntToHex(A, 8);
end;
class operator TKMSimpleVariant.Implicit(const A: Integer): TKMSimpleVariant;
begin
Result.fValue := IntToStr(A);
end;
class operator TKMSimpleVariant.Implicit(const A: Single): TKMSimpleVariant;
var
str: string;
fs: TFormatSettings;
begin
fs.DecimalSeparator := '.';
str := FormatFloat('0.0000', A, fs);
Result.fValue := str;
end;
class operator TKMSimpleVariant.Implicit(const A: string): TKMSimpleVariant;
begin
Result.fValue := A;
end;
class operator TKMSimpleVariant.Implicit(const A: TDateTime): TKMSimpleVariant;
begin
Result.fValue := DateTimeToStr(A, TKMXmlDocument.FDateFormat);
end;
end.