[packages/fpc] - fix building docs, again

baggins baggins at pld-linux.org
Tue Jun 6 21:07:31 CEST 2017


commit dd3f385efe2d7ff5ec60561e80f769e12736ed84
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Tue Jun 6 21:07:14 2017 +0200

    - fix building docs, again

 fpc-r34749.patch    | 390 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 fpc.spec            |   6 +-
 fpcdocs-r1260.patch |  20 +--
 3 files changed, 405 insertions(+), 11 deletions(-)
---
diff --git a/fpc.spec b/fpc.spec
index 31bfcbd..4413cf8 100644
--- a/fpc.spec
+++ b/fpc.spec
@@ -24,6 +24,7 @@ Patch2:		%{name}-gdb.patch
 Patch3:		fpc-r32374.patch
 Patch4:		fpcdocs-r1260.patch
 Patch5:		fpc-man.patch
+Patch6:		fpc-r34749.patch
 URL:		http://www.freepascal.org/
 BuildRequires:	binutils-devel >= 3:2.17.50
 BuildRequires:	gpm-devel
@@ -135,8 +136,9 @@ Dokumentacja do fpc w formacie PDF.
 %patch1 -p1
 %patch2 -p1
 %patch3 -p0
-#%patch4 -p0
+%patch4 -p0
 %patch5 -p1
+%patch6 -p0
 
 %ifarch %{ix86}
 tar xf %{SOURCE1}
@@ -208,6 +210,7 @@ PP=`pwd`/bin/lib/%{name}/%{_bver}/ppc%{_bname}
 NEWPP=`pwd`/fpcsrc/compiler/ppc%{_bname}
 NEWFPDOC=`pwd`/fpcsrc/utils/fpdoc/bin/%{_barch}-linux/fpdoc
 DATA2INC=`pwd`/fpcsrc/utils/bin/%{_barch}-linux/data2inc
+FPCSRCDIR=`pwd`/fpcsrc
 
 # DO NOT PUT $RPM_OPT_FLAGS IN OPT, IT DOES NOT WORK - baggins
 case "%{_build_cpu}" in
@@ -251,6 +254,7 @@ export save_size=10000
 %{__make} -j1 -C fpcdocs \
 	FPDOC=$NEWFPDOC \
 	FPC="$NEWPP" \
+	FPCSRCDIR="$FPCSRCDIR" \
 	pdf
 %endif
 
