diff options
Diffstat (limited to 'databases/heidisql')
| -rw-r--r-- | databases/heidisql/Makefile | 53 | ||||
| -rw-r--r-- | databases/heidisql/distinfo | 3 | ||||
| -rw-r--r-- | databases/heidisql/files/patch-source_apphelpers.pas | 63 | ||||
| -rw-r--r-- | databases/heidisql/files/patch-source_dbconnection.pas | 127 | ||||
| -rw-r--r-- | databases/heidisql/files/pkg-message.in | 26 | ||||
| -rw-r--r-- | databases/heidisql/pkg-descr | 5 | ||||
| -rw-r--r-- | databases/heidisql/pkg-plist | 9 |
7 files changed, 286 insertions, 0 deletions
diff --git a/databases/heidisql/Makefile b/databases/heidisql/Makefile new file mode 100644 index 000000000000..74f024f7d6c5 --- /dev/null +++ b/databases/heidisql/Makefile @@ -0,0 +1,53 @@ +PORTNAME= heidisql +DISTVERSION= 12.14.1.1 +DISTVERSIONPREFIX= v +CATEGORIES= databases +PKGNAMESUFFIX= ${LAZARUS_PKGNAMESUFFIX} + +MAINTAINER= acm@FreeBSD.org +COMMENT= a lightweight client for managing multiple databases +WWW= https://www.heidisql.com/ + +LICENSE= GPLv2 + +ONLY_FOR_ARCHS= aarch64 amd64 i386 + +USES= desktop-file-utils fpc lazarus:flavors xorg +USE_XORG= x11 +USE_GITHUB= yes +GH_ACCOUNT= HeidiSQL +GH_PROJECT= HeidiSQL +GH_TAGNAME= 2967ad28b4e3172e302cb8d487c0d3a5c752b3f + +LAZARUS_PROJECT_FILES+= heidisql.lpi + +LAZBUILD_ARGS= -d + +gtk2_CONFLICTS_INSTALL= ${PORTNAME}-qt5 ${PORTNAME}-qt6 +qt5_CONFLICTS_INSTALL= ${PORTNAME}-gtk2 ${PORTNAME}-qt6 +qt6_CONFLICTS_INSTALL= ${PORTNAME}-gtk2 ${PORTNAME}-qt5 + +USE_FPC_gtk2= cairo +USE_GNOME_gtk2= cairo +USE_FPC+= ${USE_FPC_${FLAVOR}} +USE_GNOME+= ${USE_GNOME_${FLAVOR}} + +SUB_FILES= pkg-message + +post-patch: + ${REINPLACE_CMD} -e 's|FPC_FULLVERSION<30204|FPC_FULLVERSION<30203|g' \ + ${WRKSRC}/source/main.pas ${WRKSRC}/source/usermanager.pas + ${REINPLACE_CMD} -e 's|System.UITypes,||g' ${WRKSRC}/source/table_editor.pas \ + ${WRKSRC}/source/grideditlinks.pas + ${REINPLACE_CMD} -e 's| \+ \[ofAllowMultiSelect\]||g' ${WRKSRC}/source/main.pas + ${REINPLACE_CMD} -e 's|%%DATADIR%%|${DATADIR}|g' ${WRKSRC}/source/apphelpers.pas + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/out/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_DATA} ${WRKSRC}/package-skeleton/usr/share/applications/${PORTNAME}.desktop ${STAGEDIR}${PREFIX}/share/applications/${PORTNAME}.desktop + @${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps + ${INSTALL_DATA} ${WRKSRC}/res/deb-package-icon.png ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps/${PORTNAME}.png + @${MKDIR} ${STAGEDIR}${DATADIR} + ${INSTALL_DATA} ${WRKSRC}/extra/ini/*.ini ${STAGEDIR}${DATADIR} + +.include <bsd.port.mk> diff --git a/databases/heidisql/distinfo b/databases/heidisql/distinfo new file mode 100644 index 000000000000..e8689ddf9710 --- /dev/null +++ b/databases/heidisql/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1765951752 +SHA256 (HeidiSQL-HeidiSQL-v12.14.1.1-2967ad28b4e3172e302cb8d487c0d3a5c752b3f_GH0.tar.gz) = 9fbbf09f21220d3f96ea37f4d869dc18cd0f3a67073ca2a8b3539473cd9c79e6 +SIZE (HeidiSQL-HeidiSQL-v12.14.1.1-2967ad28b4e3172e302cb8d487c0d3a5c752b3f_GH0.tar.gz) = 27522595 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 +} +] diff --git a/databases/heidisql/pkg-descr b/databases/heidisql/pkg-descr new file mode 100644 index 000000000000..bd2f5156743c --- /dev/null +++ b/databases/heidisql/pkg-descr @@ -0,0 +1,5 @@ +HeidiSQL is a graphical interface for managing MariaDB or MySQL servers, +Microsoft SQL databases, PostgreSQL, SQLite, Interbase or Firebird. "Heidi" +lets you browse and edit data, create and edit tables, views, procedures, +triggers and scheduled events. Also, you can export structure and data, either +to SQL file, clipboard or to other servers. diff --git a/databases/heidisql/pkg-plist b/databases/heidisql/pkg-plist new file mode 100644 index 000000000000..74be7c7b9f38 --- /dev/null +++ b/databases/heidisql/pkg-plist @@ -0,0 +1,9 @@ +bin/heidisql +share/applications/heidisql.desktop +%%DATADIR%%/functions-mariadb.ini +%%DATADIR%%/functions-mysql.ini +%%DATADIR%%/functions-mysql8.ini +%%DATADIR%%/functions-postgresql.ini +%%DATADIR%%/functions-redshift.ini +%%DATADIR%%/functions-sqlite.ini +share/icons/hicolor/256x256/apps/heidisql.png |
