2017-01-14 16:54 GMT+01:00 Andreas Tille <ti...@debian.org>: > Hi Adrian, > > On Fri, Jan 13, 2017 at 05:29:01PM +0200, Adrian Bunk wrote: >> I saw you were just working on the MRIcron package. >> >> Can you take a look at the patch in >> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813718#40 >> ? > > Thanks for the ping. I tried to turn the suggested patch into a quilt > patch which I commited to Git: > > > https://anonscm.debian.org/git/debian-med/mricron.git/tree/debian/patches/stricter_fpc.patch > > Unfortunately there is a Build-Problem: > > (3104) Compiling /build/mricron-0.20140804.1~dfsg.1/common/dialogsx.pas > /build/mricron-0.20140804.1~dfsg.1/common/dialogsx.pas(75,42) Error: (5000) > Identifier not found "Dialogs" > /build/mricron-0.20140804.1~dfsg.1/common/dialogsx.pas(75,42) Fatal: (2003) > Syntax error, ";" expected but "." found > Fatal: (1018) Compilation aborted > Error: /usr/bin/ppcx64 returned an error exitcode > Error: (lazarus) Compile Project, Target: dcm2nii: stopped with exit code 256 > ERROR: failed compiling of project > /build/mricron-0.20140804.1~dfsg.1/dcm2nii/dcm2nii.lpi > debian/rules:10: recipe for target 'override_dh_auto_build' failed > > > I admit I can not see where a "." mit be but a ";" is expected but > the patch seems to have some issue. >
My patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813718#40 assumes that the "Dialogs" unit is in the uses clause. But the "Dialogs" unit is in the uses clause only when the symbol "GUI" is defined at compilation. I didn't test the compilation without the GUI symbol. I'm attaching a fixed version of the patch:) Regards, Michalis
diff -ur mricron-0.20140804.1~dfsg.1/common/dialogsx.pas mricron-0.20140804.1~dfsg.2/common/dialogsx.pas --- common/dialogsx.pas 2014-01-28 18:06:18.000000000 +0100 +++ common/dialogsx.pas 2017-01-14 22:07:02.839240363 +0100 @@ -68,13 +68,44 @@ function MsgDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word; {$IFDEF GUI} + + { Convert our TMsgDlgButtons type to Dialogs.TMsgDlgButtons type + in a type-safe manner. Do not assume that memory layout matches between + - TMsgDlgButtons and Dialogs.TMsgDlgButtons, or + - TMsgDlgBtn and Dialogs.TMsgDlgBtn. + } + function MsgDlgButtonsConvertToStandard( + const Buttons: TMsgDlgButtons): Dialogs.TMsgDlgButtons; + var + B: TMsgDlgBtn; + begin + Result := []; + for B := Low(B) to High(B) do + if B in Buttons then + { convert our TMsgDlgBtn to Dialogs.TMsgDlgBtn type } + case B of + mbYes : Include(Result, Dialogs.mbYes ); + mbNo : Include(Result, Dialogs.mbNo ); + mbOK : Include(Result, Dialogs.mbOK ); + mbCancel : Include(Result, Dialogs.mbCancel ); + mbAbort : Include(Result, Dialogs.mbAbort ); + mbRetry : Include(Result, Dialogs.mbRetry ); + mbIgnore : Include(Result, Dialogs.mbIgnore ); + mbAll : Include(Result, Dialogs.mbAll ); + mbNoToAll : Include(Result, Dialogs.mbNoToAll ); + mbYesToAll: Include(Result, Dialogs.mbYesToAll); + mbHelp : Include(Result, Dialogs.mbHelp ); + else raise Exception.Create('Unsupported TMsgDlgBtn value'); + end; + end; + var lDlgType : Dialogs.TMsgDlgType; lButtons: Dialogs.TMsgDlgButtons; begin lDlgType := Dialogs.TMsgDlgType(DlgType); - lButtons:= Dialogs.TMsgDlgButtons(Buttons); + lButtons:= MsgDlgButtonsConvertToStandard(Buttons); result := MessageDlg(Msg, lDlgType, lButtons,HelpCtx); {$ELSE} begin