summaryrefslogtreecommitdiff
path: root/databases/heidisql/files
diff options
context:
space:
mode:
Diffstat (limited to 'databases/heidisql/files')
-rw-r--r--databases/heidisql/files/patch-source_apphelpers.pas63
-rw-r--r--databases/heidisql/files/patch-source_dbconnection.pas127
-rw-r--r--databases/heidisql/files/pkg-message.in26
3 files changed, 216 insertions, 0 deletions
diff --git a/databases/heidisql/files/patch-source_apphelpers.pas b/databases/heidisql/files/patch-source_apphelpers.pas
new file mode 100644
index 000000000000..2d542650c371
--- /dev/null
+++ b/databases/heidisql/files/patch-source_apphelpers.pas
@@ -0,0 +1,63 @@
+--- source/apphelpers.pas 2025-12-16 11:00:34.000000000 -0800
++++ source/apphelpers.pas 2025-12-17 00:09:19.625236000 -0800
+@@ -1316,16 +1316,21 @@
+ {$IFDEF LINUX}
+ Result := '';
+ {$ENDIF}
++ {$IFDEF FREEBSD}
++ Result := '';
++ {$ENDIF}
+ end;
+
+ function GetResourcesDir: String;
+ begin
++ Result := GetAppDir;
+ // point to resources dir in macOS app bundle
+ {$IFDEF DARWIN}
+ Result := GetAppDir + '..' + DirectorySeparator + 'Resources' + DirectorySeparator;
+- {$ELSE}
+- Result := GetAppDir;
+ {$ENDIF}
++ {$IFDEF FREEBSD}
++ Result := '%%DATADIR%%/';
++ {$ENDIF}
+ end;
+
+ {**
+@@ -2911,7 +2916,7 @@
+ Output: String;
+ CmdResult: Boolean;
+ begin
+- {$IfDef LINUX}
++ {$if defined(LINUX) or defined(FREEBSD)}
+ // Netcat on Linux
+ CmdResult := Process.RunCommandInDir('', 'nc', ['-w 1 -zv 127.0.0.1 '+Port.ToString], Output);
+ Result := not CmdResult;
+@@ -3026,7 +3031,7 @@
+ FreeLibrary(NTHandle);
+ end;
+ {$EndIf}
+- {$IfDef LINUX}
++ {$if defined(LINUX) or defined(FREEBSD)}
+ IsWineStored := 0;
+ {$EndIf}
+ Result := IsWineStored = 1;
+@@ -3063,6 +3068,9 @@
+ function GetOS: String;
+ begin
+ Result := 'Unknown';
++ {$IfDef FreeBSD}
++ Result := 'FreeBSD';
++ {$EndIf}
+ {$IfDef LINUX}
+ Result := 'Linux';
+ {$EndIf}
+@@ -4569,7 +4577,7 @@
+ 1: begin // String
+ Value := StringReplace(Value, CHR13REPLACEMENT, #13, [rfReplaceAll]);
+ Value := StringReplace(Value, CHR10REPLACEMENT, #10, [rfReplaceAll]);
+- {$IfDef LINUX}
++ {$if defined(LINUX) or defined(FREEBSD)}
+ Value := ConvertWindowsToLinuxPath(Value);
+ {$EndIf}
+ FRegistry.WriteString(Name, Value);
diff --git a/databases/heidisql/files/patch-source_dbconnection.pas b/databases/heidisql/files/patch-source_dbconnection.pas
new file mode 100644
index 000000000000..bf2637ad4a58
--- /dev/null
+++ b/databases/heidisql/files/patch-source_dbconnection.pas
@@ -0,0 +1,127 @@
+--- source/dbconnection.pas 2025-12-16 22:09:54.829290000 -0800
++++ source/dbconnection.pas 2025-12-16 22:11:26.512363000 -0800
+@@ -231,10 +231,10 @@
+ end;
+ TDatabaseCache = class(TObjectList<TDBObjectList>); // A list of db object lists, used for caching
+ TDBObjectComparer = class(TComparer<TDBObject>)
+- function Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
++ function Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
+ end;
+ TDBObjectDropComparer = class(TComparer<TDBObject>)
+- function Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
++ function Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
+ end;
+
+ TOidStringPairs = TDictionary<POid, String>;
+@@ -1911,7 +1911,7 @@
+ {$If defined(WINDOWS) OR defined(DARWIN)}
+ DllPath, DllFile: String;
+ Dlls: TStringList;
+- {$ElseIf defined(LINUX)}
++ {$ElseIf defined(LINUX) OR defined(FREEBSD)}
+ LibMapOutput, LibMap: String;
+ LibMapLines: TStringList;
+ {$EndIf}
+@@ -1926,9 +1926,11 @@
+ rx.ModifierI := True;
+ case NetTypeGroup of
+ ngMySQL:
+- {$IfDef LINUX}
++ {$If defined(LINUX)}
+ // libmariadb.so.0 (libc,...) => /lib/x86_64-linux-gnu/libmariadb.so
+ rx.Expression := '^\s*lib(mysqlclient|mariadb|perconaserverclient)\.[^=]+=>\s*(\S+)$';
++ {$ElseIf defined(FREEBSD)}
++ rx.Expression := '(mysqlclient|mariadb|perconaserverclient)[^=]+=>\s*(\S+)$';
+ {$Else}
+ rx.Expression := '^lib(mysql|mariadb).*\.' + SharedSuffix;
+ {$EndIf}
+@@ -1939,14 +1941,18 @@
+ rx.Expression := '^(dblib|libsybdb).*\.' + SharedSuffix;
+ {$EndIf}
+ ngPgSQL:
+- {$IfDef LINUX}
++ {$If defined(LINUX)}
+ rx.Expression := '^\s*(libpq)[^=]+=>\s*(\S+)$';
++ {$ElseIf defined(FREEBSD)}
++ rx.Expression := '(lpq)[^=]+=>\s*(\S+)$';
+ {$Else}
+ rx.Expression := '^libpq.*\.' + SharedSuffix;
+ {$EndIf}
+ ngSQLite: begin
+- {$IfDef LINUX}
++ {$If defined(LINUX)}
+ rx.Expression := '^\s*(libsqlite3)[^=]+=>\s*(\S+)$';
++ {$ElseIf defined(FREEBSD)}
++ rx.Expression := '(lsqlite3)[^=]+=>\s*(\S+)$';
+ {$Else}
+ if NetType = ntSQLite then
+ rx.Expression := '^(lib)?sqlite.*\.' + SharedSuffix
+@@ -1959,9 +1965,13 @@
+ end;
+ case NetTypeGroup of
+ ngMySQL, ngMSSQL, ngPgSQL, ngSQLite, ngInterbase: begin
++ {$if defined(LINUX) or defined(FREEBSD)}
+ {$IfDEF LINUX}
+ // See https://serverfault.com/a/513938
+ Process.RunCommandInDir('', '/sbin/ldconfig', ['-p'], LibMapOutput);
++ {$Else}
++ Process.RunCommandInDir('', '/sbin/ldconfig', ['-r'], LibMapOutput);
++ {$EndIf}
+ LibMapLines := Explode(sLineBreak, LibMapOutput);
+ for LibMap in LibMapLines do begin
+ if rx.Exec(LibMap) and FileExists(rx.Match[2]) then begin
+@@ -3301,6 +3311,11 @@
+ begin
+ // Init libmysql before actually connecting.
+ LibraryPath := GetLibDir + Parameters.LibraryOrProvider;
++{$IF DEFINED(LINUX) OR DEFINED(FREEBSD)}
++ LibraryPath := Parameters.LibraryOrProvider;
++{$ELSE}
++ LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryOrProvider;
++{$ENDIF}
+ Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
+ // Throws EDbError on any failure:
+ FLib := TMySQLLib.Create(LibraryPath, Parameters.DefaultLibrary);
+@@ -3315,7 +3330,11 @@
+ msg: String;
+ begin
+ // Init lib before actually connecting.
+- LibraryPath := GetLibDir + Parameters.LibraryOrProvider;
++{$IF DEFINED(LINUX) OR DEFINED(FREEBSD)}
++ LibraryPath := Parameters.LibraryOrProvider;
++{$ELSE}
++ LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryOrProvider;
++{$ENDIF}
+ Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
+ try
+ FLib := TPostgreSQLLib.Create(LibraryPath, Parameters.DefaultLibrary);
+@@ -3346,7 +3365,11 @@
+ LibraryPath: String;
+ begin
+ // Init lib before actually connecting.
+- LibraryPath := GetLibDir + Parameters.LibraryOrProvider;
++{$IF DEFINED(LINUX) OR DEFINED(FREEBSD)}
++ LibraryPath := Parameters.LibraryOrProvider;
++{$ELSE}
++ LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryOrProvider;
++{$ENDIF}
+ Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
+ // Throws EDbError on any failure:
+ if Parameters.NetType = ntSQLite then
+@@ -10238,14 +10261,14 @@
+
+ { TDBObjectComparer }
+
+-function TDBObjectComparer.Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
++function TDBObjectComparer.Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
+ begin
+ // Simple sort method for a TDBObjectList
+ Result := CompareAnyNode(Left.Schema+'.'+Left.Name, Right.Schema+'.'+Right.Name);
+ end;
+
+
+-function TDBObjectDropComparer.Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
++function TDBObjectDropComparer.Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
+ begin
+ // Sorting a TDBObject items so that dropping them does not trap in SQL errors
+ if (Left.NodeType = lntTrigger) and (Right.NodeType <> lntTrigger) then
diff --git a/databases/heidisql/files/pkg-message.in b/databases/heidisql/files/pkg-message.in
new file mode 100644
index 000000000000..805b720ea77e
--- /dev/null
+++ b/databases/heidisql/files/pkg-message.in
@@ -0,0 +1,26 @@
+[
+{ type: install
+ message: <<EOM
+HeidiSQL was installed
+
+1) HeidiSQL needs client library to connect to a supported database. Well
+ supported databases are MySQL/MariaDB, PostgreSQL and SQLite.
+
+ # pkg search -x "^(mysql|mariadb)[0-9].*-client-*"
+ # pkg search -x "^postgresql.*-client-*"
+ # pkg search -x "^(sqlite|sqlite3)-[2|3]"
+
+2) Do not forget install client library. E.g. an user wants use postgresql from
+ HeidiSQL.
+
+ # pkg install postgresql17-client
+
+3) HeidiSQL can be compiled and installed with supports for gtk2, qt5 or qt6
+ graphic interfaces.
+
+ # pkg install heidisql-qt6
+
+4) Enjoy it!
+EOM
+}
+]