Using the OPM I tried to install LazAutoUpdate package and got an error. I opted to open with the package manager and found that it wouldn't compile. Going through the code I found two errors. The first is in versionsupport.pas where a unit reference is duplicated
Uses
Classes, SysUtils, LCLVersion, LCLPlatformDef;
Function GetFileVersion: String;
Function GetProductVersion: String;
Function GetCompiledDate: String;
Function GetCompilerInfo: String;
Function GetTargetInfo: String;
Function GetOS: String;
Function GetResourceStrings(oStringList : TStringList) : Boolean;
Function GetLCLVersion: String;
function GetWidgetSet: string;
Const
WIDGETSET_GTK = 'GTK widget set';
WIDGETSET_GTK2 = 'GTK 2 widget set';
WIDGETSET_WIN = 'Win32/Win64 widget set';
WIDGETSET_WINCE = 'WinCE widget set';
WIDGETSET_CARBON = 'Carbon widget set';
WIDGETSET_QT = 'QT widget set';
WIDGETSET_fpGUI = 'fpGUI widget set';
WIDGETSET_OTHER = 'Other gui';
Implementation
Uses
resource, versiontypes, versionresource, InterfaceBase;
{$IF (lcl_major > 0) and (lcl_minor > 6)}, LCLPlatformDef {$ENDIF}; //commenting out this line fixes first error
I am unsure why that line is there if there isn't an {$IF} {$ENDIF} around the first unit reference in the main uses clause. Maybe there is something that will cause me trouble later? I don't see how.
The second has to do with LazUTF8SysUtils and the useof TStringListUTF8 in ushortcut.pas. The LazUTF8SysUtils unit is deprecated and the use of TStringListUTF8 no longer needed. See
https://wiki.freepascal.org/Lazarus_3.0_release_notes#LazUTF8Classes_and_LazUTF8SysUtils_unitsI renamed LazUTF8SysUtils to LazSysUtils since some of the functionality remains in that unit (although it may not be needed at all for this package), and replaced TStringListUTF8 with TStringList throughout ushortcut.pas.
I suppose some {$IF}{$ENDIF} blocks will be needed to maintain backwards compatibility, but I don't need that.
I am posting here as I saw a reference to posting here in the documentation.