diff --git a/fpc-r34749.patch b/fpc-r34749.patch
new file mode 100644
index 0000000..b4919eb
--- /dev/null
+++ b/fpc-r34749.patch
@@ -0,0 +1,390 @@
+Index: fpcsrc/utils/fpdoc/dglobals.pp
+===================================================================
+--- fpcsrc/utils/fpdoc/dglobals.pp	(revision 34748)
++++ fpcsrc/utils/fpdoc/dglobals.pp	(revision 34749)
+@@ -161,6 +161,7 @@
+   SUsageOption120  = '                  At least one input option is required.';
+   SUsageOption130  = '--input-dir=Dir   Add All *.pp and *.pas files in Dir to list of input files';
+   SUsageOption140  = '--lang=lng        Select output language.';
++  SUsageOption145  = '--macro=name=value Define a macro to preprocess the project file with.';
+   SUsageOption150  = '--ostarget=value  Set the target OS for the scanner.';
+   SUsageOption160  = '--output=name     use name as the output name.';
+   SUsageOption170  = '                  Each backend interprets this as needed.';
+@@ -183,6 +184,7 @@
+   SUsageFormats        = 'The following output formats are supported by this fpdoc:';
+   SUsageBackendHelp    = 'Specify an output format, combined with --help to get more help for this backend.';
+   SUsageFormatSpecific = 'Output format "%s" supports the following options:';
++  SCmdLineErrInvalidMacro     = 'Macro needs to be in the form name=value';
+ 
+   SCmdLineInvalidOption       = 'Ignoring unknown option "%s"';
+   SCmdLineInvalidFormat       = 'Invalid format "%s" specified';
+Index: fpcsrc/utils/fpdoc/mkfpdoc.pp
+===================================================================
+--- fpcsrc/utils/fpdoc/mkfpdoc.pp	(revision 34748)
++++ fpcsrc/utils/fpdoc/mkfpdoc.pp	(revision 34749)
+@@ -26,6 +26,7 @@
+     FOnLog: TPasParserLogHandler;
+     FPParserLogEvents: TPParserLogEvents;
+     FProject : TFPDocProject;
++    FProjectMacros: TStrings;
+     FScannerLogEvents: TPScannerLogEvents;
+     FVerbose: Boolean;
+     function GetOptions: TEngineOptions;
+@@ -32,6 +33,7 @@
+     function GetPackages: TFPDocPackages;
+     procedure SetBaseDescrDir(AValue: String);
+     procedure SetBaseInputDir(AValue: String);
++    procedure SetProjectMacros(AValue: TStrings);
+   Protected
+     Function FixInputFile(Const AFileName : String) : String;
+     Function FixDescrFile(Const AFileName : String) : String;
+@@ -58,6 +60,8 @@
+     // When set, they will be prepended to non-absolute filenames.
+     Property BaseInputDir : String Read FBaseInputDir Write SetBaseInputDir;
+     Property BaseDescrDir : String Read FBaseDescrDir Write SetBaseDescrDir;
++    // Macros used when loading the project file
++    Property ProjectMacros : TStrings Read FProjectMacros Write SetProjectMacros;
+   end;
+ 
+ implementation
+@@ -81,13 +85,13 @@
+     end;
+ end;
+ 
+-Procedure TFPDocCreator.DoLog(Const Msg: String);
++procedure TFPDocCreator.DoLog(const Msg: String);
+ begin
+   If Assigned(OnLog) then
+     OnLog(Self,Msg);
+ end;
+ 
+-procedure TFPDocCreator.DoLog(Const Fmt: String; Args: Array of Const);
++procedure TFPDocCreator.DoLog(const Fmt: String; Args: array of const);
+ begin
+   DoLog(Format(Fmt,Args));
+ end;
+@@ -132,7 +136,7 @@
+   Result:=FProject.Packages;
+ end;
+ 
+-Function TFPDocCreator.FixInputFile(Const AFileName: String): String;
++function TFPDocCreator.FixInputFile(const AFileName: String): String;
+ begin
+   Result:=AFileName;
+   If Result='' then exit;
+@@ -140,7 +144,7 @@
+     Result:=BaseInputDir+Result;
+ end;
+ 
+-Function TFPDocCreator.FixDescrFile(Const AFileName: String): String;
++function TFPDocCreator.FixDescrFile(const AFileName: String): String;
+ begin
+   Result:=AFileName;
+   If Result='' then exit;
+@@ -164,13 +168,19 @@
+     FBaseInputDir:=IncludeTrailingPathDelimiter(FBaseInputDir);
+ end;
+ 
+-Procedure TFPDocCreator.DoBeforeEmitNote(Sender: TObject; Note: TDomElement;
+-  Var EmitNote: Boolean);
++procedure TFPDocCreator.SetProjectMacros(AValue: TStrings);
+ begin
++  if FProjectMacros=AValue then Exit;
++  FProjectMacros.Assign(AValue);
++end;
++
++procedure TFPDocCreator.DoBeforeEmitNote(Sender: TObject; Note: TDomElement;
++  var EmitNote: Boolean);
++begin
+   EmitNote:=True;
+ end;
+ 
+-Constructor TFPDocCreator.Create(AOwner: TComponent);
++constructor TFPDocCreator.Create(AOwner: TComponent);
+ begin
+   inherited Create(AOwner);
+   FProject:=TFPDocProject.Create(Self);
+@@ -178,12 +188,14 @@
+   FProject.Options.CPUTarget:=DefCPUTarget;
+   FProject.Options.OSTarget:=DefOSTarget;
+   FProcessedUnits:=TStringList.Create;
++  FProjectMacros:=TStringList.Create;
+ end;
+ 
+-Destructor TFPDocCreator.Destroy;
++destructor TFPDocCreator.Destroy;
+ begin
+   FreeAndNil(FProcessedUnits);
+   FreeAndNil(FProject);
++  FreeAndNil(FProjectMacros);
+   inherited Destroy;
+ end;
+ 
+@@ -221,7 +233,7 @@
+     Engine.WriteContentFile(APackage.ContentFile);
+ end;
+ 
+-Procedure TFPDocCreator.CreateDocumentation(APackage: TFPDocPackage;
++procedure TFPDocCreator.CreateDocumentation(APackage: TFPDocPackage;
+   ParseOnly: Boolean);
+ 
+ var
+@@ -282,7 +294,7 @@
+   end;
+ end;
+ 
+-Procedure TFPDocCreator.CreateProjectFile(Const AFileName: string);
++procedure TFPDocCreator.CreateProjectFile(const AFileName: string);
+ begin
+   With TXMLFPDocOptions.Create(Self) do
+   try
+@@ -292,11 +304,14 @@
+   end;
+ end;
+ 
+-Procedure TFPDocCreator.LoadProjectFile(Const AFileName: string);
++procedure TFPDocCreator.LoadProjectFile(const AFileName: string);
+ begin
+   With TXMLFPDocOptions.Create(self) do
+     try
+-      LoadOptionsFromFile(FProject,AFileName);
++      if (ProjectMacros.Count>0) then
++        LoadOptionsFromFile(FProject,AFileName,ProjectMacros)
++      else
++        LoadOptionsFromFile(FProject,AFileName,Nil);
+     finally
+       Free;
+     end;
+Index: fpcsrc/utils/fpdoc/fpdoc.pp
+===================================================================
+--- fpcsrc/utils/fpdoc/fpdoc.pp	(revision 34748)
++++ fpcsrc/utils/fpdoc/fpdoc.pp	(revision 34749)
+@@ -90,6 +90,7 @@
+   Writeln(SUsageOption120);
+   Writeln(SUsageOption130);
+   Writeln(SUsageOption140);
++  Writeln(SUsageOption145);
+   Writeln(SUsageOption150);
+   Writeln(SUsageOption160);
+   Writeln(SUsageOption170);
+@@ -181,11 +182,12 @@
+ Const
+   SOptProject = '--project=';
+   SOptPackage = '--package=';
+-  
++  SOptMacro = '--macro=';
++
+   Function ProjectOpt(Const s : string) : boolean;
+ 
+   begin
+-    Result:=(Copy(s,1,3)='-p=') or (Copy(s,1,Length(SOptProject))=SOptProject);
++    Result:=(Copy(s,1,3)='-p=') or (Copy(s,1,Length(SOptProject))=SOptProject) or (Copy(s,1,Length(SOptMacro))=SOptMacro);
+   end;
+ 
+   Function PackageOpt(Const s : string) : boolean;
+@@ -286,7 +288,7 @@
+ 
+ var
+   i: Integer;
+-  Cmd, Arg: String;
++  ProjectFileName,Cmd, Arg: String;
+ 
+ begin
+   if (s = '-h') or (s = '--help') then
+@@ -325,6 +327,12 @@
+       AddDirToFileList(SelectedPackage.Descriptions, Arg, '*.xml')
+     else if (Cmd = '--base-descr-dir') then
+       FCreator.BaseDescrDir:=Arg
++    else if (Cmd = '--macro') then
++      begin
++      If Pos('=',Arg)=0 then
++        WriteLn(StdErr, Format(SCmdLineErrInvalidMacro, [Arg]));
++      FCreator.ProjectMacros.Add(Arg);
++      end
+     else if (Cmd = '-f') or (Cmd = '--format') then
+       begin
+       Arg:=UpperCase(Arg);
+@@ -384,23 +392,28 @@
+ Procedure TFPDocApplication.DoRun;
+ 
+ begin
+-{$IFDEF Unix}
+-  gettext.TranslateResourceStrings('/usr/local/share/locale/%s/LC_MESSAGES/fpdoc.mo');
+-{$ELSE}
+-  gettext.TranslateResourceStrings('intl/fpdoc.%s.mo');
+-{$ENDIF}
+-  WriteLn(STitle);
+-  WriteLn(Format(SVersion, [DefFPCVersion, DefFPCDate]));
+-  WriteLn(SCopyright1);
+-  WriteLn(SCopyright2);
+-  WriteLn;
+-  ParseCommandLine;
+-  if (FWriteProjectFile<>'') then
+-    FCreator.CreateProjectFile(FWriteProjectFile)
+-  else
+-    FCreator.CreateDocumentation(FPackage,FDryRun);
+-  WriteLn(SDone);
+-  Terminate;
++  try
++  {$IFDEF Unix}
++    gettext.TranslateResourceStrings('/usr/local/share/locale/%s/LC_MESSAGES/fpdoc.mo');
++  {$ELSE}
++    gettext.TranslateResourceStrings('intl/fpdoc.%s.mo');
++  {$ENDIF}
++    WriteLn(STitle);
++    WriteLn(Format(SVersion, [DefFPCVersion, DefFPCDate]));
++    WriteLn(SCopyright1);
++    WriteLn(SCopyright2);
++    WriteLn;
++    ParseCommandLine;
++    if (FWriteProjectFile<>'') then
++      FCreator.CreateProjectFile(FWriteProjectFile)
++    else
++      FCreator.CreateDocumentation(FPackage,FDryRun);
++    WriteLn(SDone);
++    Terminate;
++  except
++    ExitCode:=1;
++    Raise;
++  end;
+ end;
+ 
+ constructor TFPDocApplication.Create(AOwner: TComponent);
+Index: fpcsrc/utils/fpdoc/fpdocxmlopts.pas
+===================================================================
+--- fpcsrc/utils/fpdoc/fpdocxmlopts.pas	(revision 34748)
++++ fpcsrc/utils/fpdoc/fpdocxmlopts.pas	(revision 34749)
+@@ -13,6 +13,7 @@
+   TXMLFPDocOptions = Class(TComponent)
+   private
+   Protected
++    Function PreProcessFile(const AFileName: String; Macros: TStrings): TStream; virtual;
+     Procedure Error(Const Msg : String);
+     Procedure Error(Const Fmt : String; Args : Array of Const);
+     Procedure LoadPackage(APackage : TFPDocPackage; E : TDOMElement); virtual;
+@@ -24,7 +25,7 @@
+     procedure SaveInputFile(const AInputFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual;
+     Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual;
+   Public
+-    Procedure LoadOptionsFromFile(AProject : TFPDocProject; Const AFileName : String);
++    Procedure LoadOptionsFromFile(AProject : TFPDocProject; Const AFileName : String; Macros : TStrings = Nil);
+     Procedure LoadFromXML(AProject : TFPDocProject; XML : TXMLDocument); virtual;
+     Procedure SaveOptionsToFile(AProject : TFPDocProject; Const AFileName : String);
+     procedure SaveToXML(AProject : TFPDocProject; ADoc: TXMLDocument); virtual;
+@@ -65,7 +66,7 @@
+ end;
+ 
+ 
+-procedure TXMLFPDocOptions.Error(Const Msg: String);
++procedure TXMLFPDocOptions.Error(const Msg: String);
+ begin
+   Raise EXMLFPDoc.Create(Msg);
+ end;
+@@ -248,7 +249,8 @@
+     end;
+ end;
+ 
+-Procedure TXMLFPDocOptions.SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement);
++procedure TXMLFPDocOptions.SaveEngineOptions(Options: TEngineOptions;
++  XML: TXMLDocument; AParent: TDOMElement);
+ 
+   procedure AddStr(const n, v: string);
+   var
+@@ -288,7 +290,8 @@
+ end;
+ 
+ 
+-Procedure TXMLFPDocOptions.SaveInputFile(Const AInputFile : String; XML : TXMLDocument; AParent: TDOMElement);
++procedure TXMLFPDocOptions.SaveInputFile(const AInputFile: String;
++  XML: TXMLDocument; AParent: TDOMElement);
+ 
+ Var
+   F,O : String;
+@@ -299,7 +302,8 @@
+   AParent['options']:=O;
+ end;
+ 
+-Procedure TXMLFPDocOptions.SaveDescription(Const ADescription : String; XML : TXMLDocument; AParent: TDOMElement);
++procedure TXMLFPDocOptions.SaveDescription(const ADescription: String;
++  XML: TXMLDocument; AParent: TDOMElement);
+ 
+ begin
+   AParent['file']:=ADescription;
+@@ -317,7 +321,8 @@
+   AParent['prefix']:=Copy(AImportFile,i+1,Length(AImportFile));
+ end;
+ 
+-Procedure TXMLFPDocOptions.SavePackage(APackage: TFPDocPackage; XML : TXMLDocument; AParent: TDOMElement);
++procedure TXMLFPDocOptions.SavePackage(APackage: TFPDocPackage;
++  XML: TXMLDocument; AParent: TDOMElement);
+ 
+ 
+ var
+@@ -358,17 +363,55 @@
+ end;
+ 
+ 
++Function TXMLFPDocOptions.PreprocessFile(const AFileName: String; Macros : TStrings) : TStream;
+ 
+-procedure TXMLFPDocOptions.LoadOptionsFromFile(AProject: TFPDocProject; const AFileName: String);
++Var
++  F : TFileStream;
++  P : TTemplateParser;
++  I : Integer;
++  N,V : String;
+ 
++begin
++  Result:=Nil;
++  P:=Nil;
++  F:=TFileStream.Create(AFileName,fmOpenRead or fmShareDenyWrite);
++  try
++    P:=TTemplateParser.Create;
++    P.AllowTagParams:=False;
++    P.StartDelimiter:='{{';
++    P.EndDelimiter:='}}';
++    For I:=0 to Macros.Count-1 do
++      begin
++      Macros.GetNameValue(I,N,V);
++      P.Values[N]:=V;
++      end;
++    Result:=TMemoryStream.Create;
++    P.ParseStream(F,Result);
++    Result.Position:=0;
++  finally
++    FreeAndNil(F);
++    FreeAndNil(P);
++  end;
++end;
++
++procedure TXMLFPDocOptions.LoadOptionsFromFile(AProject: TFPDocProject;
++  const AFileName: String; Macros: TStrings = Nil);
++
+ Var
+   XML : TXMLDocument;
++  S : TStream;
+ 
+ begin
+-  ReadXMLFile(XML,AFileName);
++  XML:=Nil;
++  if Macros=Nil then
++    S:=TFileStream.Create(AFileName,fmOpenRead or fmShareDenyWrite)
++  else
++    S:=PreProcessFile(AFileName,Macros);
+   try
++    ReadXMLFile(XML,S);
+     LoadFromXML(AProject,XML);
+   finally
++    FreeAndNil(S);
+     FreeAndNil(XML);
+   end;
+ end;
+@@ -393,7 +436,8 @@
+     LoadEngineOptions(AProject.Options,N as TDOMElement);
+ end;
+ 
+-Procedure TXMLFPDocOptions.SaveOptionsToFile(AProject: TFPDocProject; const AFileName: String);
++procedure TXMLFPDocOptions.SaveOptionsToFile(AProject: TFPDocProject;
++  const AFileName: String);
+ 
+ Var
+   XML : TXMLDocument;
diff --git a/fpcdocs-r1260.patch b/fpcdocs-r1260.patch
index 59a5ede..59808b3 100644
--- a/fpcdocs-r1260.patch
+++ b/fpcdocs-r1260.patch
@@ -6,13 +6,13 @@ Index: fpcdocs/Makefile
  	$(RTLMAKESKEL) $(RTLCHARACTER) --output=character.new.xml
  	./cleanxml $(RTLNEWXML)
  rtl.inc: $(RTLXML)
--	$(FPDOC) --output=rtl.inc --project=rtl-project.xml --format=latex
-+	$(FPDOC) --base-input-dir=$(FPCSRCDIR)/rtl --output=rtl.inc --project=rtl-project.xml --format=latex
+-	$(FPDOC)  $(FPDOCOPTS) --output=rtl.inc --project=rtl-project.xml --format=latex
++	$(FPDOC)  $(FPDOCOPTS) --base-input-dir=$(FPCSRCDIR)/rtl --output=rtl.inc --project=rtl-project.xml --format=latex
  fcl.inc: $(FCLXML)
--	$(FPDOC) --output=fcl.inc --project=fcl-project.xml --format=latex
-+	$(FPDOC) --base-input-dir=$(FPCSRCDIR)/packages --output=fcl.inc --project=fcl-project.xml --format=latex
+-	$(FPDOC) $(FPDOCOPTS) --output=fcl.inc --project=fcl-project.xml --format=latex
++	$(FPDOC) $(FPDOCOPTS) --base-input-dir=$(FPCSRCDIR)/packages --output=fcl.inc --project=fcl-project.xml --format=latex
  fclres.inc: $(FCLRESXML)
- 	$(FPDOC) --output=fclres.inc $(FCLRESOPTS) --format=latex
+ 	$(FPDOC) $(FPDOCOPTS) --output=fclres.inc $(FCLRESOPTS) --format=latex
  RTFFILES = $(addsuffix .rtf,$(RTFS))
 Index: fpcdocs/Makefile.fpc
 ===================================================================
@@ -22,12 +22,12 @@ Index: fpcdocs/Makefile.fpc
  #####################################################################
  
  rtl.inc: $(RTLXML)
--        $(FPDOC) --output=rtl.inc --project=rtl-project.xml --format=latex
-+        $(FPDOC) --base-input-dir=$(FPCSRCDIR)/rtl --output=rtl.inc --project=rtl-project.xml --format=latex
+-        $(FPDOC)  $(FPDOCOPTS) --output=rtl.inc --project=rtl-project.xml --format=latex
++        $(FPDOC)  $(FPDOCOPTS) --base-input-dir=$(FPCSRCDIR)/rtl --output=rtl.inc --project=rtl-project.xml --format=latex
  
  fcl.inc: $(FCLXML)
--        $(FPDOC) --output=fcl.inc --project=fcl-project.xml --format=latex
-+        $(FPDOC) --base-input-dir=$(FPCSRCDIR)/packages --output=fcl.inc --project=fcl-project.xml --format=latex
+-        $(FPDOC) $(FPDOCOPTS) --output=fcl.inc --project=fcl-project.xml --format=latex
++        $(FPDOC) $(FPDOCOPTS) --base-input-dir=$(FPCSRCDIR)/packages --output=fcl.inc --project=fcl-project.xml --format=latex
  
  fclres.inc: $(FCLRESXML)
-         $(FPDOC) --output=fclres.inc $(FCLRESOPTS) --format=latex
+         $(FPDOC) $(FPDOCOPTS) --output=fclres.inc $(FCLRESOPTS) --format=latex
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/fpc.git/commitdiff/dd3f385efe2d7ff5ec60561e80f769e12736ed84



More information about the pld-cvs-commit mailing list